<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>我的FPGA</title><link>https://world.myfpga.cn/</link><description>吾道一以贯之</description><item><title>PI 型和 T 型衰减器在线计算器</title><link>https://world.myfpga.cn/index.php/post/467.html</link><description>&lt;p&gt;链接：&lt;a href=&quot;https://tool.myfpga.cn/calcdeamp.html&quot; _src=&quot;https://tool.myfpga.cn/calcdeamp.html&quot;&gt;https://tool.myfpga.cn/calcdeamp.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/10/202510101760068575817546.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Fri, 10 Oct 2025 11:44:46 +0800</pubDate></item><item><title>大话干扰的识别与屏蔽</title><link>https://world.myfpga.cn/index.php/post/466.html</link><description>&lt;h3&gt;第一步：判断战场 —— 你在近场还是远场？&lt;/h3&gt;&lt;p&gt;这是最首要的区分，因为它决定了你面对的“游戏规则”。&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;远场 (Far-Field)：&lt;/p&gt;&lt;/li&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: square;&quot;&gt;&lt;li&gt;&lt;p&gt;定义：离干扰源足够远，电磁波已经“成型”，电场(E)和磁场(H)的比例固定为377Ω。它像一束规律的海浪。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;判断标准：距离(r) &amp;gt; λ / 2π (其中λ是干扰波的波长)。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;特点：只有一种敌人，叫“平面波”，特性单一，相对容易对付。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p&gt;近场 (Near-Field)：&lt;/p&gt;&lt;/li&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: square;&quot;&gt;&lt;li&gt;&lt;p&gt;定义：离干扰源很近，电磁波还没成型，电场和磁场的比例不稳定，由源头的性质决定。它像石头入水瞬间的混乱水花。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;判断标准：距离(r) &amp;lt; λ / 2π。波长计算可以访问：&lt;a href=&quot;https://tool.myfpga.cn/#impedance-analysis&quot; target=&quot;_blank&quot;&gt;https://tool.myfpga.cn/#freq-wavelength&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;特点：敌人分为两种，一种是“电场为主”，另一种是“磁场为主”，必须分开处理。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h3&gt;第二步：识别敌人 —— 是电场干扰还是磁场干扰？&lt;/h3&gt;&lt;p&gt;既然你在近场，你就必须回答这个问题。&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;特征&lt;/th&gt;&lt;th&gt;电场 (E-Field) 干扰&lt;/th&gt;&lt;th&gt;磁场 (H-Field) 干扰&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;本质来源&lt;/td&gt;&lt;td&gt;高电压&amp;nbsp;或&amp;nbsp;电压的快速变化 (dV/dt)&lt;/td&gt;&lt;td&gt;大电流&amp;nbsp;或&amp;nbsp;电流的快速变化 (dI/dt)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;典型源头&lt;/td&gt;&lt;td&gt;拉杆天线、高压开关、高速数字电路的引脚&lt;/td&gt;&lt;td&gt;环路天线、变压器、电源线、大电流线圈&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;波阻抗&lt;/td&gt;&lt;td&gt;高阻抗 (&amp;gt; 377 Ω)&lt;/td&gt;&lt;td&gt;低阻抗 (&amp;lt; 377 Ω)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;形象比喻&lt;/td&gt;&lt;td&gt;像一根尖锐的长矛，穿透力强&lt;/td&gt;&lt;td&gt;像一个沉重的攻城锤，冲击力巨大&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;屏蔽难度&lt;/td&gt;&lt;td&gt;相对容易&lt;/td&gt;&lt;td&gt;非常困难（尤其是低频时）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;word-break: break-all;&quot;&gt;在聚变装置旁边&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot;&gt;大电压开关动作产生的高dV/dt，是典型的电场源。&lt;/td&gt;&lt;td&gt;兆安培级电流流过线圈产生的高dI/dt，是典型的磁场源。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;第三步：选择武器和战术 —— 屏蔽的原理与方法&lt;/h3&gt;&lt;p&gt;屏蔽的根本原理是制造阻抗不匹配，让入射的电磁波能量在屏蔽体表面被大量反射回去。&lt;/p&gt;&lt;h4&gt;屏蔽的两大机制：&lt;/h4&gt;&lt;ol class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;反射损耗 (Reflection Loss, R)：&lt;/p&gt;&lt;/li&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;原理：当电磁波从一种阻抗的介质（如空气，377Ω）进入另一种阻抗差异极大的介质（如金属，≈0Ω）时，大部分能量会被弹回。就像光照在镜子上。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;这是屏蔽的“第一道防线”，也是最主要的一道。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p&gt;吸收损耗 (Absorption Loss, A)：&lt;/p&gt;&lt;/li&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;原理：穿透了第一道防线、进入金属内部的少量能量，会在金属中感应出涡流。涡流因金属电阻而产生热量，从而将这部分能量消耗掉。这个过程依赖于“集肤效应”。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;这是“第二道防线”，负责清理漏网之鱼。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;h4&gt;针对不同敌人的战术：&lt;/h4&gt;&lt;p&gt;战术A：对抗电场干扰 (高阻抗)&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;原理分析：&lt;/p&gt;&lt;/li&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: square;&quot;&gt;&lt;li&gt;&lt;p&gt;反射：电场波阻抗很高（&amp;gt;377Ω），而金属屏蔽体阻抗极低（≈0Ω）。两者阻抗差异巨大。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;结果：根据反射原理，阻抗差异越大，反射越强。因此，电场波在遇到金属表面时会发生极其剧烈的反射，绝大部分能量都被弹回去了。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p&gt;行动方案：&lt;/p&gt;&lt;/li&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: square;&quot;&gt;&lt;li&gt;&lt;p&gt;使用高导电性材料，如铜 (Copper)&amp;nbsp;或&amp;nbsp;铝 (Aluminum)。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;构建一个密封的导电外壳（法拉第笼）。只要保证良好的导电连续性（没有大缝隙），就能非常有效地屏蔽电场。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;战术B：对抗磁场干扰 (低阻抗)&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;原理分析：&lt;/p&gt;&lt;/li&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: square;&quot;&gt;&lt;li&gt;&lt;p&gt;反射：磁场波阻抗很低（&amp;lt;377Ω），金属屏蔽体阻抗也极低（≈0Ω）。两者阻抗差异很小。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;结果：反射效果非常差。大部分能量不会被弹回，而是会“挤”进金属内部。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;吸收：如果频率很低（比如你的主磁场脉冲的基频），集肤效应会很弱，吸收损耗也很低。波可以轻易穿透薄金属板。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p&gt;行动方案（分为两种情况）：&lt;/p&gt;&lt;/li&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: square;&quot;&gt;&lt;li&gt;&lt;p&gt;使用高导磁率材料，如坡莫合金 (Permalloy)、姆合金 (Mu-metal) 或电工钢 (Silicon Steel)。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;原理：这些材料像“磁场海绵”，对磁力线有极强的吸引力。它们为外部磁场提供了一条非常顺畅的“磁通路”，让磁场线沿着屏蔽材料的壳壁走，从而绕开被保护的内部电路。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;高频磁场：对于磁场中的高频成分，吸收损耗会变得显著。因此，使用足够厚的高导电材料（如厚壁铜管）依然有效。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;低频磁场（最难的情况）：反射和吸收都指望不上。必须改变策略，从“阻挡”变为“疏导”。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ul&gt;&lt;hr/&gt;&lt;h3&gt;第四步：制定你的总攻计划（综合应用）&lt;/h3&gt;&lt;p&gt;对于聚变装置这种混合、极端的环境，单一战术是不够的。需要一个组合方案。&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;干扰类型&lt;/th&gt;&lt;th&gt;关键特性&lt;/th&gt;&lt;th&gt;屏蔽原理&lt;/th&gt;&lt;th&gt;推荐材料&lt;/th&gt;&lt;th&gt;你的行动方案&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;近场电场&lt;/td&gt;&lt;td&gt;高阻抗、高dV/dt&lt;/td&gt;&lt;td&gt;强反射&lt;/td&gt;&lt;td&gt;铜、铝&lt;/td&gt;&lt;td&gt;为你的采集设备和电缆构建一个密封良好的法拉第笼（铜或铝制屏蔽箱/屏蔽层）。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;近场磁场 (高频成分)&lt;/td&gt;&lt;td&gt;低阻抗、高频&lt;/td&gt;&lt;td&gt;吸收&amp;nbsp;+ 弱反射&lt;/td&gt;&lt;td&gt;厚壁的铜或铝&lt;/td&gt;&lt;td&gt;使用厚壁的金属屏蔽。例如，用厚壁铜管来套住信号电缆。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;近场磁场 (低频成分)&lt;/td&gt;&lt;td&gt;低阻抗、低频、高强度&lt;/td&gt;&lt;td&gt;磁路分流 (疏导)&lt;/td&gt;&lt;td&gt;坡莫合金、姆合金、电工钢&lt;/td&gt;&lt;td&gt;这是最关键的一步。在你的磁传感器周围，以及屏蔽箱的内层，使用高导磁材料来将主脉冲磁场引导走。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;最终的专业解决方案：多层屏蔽&lt;/p&gt;&lt;p&gt;这是应对恶劣环境的标准做法。从外到内通常是：&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;外层（铝或铜）：作为坚固的结构，并高效地反射电场和吸收高频磁场。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;中层（可选，取决于频率）：可以是另一层铜，用于进一步吸收。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;内层（坡莫合金或姆合金）：这是对付低频磁场的王牌。它负责将外层没挡住的、最顽固的低频磁场疏导掉，确保到达最核心区域的磁场干扰最小。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sun, 28 Sep 2025 17:35:49 +0800</pubDate></item><item><title>使用FT232H实现MCP4725 DAC的I2C输出电压控制</title><link>https://world.myfpga.cn/index.php/post/465.html</link><description>&lt;p&gt;1、下载库&lt;img src=&quot;https://world.myfpga.cn/zb_system/image/filetype/zip.png&quot; style=&quot;vertical-align: middle; margin-right: 2px;&quot;/&gt;&lt;a href=&quot;https://world.myfpga.cn/zb_users/upload/2025/09/202509231758599468454414.zip&quot; title=&quot;libMPSSE.zip&quot; style=&quot;font-size: 12px; color: rgb(0, 102, 204);&quot;&gt;libMPSSE.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2、安装VS，安装C++编译库&lt;/p&gt;&lt;p&gt;3、修改&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/09/202509231758599503623135.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;为：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-c&quot;&gt;/*!
&amp;nbsp;*&amp;nbsp;\file&amp;nbsp;sample-dynamic.c
&amp;nbsp;*
&amp;nbsp;*&amp;nbsp;\author&amp;nbsp;FTDI
&amp;nbsp;*&amp;nbsp;\date&amp;nbsp;20110512
&amp;nbsp;*
&amp;nbsp;*&amp;nbsp;Copyright&amp;nbsp;©&amp;nbsp;2000-2014&amp;nbsp;Future&amp;nbsp;Technology&amp;nbsp;Devices&amp;nbsp;International&amp;nbsp;Limited
&amp;nbsp;*
&amp;nbsp;*&amp;nbsp;THIS&amp;nbsp;SOFTWARE&amp;nbsp;IS&amp;nbsp;PROVIDED&amp;nbsp;BY&amp;nbsp;FUTURE&amp;nbsp;TECHNOLOGY&amp;nbsp;DEVICES&amp;nbsp;INTERNATIONAL&amp;nbsp;LIMITED&amp;nbsp;``AS&amp;nbsp;IS&amp;#39;&amp;#39;&amp;nbsp;AND&amp;nbsp;ANY&amp;nbsp;EXPRESS
&amp;nbsp;*&amp;nbsp;OR&amp;nbsp;IMPLIED&amp;nbsp;WARRANTIES,&amp;nbsp;INCLUDING,&amp;nbsp;BUT&amp;nbsp;NOT&amp;nbsp;LIMITED&amp;nbsp;TO,&amp;nbsp;THE&amp;nbsp;IMPLIED&amp;nbsp;WARRANTIES&amp;nbsp;OF&amp;nbsp;MERCHANTABILITY&amp;nbsp;AND&amp;nbsp;FITNESS
&amp;nbsp;*&amp;nbsp;FOR&amp;nbsp;A&amp;nbsp;PARTICULAR&amp;nbsp;PURPOSE&amp;nbsp;ARE&amp;nbsp;DISCLAIMED.&amp;nbsp;IN&amp;nbsp;NO&amp;nbsp;EVENT&amp;nbsp;SHALL&amp;nbsp;FUTURE&amp;nbsp;TECHNOLOGY&amp;nbsp;DEVICES&amp;nbsp;INTERNATIONAL&amp;nbsp;LIMITED
&amp;nbsp;*&amp;nbsp;BE&amp;nbsp;LIABLE&amp;nbsp;FOR&amp;nbsp;ANY&amp;nbsp;DIRECT,&amp;nbsp;INDIRECT,&amp;nbsp;INCIDENTAL,&amp;nbsp;SPECIAL,&amp;nbsp;EXEMPLARY,&amp;nbsp;OR&amp;nbsp;CONSEQUENTIAL&amp;nbsp;DAMAGES&amp;nbsp;(INCLUDING,
&amp;nbsp;*&amp;nbsp;BUT&amp;nbsp;NOT&amp;nbsp;LIMITED&amp;nbsp;TO,&amp;nbsp;PROCUREMENT&amp;nbsp;OF&amp;nbsp;SUBSTITUTE&amp;nbsp;GOODS&amp;nbsp;OR&amp;nbsp;SERVICES;&amp;nbsp;LOSS&amp;nbsp;OF&amp;nbsp;USE,&amp;nbsp;DATA,&amp;nbsp;OR&amp;nbsp;PROFITS;&amp;nbsp;OR&amp;nbsp;BUSINESS
&amp;nbsp;*&amp;nbsp;INTERRUPTION)&amp;nbsp;HOWEVER&amp;nbsp;CAUSED&amp;nbsp;AND&amp;nbsp;ON&amp;nbsp;ANY&amp;nbsp;THEORY&amp;nbsp;OF&amp;nbsp;LIABILITY,&amp;nbsp;WHETHER&amp;nbsp;IN&amp;nbsp;CONTRACT,&amp;nbsp;STRICT&amp;nbsp;LIABILITY,&amp;nbsp;OR&amp;nbsp;TORT
&amp;nbsp;*&amp;nbsp;(INCLUDING&amp;nbsp;NEGLIGENCE&amp;nbsp;OR&amp;nbsp;OTHERWISE)&amp;nbsp;ARISING&amp;nbsp;IN&amp;nbsp;ANY&amp;nbsp;WAY&amp;nbsp;OUT&amp;nbsp;OF&amp;nbsp;THE&amp;nbsp;USE&amp;nbsp;OF&amp;nbsp;THIS&amp;nbsp;SOFTWARE,&amp;nbsp;EVEN&amp;nbsp;IF&amp;nbsp;ADVISED&amp;nbsp;OF
&amp;nbsp;*&amp;nbsp;THE&amp;nbsp;POSSIBILITY&amp;nbsp;OF&amp;nbsp;SUCH&amp;nbsp;DAMAGE.
&amp;nbsp;*
&amp;nbsp;*&amp;nbsp;Project:&amp;nbsp;libMPSSE
&amp;nbsp;*&amp;nbsp;Module:&amp;nbsp;I2C&amp;nbsp;Sample&amp;nbsp;Application&amp;nbsp;-&amp;nbsp;Interfacing&amp;nbsp;MCP4725&amp;nbsp;DAC
&amp;nbsp;*/

/******************************************************************************/
/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Include&amp;nbsp;files&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
/******************************************************************************/
/*&amp;nbsp;Standard&amp;nbsp;C&amp;nbsp;libraries&amp;nbsp;*/
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;string.h&amp;gt;
/*&amp;nbsp;OS&amp;nbsp;specific&amp;nbsp;libraries&amp;nbsp;*/
#ifdef&amp;nbsp;_WIN32
#include&amp;lt;windows.h&amp;gt;
#else&amp;nbsp;//&amp;nbsp;_WIN32
#include&amp;lt;dlfcn.h&amp;gt;
#include&amp;nbsp;&amp;lt;unistd.h&amp;gt;&amp;nbsp;//&amp;nbsp;For&amp;nbsp;Sleep()&amp;nbsp;on&amp;nbsp;Linux/macOS
#define&amp;nbsp;Sleep(ms)&amp;nbsp;usleep(ms&amp;nbsp;*&amp;nbsp;1000)
#endif&amp;nbsp;//&amp;nbsp;_WIN32

/*&amp;nbsp;Include&amp;nbsp;D2XX&amp;nbsp;header*/
#include&amp;nbsp;&amp;quot;ftd2xx.h&amp;quot;

/*&amp;nbsp;Include&amp;nbsp;libMPSSE&amp;nbsp;header&amp;nbsp;*/
#include&amp;nbsp;&amp;quot;libMPSSE_i2c.h&amp;quot;


/******************************************************************************/
/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Macro&amp;nbsp;and&amp;nbsp;type&amp;nbsp;defines&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
/******************************************************************************/
/*&amp;nbsp;Helper&amp;nbsp;macros&amp;nbsp;*/
#ifdef&amp;nbsp;_WIN32
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#define&amp;nbsp;GET_FUN_POINTER&amp;nbsp;GetProcAddress
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#define&amp;nbsp;CHECK_ERROR(exp)&amp;nbsp;{if(exp==NULL){printf(&amp;quot;%s:%d:%s():&amp;nbsp;NULL&amp;nbsp;expression\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;encountered&amp;nbsp;\n&amp;quot;,__FILE__,&amp;nbsp;__LINE__,&amp;nbsp;__FUNCTION__);exit(1);}else{;}};
#else&amp;nbsp;//&amp;nbsp;_WIN32
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#define&amp;nbsp;GET_FUN_POINTER&amp;nbsp;dlsym
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#define&amp;nbsp;CHECK_ERROR(exp)&amp;nbsp;{if(dlerror()&amp;nbsp;!=&amp;nbsp;NULL){printf(&amp;quot;line&amp;nbsp;%d:&amp;nbsp;ERROR&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dlsym\n&amp;quot;,__LINE__);}}
#endif&amp;nbsp;//&amp;nbsp;_WIN32

#define&amp;nbsp;APP_CHECK_STATUS(exp)&amp;nbsp;{if(exp!=FT_OK){printf(&amp;quot;%s:%d:%s():&amp;nbsp;status(0x%x)&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!=&amp;nbsp;FT_OK\n&amp;quot;,__FILE__,&amp;nbsp;__LINE__,&amp;nbsp;__FUNCTION__,exp);exit(1);}else{;}};
#define&amp;nbsp;APP_CHECK_STATUS_NOEXIT(exp)&amp;nbsp;{if(exp!=FT_OK){printf(&amp;quot;%s:%d:%s():&amp;nbsp;status(0x%x)&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!=&amp;nbsp;FT_OK\n&amp;quot;,__FILE__,&amp;nbsp;__LINE__,&amp;nbsp;__FUNCTION__,exp);}else{;}};
#define&amp;nbsp;CHECK_NULL(exp){if(exp==NULL){printf(&amp;quot;%s:%d:%s():&amp;nbsp;&amp;nbsp;NULL&amp;nbsp;expression&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;encountered&amp;nbsp;\n&amp;quot;,__FILE__,&amp;nbsp;__LINE__,&amp;nbsp;__FUNCTION__);exit(1);}else{;}};

/*&amp;nbsp;Application&amp;nbsp;specific&amp;nbsp;macro&amp;nbsp;definations&amp;nbsp;*/
#define&amp;nbsp;I2C_DEVICE_BUFFER_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;256
#define&amp;nbsp;CHANNEL_TO_OPEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0
#define&amp;nbsp;I2C_DEVICE_ADDRESS_MCP4725&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x60
#define&amp;nbsp;VDD_VOLTAGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.3f&amp;nbsp;//&amp;nbsp;!!重要!!&amp;nbsp;请根据您的实际电路修改此值

/*&amp;nbsp;Application&amp;nbsp;configuration/debugging&amp;nbsp;*/
#define&amp;nbsp;TEST_EEPROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;//&amp;nbsp;禁用原始的EEPROM测试
#define&amp;nbsp;FAST_TRANSFER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0

/*&amp;nbsp;Declaration&amp;nbsp;of&amp;nbsp;function&amp;nbsp;pointers&amp;nbsp;*/
typedef&amp;nbsp;FT_STATUS(*pfunc_I2C_GetNumChannels)(uint32&amp;nbsp;*numChannels);
typedef&amp;nbsp;FT_STATUS(*pfunc_I2C_GetChannelInfo)(uint32&amp;nbsp;index,&amp;nbsp;FT_DEVICE_LIST_INFO_NODE&amp;nbsp;*chanInfo);
typedef&amp;nbsp;FT_STATUS(*pfunc_I2C_OpenChannel)(uint32&amp;nbsp;index,&amp;nbsp;FT_HANDLE&amp;nbsp;*handle);
typedef&amp;nbsp;FT_STATUS(*pfunc_I2C_CloseChannel)(FT_HANDLE&amp;nbsp;handle);
typedef&amp;nbsp;FT_STATUS(*pfunc_I2C_InitChannel)(FT_HANDLE&amp;nbsp;handle,&amp;nbsp;ChannelConfig&amp;nbsp;*config);
typedef&amp;nbsp;FT_STATUS(*pfunc_I2C_DeviceRead)(FT_HANDLE&amp;nbsp;handle,&amp;nbsp;uint32&amp;nbsp;deviceAddress,&amp;nbsp;uint32&amp;nbsp;sizeToTransfer,&amp;nbsp;uint8&amp;nbsp;*buffer,&amp;nbsp;uint32&amp;nbsp;*sizeTransfered,&amp;nbsp;uint32&amp;nbsp;options);
typedef&amp;nbsp;FT_STATUS(*pfunc_I2C_DeviceWrite)(FT_HANDLE&amp;nbsp;handle,&amp;nbsp;uint32&amp;nbsp;deviceAddress,&amp;nbsp;uint32&amp;nbsp;sizeToTransfer,&amp;nbsp;uint8&amp;nbsp;*buffer,&amp;nbsp;uint32&amp;nbsp;*sizeTransfered,&amp;nbsp;uint32&amp;nbsp;options);

static&amp;nbsp;pfunc_I2C_GetNumChannels&amp;nbsp;p_I2C_GetNumChannels&amp;nbsp;=&amp;nbsp;NULL;
static&amp;nbsp;pfunc_I2C_GetChannelInfo&amp;nbsp;p_I2C_GetChannelInfo&amp;nbsp;=&amp;nbsp;NULL;
static&amp;nbsp;pfunc_I2C_OpenChannel&amp;nbsp;p_I2C_OpenChannel&amp;nbsp;=&amp;nbsp;NULL;
static&amp;nbsp;pfunc_I2C_CloseChannel&amp;nbsp;p_I2C_CloseChannel&amp;nbsp;=&amp;nbsp;NULL;
static&amp;nbsp;pfunc_I2C_InitChannel&amp;nbsp;p_I2C_InitChannel&amp;nbsp;=&amp;nbsp;NULL;
static&amp;nbsp;pfunc_I2C_DeviceRead&amp;nbsp;p_I2C_DeviceRead&amp;nbsp;=&amp;nbsp;NULL;
static&amp;nbsp;pfunc_I2C_DeviceWrite&amp;nbsp;p_I2C_DeviceWrite&amp;nbsp;=&amp;nbsp;NULL;

/*&amp;nbsp;新增函数原型声明&amp;nbsp;*/
void&amp;nbsp;TestDeviceMCP4725();
static&amp;nbsp;FT_STATUS&amp;nbsp;read_mcp4725_status();


/******************************************************************************/
/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Global&amp;nbsp;variables&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
/******************************************************************************/
static&amp;nbsp;FT_HANDLE&amp;nbsp;ftHandle;
static&amp;nbsp;uint8&amp;nbsp;buffer[I2C_DEVICE_BUFFER_SIZE]&amp;nbsp;=&amp;nbsp;{0};


/******************************************************************************/
/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Public&amp;nbsp;function&amp;nbsp;definitions&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
/******************************************************************************/
static&amp;nbsp;uint8&amp;nbsp;initialize_library()
{
#ifdef&amp;nbsp;_WIN32
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HMODULE&amp;nbsp;h_libMPSSE&amp;nbsp;=&amp;nbsp;LoadLibraryA(&amp;quot;libMPSSE.dll&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!h_libMPSSE)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;Failed&amp;nbsp;loading&amp;nbsp;libMPSSE.dll.&amp;nbsp;Please&amp;nbsp;check&amp;nbsp;if&amp;nbsp;the&amp;nbsp;file&amp;nbsp;exists&amp;nbsp;in&amp;nbsp;the&amp;nbsp;working&amp;nbsp;directory\n&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
#else&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;*h_libMPSSE&amp;nbsp;=&amp;nbsp;dlopen(&amp;quot;libMPSSE.so&amp;quot;,&amp;nbsp;RTLD_LAZY);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(!h_libMPSSE)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;Failed&amp;nbsp;loading&amp;nbsp;libMPSSE.so.&amp;nbsp;Please&amp;nbsp;check&amp;nbsp;if&amp;nbsp;the&amp;nbsp;file&amp;nbsp;exists&amp;nbsp;in&amp;nbsp;the&amp;nbsp;shared&amp;nbsp;library&amp;nbsp;folder(/usr/lib&amp;nbsp;or&amp;nbsp;/usr/lib64)\n&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
#endif

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_I2C_GetNumChannels&amp;nbsp;=&amp;nbsp;(pfunc_I2C_GetNumChannels)GET_FUN_POINTER(h_libMPSSE,&amp;nbsp;&amp;quot;I2C_GetNumChannels&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_I2C_GetChannelInfo&amp;nbsp;=&amp;nbsp;(pfunc_I2C_GetChannelInfo)GET_FUN_POINTER(h_libMPSSE,&amp;nbsp;&amp;quot;I2C_GetChannelInfo&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_I2C_OpenChannel&amp;nbsp;=&amp;nbsp;(pfunc_I2C_OpenChannel)GET_FUN_POINTER(h_libMPSSE,&amp;nbsp;&amp;quot;I2C_OpenChannel&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_I2C_CloseChannel&amp;nbsp;=&amp;nbsp;(pfunc_I2C_CloseChannel)GET_FUN_POINTER(h_libMPSSE,&amp;nbsp;&amp;quot;I2C_CloseChannel&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_I2C_InitChannel&amp;nbsp;=&amp;nbsp;(pfunc_I2C_InitChannel)GET_FUN_POINTER(h_libMPSSE,&amp;nbsp;&amp;quot;I2C_InitChannel&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_I2C_DeviceRead&amp;nbsp;=&amp;nbsp;(pfunc_I2C_DeviceRead)GET_FUN_POINTER(h_libMPSSE,&amp;nbsp;&amp;quot;I2C_DeviceRead&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_I2C_DeviceWrite&amp;nbsp;=&amp;nbsp;(pfunc_I2C_DeviceWrite)GET_FUN_POINTER(h_libMPSSE,&amp;nbsp;&amp;quot;I2C_DeviceWrite&amp;quot;);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK_ERROR(p_I2C_GetNumChannels);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK_ERROR(p_I2C_GetChannelInfo);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK_ERROR(p_I2C_OpenChannel);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK_ERROR(p_I2C_CloseChannel);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK_ERROR(p_I2C_InitChannel);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK_ERROR(p_I2C_DeviceRead);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK_ERROR(p_I2C_DeviceWrite);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;1;
}

static&amp;nbsp;void&amp;nbsp;cleanup_library()&amp;nbsp;{&amp;nbsp;}


/******************************************************************************/
/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;新增的MCP4725相关函数&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
/******************************************************************************/

/*!
&amp;nbsp;*&amp;nbsp;\brief&amp;nbsp;从MCP4725读取当前状态和数据
&amp;nbsp;*&amp;nbsp;\return&amp;nbsp;返回&amp;nbsp;FT_STATUS&amp;nbsp;状态码
&amp;nbsp;*/
static&amp;nbsp;FT_STATUS&amp;nbsp;read_mcp4725_status()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_STATUS&amp;nbsp;status;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8&amp;nbsp;readBuffer[5];&amp;nbsp;//&amp;nbsp;MCP4725读取操作返回5个字节
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint32&amp;nbsp;bytesRead&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;\n---&amp;nbsp;Reading&amp;nbsp;MCP4725&amp;nbsp;Status&amp;nbsp;---\n&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;执行I2C读操作。对于MCP4725，读取时不需要先写入寄存器地址。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Master必须在读取最后一个字节后发送NACK信号。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;p_I2C_DeviceRead(ftHandle,&amp;nbsp;I2C_DEVICE_ADDRESS_MCP4725,&amp;nbsp;5,&amp;nbsp;readBuffer,&amp;nbsp;&amp;amp;bytesRead,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I2C_TRANSFER_OPTIONS_START_BIT&amp;nbsp;|&amp;nbsp;I2C_TRANSFER_OPTIONS_STOP_BIT&amp;nbsp;|&amp;nbsp;I2C_TRANSFER_OPTIONS_NACK_LAST_BYTE);
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(status&amp;nbsp;!=&amp;nbsp;FT_OK)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;!!&amp;nbsp;I2C&amp;nbsp;read&amp;nbsp;failed&amp;nbsp;with&amp;nbsp;status:&amp;nbsp;%d\n&amp;quot;,&amp;nbsp;status);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;status;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(bytesRead&amp;nbsp;!=&amp;nbsp;5)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;!!&amp;nbsp;I2C&amp;nbsp;read&amp;nbsp;failed:&amp;nbsp;expected&amp;nbsp;5&amp;nbsp;bytes&amp;nbsp;but&amp;nbsp;received&amp;nbsp;%d\n&amp;quot;,&amp;nbsp;bytesRead);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;FT_IO_ERROR;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;解析并打印读取到的数据
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;字节&amp;nbsp;1:&amp;nbsp;状态字节
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8&amp;nbsp;isReady&amp;nbsp;=&amp;nbsp;(readBuffer[0]&amp;nbsp;&amp;amp;&amp;nbsp;0x80)&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;7;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8&amp;nbsp;powerDownMode&amp;nbsp;=&amp;nbsp;(readBuffer[0]&amp;nbsp;&amp;amp;&amp;nbsp;0x06)&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;字节&amp;nbsp;2&amp;nbsp;&amp;amp;&amp;nbsp;3:&amp;nbsp;当前DAC寄存器值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint16&amp;nbsp;dacValue&amp;nbsp;=&amp;nbsp;((readBuffer[1]&amp;nbsp;&amp;amp;&amp;nbsp;0x0F)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;8)&amp;nbsp;|&amp;nbsp;readBuffer[2];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float&amp;nbsp;currentVoltage&amp;nbsp;=&amp;nbsp;(float)dacValue&amp;nbsp;/&amp;nbsp;4095.0&amp;nbsp;*&amp;nbsp;VDD_VOLTAGE;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;字节&amp;nbsp;4&amp;nbsp;&amp;amp;&amp;nbsp;5:&amp;nbsp;EEPROM中存储的值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8&amp;nbsp;eepromPowerDown&amp;nbsp;=&amp;nbsp;(readBuffer[3]&amp;nbsp;&amp;amp;&amp;nbsp;0x60)&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;5;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint16&amp;nbsp;eepromValue&amp;nbsp;=&amp;nbsp;((readBuffer[3]&amp;nbsp;&amp;amp;&amp;nbsp;0x0F)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;8)&amp;nbsp;|&amp;nbsp;readBuffer[4];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float&amp;nbsp;eepromVoltage&amp;nbsp;=&amp;nbsp;(float)eepromValue&amp;nbsp;/&amp;nbsp;4095.0&amp;nbsp;*&amp;nbsp;VDD_VOLTAGE;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;EEPROM&amp;nbsp;Write&amp;nbsp;Status&amp;nbsp;:&amp;nbsp;%s\n&amp;quot;,&amp;nbsp;isReady&amp;nbsp;?&amp;nbsp;&amp;quot;Ready&amp;nbsp;(Completed)&amp;quot;&amp;nbsp;:&amp;nbsp;&amp;quot;Busy&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;Current&amp;nbsp;DAC&amp;nbsp;Settings:\n&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Power&amp;nbsp;Mode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch(powerDownMode)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;0:&amp;nbsp;printf(&amp;quot;Normal\n&amp;quot;);&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;1:&amp;nbsp;printf(&amp;quot;Power-Down&amp;nbsp;(1kOhm&amp;nbsp;to&amp;nbsp;GND)\n&amp;quot;);&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;2:&amp;nbsp;printf(&amp;quot;Power-Down&amp;nbsp;(100kOhm&amp;nbsp;to&amp;nbsp;GND)\n&amp;quot;);&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;3:&amp;nbsp;printf(&amp;quot;Power-Down&amp;nbsp;(500kOhm&amp;nbsp;to&amp;nbsp;GND)\n&amp;quot;);&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Register&amp;nbsp;Value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;%u&amp;nbsp;(0x%03X)\n&amp;quot;,&amp;nbsp;dacValue,&amp;nbsp;dacValue);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Output&amp;nbsp;Voltage&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;%.3f&amp;nbsp;V\n&amp;quot;,&amp;nbsp;currentVoltage);
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;Stored&amp;nbsp;EEPROM&amp;nbsp;Settings:\n&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Power&amp;nbsp;Mode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch(eepromPowerDown)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;0:&amp;nbsp;printf(&amp;quot;Normal\n&amp;quot;);&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;1:&amp;nbsp;printf(&amp;quot;Power-Down&amp;nbsp;(1kOhm&amp;nbsp;to&amp;nbsp;GND)\n&amp;quot;);&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;2:&amp;nbsp;printf(&amp;quot;Power-Down&amp;nbsp;(100kOhm&amp;nbsp;to&amp;nbsp;GND)\n&amp;quot;);&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;3:&amp;nbsp;printf(&amp;quot;Power-Down&amp;nbsp;(500kOhm&amp;nbsp;to&amp;nbsp;GND)\n&amp;quot;);&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Stored&amp;nbsp;Value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;%u&amp;nbsp;(0x%03X)\n&amp;quot;,&amp;nbsp;eepromValue,&amp;nbsp;eepromValue);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Power-up&amp;nbsp;Voltage&amp;nbsp;&amp;nbsp;:&amp;nbsp;%.3f&amp;nbsp;V\n&amp;quot;,&amp;nbsp;eepromVoltage);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;--------------------------------\n&amp;quot;);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;FT_OK;
}

/*!
&amp;nbsp;*&amp;nbsp;\brief&amp;nbsp;设置MCP4725的输出电压
&amp;nbsp;*&amp;nbsp;\param[in]&amp;nbsp;voltage&amp;nbsp;想要设置的目标电压值&amp;nbsp;(浮点数)
&amp;nbsp;*&amp;nbsp;\return&amp;nbsp;返回&amp;nbsp;FT_STATUS&amp;nbsp;状态码
&amp;nbsp;*/
static&amp;nbsp;FT_STATUS&amp;nbsp;set_mcp4725_voltage(float&amp;nbsp;voltage)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_STATUS&amp;nbsp;status;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint32&amp;nbsp;bytesTransfered&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint16&amp;nbsp;digitalValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8&amp;nbsp;dataBuffer[2];

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(voltage&amp;nbsp;&amp;lt;&amp;nbsp;0.0)&amp;nbsp;voltage&amp;nbsp;=&amp;nbsp;0.0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(voltage&amp;nbsp;&amp;gt;&amp;nbsp;VDD_VOLTAGE)&amp;nbsp;voltage&amp;nbsp;=&amp;nbsp;VDD_VOLTAGE;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;digitalValue&amp;nbsp;=&amp;nbsp;(uint16)((voltage&amp;nbsp;/&amp;nbsp;VDD_VOLTAGE)&amp;nbsp;*&amp;nbsp;4095.0);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;准备I2C快速写入模式的数据包&amp;nbsp;(2字节)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dataBuffer[0]&amp;nbsp;=&amp;nbsp;(digitalValue&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;8)&amp;nbsp;&amp;amp;&amp;nbsp;0x0F;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dataBuffer[1]&amp;nbsp;=&amp;nbsp;digitalValue&amp;nbsp;&amp;amp;&amp;nbsp;0xFF;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;-&amp;gt;&amp;nbsp;Setting&amp;nbsp;voltage&amp;nbsp;to&amp;nbsp;%.3fV&amp;nbsp;(Digital:&amp;nbsp;%u).&amp;nbsp;Sending&amp;nbsp;bytes&amp;nbsp;[0x%02X,&amp;nbsp;0x%02X]...\n&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;voltage,&amp;nbsp;digitalValue,&amp;nbsp;dataBuffer[0],&amp;nbsp;dataBuffer[1]);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;p_I2C_DeviceWrite(ftHandle,&amp;nbsp;I2C_DEVICE_ADDRESS_MCP4725,&amp;nbsp;2,&amp;nbsp;dataBuffer,&amp;nbsp;&amp;amp;bytesTransfered,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I2C_TRANSFER_OPTIONS_START_BIT&amp;nbsp;|&amp;nbsp;I2C_TRANSFER_OPTIONS_STOP_BIT);
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(status&amp;nbsp;!=&amp;nbsp;FT_OK)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;!!&amp;nbsp;I2C&amp;nbsp;write&amp;nbsp;failed&amp;nbsp;with&amp;nbsp;status:&amp;nbsp;%d\n&amp;quot;,&amp;nbsp;status);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(bytesTransfered&amp;nbsp;!=&amp;nbsp;2)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;!!&amp;nbsp;I2C&amp;nbsp;write&amp;nbsp;failed:&amp;nbsp;incorrect&amp;nbsp;number&amp;nbsp;of&amp;nbsp;bytes&amp;nbsp;transferred&amp;nbsp;(%d)\n&amp;quot;,&amp;nbsp;bytesTransfered);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;FT_IO_ERROR;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;OK\n&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;status;
}

/*!
&amp;nbsp;*&amp;nbsp;\brief&amp;nbsp;MCP4725&amp;nbsp;DAC&amp;nbsp;交互式测试函数
&amp;nbsp;*/
void&amp;nbsp;TestDeviceMCP4725()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;inputBuffer[32];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float&amp;nbsp;targetVoltage;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;\nEnter&amp;nbsp;a&amp;nbsp;voltage&amp;nbsp;(0.0&amp;nbsp;to&amp;nbsp;%.1f)&amp;nbsp;or&amp;nbsp;&amp;#39;q&amp;#39;&amp;nbsp;to&amp;nbsp;quit:&amp;nbsp;&amp;quot;,&amp;nbsp;VDD_VOLTAGE);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;使用fgets安全地读取用户输入
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(fgets(inputBuffer,&amp;nbsp;sizeof(inputBuffer),&amp;nbsp;stdin)&amp;nbsp;==&amp;nbsp;NULL)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&amp;nbsp;//&amp;nbsp;遇到文件结尾或错误
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;检查退出条件
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(inputBuffer[0]&amp;nbsp;==&amp;nbsp;&amp;#39;q&amp;#39;&amp;nbsp;||&amp;nbsp;inputBuffer[0]&amp;nbsp;==&amp;nbsp;&amp;#39;Q&amp;#39;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;Exiting...\n&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;尝试将输入字符串转换为浮点数
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(sscanf(inputBuffer,&amp;nbsp;&amp;quot;%f&amp;quot;,&amp;nbsp;&amp;amp;targetVoltage)&amp;nbsp;!=&amp;nbsp;1)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;Invalid&amp;nbsp;input.&amp;nbsp;Please&amp;nbsp;enter&amp;nbsp;a&amp;nbsp;number&amp;nbsp;or&amp;nbsp;&amp;#39;q&amp;#39;.\n&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;检查电压范围
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(targetVoltage&amp;nbsp;&amp;lt;&amp;nbsp;0.0&amp;nbsp;||&amp;nbsp;targetVoltage&amp;nbsp;&amp;gt;&amp;nbsp;VDD_VOLTAGE)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;Voltage&amp;nbsp;out&amp;nbsp;of&amp;nbsp;range.&amp;nbsp;Please&amp;nbsp;enter&amp;nbsp;a&amp;nbsp;value&amp;nbsp;between&amp;nbsp;0.0&amp;nbsp;and&amp;nbsp;%.1f.\n&amp;quot;,&amp;nbsp;VDD_VOLTAGE);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;设置电压
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_mcp4725_voltage(targetVoltage);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}

/*!
&amp;nbsp;*&amp;nbsp;\brief&amp;nbsp;Main&amp;nbsp;function&amp;nbsp;/&amp;nbsp;Entry&amp;nbsp;point&amp;nbsp;of&amp;nbsp;the&amp;nbsp;sample&amp;nbsp;application
&amp;nbsp;*/
int&amp;nbsp;main()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_STATUS&amp;nbsp;status&amp;nbsp;=&amp;nbsp;FT_OK;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_DEVICE_LIST_INFO_NODE&amp;nbsp;devList&amp;nbsp;=&amp;nbsp;{0};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ChannelConfig&amp;nbsp;channelConf;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint32&amp;nbsp;channels&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint32&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!initialize_library())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;initialize_library&amp;nbsp;failed!\n&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;amp;channelConf,&amp;nbsp;0,&amp;nbsp;sizeof(channelConf));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;channelConf.ClockRate&amp;nbsp;=&amp;nbsp;I2C_CLOCK_FAST_MODE;&amp;nbsp;//&amp;nbsp;400&amp;nbsp;kbps
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;channelConf.LatencyTimer&amp;nbsp;=&amp;nbsp;255;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;p_I2C_GetNumChannels(&amp;amp;channels);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;APP_CHECK_STATUS(status);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;Number&amp;nbsp;of&amp;nbsp;available&amp;nbsp;I2C&amp;nbsp;channels&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;,(int)channels);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(channels&amp;gt;0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(i=0;i&amp;lt;channels;i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;p_I2C_GetChannelInfo(i,&amp;amp;devList);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;APP_CHECK_STATUS(status);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;Information&amp;nbsp;on&amp;nbsp;channel&amp;nbsp;number&amp;nbsp;%u:\n&amp;quot;,(unsigned&amp;nbsp;int)i);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Flags=0x%x\n&amp;quot;,devList.Flags);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Type=0x%x\n&amp;quot;,devList.Type);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID=0x%x\n&amp;quot;,devList.ID);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LocId=0x%x\n&amp;quot;,devList.LocId);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SerialNumber=%s\n&amp;quot;,devList.SerialNumber);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Description=%s\n&amp;quot;,devList.Description);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ftHandle=0x%p\n&amp;quot;,devList.ftHandle);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;p_I2C_OpenChannel(CHANNEL_TO_OPEN,&amp;amp;ftHandle);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;APP_CHECK_STATUS(status);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;\nhandle=0x%p&amp;nbsp;status=%d\n&amp;quot;,ftHandle,(unsigned&amp;nbsp;int)status);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;p_I2C_InitChannel(ftHandle,&amp;amp;channelConf);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;APP_CHECK_STATUS(status);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;**新增功能**:&amp;nbsp;在开始交互前，先读取并显示芯片当前状态
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;read_mcp4725_status();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(status&amp;nbsp;!=&amp;nbsp;FT_OK)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;Could&amp;nbsp;not&amp;nbsp;communicate&amp;nbsp;with&amp;nbsp;MCP4725.&amp;nbsp;Please&amp;nbsp;check&amp;nbsp;wiring&amp;nbsp;and&amp;nbsp;address.\n&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_I2C_CloseChannel(ftHandle);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cleanup_library();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;_WIN32
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&amp;quot;pause&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endif
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;调用交互式测试函数
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TestDeviceMCP4725();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;p_I2C_CloseChannel(ftHandle);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cleanup_library();

#ifdef&amp;nbsp;_WIN32
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&amp;quot;pause&amp;quot;);
#endif
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;
}&lt;/pre&gt;&lt;p&gt;4、打开工程&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/09/202509231758599550432519.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;5、编译运行&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/09/202509231758599569565029.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;运行截图：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/09/202509231758599581279487.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;拔掉I2C设备：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/09/202509231758599603712382.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;测试通过。&lt;/p&gt;&lt;p&gt;附上可直接运行的成品：&lt;img src=&quot;https://world.myfpga.cn/zb_system/image/filetype/zip.png&quot; style=&quot;vertical-align: middle; margin-right: 2px;&quot;/&gt;&lt;a href=&quot;https://world.myfpga.cn/zb_users/upload/2025/09/202509231758599678912157.zip&quot; title=&quot;Debug.zip&quot; style=&quot;font-size: 12px; color: rgb(0, 102, 204);&quot;&gt;Debug.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 23 Sep 2025 11:44:55 +0800</pubDate></item><item><title>ADI ADC Simulink Model 在MatlabR2025a上适配修改，解决警告和报错的问题(以AD9268为例，其他的也可使用)</title><link>https://world.myfpga.cn/index.php/post/464.html</link><description>&lt;p&gt;Matlab R2025a对语法的要求更高，以前版本的无法直接工作，需要进行修改：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/09/202509171758095459166098.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/09/202509171758095469226910.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;主要是修改2个文件：&lt;/p&gt;&lt;p&gt;AD9268_sysobj.m&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-actionscript&quot;&gt;%&amp;nbsp;Copyright&amp;nbsp;(c)&amp;nbsp;2014,&amp;nbsp;Analog&amp;nbsp;Devices&amp;nbsp;Inc.&amp;nbsp;
%&amp;nbsp;All&amp;nbsp;rights&amp;nbsp;reserved.
%&amp;nbsp;
%&amp;nbsp;Redistribution&amp;nbsp;and&amp;nbsp;use&amp;nbsp;in&amp;nbsp;source&amp;nbsp;and&amp;nbsp;binary&amp;nbsp;forms,&amp;nbsp;with&amp;nbsp;or&amp;nbsp;without
%&amp;nbsp;modification,&amp;nbsp;are&amp;nbsp;permitted&amp;nbsp;provided&amp;nbsp;that&amp;nbsp;the&amp;nbsp;following&amp;nbsp;conditions&amp;nbsp;are
%&amp;nbsp;met:
%
%&amp;nbsp;1.&amp;nbsp;Redistributions&amp;nbsp;of&amp;nbsp;source&amp;nbsp;code&amp;nbsp;must&amp;nbsp;retain&amp;nbsp;the&amp;nbsp;above&amp;nbsp;copyright
%&amp;nbsp;notice,&amp;nbsp;this&amp;nbsp;list&amp;nbsp;of&amp;nbsp;conditions&amp;nbsp;and&amp;nbsp;the&amp;nbsp;following&amp;nbsp;disclaimer.
%
%&amp;nbsp;2.Redistributions&amp;nbsp;in&amp;nbsp;binary&amp;nbsp;form&amp;nbsp;must&amp;nbsp;reproduce&amp;nbsp;the&amp;nbsp;above&amp;nbsp;copyright&amp;nbsp;notice,
%&amp;nbsp;this&amp;nbsp;list&amp;nbsp;of&amp;nbsp;conditions&amp;nbsp;and&amp;nbsp;the&amp;nbsp;following&amp;nbsp;disclaimer&amp;nbsp;in&amp;nbsp;the&amp;nbsp;documentation
%&amp;nbsp;and/or&amp;nbsp;other&amp;nbsp;materials&amp;nbsp;provided&amp;nbsp;with&amp;nbsp;the&amp;nbsp;distribution.
%
%&amp;nbsp;3.&amp;nbsp;Neither&amp;nbsp;the&amp;nbsp;name&amp;nbsp;of&amp;nbsp;the&amp;nbsp;copyright&amp;nbsp;holder&amp;nbsp;nor&amp;nbsp;the&amp;nbsp;names&amp;nbsp;of&amp;nbsp;its
%&amp;nbsp;contributors&amp;nbsp;may&amp;nbsp;be&amp;nbsp;used&amp;nbsp;to&amp;nbsp;endorse&amp;nbsp;or&amp;nbsp;promote&amp;nbsp;products&amp;nbsp;derived&amp;nbsp;from&amp;nbsp;this
%&amp;nbsp;software&amp;nbsp;without&amp;nbsp;specific&amp;nbsp;prior&amp;nbsp;written&amp;nbsp;permission.
%
%&amp;nbsp;THIS&amp;nbsp;SOFTWARE&amp;nbsp;IS&amp;nbsp;PROVIDED&amp;nbsp;BY&amp;nbsp;THE&amp;nbsp;COPYRIGHT&amp;nbsp;HOLDERS&amp;nbsp;AND&amp;nbsp;CONTRIBUTORS&amp;nbsp;&amp;quot;AS
%&amp;nbsp;IS&amp;quot;&amp;nbsp;AND&amp;nbsp;ANY&amp;nbsp;EXPRESS&amp;nbsp;OR&amp;nbsp;IMPLIED&amp;nbsp;WARRANTIES,&amp;nbsp;INCLUDING,&amp;nbsp;BUT&amp;nbsp;NOT&amp;nbsp;LIMITED&amp;nbsp;TO,
%&amp;nbsp;THE&amp;nbsp;IMPLIED&amp;nbsp;WARRANTIES&amp;nbsp;OF&amp;nbsp;MERCHANTABILITY&amp;nbsp;AND&amp;nbsp;FITNESS&amp;nbsp;FOR&amp;nbsp;A&amp;nbsp;PARTICULAR
%&amp;nbsp;PURPOSE&amp;nbsp;ARE&amp;nbsp;DISCLAIMED.&amp;nbsp;IN&amp;nbsp;NO&amp;nbsp;EVENT&amp;nbsp;SHALL&amp;nbsp;THE&amp;nbsp;COPYRIGHT&amp;nbsp;HOLDER&amp;nbsp;OR
%&amp;nbsp;CONTRIBUTORS&amp;nbsp;BE&amp;nbsp;LIABLE&amp;nbsp;FOR&amp;nbsp;ANY&amp;nbsp;DIRECT,&amp;nbsp;INDIRECT,&amp;nbsp;INCIDENTAL,&amp;nbsp;SPECIAL,
%&amp;nbsp;EXEMPLARY,&amp;nbsp;OR&amp;nbsp;CONSEQUENTIAL&amp;nbsp;DAMAGES&amp;nbsp;(INCLUDING,&amp;nbsp;BUT&amp;nbsp;NOT&amp;nbsp;LIMITED&amp;nbsp;TO,
%&amp;nbsp;PROCUREMENT&amp;nbsp;OF&amp;nbsp;SUBSTITUTE&amp;nbsp;GOODS&amp;nbsp;OR&amp;nbsp;SERVICES;&amp;nbsp;LOSS&amp;nbsp;OF&amp;nbsp;USE,&amp;nbsp;DATA,&amp;nbsp;OR
%&amp;nbsp;PROFITS;&amp;nbsp;OR&amp;nbsp;BUSINESS&amp;nbsp;INTERRUPTION)&amp;nbsp;HOWEVER&amp;nbsp;CAUSED&amp;nbsp;AND&amp;nbsp;ON&amp;nbsp;ANY&amp;nbsp;THEORY&amp;nbsp;OF
%&amp;nbsp;LIABILITY,&amp;nbsp;WHETHER&amp;nbsp;IN&amp;nbsp;CONTRACT,&amp;nbsp;STRICT&amp;nbsp;LIABILITY,&amp;nbsp;OR&amp;nbsp;TORT&amp;nbsp;(INCLUDING
%&amp;nbsp;NEGLIGENCE&amp;nbsp;OR&amp;nbsp;OTHERWISE)&amp;nbsp;ARISING&amp;nbsp;IN&amp;nbsp;ANY&amp;nbsp;WAY&amp;nbsp;OUT&amp;nbsp;OF&amp;nbsp;THE&amp;nbsp;USE&amp;nbsp;OF&amp;nbsp;THIS
%&amp;nbsp;SOFTWARE,&amp;nbsp;EVEN&amp;nbsp;IF&amp;nbsp;ADVISED&amp;nbsp;OF&amp;nbsp;THE&amp;nbsp;POSSIBILITY&amp;nbsp;OF&amp;nbsp;SUCH&amp;nbsp;DAMAGE.
classdef&amp;nbsp;AD9268_sysobj&amp;nbsp;&amp;lt;&amp;nbsp;matlab.System
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;System&amp;nbsp;Object&amp;nbsp;behavioral&amp;nbsp;model&amp;nbsp;for&amp;nbsp;Analog&amp;nbsp;Devices&amp;#39;&amp;nbsp;High-Speed&amp;nbsp;ADCs
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Notes:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;The&amp;nbsp;Resolution&amp;nbsp;dropdown&amp;nbsp;filters&amp;nbsp;the&amp;nbsp;ADC&amp;nbsp;options
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;In&amp;nbsp;the&amp;nbsp;name&amp;nbsp;of&amp;nbsp;the&amp;nbsp;ADC&amp;nbsp;is&amp;nbsp;the&amp;nbsp;maximum&amp;nbsp;sampling&amp;nbsp;clock,&amp;nbsp;be&amp;nbsp;sure
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;to&amp;nbsp;adjust&amp;nbsp;your&amp;nbsp;sampling&amp;nbsp;clock&amp;nbsp;accordingly.
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;properties
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Specific&amp;nbsp;Options
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SpecificOptions&amp;nbsp;=&amp;nbsp;&amp;#39;125&amp;nbsp;MSPS&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Sampling&amp;nbsp;Clock&amp;nbsp;Frequency&amp;nbsp;(Hz)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Fclk&amp;nbsp;=&amp;nbsp;125e6;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Mean&amp;nbsp;Frequency&amp;nbsp;(Hz)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tessitura&amp;nbsp;=&amp;nbsp;2.3e6;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;RMS&amp;nbsp;Clock&amp;nbsp;Jitter&amp;nbsp;(sec)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExtJitter&amp;nbsp;=&amp;nbsp;6e-014;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Input&amp;nbsp;Configuration
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InputConfig&amp;nbsp;=&amp;nbsp;&amp;#39;Normalized&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;properties&amp;nbsp;(Access&amp;nbsp;=&amp;nbsp;private)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pm;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;MOTIF&amp;nbsp;Object
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;poffset;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;ADC&amp;nbsp;Offset
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prange;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;ADC&amp;nbsp;Range
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pgeneric;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Generic&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pspecificOptionsMap;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Specific&amp;nbsp;Options&amp;nbsp;map
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;properties(Constant,&amp;nbsp;Hidden)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SpecificOptionsSet&amp;nbsp;=&amp;nbsp;matlab.system.StringSet({&amp;#39;80&amp;nbsp;MSPS&amp;#39;,&amp;nbsp;&amp;#39;105&amp;nbsp;MSPS&amp;#39;,&amp;nbsp;&amp;#39;125&amp;nbsp;MSPS&amp;#39;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InputConfigSet&amp;nbsp;=&amp;nbsp;matlab.system.StringSet({&amp;#39;Normalized&amp;#39;,&amp;nbsp;&amp;#39;Absolute&amp;#39;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;properties&amp;nbsp;(DiscreteState)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;methods
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Constructor
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;obj&amp;nbsp;=&amp;nbsp;AD9268_sysobj(varargin)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Support&amp;nbsp;name-value&amp;nbsp;pair&amp;nbsp;arguments&amp;nbsp;when&amp;nbsp;constructing&amp;nbsp;the
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;object.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Assign&amp;nbsp;generic
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.pgeneric&amp;nbsp;=&amp;nbsp;&amp;#39;AD9268&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Build&amp;nbsp;options&amp;nbsp;maps&amp;nbsp;(note:&amp;nbsp;indexing&amp;nbsp;SpecificOptionsSet&amp;nbsp;is
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;impossible)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.pspecificOptionsMap&amp;nbsp;=&amp;nbsp;containers.Map;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.pspecificOptionsMap(&amp;#39;80&amp;nbsp;MSPS&amp;#39;)&amp;nbsp;=&amp;nbsp;&amp;#39;80&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.pspecificOptionsMap(&amp;#39;105&amp;nbsp;MSPS&amp;#39;)&amp;nbsp;=&amp;nbsp;&amp;#39;105&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.pspecificOptionsMap(&amp;#39;125&amp;nbsp;MSPS&amp;#39;)&amp;nbsp;=&amp;nbsp;&amp;#39;125&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Add&amp;nbsp;MOTIF&amp;nbsp;path
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelPath&amp;nbsp;=&amp;nbsp;get_param(gcs,&amp;#39;FileName&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelFolder&amp;nbsp;=&amp;nbsp;fileparts(modelPath);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resourcesFolder&amp;nbsp;=&amp;nbsp;fullfile(modelFolder,&amp;nbsp;&amp;#39;MOTIF&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addpath(resourcesFolder);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setProperties(obj,nargin,varargin{:});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;methods&amp;nbsp;(Static,&amp;nbsp;Access&amp;nbsp;=&amp;nbsp;protected)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;header&amp;nbsp;=&amp;nbsp;getHeaderImpl
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;header&amp;nbsp;=&amp;nbsp;matlab.system.display.Header(mfilename(&amp;#39;class&amp;#39;),...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;Title&amp;#39;,&amp;#39;System&amp;nbsp;Object&amp;nbsp;for&amp;nbsp;an&amp;nbsp;ADC&amp;#39;,...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;Text&amp;#39;,&amp;#39;This&amp;nbsp;is&amp;nbsp;a&amp;nbsp;behavioral&amp;nbsp;model&amp;nbsp;of&amp;nbsp;an&amp;nbsp;ADC.&amp;#39;,...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;ShowSourceLink&amp;#39;,false);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;methods&amp;nbsp;(Access&amp;nbsp;=&amp;nbsp;protected)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%%&amp;nbsp;Common&amp;nbsp;functions
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;setupImpl(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Implement&amp;nbsp;tasks&amp;nbsp;that&amp;nbsp;need&amp;nbsp;to&amp;nbsp;be&amp;nbsp;performed&amp;nbsp;only&amp;nbsp;once,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;such&amp;nbsp;as&amp;nbsp;pre-computed&amp;nbsp;constants.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelPath&amp;nbsp;=&amp;nbsp;obj.determineModelName();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.pm&amp;nbsp;=&amp;nbsp;MOTIF_if([&amp;#39;MOTIF&amp;#39;&amp;nbsp;filesep&amp;nbsp;modelPath]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(~obj.pm.isLoaded())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error(&amp;#39;Error:&amp;nbsp;Could&amp;nbsp;not&amp;nbsp;open&amp;nbsp;file!&amp;nbsp;&amp;nbsp;Check&amp;nbsp;to&amp;nbsp;see&amp;nbsp;if&amp;nbsp;you&amp;nbsp;have&amp;nbsp;the&amp;nbsp;model&amp;nbsp;file&amp;nbsp;downloaded&amp;nbsp;in&amp;nbsp;your&amp;nbsp;path.&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Get&amp;nbsp;maximum&amp;nbsp;sampling&amp;nbsp;rate,&amp;nbsp;and&amp;nbsp;coerce&amp;nbsp;if&amp;nbsp;necessary
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;clkmax&amp;nbsp;=&amp;nbsp;str2double(obj.pm.getProp(&amp;#39;settings&amp;#39;,&amp;nbsp;&amp;#39;clkmax&amp;#39;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;obj.Fclk&amp;nbsp;&amp;gt;&amp;nbsp;clkmax
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fclk&amp;nbsp;=&amp;nbsp;clkmax;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;warning(&amp;#39;Sampling&amp;nbsp;Rate&amp;nbsp;was&amp;nbsp;too&amp;nbsp;high,&amp;nbsp;coerced&amp;nbsp;to&amp;nbsp;maximum&amp;nbsp;for&amp;nbsp;this&amp;nbsp;device&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fclk&amp;nbsp;=&amp;nbsp;obj.Fclk;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Push&amp;nbsp;simulation&amp;nbsp;properties&amp;nbsp;to&amp;nbsp;MOTIF
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.pm.setProp(&amp;#39;GLOBAL&amp;#39;,&amp;nbsp;&amp;#39;fclk&amp;#39;,&amp;nbsp;num2str(fclk));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.pm.setProp(&amp;#39;GLOBAL&amp;#39;,&amp;nbsp;&amp;#39;tessitura&amp;#39;,&amp;nbsp;num2str(obj.Tessitura));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.pm.setProp(&amp;#39;settings&amp;#39;,&amp;nbsp;&amp;#39;extjitter&amp;#39;,&amp;nbsp;num2str(obj.ExtJitter));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;strcmp(obj.InputConfig,&amp;nbsp;&amp;#39;Normalized&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.poffset&amp;nbsp;=&amp;nbsp;str2double(obj.pm.getProp(&amp;#39;settings&amp;#39;,&amp;nbsp;&amp;#39;offset&amp;#39;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.prange&amp;nbsp;=&amp;nbsp;str2double(obj.pm.getProp(&amp;#39;settings&amp;#39;,&amp;nbsp;&amp;#39;range&amp;#39;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.poffset&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.prange&amp;nbsp;=&amp;nbsp;2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;modelPath&amp;nbsp;=&amp;nbsp;determineModelName(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Determines&amp;nbsp;the&amp;nbsp;currently&amp;nbsp;selected&amp;nbsp;model&amp;nbsp;name&amp;nbsp;and&amp;nbsp;saves&amp;nbsp;to
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;pmodelPath
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelPath&amp;nbsp;=&amp;nbsp;obj.pgeneric;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~strcmp(obj.SpecificOptions,&amp;nbsp;&amp;#39;[empty]&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;specificOptions&amp;nbsp;=&amp;nbsp;obj.pspecificOptionsMap(obj.SpecificOptions);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelPath&amp;nbsp;=&amp;nbsp;[modelPath&amp;nbsp;&amp;#39;_&amp;#39;&amp;nbsp;specificOptions];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelPath&amp;nbsp;=&amp;nbsp;[modelPath&amp;nbsp;&amp;#39;.adc&amp;#39;];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;y&amp;nbsp;=&amp;nbsp;stepImpl(obj,&amp;nbsp;u)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Implement&amp;nbsp;algorithm.&amp;nbsp;Calculate&amp;nbsp;y&amp;nbsp;as&amp;nbsp;a&amp;nbsp;function&amp;nbsp;of
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;input&amp;nbsp;u&amp;nbsp;and&amp;nbsp;discrete&amp;nbsp;states.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y&amp;nbsp;=&amp;nbsp;obj.pm.runSamples(u&amp;nbsp;*&amp;nbsp;obj.prange&amp;nbsp;/&amp;nbsp;2&amp;nbsp;+&amp;nbsp;obj.poffset);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;releaseImpl(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Initialize&amp;nbsp;discrete-state&amp;nbsp;properties.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.pm.destroy();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;This&amp;nbsp;method&amp;nbsp;controls&amp;nbsp;visibility&amp;nbsp;of&amp;nbsp;the&amp;nbsp;object&amp;#39;s&amp;nbsp;properties
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;flag&amp;nbsp;=&amp;nbsp;isInactivePropertyImpl(obj,&amp;nbsp;propertyName)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flag&amp;nbsp;=&amp;nbsp;false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;strcmp(propertyName,&amp;nbsp;&amp;#39;SpecificOptions&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;strcmp(obj.SpecificOptions,&amp;nbsp;&amp;#39;[empty]&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flag&amp;nbsp;=&amp;nbsp;true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;icon&amp;nbsp;=&amp;nbsp;getIconImpl(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;icon&amp;nbsp;=&amp;nbsp;obj.pgeneric;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;dataout&amp;nbsp;=&amp;nbsp;getOutputDataTypeImpl(~)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dataout&amp;nbsp;=&amp;nbsp;&amp;#39;double&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;sizeout&amp;nbsp;=&amp;nbsp;getOutputSizeImpl(~)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sizeout&amp;nbsp;=&amp;nbsp;[1&amp;nbsp;1];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;cplxout&amp;nbsp;=&amp;nbsp;isOutputComplexImpl(~)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cplxout&amp;nbsp;=&amp;nbsp;false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;fixedout&amp;nbsp;=&amp;nbsp;isOutputFixedSizeImpl(~)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fixedout&amp;nbsp;=&amp;nbsp;true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;num&amp;nbsp;=&amp;nbsp;getNumInputsImpl(~)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;num&amp;nbsp;=&amp;nbsp;1;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;varargout&amp;nbsp;=&amp;nbsp;getInputNamesImpl(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numInputs&amp;nbsp;=&amp;nbsp;getNumInputs(obj);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;varargout&amp;nbsp;=&amp;nbsp;cell(1,numInputs);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;varargout{1}&amp;nbsp;=&amp;nbsp;&amp;#39;in&amp;nbsp;(V)&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;varargout&amp;nbsp;=&amp;nbsp;getOutputNamesImpl(~)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;varargout&amp;nbsp;=&amp;nbsp;cell(1,1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;varargout{1}&amp;nbsp;=&amp;nbsp;&amp;#39;out&amp;nbsp;(Code)&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
end&lt;/pre&gt;&lt;p&gt;MOTIF_if.m&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-actionscript&quot;&gt;%&amp;nbsp;Copyright&amp;nbsp;(c)&amp;nbsp;2014,&amp;nbsp;Analog&amp;nbsp;Devices&amp;nbsp;Inc.
%&amp;nbsp;All&amp;nbsp;rights&amp;nbsp;reserved.
%
%&amp;nbsp;Redistribution&amp;nbsp;and&amp;nbsp;use&amp;nbsp;in&amp;nbsp;source&amp;nbsp;and&amp;nbsp;binary&amp;nbsp;forms,&amp;nbsp;with&amp;nbsp;or&amp;nbsp;without
%&amp;nbsp;modification,&amp;nbsp;are&amp;nbsp;permitted&amp;nbsp;provided&amp;nbsp;that&amp;nbsp;the&amp;nbsp;following&amp;nbsp;conditions&amp;nbsp;are
%&amp;nbsp;met:
%
%&amp;nbsp;1.&amp;nbsp;Redistributions&amp;nbsp;of&amp;nbsp;source&amp;nbsp;code&amp;nbsp;must&amp;nbsp;retain&amp;nbsp;the&amp;nbsp;above&amp;nbsp;copyright
%&amp;nbsp;notice,&amp;nbsp;this&amp;nbsp;list&amp;nbsp;of&amp;nbsp;conditions&amp;nbsp;and&amp;nbsp;the&amp;nbsp;following&amp;nbsp;disclaimer.
%
%&amp;nbsp;2.Redistributions&amp;nbsp;in&amp;nbsp;binary&amp;nbsp;form&amp;nbsp;must&amp;nbsp;reproduce&amp;nbsp;the&amp;nbsp;above&amp;nbsp;copyright&amp;nbsp;notice,
%&amp;nbsp;this&amp;nbsp;list&amp;nbsp;of&amp;nbsp;conditions&amp;nbsp;and&amp;nbsp;the&amp;nbsp;following&amp;nbsp;disclaimer&amp;nbsp;in&amp;nbsp;the&amp;nbsp;documentation
%&amp;nbsp;and/or&amp;nbsp;other&amp;nbsp;materials&amp;nbsp;provided&amp;nbsp;with&amp;nbsp;the&amp;nbsp;distribution.
%
%&amp;nbsp;3.&amp;nbsp;Neither&amp;nbsp;the&amp;nbsp;name&amp;nbsp;of&amp;nbsp;the&amp;nbsp;copyright&amp;nbsp;holder&amp;nbsp;nor&amp;nbsp;the&amp;nbsp;names&amp;nbsp;of&amp;nbsp;its
%&amp;nbsp;contributors&amp;nbsp;may&amp;nbsp;be&amp;nbsp;used&amp;nbsp;to&amp;nbsp;endorse&amp;nbsp;or&amp;nbsp;promote&amp;nbsp;products&amp;nbsp;derived&amp;nbsp;from&amp;nbsp;this
%&amp;nbsp;software&amp;nbsp;without&amp;nbsp;specific&amp;nbsp;prior&amp;nbsp;written&amp;nbsp;permission.
%
%&amp;nbsp;THIS&amp;nbsp;SOFTWARE&amp;nbsp;IS&amp;nbsp;PROVIDED&amp;nbsp;BY&amp;nbsp;THE&amp;nbsp;COPYRIGHT&amp;nbsp;HOLDERS&amp;nbsp;AND&amp;nbsp;CONTRIBUTORS&amp;nbsp;&amp;quot;AS
%&amp;nbsp;IS&amp;quot;&amp;nbsp;AND&amp;nbsp;ANY&amp;nbsp;EXPRESS&amp;nbsp;OR&amp;nbsp;IMPLIED&amp;nbsp;WARRANTIES,&amp;nbsp;INCLUDING,&amp;nbsp;BUT&amp;nbsp;NOT&amp;nbsp;LIMITED&amp;nbsp;TO,
%&amp;nbsp;THE&amp;nbsp;IMPLIED&amp;nbsp;WARRANTIES&amp;nbsp;OF&amp;nbsp;MERCHANTABILITY&amp;nbsp;AND&amp;nbsp;FITNESS&amp;nbsp;FOR&amp;nbsp;A&amp;nbsp;PARTICULAR
%&amp;nbsp;PURPOSE&amp;nbsp;ARE&amp;nbsp;DISCLAIMED.&amp;nbsp;IN&amp;nbsp;NO&amp;nbsp;EVENT&amp;nbsp;SHALL&amp;nbsp;THE&amp;nbsp;COPYRIGHT&amp;nbsp;HOLDER&amp;nbsp;OR
%&amp;nbsp;CONTRIBUTORS&amp;nbsp;BE&amp;nbsp;LIABLE&amp;nbsp;FOR&amp;nbsp;ANY&amp;nbsp;DIRECT,&amp;nbsp;INDIRECT,&amp;nbsp;INCIDENTAL,&amp;nbsp;SPECIAL,
%&amp;nbsp;EXEMPLARY,&amp;nbsp;OR&amp;nbsp;CONSEQUENTIAL&amp;nbsp;DAMAGES&amp;nbsp;(INCLUDING,&amp;nbsp;BUT&amp;nbsp;NOT&amp;nbsp;LIMITED&amp;nbsp;TO,
%&amp;nbsp;PROCUREMENT&amp;nbsp;OF&amp;nbsp;SUBSTITUTE&amp;nbsp;GOODS&amp;nbsp;OR&amp;nbsp;SERVICES;&amp;nbsp;LOSS&amp;nbsp;OF&amp;nbsp;USE,&amp;nbsp;DATA,&amp;nbsp;OR
%&amp;nbsp;PROFITS;&amp;nbsp;OR&amp;nbsp;BUSINESS&amp;nbsp;INTERRUPTION)&amp;nbsp;HOWEVER&amp;nbsp;CAUSED&amp;nbsp;AND&amp;nbsp;ON&amp;nbsp;ANY&amp;nbsp;THEORY&amp;nbsp;OF
%&amp;nbsp;LIABILITY,&amp;nbsp;WHETHER&amp;nbsp;IN&amp;nbsp;CONTRACT,&amp;nbsp;STRICT&amp;nbsp;LIABILITY,&amp;nbsp;OR&amp;nbsp;TORT&amp;nbsp;(INCLUDING
%&amp;nbsp;NEGLIGENCE&amp;nbsp;OR&amp;nbsp;OTHERWISE)&amp;nbsp;ARISING&amp;nbsp;IN&amp;nbsp;ANY&amp;nbsp;WAY&amp;nbsp;OUT&amp;nbsp;OF&amp;nbsp;THE&amp;nbsp;USE&amp;nbsp;OF&amp;nbsp;THIS
%&amp;nbsp;SOFTWARE,&amp;nbsp;EVEN&amp;nbsp;IF&amp;nbsp;ADVISED&amp;nbsp;OF&amp;nbsp;THE&amp;nbsp;POSSIBILITY&amp;nbsp;OF&amp;nbsp;SUCH&amp;nbsp;DAMAGE.
classdef&amp;nbsp;MOTIF_if&amp;nbsp;&amp;lt;&amp;nbsp;handle
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%UNTITLED&amp;nbsp;Summary&amp;nbsp;of&amp;nbsp;this&amp;nbsp;class&amp;nbsp;goes&amp;nbsp;here
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;Detailed&amp;nbsp;explanation&amp;nbsp;goes&amp;nbsp;here
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;properties&amp;nbsp;(Access&amp;nbsp;=&amp;nbsp;protected)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;methods&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;obj&amp;nbsp;=&amp;nbsp;MOTIF_if(filename)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;OS&amp;nbsp;specific&amp;nbsp;code
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;ispc()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prefix&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;suffix&amp;nbsp;=&amp;nbsp;&amp;#39;.dll&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prefix&amp;nbsp;=&amp;nbsp;&amp;#39;lib&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;suffix&amp;nbsp;=&amp;nbsp;&amp;#39;.so&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;library_name&amp;nbsp;=&amp;nbsp;[prefix&amp;nbsp;&amp;#39;MOTIF&amp;#39;&amp;nbsp;suffix];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Check&amp;nbsp;to&amp;nbsp;see&amp;nbsp;if&amp;nbsp;the&amp;nbsp;library&amp;nbsp;is&amp;nbsp;loaded&amp;nbsp;already
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(~libisloaded(&amp;#39;MOTIF&amp;#39;))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loadlibrary(library_name,&amp;nbsp;&amp;#39;MOTIF.h&amp;#39;,&amp;nbsp;&amp;#39;alias&amp;#39;,&amp;nbsp;&amp;#39;MOTIF&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Try&amp;nbsp;and&amp;nbsp;resolve&amp;nbsp;absolute&amp;nbsp;path
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~exist(filename,&amp;nbsp;&amp;#39;file&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tf&amp;nbsp;=&amp;nbsp;[&amp;#39;MOTIF&amp;#39;&amp;nbsp;filesep&amp;nbsp;filename];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;exist(tf,&amp;nbsp;&amp;#39;file&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filename&amp;nbsp;=&amp;nbsp;tf;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error_msg&amp;nbsp;=&amp;nbsp;sprintf(&amp;#39;Cannot&amp;nbsp;find&amp;nbsp;model:&amp;nbsp;%s&amp;#39;,&amp;nbsp;filename);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error(error_msg);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Load&amp;nbsp;the&amp;nbsp;PMF&amp;nbsp;into&amp;nbsp;memory
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.key&amp;nbsp;=&amp;nbsp;calllib(&amp;#39;MOTIF&amp;#39;,&amp;nbsp;&amp;#39;ImportPMF&amp;#39;,&amp;nbsp;filename);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;key&amp;nbsp;=&amp;nbsp;getKey(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key&amp;nbsp;=&amp;nbsp;obj.key;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;isLoaded&amp;nbsp;=&amp;nbsp;isLoaded(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isLoaded&amp;nbsp;=&amp;nbsp;~(obj.key&amp;nbsp;==&amp;nbsp;0);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;interface&amp;nbsp;=&amp;nbsp;queryInterface(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;direction&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Input
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;in_count&amp;nbsp;=&amp;nbsp;obj.getPortCount(direction);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;for&amp;nbsp;in_count&amp;nbsp;to&amp;nbsp;prevent&amp;nbsp;negative&amp;nbsp;indexing&amp;nbsp;if&amp;nbsp;in_count&amp;nbsp;is&amp;nbsp;0.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;in_count&amp;nbsp;&amp;gt;&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.in&amp;nbsp;=&amp;nbsp;obj.queryPort(direction,&amp;nbsp;in_count&amp;nbsp;-&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Handle&amp;nbsp;case&amp;nbsp;where&amp;nbsp;no&amp;nbsp;input&amp;nbsp;port&amp;nbsp;is&amp;nbsp;found,&amp;nbsp;e.g.,&amp;nbsp;assign&amp;nbsp;default&amp;nbsp;or&amp;nbsp;throw&amp;nbsp;error
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.in.f&amp;nbsp;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.in.is_complex&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.in.domain&amp;nbsp;=&amp;nbsp;&amp;#39;[unspecified]&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.in.unit&amp;nbsp;=&amp;nbsp;&amp;#39;[unspecified]&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;direction&amp;nbsp;=&amp;nbsp;1;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Output
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out_count&amp;nbsp;=&amp;nbsp;obj.getPortCount(direction);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;for&amp;nbsp;out_count.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;out_count&amp;nbsp;&amp;gt;&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.out&amp;nbsp;=&amp;nbsp;obj.queryPort(direction,&amp;nbsp;out_count&amp;nbsp;-&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.out.f&amp;nbsp;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.out.is_complex&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.out.domain&amp;nbsp;=&amp;nbsp;&amp;#39;[unspecified]&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.out.unit&amp;nbsp;=&amp;nbsp;&amp;#39;[unspecified]&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Ensure&amp;nbsp;interface.in.f&amp;nbsp;is&amp;nbsp;not&amp;nbsp;zero&amp;nbsp;to&amp;nbsp;prevent&amp;nbsp;division&amp;nbsp;by&amp;nbsp;zero
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;interface.in.f&amp;nbsp;~=&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.r&amp;nbsp;=&amp;nbsp;interface.out.f&amp;nbsp;/&amp;nbsp;interface.in.f;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface.r&amp;nbsp;=&amp;nbsp;1;&amp;nbsp;%&amp;nbsp;Default&amp;nbsp;or&amp;nbsp;error&amp;nbsp;handling
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;[modeName,&amp;nbsp;modeDisplayName]&amp;nbsp;=&amp;nbsp;getMode(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response&amp;nbsp;=&amp;nbsp;obj.processMessage(&amp;#39;&amp;lt;getmode&amp;nbsp;/&amp;gt;&amp;#39;);&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modeElements&amp;nbsp;=&amp;nbsp;MOTIF_if.getChildren(response);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;for&amp;nbsp;empty&amp;nbsp;modeElements
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(modeElements)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modeName&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modeDisplayName&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attributes&amp;nbsp;=&amp;nbsp;MOTIF_if.getAttributes(modeElements(1));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;checks&amp;nbsp;for&amp;nbsp;key&amp;nbsp;existence
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modeName&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;mn&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modeName&amp;nbsp;=&amp;nbsp;attributes(&amp;#39;mn&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modeDisplayName&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;mdn&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modeDisplayName&amp;nbsp;=&amp;nbsp;attributes(&amp;#39;mdn&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;modes&amp;nbsp;=&amp;nbsp;queryModes(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Returns&amp;nbsp;a&amp;nbsp;Maps&amp;nbsp;that&amp;nbsp;contain&amp;nbsp;the&amp;nbsp;mode&amp;nbsp;display&amp;nbsp;names
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response&amp;nbsp;=&amp;nbsp;obj.processMessage(&amp;#39;&amp;lt;querymodes&amp;nbsp;/&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;queryModesElements&amp;nbsp;=&amp;nbsp;MOTIF_if.getChildren(response);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modes&amp;nbsp;=&amp;nbsp;containers.Map;&amp;nbsp;%&amp;nbsp;Initialize&amp;nbsp;modes&amp;nbsp;map
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;for&amp;nbsp;empty&amp;nbsp;queryModesElements
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(queryModesElements)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;Return&amp;nbsp;empty&amp;nbsp;map&amp;nbsp;if&amp;nbsp;no&amp;nbsp;modes&amp;nbsp;are&amp;nbsp;found
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modeElements&amp;nbsp;=&amp;nbsp;MOTIF_if.getChildren(queryModesElements(1));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;i&amp;nbsp;=&amp;nbsp;1:length(modeElements)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attributes&amp;nbsp;=&amp;nbsp;MOTIF_if.getAttributes(modeElements(i));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;if&amp;nbsp;&amp;#39;mn&amp;#39;&amp;nbsp;and&amp;nbsp;&amp;#39;mdn&amp;#39;&amp;nbsp;attribute&amp;nbsp;exists
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;mn&amp;#39;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;mdn&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modes(attributes(&amp;#39;mn&amp;#39;))&amp;nbsp;=&amp;nbsp;attributes(&amp;#39;mdn&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;printModes(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modes&amp;nbsp;=&amp;nbsp;obj.queryModes();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ks&amp;nbsp;=&amp;nbsp;keys(modes);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;k_idx&amp;nbsp;=&amp;nbsp;1:length(ks)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k&amp;nbsp;=&amp;nbsp;ks(k_idx);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mode&amp;nbsp;=&amp;nbsp;modes(k{1});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;disp([k{1}&amp;nbsp;&amp;#39;&amp;nbsp;:&amp;nbsp;&amp;#39;&amp;nbsp;mode]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;setMode(obj,&amp;nbsp;mode)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msg&amp;nbsp;=&amp;nbsp;[&amp;#39;&amp;lt;setmode&amp;gt;&amp;#39;&amp;nbsp;mode&amp;nbsp;&amp;#39;&amp;lt;/setmode&amp;gt;&amp;#39;];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.processMessage(msg);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;[value,&amp;nbsp;displayName,&amp;nbsp;permission,&amp;nbsp;limits,&amp;nbsp;type,&amp;nbsp;unit,&amp;nbsp;toolTip]&amp;nbsp;=&amp;nbsp;getProp(obj,&amp;nbsp;blockName,&amp;nbsp;propName)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response&amp;nbsp;=&amp;nbsp;obj.processMessage([&amp;#39;&amp;lt;getprop&amp;nbsp;bn=&amp;quot;&amp;#39;&amp;nbsp;blockName&amp;nbsp;&amp;#39;&amp;quot;&amp;nbsp;pn=&amp;quot;&amp;#39;&amp;nbsp;propName&amp;nbsp;&amp;#39;&amp;quot;/&amp;gt;&amp;#39;]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getPropElements&amp;nbsp;=&amp;nbsp;MOTIF_if.getChildren(response);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;for&amp;nbsp;empty&amp;nbsp;getPropElements
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(getPropElements)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;displayName&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;permission&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;limits&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;type&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;unit&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;toolTip&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;MOTIF_if.getText(getPropElements(1));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attributes&amp;nbsp;=&amp;nbsp;MOTIF_if.getAttributes(getPropElements(1));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;checks&amp;nbsp;for&amp;nbsp;key&amp;nbsp;existence
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayName&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;pdn&amp;#39;),&amp;nbsp;displayName&amp;nbsp;=&amp;nbsp;attributes(&amp;#39;pdn&amp;#39;);&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;permission&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;p&amp;#39;),&amp;nbsp;permission&amp;nbsp;=&amp;nbsp;attributes(&amp;#39;p&amp;#39;);&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;limits&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;l&amp;#39;),&amp;nbsp;limits&amp;nbsp;=&amp;nbsp;attributes(&amp;#39;l&amp;#39;);&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;t&amp;#39;),&amp;nbsp;type&amp;nbsp;=&amp;nbsp;attributes(&amp;#39;t&amp;#39;);&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unit&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;u&amp;#39;),&amp;nbsp;unit&amp;nbsp;=&amp;nbsp;attributes(&amp;#39;u&amp;#39;);&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toolTip&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;tt&amp;#39;),&amp;nbsp;toolTip&amp;nbsp;=&amp;nbsp;attributes(&amp;#39;tt&amp;#39;);&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;props&amp;nbsp;=&amp;nbsp;queryProps(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Returns&amp;nbsp;a&amp;nbsp;Map&amp;nbsp;of&amp;nbsp;Maps&amp;nbsp;that&amp;nbsp;contain&amp;nbsp;the&amp;nbsp;properties
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Explanantion&amp;nbsp;of&amp;nbsp;keys&amp;nbsp;-
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;pn&amp;nbsp;=&amp;nbsp;property&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;pdn&amp;nbsp;=&amp;nbsp;property&amp;nbsp;display&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;bn&amp;nbsp;=&amp;nbsp;block&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;bdn&amp;nbsp;=&amp;nbsp;block&amp;nbsp;display&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;p&amp;nbsp;=&amp;nbsp;permissions
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;l&amp;nbsp;=&amp;nbsp;limits
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;=&amp;nbsp;type
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;u&amp;nbsp;=&amp;nbsp;unit
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;tt&amp;nbsp;=&amp;nbsp;tool&amp;nbsp;tip
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response&amp;nbsp;=&amp;nbsp;obj.processMessage(&amp;#39;&amp;lt;queryprops&amp;nbsp;/&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;queryPropsElements&amp;nbsp;=&amp;nbsp;MOTIF_if.getChildren(response);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;props&amp;nbsp;=&amp;nbsp;containers.Map;&amp;nbsp;%&amp;nbsp;Initialize&amp;nbsp;props&amp;nbsp;map
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;for&amp;nbsp;empty&amp;nbsp;queryPropsElements
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(queryPropsElements)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;propElements&amp;nbsp;=&amp;nbsp;MOTIF_if.getChildren(queryPropsElements{1});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;i&amp;nbsp;=&amp;nbsp;1:length(propElements)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;MOTIF_if.getText(propElements{i});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attributes&amp;nbsp;=&amp;nbsp;MOTIF_if.getAttributes(propElements{i});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attributes(&amp;#39;value&amp;#39;)&amp;nbsp;=&amp;nbsp;value;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;if&amp;nbsp;&amp;#39;bn&amp;#39;&amp;nbsp;and&amp;nbsp;&amp;#39;pn&amp;#39;&amp;nbsp;attributes&amp;nbsp;exist
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;bn&amp;#39;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;pn&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k&amp;nbsp;=&amp;nbsp;[attributes(&amp;#39;bn&amp;#39;)&amp;nbsp;&amp;#39;.&amp;#39;&amp;nbsp;attributes(&amp;#39;pn&amp;#39;)];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;props(k)&amp;nbsp;=&amp;nbsp;attributes;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;props&amp;nbsp;=&amp;nbsp;queryPropValues(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Returns&amp;nbsp;a&amp;nbsp;Map&amp;nbsp;that&amp;nbsp;values
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response&amp;nbsp;=&amp;nbsp;obj.processMessage(&amp;#39;&amp;lt;queryprops&amp;nbsp;/&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;queryPropsElements&amp;nbsp;=&amp;nbsp;MOTIF_if.getChildren(response);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;props&amp;nbsp;=&amp;nbsp;containers.Map;&amp;nbsp;%&amp;nbsp;Initialize&amp;nbsp;props&amp;nbsp;map
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;for&amp;nbsp;empty&amp;nbsp;queryPropsElements
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(queryPropsElements)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;propElements&amp;nbsp;=&amp;nbsp;MOTIF_if.getChildren(queryPropsElements{1});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;i&amp;nbsp;=&amp;nbsp;1:length(propElements)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;MOTIF_if.getText(propElements{i});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attributes&amp;nbsp;=&amp;nbsp;MOTIF_if.getAttributes(propElements{i});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;if&amp;nbsp;&amp;#39;bn&amp;#39;&amp;nbsp;and&amp;nbsp;&amp;#39;pn&amp;#39;&amp;nbsp;attributes&amp;nbsp;exist
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;bn&amp;#39;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;isKey(attributes,&amp;nbsp;&amp;#39;pn&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k&amp;nbsp;=&amp;nbsp;[attributes(&amp;#39;bn&amp;#39;)&amp;nbsp;&amp;#39;.&amp;#39;&amp;nbsp;attributes(&amp;#39;pn&amp;#39;)];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;props(k)&amp;nbsp;=&amp;nbsp;value;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;printProps(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;props&amp;nbsp;=&amp;nbsp;obj.queryProps();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k0s&amp;nbsp;=&amp;nbsp;keys(props);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;k0_idx&amp;nbsp;=&amp;nbsp;1:length(k0s)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k0&amp;nbsp;=&amp;nbsp;k0s(k0_idx);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prop&amp;nbsp;=&amp;nbsp;props(k0{1});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;disp([k0{1}&amp;nbsp;&amp;#39;&amp;nbsp;:&amp;#39;]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k1s&amp;nbsp;=&amp;nbsp;keys(prop);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;k1_idx&amp;nbsp;=&amp;nbsp;1:length(k1s)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k1&amp;nbsp;=&amp;nbsp;k1s(k1_idx);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attribute&amp;nbsp;=&amp;nbsp;prop(k1{1});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;disp([&amp;#39;&amp;nbsp;&amp;nbsp;&amp;#39;&amp;nbsp;k1{1}&amp;nbsp;&amp;#39;&amp;nbsp;:&amp;nbsp;&amp;#39;&amp;nbsp;attribute]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;setProp(obj,&amp;nbsp;blockName,&amp;nbsp;propName,&amp;nbsp;value)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msg&amp;nbsp;=&amp;nbsp;[&amp;#39;&amp;lt;setprop&amp;nbsp;bn=&amp;quot;&amp;#39;&amp;nbsp;blockName&amp;nbsp;&amp;#39;&amp;quot;&amp;nbsp;pn=&amp;quot;&amp;#39;&amp;nbsp;propName&amp;nbsp;&amp;#39;&amp;quot;&amp;gt;&amp;#39;&amp;nbsp;value&amp;nbsp;&amp;#39;&amp;lt;/setprop&amp;gt;&amp;#39;];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.processMessage(msg);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;versionInfo&amp;nbsp;=&amp;nbsp;queryVersion(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Returns&amp;nbsp;a&amp;nbsp;Map&amp;nbsp;that&amp;nbsp;contain&amp;nbsp;the&amp;nbsp;version&amp;nbsp;information
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Explanantion&amp;nbsp;of&amp;nbsp;keys&amp;nbsp;-
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;dllversion&amp;nbsp;=&amp;nbsp;version&amp;nbsp;of&amp;nbsp;MOTIF&amp;nbsp;simulator
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;&amp;nbsp;&amp;nbsp;pmfversion&amp;nbsp;=&amp;nbsp;version&amp;nbsp;of&amp;nbsp;Product&amp;nbsp;Model&amp;nbsp;File
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response&amp;nbsp;=&amp;nbsp;obj.processMessage(&amp;#39;&amp;lt;queryversion&amp;nbsp;/&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;queryVersionElements&amp;nbsp;=&amp;nbsp;MOTIF_if.getChildren(response);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Added&amp;nbsp;check&amp;nbsp;for&amp;nbsp;empty&amp;nbsp;queryVersionElements
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(queryVersionElements)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;versionInfo&amp;nbsp;=&amp;nbsp;containers.Map;&amp;nbsp;%&amp;nbsp;Return&amp;nbsp;empty&amp;nbsp;map
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;versionInfo&amp;nbsp;=&amp;nbsp;MOTIF_if.getAttributes(queryVersionElements(1));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;printVersion(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;versionInfo&amp;nbsp;=&amp;nbsp;queryVersion(obj);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(versionInfo)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;isKey(versionInfo,&amp;nbsp;&amp;#39;dllversion&amp;#39;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;isKey(versionInfo,&amp;nbsp;&amp;#39;pmfversion&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;disp([&amp;#39;Library&amp;nbsp;Version:&amp;nbsp;&amp;#39;,&amp;nbsp;versionInfo(&amp;#39;dllversion&amp;#39;)]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;disp([&amp;#39;PMF&amp;nbsp;Version:&amp;nbsp;&amp;#39;,&amp;nbsp;versionInfo(&amp;#39;pmfversion&amp;#39;)]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;disp(&amp;#39;Version&amp;nbsp;information&amp;nbsp;not&amp;nbsp;available.&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;[out,&amp;nbsp;interface]&amp;nbsp;=&amp;nbsp;runSamples(obj,&amp;nbsp;in)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Save&amp;nbsp;input&amp;nbsp;length
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;len&amp;nbsp;=&amp;nbsp;length(in);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interface&amp;nbsp;=&amp;nbsp;obj.queryInterface();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Format&amp;nbsp;input
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(interface.in.is_complex)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tin&amp;nbsp;=&amp;nbsp;zeros(1,&amp;nbsp;len*2);&amp;nbsp;%&amp;nbsp;Pre-allocate&amp;nbsp;for&amp;nbsp;efficiency
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tin(1:2:len*2)&amp;nbsp;=&amp;nbsp;real(in);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tin(2:2:len*2)&amp;nbsp;=&amp;nbsp;imag(in);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tin&amp;nbsp;=&amp;nbsp;real(in);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Initialize&amp;nbsp;the&amp;nbsp;output&amp;nbsp;code&amp;nbsp;array
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(interface.out.is_complex)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out_len&amp;nbsp;=&amp;nbsp;ceil(len*2*interface.r);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out_len&amp;nbsp;=&amp;nbsp;ceil(len*interface.r);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Ensure&amp;nbsp;out_len&amp;nbsp;is&amp;nbsp;at&amp;nbsp;least&amp;nbsp;0&amp;nbsp;and&amp;nbsp;an&amp;nbsp;integer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out_len&amp;nbsp;=&amp;nbsp;max(0,&amp;nbsp;floor(out_len));&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out&amp;nbsp;=&amp;nbsp;zeros(out_len,&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Handle&amp;nbsp;case&amp;nbsp;where&amp;nbsp;obj.key&amp;nbsp;might&amp;nbsp;be&amp;nbsp;0&amp;nbsp;or&amp;nbsp;if&amp;nbsp;runSamples&amp;nbsp;fails
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;obj.key&amp;nbsp;==&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;warning(&amp;#39;MOTIF_if&amp;nbsp;object&amp;nbsp;not&amp;nbsp;loaded,&amp;nbsp;cannot&amp;nbsp;run&amp;nbsp;samples.&amp;nbsp;Returning&amp;nbsp;zeros.&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out&amp;nbsp;=&amp;nbsp;zeros(size(in));&amp;nbsp;%&amp;nbsp;Return&amp;nbsp;zero-filled&amp;nbsp;output&amp;nbsp;of&amp;nbsp;same&amp;nbsp;size&amp;nbsp;as&amp;nbsp;input
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Check&amp;nbsp;if&amp;nbsp;tin&amp;nbsp;is&amp;nbsp;empty,&amp;nbsp;calllib&amp;nbsp;might&amp;nbsp;error&amp;nbsp;with&amp;nbsp;empty&amp;nbsp;arrays
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(tin)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;len&amp;nbsp;&amp;gt;&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;warning(&amp;#39;Input&amp;nbsp;array&amp;nbsp;for&amp;nbsp;RunSamples&amp;nbsp;is&amp;nbsp;empty&amp;nbsp;but&amp;nbsp;expected&amp;nbsp;length&amp;nbsp;&amp;gt;&amp;nbsp;0.&amp;nbsp;Returning&amp;nbsp;zeros.&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out&amp;nbsp;=&amp;nbsp;zeros(out_len,&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;If&amp;nbsp;out_len&amp;nbsp;is&amp;nbsp;0,&amp;nbsp;no&amp;nbsp;need&amp;nbsp;to&amp;nbsp;calllib,&amp;nbsp;just&amp;nbsp;return&amp;nbsp;empty&amp;nbsp;or&amp;nbsp;zeros&amp;nbsp;based&amp;nbsp;on&amp;nbsp;requirement
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;out_len&amp;nbsp;==&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out&amp;nbsp;=&amp;nbsp;zeros(0,1);&amp;nbsp;%&amp;nbsp;Return&amp;nbsp;empty&amp;nbsp;column&amp;nbsp;vector&amp;nbsp;if&amp;nbsp;no&amp;nbsp;output&amp;nbsp;samples&amp;nbsp;expected
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;calllib&amp;nbsp;can&amp;nbsp;sometimes&amp;nbsp;modify&amp;nbsp;tin&amp;nbsp;in&amp;nbsp;place&amp;nbsp;even&amp;nbsp;if&amp;nbsp;not&amp;nbsp;explicitly&amp;nbsp;defined&amp;nbsp;as&amp;nbsp;output.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Be&amp;nbsp;aware&amp;nbsp;if&amp;nbsp;there&amp;nbsp;are&amp;nbsp;issues,&amp;nbsp;a&amp;nbsp;copy&amp;nbsp;might&amp;nbsp;be&amp;nbsp;needed:&amp;nbsp;tin_copy&amp;nbsp;=&amp;nbsp;tin;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[~,&amp;nbsp;~,&amp;nbsp;out]&amp;nbsp;=&amp;nbsp;calllib(&amp;#39;MOTIF&amp;#39;,&amp;nbsp;&amp;#39;RunSamples&amp;#39;,&amp;nbsp;tin,&amp;nbsp;out,&amp;nbsp;len,&amp;nbsp;obj.key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(interface.out.is_complex)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Ensure&amp;nbsp;idx+1&amp;nbsp;does&amp;nbsp;not&amp;nbsp;exceed&amp;nbsp;out_len
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Adjusted&amp;nbsp;to&amp;nbsp;prevent&amp;nbsp;out&amp;nbsp;of&amp;nbsp;bounds&amp;nbsp;access&amp;nbsp;if&amp;nbsp;out_len&amp;nbsp;is&amp;nbsp;odd&amp;nbsp;or&amp;nbsp;too&amp;nbsp;small
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx&amp;nbsp;=&amp;nbsp;1:2:(out_len&amp;nbsp;-&amp;nbsp;1);&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(idx)&amp;nbsp;%&amp;nbsp;Only&amp;nbsp;proceed&amp;nbsp;if&amp;nbsp;idx&amp;nbsp;is&amp;nbsp;not&amp;nbsp;empty
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out&amp;nbsp;=&amp;nbsp;out(idx)&amp;nbsp;+&amp;nbsp;1i*out(idx+1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out&amp;nbsp;=&amp;nbsp;zeros(0,1);&amp;nbsp;%&amp;nbsp;If&amp;nbsp;no&amp;nbsp;valid&amp;nbsp;complex&amp;nbsp;pairs,&amp;nbsp;return&amp;nbsp;empty&amp;nbsp;column&amp;nbsp;vector
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;destroy(obj)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;obj.key&amp;nbsp;~=&amp;nbsp;0&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;libisloaded(&amp;#39;MOTIF&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;calllib(&amp;#39;MOTIF&amp;#39;,&amp;nbsp;&amp;#39;Destroy&amp;#39;,&amp;nbsp;obj.key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.key&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;%&amp;nbsp;Clear&amp;nbsp;key&amp;nbsp;after&amp;nbsp;destroying
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;methods&amp;nbsp;(Access&amp;nbsp;=&amp;nbsp;protected)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;count&amp;nbsp;=&amp;nbsp;getPortCount(obj,&amp;nbsp;direction)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;count&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;obj.key&amp;nbsp;~=&amp;nbsp;0&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;libisloaded(&amp;#39;MOTIF&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[~,&amp;nbsp;count]&amp;nbsp;=&amp;nbsp;calllib(&amp;#39;MOTIF&amp;#39;,&amp;nbsp;&amp;#39;GetPortCount&amp;#39;,&amp;nbsp;count,&amp;nbsp;direction,&amp;nbsp;obj.key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;warning(&amp;#39;MOTIF&amp;nbsp;library&amp;nbsp;not&amp;nbsp;loaded&amp;nbsp;or&amp;nbsp;object&amp;nbsp;key&amp;nbsp;is&amp;nbsp;invalid.&amp;nbsp;Returning&amp;nbsp;0&amp;nbsp;port&amp;nbsp;count.&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;port&amp;nbsp;=&amp;nbsp;queryPort(obj,&amp;nbsp;direction,&amp;nbsp;index)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Initialize&amp;nbsp;return&amp;nbsp;variable&amp;nbsp;with&amp;nbsp;safe&amp;nbsp;defaults
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.f&amp;nbsp;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.is_complex&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.domain&amp;nbsp;=&amp;nbsp;&amp;#39;[unspecified]&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.unit&amp;nbsp;=&amp;nbsp;&amp;#39;[unspecified]&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Only&amp;nbsp;proceed&amp;nbsp;if&amp;nbsp;index&amp;nbsp;is&amp;nbsp;valid&amp;nbsp;and&amp;nbsp;MOTIF&amp;nbsp;is&amp;nbsp;loaded
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;index&amp;nbsp;&amp;lt;&amp;nbsp;0&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;warning(&amp;#39;Invalid&amp;nbsp;port&amp;nbsp;index&amp;nbsp;(negative).&amp;nbsp;Returning&amp;nbsp;default&amp;nbsp;port&amp;nbsp;info.&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(obj.key&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;||&amp;nbsp;(~libisloaded(&amp;#39;MOTIF&amp;#39;))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;warning(&amp;#39;MOTIF&amp;nbsp;library&amp;nbsp;not&amp;nbsp;loaded&amp;nbsp;or&amp;nbsp;object&amp;nbsp;key&amp;nbsp;is&amp;nbsp;invalid.&amp;nbsp;Returning&amp;nbsp;default&amp;nbsp;port&amp;nbsp;info.&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f_val&amp;nbsp;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;is_complex_val&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;domain_val&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unitPtr_for_calllib&amp;nbsp;=&amp;nbsp;libpointer(&amp;#39;voidPtrPtr&amp;#39;);&amp;nbsp;%&amp;nbsp;创建&amp;nbsp;libpointer&amp;nbsp;对象用于&amp;nbsp;calllib
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;调用&amp;nbsp;calllib，并捕获第五个输出参数，它将是&amp;nbsp;C&amp;nbsp;函数写入到&amp;nbsp;unitPtr_for_calllib&amp;nbsp;中的实际指针地址。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[~,&amp;nbsp;f,&amp;nbsp;is_complex,&amp;nbsp;domain,&amp;nbsp;actual_unit_ptr_value]&amp;nbsp;=&amp;nbsp;calllib(&amp;#39;MOTIF&amp;#39;,&amp;nbsp;&amp;#39;QueryPort&amp;#39;,&amp;nbsp;f_val,&amp;nbsp;is_complex_val,&amp;nbsp;domain_val,&amp;nbsp;unitPtr_for_calllib,&amp;nbsp;direction,&amp;nbsp;index,&amp;nbsp;obj.key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.f&amp;nbsp;=&amp;nbsp;f;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.is_complex&amp;nbsp;=&amp;nbsp;is_complex;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;domain&amp;nbsp;==&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.domain&amp;nbsp;=&amp;nbsp;&amp;#39;analog&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elseif&amp;nbsp;domain&amp;nbsp;==&amp;nbsp;2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.domain&amp;nbsp;=&amp;nbsp;&amp;#39;digital&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.domain&amp;nbsp;=&amp;nbsp;&amp;#39;[unspecified]&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;检查返回的指针地址是否为&amp;nbsp;NULL&amp;nbsp;(0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;actual_unit_ptr_value&amp;nbsp;~=&amp;nbsp;0&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;如果不是&amp;nbsp;NULL，则使用该地址创建一个新的&amp;nbsp;libpointer，并指定其为字符串指针
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unit_str_ptr&amp;nbsp;=&amp;nbsp;libpointer(&amp;#39;stringPtr&amp;#39;,&amp;nbsp;actual_unit_ptr_value);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.unit&amp;nbsp;=&amp;nbsp;unit_str_ptr.Value;&amp;nbsp;%&amp;nbsp;安全地检索字符串值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port.unit&amp;nbsp;=&amp;nbsp;&amp;#39;[unspecified]&amp;#39;;&amp;nbsp;%&amp;nbsp;如果是&amp;nbsp;NULL&amp;nbsp;指针，使用默认值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;response&amp;nbsp;=&amp;nbsp;processMessage(obj,&amp;nbsp;msg)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;%&amp;nbsp;Initialize&amp;nbsp;response&amp;nbsp;as&amp;nbsp;empty&amp;nbsp;string
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msg&amp;nbsp;=&amp;nbsp;[&amp;#39;&amp;lt;motif&amp;gt;&amp;#39;&amp;nbsp;msg&amp;nbsp;&amp;#39;&amp;lt;/motif&amp;gt;&amp;#39;];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(obj.key&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;||&amp;nbsp;(~libisloaded(&amp;#39;MOTIF&amp;#39;))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;warning(&amp;#39;MOTIF&amp;nbsp;library&amp;nbsp;not&amp;nbsp;loaded&amp;nbsp;or&amp;nbsp;object&amp;nbsp;key&amp;nbsp;is&amp;nbsp;invalid.&amp;nbsp;Cannot&amp;nbsp;process&amp;nbsp;message.&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;responsePtr&amp;nbsp;=&amp;nbsp;libpointer(&amp;#39;voidPtrPtr&amp;#39;);&amp;nbsp;%&amp;nbsp;创建&amp;nbsp;libpointer&amp;nbsp;对象
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;调用&amp;nbsp;calllib，并捕获第三个输出参数，它将是&amp;nbsp;C&amp;nbsp;函数写入到&amp;nbsp;responsePtr&amp;nbsp;中的实际指针地址。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[~,&amp;nbsp;~,&amp;nbsp;actual_response_ptr_value]&amp;nbsp;=&amp;nbsp;calllib(&amp;#39;MOTIF&amp;#39;,&amp;nbsp;&amp;#39;ProcessMessage&amp;#39;,&amp;nbsp;msg,&amp;nbsp;responsePtr,&amp;nbsp;obj.key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;检查返回的指针地址是否为&amp;nbsp;NULL&amp;nbsp;(0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;actual_response_ptr_value&amp;nbsp;~=&amp;nbsp;0&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;如果不是&amp;nbsp;NULL，则使用该地址创建一个新的&amp;nbsp;libpointer，并指定其为字符串指针
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string_ptr&amp;nbsp;=&amp;nbsp;libpointer(&amp;#39;stringPtr&amp;#39;,&amp;nbsp;actual_response_ptr_value);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response&amp;nbsp;=&amp;nbsp;string_ptr.Value;&amp;nbsp;%&amp;nbsp;安全地检索字符串值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;warning(&amp;#39;Received&amp;nbsp;NULL&amp;nbsp;response&amp;nbsp;pointer&amp;nbsp;from&amp;nbsp;MOTIF&amp;nbsp;ProcessMessage.&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;response&amp;nbsp;已经初始化为空字符串，无需额外处理
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;methods&amp;nbsp;(Static,&amp;nbsp;Access&amp;nbsp;=&amp;nbsp;public)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;destroyAll()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(libisloaded(&amp;#39;MOTIF&amp;#39;))&amp;nbsp;%&amp;nbsp;only&amp;nbsp;call&amp;nbsp;if&amp;nbsp;loaded
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;calllib(&amp;#39;MOTIF&amp;#39;,&amp;nbsp;&amp;#39;DestroyAll&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unloadlibrary(&amp;#39;MOTIF&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;str&amp;nbsp;=&amp;nbsp;bool2str(boolVal)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(boolVal)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str&amp;nbsp;=&amp;nbsp;&amp;#39;true&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str&amp;nbsp;=&amp;nbsp;&amp;#39;false&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;methods&amp;nbsp;(Static,&amp;nbsp;Access&amp;nbsp;=&amp;nbsp;protected)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;childrenStrings&amp;nbsp;=&amp;nbsp;getChildren(xmlString)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlString&amp;nbsp;=&amp;nbsp;char(xmlString);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;childrenStrings&amp;nbsp;=&amp;nbsp;{};&amp;nbsp;%&amp;nbsp;初始值为空，以便在解析失败时直接返回
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;1.&amp;nbsp;检查输入的&amp;nbsp;XML&amp;nbsp;字符串是否为空
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(xmlString)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;查找当前元素的起始标签&amp;nbsp;&amp;#39;&amp;gt;&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gt_indices&amp;nbsp;=&amp;nbsp;strfind(xmlString,&amp;nbsp;&amp;#39;&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(gt_indices)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;如果没有找到&amp;nbsp;&amp;#39;&amp;gt;&amp;#39;,&amp;nbsp;说明&amp;nbsp;XML&amp;nbsp;格式不完整或错误
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;firstChildIdx&amp;nbsp;=&amp;nbsp;gt_indices(1)&amp;nbsp;+&amp;nbsp;1;&amp;nbsp;%&amp;nbsp;第一个&amp;nbsp;&amp;#39;&amp;gt;&amp;#39;&amp;nbsp;字符的下一个位置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;2.&amp;nbsp;检查提取元素名称的索引范围是否有效
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elementEndIdx&amp;nbsp;=&amp;nbsp;firstChildIdx&amp;nbsp;-&amp;nbsp;2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;elementEndIdx&amp;nbsp;&amp;lt;&amp;nbsp;1&amp;nbsp;||&amp;nbsp;elementEndIdx&amp;nbsp;&amp;gt;&amp;nbsp;length(xmlString)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;尝试处理&amp;nbsp;&amp;lt;element/&amp;gt;&amp;nbsp;这种情况
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(strfind(xmlString,&amp;nbsp;&amp;#39;/&amp;gt;&amp;#39;))&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(firstChildIdx&amp;nbsp;-&amp;nbsp;2&amp;nbsp;==&amp;nbsp;strfind(xmlString,&amp;nbsp;&amp;#39;/&amp;gt;&amp;#39;))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;这是一个自闭合标签，没有子节点
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;否则，无法解析
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;element&amp;nbsp;=&amp;nbsp;xmlString(2:elementEndIdx);&amp;nbsp;%&amp;nbsp;提取元素名
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx_space&amp;nbsp;=&amp;nbsp;strfind(element,&amp;nbsp;&amp;#39;&amp;nbsp;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(idx_space)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;element&amp;nbsp;=&amp;nbsp;element(1:idx_space(1)-1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;如果&amp;nbsp;element&amp;nbsp;是空字符串，也无法继续解析
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(element)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;查找对应的结束标签
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastChildIdx_candidate&amp;nbsp;=&amp;nbsp;strfind(xmlString,&amp;nbsp;[&amp;#39;&amp;lt;/&amp;#39;&amp;nbsp;element&amp;nbsp;&amp;#39;&amp;gt;&amp;#39;]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;3.&amp;nbsp;处理自闭合标签（如&amp;nbsp;&amp;lt;tag&amp;nbsp;/&amp;gt;）和常规标签
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(lastChildIdx_candidate)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;如果没有找到显式的结束标签，检查是否为自闭合标签
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;selfClosingIdx&amp;nbsp;=&amp;nbsp;strfind(xmlString,&amp;nbsp;&amp;#39;/&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(selfClosingIdx)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;selfClosingIdx(1)&amp;nbsp;&amp;lt;&amp;nbsp;firstChildIdx
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;自闭合元素，没有子节点
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;否则，既不是常规结束标签也不是自闭合，无法解析子节点
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastChildIdx&amp;nbsp;=&amp;nbsp;lastChildIdx_candidate(1)&amp;nbsp;-&amp;nbsp;1;&amp;nbsp;%&amp;nbsp;结束标签开始前的位置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;4.&amp;nbsp;确保冒号操作符的范围有效&amp;nbsp;(lastChildIdx&amp;nbsp;必须大于或等于&amp;nbsp;firstChildIdx)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;lastChildIdx&amp;nbsp;&amp;lt;&amp;nbsp;firstChildIdx
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;范围无效（例如，结束标签在内容之前），或者没有内容
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rest&amp;nbsp;=&amp;nbsp;xmlString(firstChildIdx:lastChildIdx);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;分割子字符串
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;~isempty(rest)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;查找当前内部元素的起始标签&amp;nbsp;&amp;#39;&amp;gt;&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStart_candidates&amp;nbsp;=&amp;nbsp;strfind(rest,&amp;nbsp;&amp;#39;&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(iStart_candidates)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&amp;nbsp;%&amp;nbsp;&amp;#39;rest&amp;#39;&amp;nbsp;字符串格式错误，没有更多元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStart&amp;nbsp;=&amp;nbsp;iStart_candidates(1)&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;5.&amp;nbsp;对内部元素重复索引范围检查
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;innerElementEndIdx&amp;nbsp;=&amp;nbsp;iStart&amp;nbsp;-&amp;nbsp;2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;innerElementEndIdx&amp;nbsp;&amp;lt;&amp;nbsp;1&amp;nbsp;||&amp;nbsp;innerElementEndIdx&amp;nbsp;&amp;gt;&amp;nbsp;length(rest)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;尝试处理&amp;nbsp;&amp;lt;element/&amp;gt;&amp;nbsp;这种情况
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(strfind(rest,&amp;nbsp;&amp;#39;/&amp;gt;&amp;#39;))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentElementSelfClosingEnd&amp;nbsp;=&amp;nbsp;strfind(rest(1:min(length(rest),&amp;nbsp;iStart-1)),&amp;nbsp;&amp;#39;/&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(currentElementSelfClosingEnd)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;childrenStrings&amp;nbsp;=&amp;nbsp;[childrenStrings;&amp;nbsp;{rest(1:currentElementSelfClosingEnd(1)+1)}];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rest&amp;nbsp;=&amp;nbsp;rest(currentElementSelfClosingEnd(1)+2:end);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&amp;nbsp;%&amp;nbsp;内部元素起始位置错误，停止解析
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;element&amp;nbsp;=&amp;nbsp;rest(2:innerElementEndIdx);&amp;nbsp;%&amp;nbsp;提取内部元素名
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx_space_inner&amp;nbsp;=&amp;nbsp;strfind(element,&amp;nbsp;&amp;#39;&amp;nbsp;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(idx_space_inner)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;element&amp;nbsp;=&amp;nbsp;element(1:idx_space_inner(1)-1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;如果&amp;nbsp;element&amp;nbsp;是空字符串，也无法继续解析
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(element)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;查找内部元素的结束标签
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStop_candidates&amp;nbsp;=&amp;nbsp;strfind(rest,&amp;nbsp;[&amp;#39;&amp;lt;/&amp;#39;&amp;nbsp;element&amp;nbsp;&amp;#39;&amp;gt;&amp;#39;]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(iStop_candidates)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStop_val&amp;nbsp;=&amp;nbsp;iStop_candidates(1)&amp;nbsp;+&amp;nbsp;3&amp;nbsp;+&amp;nbsp;length(element)&amp;nbsp;-&amp;nbsp;1;&amp;nbsp;%&amp;nbsp;结束标签的结束位置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;iStop_val&amp;nbsp;&amp;gt;&amp;nbsp;length(rest)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&amp;nbsp;%&amp;nbsp;结束索引超出范围
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;childrenStrings&amp;nbsp;=&amp;nbsp;[childrenStrings;&amp;nbsp;{rest(1:iStop_val)}];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rest&amp;nbsp;=&amp;nbsp;rest(iStop_val+1:end);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;检查是否为内部的自闭合标签
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStop_selfClosing_candidates&amp;nbsp;=&amp;nbsp;strfind(rest,&amp;nbsp;&amp;#39;/&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(iStop_selfClosing_candidates)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;iStop_selfClosing_candidates(1)&amp;nbsp;&amp;lt;&amp;nbsp;iStart&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStop_val&amp;nbsp;=&amp;nbsp;iStop_selfClosing_candidates(1)&amp;nbsp;+&amp;nbsp;1;&amp;nbsp;%&amp;nbsp;&amp;#39;/&amp;gt;&amp;#39;&amp;nbsp;的结束位置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;iStop_val&amp;nbsp;&amp;gt;&amp;nbsp;length(rest)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&amp;nbsp;%&amp;nbsp;结束索引超出范围
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;childrenStrings&amp;nbsp;=&amp;nbsp;[childrenStrings;&amp;nbsp;{rest(1:iStop_val)}];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rest&amp;nbsp;=&amp;nbsp;rest(iStop_val+1:end);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&amp;nbsp;%&amp;nbsp;没有找到有效的结束或自闭合标签，停止解析
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;attributes&amp;nbsp;=&amp;nbsp;getAttributes(elementString)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elementString&amp;nbsp;=&amp;nbsp;char(elementString);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attributes&amp;nbsp;=&amp;nbsp;containers.Map;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx_gt&amp;nbsp;=&amp;nbsp;strfind(elementString,&amp;nbsp;&amp;#39;&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(idx_gt)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;Invalid&amp;nbsp;XML&amp;nbsp;fragment,&amp;nbsp;no&amp;nbsp;opening&amp;nbsp;tag&amp;nbsp;found
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end_of_opening_tag&amp;nbsp;=&amp;nbsp;idx_gt(1);&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx_first_space&amp;nbsp;=&amp;nbsp;strfind(elementString(1:end_of_opening_tag),&amp;nbsp;&amp;#39;&amp;nbsp;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(idx_first_space)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;No&amp;nbsp;attributes
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attr_start_idx&amp;nbsp;=&amp;nbsp;idx_first_space(1)&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attr_end_idx&amp;nbsp;=&amp;nbsp;end_of_opening_tag&amp;nbsp;-&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx_self_closing&amp;nbsp;=&amp;nbsp;strfind(elementString(1:end_of_opening_tag),&amp;nbsp;&amp;#39;/&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(idx_self_closing)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attr_end_idx&amp;nbsp;=&amp;nbsp;idx_self_closing(1)&amp;nbsp;-&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;attr_end_idx&amp;nbsp;&amp;lt;&amp;nbsp;attr_start_idx
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;No&amp;nbsp;attributes
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;attr_end_idx&amp;nbsp;&amp;lt;&amp;nbsp;attr_start_idx
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;No&amp;nbsp;attributes&amp;nbsp;found&amp;nbsp;or&amp;nbsp;malformed
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attr_string&amp;nbsp;=&amp;nbsp;elementString(attr_start_idx&amp;nbsp;:&amp;nbsp;attr_end_idx);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;current_pos&amp;nbsp;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;current_pos&amp;nbsp;&amp;lt;=&amp;nbsp;length(attr_string)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Skip&amp;nbsp;leading&amp;nbsp;spaces
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;current_pos&amp;nbsp;&amp;lt;=&amp;nbsp;length(attr_string)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;isspace(attr_string(current_pos))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;current_pos&amp;nbsp;=&amp;nbsp;current_pos&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;current_pos&amp;nbsp;&amp;gt;&amp;nbsp;length(attr_string)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&amp;nbsp;%&amp;nbsp;Reached&amp;nbsp;end&amp;nbsp;of&amp;nbsp;string
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Find&amp;nbsp;the&amp;nbsp;&amp;#39;=&amp;#39;&amp;nbsp;for&amp;nbsp;the&amp;nbsp;attribute&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx_eq_relative&amp;nbsp;=&amp;nbsp;strfind(attr_string(current_pos:end),&amp;nbsp;&amp;#39;=&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(idx_eq_relative)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&amp;nbsp;%&amp;nbsp;Malformed&amp;nbsp;attribute&amp;nbsp;(no&amp;nbsp;=&amp;nbsp;sign)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx_eq_abs&amp;nbsp;=&amp;nbsp;current_pos&amp;nbsp;+&amp;nbsp;idx_eq_relative(1)&amp;nbsp;-&amp;nbsp;1;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Extract&amp;nbsp;attribute&amp;nbsp;name&amp;nbsp;(key)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k&amp;nbsp;=&amp;nbsp;strtrim(attr_string(current_pos&amp;nbsp;:&amp;nbsp;idx_eq_abs&amp;nbsp;-&amp;nbsp;1));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Move&amp;nbsp;past&amp;nbsp;&amp;#39;=&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;current_pos&amp;nbsp;=&amp;nbsp;idx_eq_abs&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Check&amp;nbsp;for&amp;nbsp;opening&amp;nbsp;quote
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;current_pos&amp;nbsp;&amp;gt;&amp;nbsp;length(attr_string)&amp;nbsp;||&amp;nbsp;attr_string(current_pos)&amp;nbsp;~=&amp;nbsp;&amp;#39;&amp;quot;&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&amp;nbsp;%&amp;nbsp;Malformed&amp;nbsp;attribute&amp;nbsp;(no&amp;nbsp;opening&amp;nbsp;quote&amp;nbsp;or&amp;nbsp;empty&amp;nbsp;string)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Move&amp;nbsp;past&amp;nbsp;opening&amp;nbsp;quote
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;current_pos&amp;nbsp;=&amp;nbsp;current_pos&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Find&amp;nbsp;closing&amp;nbsp;quote
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx_quote_relative&amp;nbsp;=&amp;nbsp;strfind(attr_string(current_pos:end),&amp;nbsp;&amp;#39;&amp;quot;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(idx_quote_relative)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&amp;nbsp;%&amp;nbsp;Malformed&amp;nbsp;attribute&amp;nbsp;(no&amp;nbsp;closing&amp;nbsp;quote)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx_quote_abs&amp;nbsp;=&amp;nbsp;current_pos&amp;nbsp;+&amp;nbsp;idx_quote_relative(1)&amp;nbsp;-&amp;nbsp;1;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Extract&amp;nbsp;value
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(idx_quote_abs&amp;nbsp;-&amp;nbsp;1)&amp;nbsp;&amp;lt;&amp;nbsp;current_pos
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;%&amp;nbsp;Handle&amp;nbsp;empty&amp;nbsp;value&amp;nbsp;like&amp;nbsp;attr=&amp;quot;&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;attr_string(current_pos&amp;nbsp;:&amp;nbsp;idx_quote_abs&amp;nbsp;-&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attributes(k)&amp;nbsp;=&amp;nbsp;value;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%&amp;nbsp;Move&amp;nbsp;past&amp;nbsp;closing&amp;nbsp;quote
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;current_pos&amp;nbsp;=&amp;nbsp;idx_quote_abs&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;text&amp;nbsp;=&amp;nbsp;getText(elementString)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elementString&amp;nbsp;=&amp;nbsp;char(elementString);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx_self_closing&amp;nbsp;=&amp;nbsp;strfind(elementString,&amp;nbsp;&amp;#39;/&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;~isempty(idx_self_closing)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStart_candidates&amp;nbsp;=&amp;nbsp;strfind(elementString,&amp;nbsp;&amp;#39;&amp;gt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStop_candidates&amp;nbsp;=&amp;nbsp;strfind(elementString,&amp;nbsp;&amp;#39;&amp;lt;&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(iStart_candidates)&amp;nbsp;||&amp;nbsp;isempty(iStop_candidates)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;Invalid&amp;nbsp;XML&amp;nbsp;fragment
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStart&amp;nbsp;=&amp;nbsp;iStart_candidates(1)&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStop_after_start&amp;nbsp;=&amp;nbsp;iStop_candidates(iStop_candidates&amp;nbsp;&amp;gt;&amp;nbsp;iStart_candidates(1));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;isempty(iStop_after_start)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&amp;nbsp;%&amp;nbsp;No&amp;nbsp;closing&amp;nbsp;tag&amp;nbsp;found&amp;nbsp;after&amp;nbsp;opening&amp;nbsp;tag
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;iStart&amp;nbsp;&amp;lt;=&amp;nbsp;length(elementString)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;iStop_after_start(1)&amp;nbsp;&amp;gt;=&amp;nbsp;iStart
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text&amp;nbsp;=&amp;nbsp;elementString(iStart:iStop_after_start(1)-1);&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;&amp;nbsp;%&amp;nbsp;No&amp;nbsp;valid&amp;nbsp;text&amp;nbsp;found&amp;nbsp;or&amp;nbsp;invalid&amp;nbsp;range
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
end&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br style=&quot;text-wrap-mode: wrap;&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 17 Sep 2025 15:50:26 +0800</pubDate></item><item><title>高速模拟PCB设计Tips与踩过的坑 V0.1</title><link>https://world.myfpga.cn/index.php/post/463.html</link><description>&lt;main&gt;&lt;section&gt;&lt;h2&gt;1. 统一而完整的地平面 = 低阻抗 + 低 EMI&lt;/h2&gt;&lt;p&gt;除非数字电流会强行穿过敏感模拟区域，否则&lt;strong&gt;不要&lt;/strong&gt;把 AGND 与 DGND 分家。完整的地平面能最小化回流环路面积，从而降低 &lt;code&gt;V = L·di/dt&lt;/code&gt; 噪声。若必须分区，只留&lt;strong&gt;单一桥接点&lt;/strong&gt;，并放在 ADC 或驱动器正下方。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. 先规划层叠再动鼠标&lt;/h2&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;信号-地-电源-地-信号 的 6 层板可提供天然的层间电容（~3 nF/in²@4 mil 间距）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;将最敏感的高速差分线&lt;strong&gt;夹在地平面之间&lt;/strong&gt;（微带或带状线）以抑制辐射。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. 差分 ADC 驱动器（如 AD8138）反馈网络对称性 &amp;lt; 1 %&lt;/h2&gt;&lt;pre&gt;RF1&amp;nbsp;=&amp;nbsp;RF2&amp;nbsp;&amp;nbsp;容差&amp;nbsp;0.1&amp;nbsp;%&amp;nbsp;以内
RG1&amp;nbsp;=&amp;nbsp;RG2&amp;nbsp;&amp;nbsp;容差&amp;nbsp;0.1&amp;nbsp;%&amp;nbsp;以内
反馈节点到地的寄生电容差异&amp;nbsp;&amp;lt;&amp;nbsp;0.2&amp;nbsp;pF&lt;/pre&gt;&lt;p&gt;不对称会导致偶次谐波放大，直接吃掉 SFDR。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. 去耦不是“放一堆 0.1 µF”&lt;/h2&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;大容量&lt;/strong&gt;：10 µF-22 µF 钽电容负责 10 kHz-1 MHz。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;小容量&lt;/strong&gt;：0402-0.1 µF X7R 陶瓷电容负责 1 MHz-100 MHz。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;高频&lt;/strong&gt;：0201-1 nF/100 pF 紧贴电源脚，形成 &amp;lt; 1 nH 回路。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;使用 ADI 官方工具 &lt;span class=&quot;chip&quot;&gt;ADI PDS Impedance Calculator&lt;/span&gt; 可一次性算出所需电容矩阵。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;5. 裸露焊盘 (EPAD) 必须“焊死”&lt;/h2&gt;&lt;p&gt;AD8138、AD8375 等器件通过 EPAD 散热并作为&lt;strong&gt;唯一 RF 地参考&lt;/strong&gt;：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;每 1 mm² 额外打 1 个 0.3 mm 过孔，塞孔后电镀，确保空洞率 &amp;lt; 5 %。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;分割棋盘格防止焊料空洞，提高热阻 &amp;lt; 20 °C/W。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;6. 控制阻抗与匹配&lt;/h2&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;接口&lt;/th&gt;&lt;th&gt;单端/差分&lt;/th&gt;&lt;th&gt;目标阻抗&lt;/th&gt;&lt;th&gt;允许误差&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ADC 差分输入&lt;/td&gt;&lt;td&gt;差分&lt;/td&gt;&lt;td&gt;100 Ω&lt;/td&gt;&lt;td&gt;±5 %&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;IF VGA 输出 (AD8375)&lt;/td&gt;&lt;td&gt;差分&lt;/td&gt;&lt;td&gt;150 Ω&lt;/td&gt;&lt;td&gt;±5 %&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;时钟&lt;/td&gt;&lt;td&gt;单端&lt;/td&gt;&lt;td&gt;50 Ω&lt;/td&gt;&lt;td&gt;±10 %&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;用 Polar Si9000 或 ADS LineCalc 做 2D 场解算，再留 10 % 工艺余量。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;7. 时钟与采样——抖动是隐形杀手&lt;/h2&gt;&lt;p&gt;100 MHz 时钟若存在 1 ps&lt;sub&gt;RMS&lt;/sub&gt; 抖动，在 12-bit 系统中等效于 &lt;strong&gt;1.5 LSB&lt;/strong&gt; 噪声。措施：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;时钟线用&lt;strong&gt;差分 LVDS&lt;/strong&gt;，远离数字总线 ≥ 3× 线宽。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;时钟源到 ADC 时钟脚长度差 &amp;lt; 5 mm。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;在时钟接收端做&lt;strong&gt;串端接 100 Ω 差分&lt;/strong&gt;。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;8. 高速走线 3 不要&lt;/h2&gt;&lt;ol class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;不要 90° 直角 —— 用 45° 或圆弧，避免阻抗跳变。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;不要跨分割 —— 地平面缺口会引入 10 nH 级寄生电感。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;不要长 stub —— 探针/测试点 stub 长度 &amp;lt; 0.3 mm (12 mil)。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;9. 电源层分区与桥接&lt;/h2&gt;&lt;p&gt;若使用开关电源为 ADC 供电：&lt;/p&gt;&lt;pre&gt;开关电源&amp;nbsp;→&amp;nbsp;LC&amp;nbsp;π&amp;nbsp;型滤波&amp;nbsp;(10&amp;nbsp;µH&amp;nbsp;+&amp;nbsp;22&amp;nbsp;µF)&amp;nbsp;→&amp;nbsp;LDO&amp;nbsp;→&amp;nbsp;ADC&amp;nbsp;AVDD&lt;/pre&gt;&lt;p&gt;LC 截止频率约 10 kHz，可抑制 100 kHz-1 MHz 纹波 30 dB 以上。再在 ADC 脚旁放 0.1 µF+10 pF 组合，覆盖 100 MHz 以上。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;10. 验证：三步自检清单&lt;/h2&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;频域&lt;/strong&gt;：用 VNA 检查差分线回波损耗 &amp;lt; –15 dB（DC-1 GHz）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;时域&lt;/strong&gt;：TDR 验证阻抗台阶 &amp;lt; ±4 Ω。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;系统&lt;/strong&gt;：ADC 全速采样，FFT 观察 SFDR &amp;gt; 75 dBc、SNR &amp;gt; 68 dBFS；若达不到，回到第 1 条。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;一句话总结&lt;/h2&gt;&lt;p&gt;高速模拟 PCB 不是玄学——只要&lt;strong&gt;完整地平 + 对称反馈 + 分层去耦 + 阻抗控制 + 热焊盘&lt;/strong&gt;，就能把 ADI 芯片的性能真正“榨”出来。&lt;/p&gt;&lt;/section&gt;&lt;/main&gt;</description><pubDate>Sat, 09 Aug 2025 21:03:34 +0800</pubDate></item><item><title>SI5394/SI5395/SI5392 上位机实现直接备份、修改、固化、实时配置时钟管理芯片 示例基于Xilinx Alevo U55C/U50/U280 NVM Program</title><link>https://world.myfpga.cn/index.php/post/462.html</link><description>&lt;p&gt;首先说明这玩意非常麻烦，建议直接联系我付费修改。&lt;span data-slate-fragment=&quot;JTVCJTdCJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIyaWQlMjIlM0ElMjJ6eWJSOFliWVdCJTIyJTJDJTIycGFyYUlkeCUyMiUzQTAlMkMlMjJzcmMlMjIlM0ElMjIlRTUlQTYlODIlRTYlOUUlOUMlRTQlQkQlQTAlRTklOUQlOUUlRTglQTYlODElRTglODclQUElRTUlQjclQjElRTQlQkYlQUUlRTYlOTQlQjklRUYlQkMlOEMlRTUlOEYlQUYlRTglODMlQkQlRTYlOTclQjYlRTklOTclQjQlRTYlODglOTAlRTYlOUMlQUMlRTYlQUYlOTQlRTglODElOTQlRTclQjMlQkIlRTYlODglOTElRTglQkYlOTglRTglQTYlODElRTglQjQlQjUlRTUlODclQkElRTUlQkUlODglRTUlQTQlOUElRTUlODAlOEQlRTMlODAlODIlMjIlMkMlMjJkc3QlMjIlM0ElMjJJZiUyMHlvdSUyMGluc2lzdCUyMG9uJTIwbW9kaWZ5aW5nJTIwaXQlMjB5b3Vyc2VsZiUyQyUyMHRoZSUyMHRpbWUlMjBjb3N0JTIwbWF5JTIwYmUlMjBtYW55JTIwdGltZXMlMjBtb3JlJTIwZXhwZW5zaXZlJTIwdGhhbiUyMGNvbnRhY3RpbmclMjBtZS4lMjIlMkMlMjJtZXRhZGF0YSUyMiUzQSUyMiUyMiUyQyUyMm1hdGNoZXMlMjIlM0FudWxsJTJDJTIybWV0YURhdGElMjIlM0ElNUIlNUQlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU1JUE2JTgyJUU2JTlFJTlDJUU0JUJEJUEwJUU5JTlEJTlFJUU4JUE2JTgxJUU4JTg3JUFBJUU1JUI3JUIxJUU0JUJGJUFFJUU2JTk0JUI5JUVGJUJDJThDJUU1JThGJUFGJUU4JTgzJUJEJUU2JTk3JUI2JUU5JTk3JUI0JUU2JTg4JTkwJUU2JTlDJUFDJUU2JUFGJTk0JUU4JTgxJTk0JUU3JUIzJUJCJUU2JTg4JTkxJUU4JUJGJTk4JUU4JUE2JTgxJUU4JUI0JUI1JUU1JTg3JUJBJUU1JUJFJTg4JUU1JUE0JTlBJUU1JTgwJThEJUUzJTgwJTgyJTIyJTdEJTVEJTdEJTVE&quot; style=&quot;white-space-collapse: preserve;&quot;&gt;如果你非要自己修改，可能时间成本比联系我还要贵出很多倍。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Firstly, it should be noted that this matter is very troublesome. It is recommended to contact me directly for payment and modification.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;If you insist on modifying it yourself, the time cost may be many times more expensive than contacting me.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;以下程序是我将U55C的SI5394 OUT0和OUT1的输出由161.1328125MHz修改为156.25Mhz&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;The following program is for me to modify the output of SI5394 OUT0 and OUT1 of U55C from 161.1328125MHz to 156.25Mhz&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 1em; text-wrap-mode: wrap; padding: 0px; font-size: 16px; border: 0px; vertical-align: baseline; text-align: justify; position: relative; text-indent: 2em; color: rgb(51, 51, 51); font-family: Penrose, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, Tahoma, Arial, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, simsun, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;本站提供SI5394修改OUT0和OUT1频率的付费服务，支持但不限于156.25Mhz等，能够固化写入，断电后不丢失。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 1em; text-wrap-mode: wrap; padding: 0px; font-size: 16px; border: 0px; vertical-align: baseline; text-align: justify; position: relative; text-indent: 2em; color: rgb(51, 51, 51); font-family: Penrose, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, Tahoma, Arial, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, simsun, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;如片内NVM超过写入次数限制，也支持更换硬件芯片，或提供新的黄金工程。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 1em; text-wrap-mode: wrap; padding: 0px; font-size: 16px; border: 0px; vertical-align: baseline; text-align: justify; position: relative; text-indent: 2em; color: rgb(51, 51, 51); font-family: Penrose, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, Tahoma, Arial, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, simsun, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;邮寄修改服务，10工作日内完成(可以加急)，每个板卡配置费用5000元(含税)。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 1em; text-wrap-mode: wrap; padding: 0px; font-size: 16px; border: 0px; vertical-align: baseline; text-align: justify; position: relative; text-indent: 2em; color: rgb(51, 51, 51); font-family: Penrose, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, Tahoma, Arial, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, simsun, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;所有工程及操作教程 23888元&lt;span style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;&quot;&gt;(含税)&lt;/span&gt;。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 1em; text-wrap-mode: wrap; padding: 0px; font-size: 16px; border: 0px; vertical-align: baseline; text-align: justify; position: relative; text-indent: 2em; color: rgb(51, 51, 51); font-family: Penrose, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, Tahoma, Arial, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, simsun, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;支持开票，也支持更多相关功能开发，合作可以邮件联系：chenyu@myfpga.cn&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: Penrose, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, Tahoma, Arial, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, simsun, sans-serif; font-size: 16px; text-align: justify; text-indent: 32px; text-wrap-mode: wrap; background-color: #FFFFFF;&quot;&gt;加速卡板载有SI5394，可以输出不同的时钟频率。用于不同的用途，例如万兆以太网等：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754058892111810.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;1、首先通过I2C扫描得到器件的地址，当然，你也可以直接拆开板卡，万用表测量器件地址的A1和A2&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753935014108619.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;这里直接扫描得到了地址为0x68，源代码可以参考：&lt;a href=&quot;https://world.myfpga.cn/index.php/post/460.html&quot; _src=&quot;https://world.myfpga.cn/index.php/post/460.html&quot;&gt;https://world.myfpga.cn/index.php/post/460.html&lt;/a&gt; &lt;/p&gt;&lt;p&gt;2、设计Verilog程序，实现读写的通信：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753935096709611.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;3、设计上位机程序，实现页切换、读、写、校验、擦写&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753935226142348.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;结果示例：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753935255619956.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;4、分析配置，方便进行修改&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753957486119274.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936588484570.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;确认设备型号正确&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936594679114.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936626597633.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;等级是B&amp;nbsp;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936637281736.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936727386411.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;版本是A&amp;nbsp;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936752918404.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936767221785.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;I2C地址也确实是0x68&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936784403516.png&quot; alt=&quot;image.png&quot;/&gt;，不过这个读取有什么用？我知道了地址就能获取地址？&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936813576174.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;设备工作正常&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936822234904.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936842264660.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;时钟输入也正常&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936853237669.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;跳过一些状态的显示，不赘述&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753937018486122.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;使用CBPro软件进行配置？&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753936995205691.png&quot; alt=&quot;image.png&quot;/&gt;读取到的确实是这样，有啥用？&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753940821570836.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;状态寄存器掩码为0xDC 对应&amp;#39;b11011100&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753940833837643.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507311753940952370205.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;获取当前的参考时钟方式：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754025642179650.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754025659287491.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;说明使用的是XO，频率&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754026674290657.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;0x22[5]&amp;nbsp;=&amp;nbsp;1：设备处于Holdover或Free&amp;nbsp;Run模式。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754026718614088.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754026751221746.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;HOLD_HIST_VALID寄存器&amp;nbsp;(0x053F[1])=0，无历史数据，设备处于Free&amp;nbsp;Run模式。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754026883358792.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754026914421754.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;强制锁定在Free&amp;nbsp;Run模式（无论输入时钟状态）。&lt;/p&gt;&lt;p&gt;如果希望知道输出频率&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027762228716.png&quot; alt=&quot;image.png&quot;/&gt;，需要知道N和R&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027279909780.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027300221141.png&quot; alt=&quot;image.png&quot;/&gt;得到N0_NUM=0x2100000000&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027360965263.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027349383932.png&quot; alt=&quot;image.png&quot;/&gt;得到N0_DEN=0x80000000&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027413370267.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027457845263.png&quot; alt=&quot;image.png&quot;/&gt;N1_NUM=0x1000000000&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027484252248.png&quot; alt=&quot;image.png&quot;/&gt;N1_DEN=0xC8000000&lt;/p&gt;&lt;p&gt;N2~N3都为0&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027742437721.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027875246327.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;R0_REG=0，&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;R1_REG=0，&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;R2_REG=1，&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;R3_REG=1，R4_REG~R9_REG均为0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;最后是输出格式：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754027962414161.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754028086106873.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;得知几位都是0x09，低3位是001，对应差分标准模式。选择输出为LVPECL/LVDS等差分信号，内部阻抗100Ω&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754028286427915.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;输出电压摆动&amp;nbsp;&lt;/span&gt;0x3E(0011_1110)的[6:4]为011即0x3&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754028387529411.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;共模电压为1110=0xE&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754029126305728.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754029113918445.png&quot; alt=&quot;image.png&quot; style=&quot;text-wrap-mode: wrap;&quot;/&gt;当前情况下，FINC和FDEC也能影响分频比例的输出。&lt;/p&gt;&lt;p&gt;后面的过程省略，核心思想就是要弄清楚原理再修改，因为NVM有写入次数限制&lt;/p&gt;&lt;p&gt;最后配置完了之后，向0x00E3写入0xC7即可，此时如果重启后啥也没输出，恭喜你，肯定哪里寄存器改错了。&lt;/p&gt;&lt;p&gt;附上我的成功修改记录：&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508011754058529741715.png&quot; alt=&quot;59507717f80820f611e257f61e2973e.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 31 Jul 2025 12:04:33 +0800</pubDate></item><item><title>B50612D RGMII Verilog程序设计 UDP Demo</title><link>https://world.myfpga.cn/index.php/post/461.html</link><description>&lt;p&gt;B50612D Datesheet：&lt;img src=&quot;https://world.myfpga.cn/zb_system/image/filetype/pdf.png&quot; style=&quot;vertical-align: middle; margin-right: 2px;&quot;/&gt;&lt;a href=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753538304352970.pdf&quot; title=&quot;B50612D-datasheet.pdf&quot; style=&quot;font-size: 12px; color: rgb(0, 102, 204);&quot;&gt;B50612D-datasheet.pdf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;对于B50612D这个芯片来说，使用的是RGMII接口，时钟频率和GMII一致，都是1000/8=125Mhz，但是省去了一半的引脚，所以在时钟的双边沿进行传输。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753538416456016.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h1&gt;一、操作流程&lt;/h1&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753538576903073.png&quot; alt=&quot;image.png&quot; width=&quot;1283&quot; height=&quot;716&quot; style=&quot;width: 1283px; height: 716px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753538744960316.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;芯片提供了一个低有效的复位接口，在上电后需要保持复位有效至少10ms+20us才能正常操作，这里我延时15ms。&lt;/p&gt;&lt;p&gt;正常通信时有两种模式，一种是正常模式&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753538900543894.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753538941330433.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753538954383452.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;另外一种是不正常模式(延时模式)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753538913251242.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753538927106174.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753538966391621.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;可以很明显的看出来，正常模式的收发时钟上下边沿均代表对应数据的改变。PHY芯片在发送（TX）和接收（RX）路径均内部延迟时钟约1.5–2ns，使时钟边沿位于数据窗口中央，确保采样稳定。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753539639580120.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507261753539547219790.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;发送接收默认均为延时模式，所以我们在设计Verilog程序的时候，需要对复位和时钟模式进行修改即可。&lt;/p&gt;&lt;p&gt;我的XDC相关部分如下：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-typescript&quot;&gt;###############################################################################
#&amp;nbsp;&amp;nbsp;Ethernet&amp;nbsp;PHY&amp;nbsp;0&amp;nbsp;&amp;nbsp;(U5)&amp;nbsp;&amp;nbsp;--&amp;nbsp;&amp;nbsp;eth0
###############################################################################
create_clock&amp;nbsp;-period&amp;nbsp;8.000&amp;nbsp;-name&amp;nbsp;eth0_rxc&amp;nbsp;[get_ports&amp;nbsp;eth0_rxc]
set_property&amp;nbsp;CLOCK_DEDICATED_ROUTE&amp;nbsp;FALSE&amp;nbsp;[get_nets&amp;nbsp;eth0_rxc]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;H4&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth0_rxc]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;E3&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth0_rxd[0]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;E2&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth0_rxd[1]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;E1&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth0_rxd[2]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;F3&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth0_rxd[3]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;F1&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth0_rx_ctl]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;A1&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth0_txc]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;B2&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth0_txd[0]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;B1&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth0_txd[1]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;C2&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth0_txd[2]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;D2&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth0_txd[3]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;D1&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth0_tx_ctl]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;H2&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth_rst_n]

###############################################################################
#&amp;nbsp;&amp;nbsp;Ethernet&amp;nbsp;PHY&amp;nbsp;1&amp;nbsp;&amp;nbsp;(U9)&amp;nbsp;&amp;nbsp;--&amp;nbsp;&amp;nbsp;eth1
###############################################################################
create_clock&amp;nbsp;-period&amp;nbsp;8.000&amp;nbsp;-name&amp;nbsp;eth1_rxc&amp;nbsp;[get_ports&amp;nbsp;eth1_rxc]
set_property&amp;nbsp;CLOCK_DEDICATED_ROUTE&amp;nbsp;FALSE&amp;nbsp;[get_nets&amp;nbsp;eth1_rxc]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;L3&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth1_rxc]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;N2&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth1_rxd[0]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;N3&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth1_rxd[1]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;P1&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth1_rxd[2]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;P2&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth1_rxd[3]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;R1&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth1_rx_ctl]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;M6&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth1_txc]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;M5&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth1_txd[0]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;M2&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth1_txd[1]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;N4&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth1_txd[2]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;P4&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;{eth1_txd[3]}]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;N5&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth1_tx_ctl]

set_false_path&amp;nbsp;-from&amp;nbsp;[get_ports&amp;nbsp;sys_rst_n]&amp;nbsp;-to&amp;nbsp;[get_ports&amp;nbsp;eth_rst_n]
set_false_path&amp;nbsp;-from&amp;nbsp;[get_ports&amp;nbsp;eth_rst_n]&amp;nbsp;-to&amp;nbsp;[all_outputs]

create_clock&amp;nbsp;-period&amp;nbsp;8.000&amp;nbsp;-name&amp;nbsp;eth0_rxc&amp;nbsp;[get_ports&amp;nbsp;eth0_rxc]
set_input_delay&amp;nbsp;-clock&amp;nbsp;eth0_rxc&amp;nbsp;-max&amp;nbsp;-1.2&amp;nbsp;[get_ports&amp;nbsp;{eth0_rxd[*]}]
set_input_delay&amp;nbsp;-clock&amp;nbsp;eth0_rxc&amp;nbsp;-min&amp;nbsp;-2.8&amp;nbsp;[get_ports&amp;nbsp;{eth0_rxd[*]}]
set_input_delay&amp;nbsp;-clock&amp;nbsp;eth0_rxc&amp;nbsp;-max&amp;nbsp;-1.2&amp;nbsp;[get_ports&amp;nbsp;eth0_rx_ctl]
set_input_delay&amp;nbsp;-clock&amp;nbsp;eth0_rxc&amp;nbsp;-min&amp;nbsp;-2.8&amp;nbsp;[get_ports&amp;nbsp;eth0_rx_ctl]

create_clock&amp;nbsp;-period&amp;nbsp;8.000&amp;nbsp;-name&amp;nbsp;eth0_txc&amp;nbsp;[get_ports&amp;nbsp;eth0_txc]
set_output_delay&amp;nbsp;-clock&amp;nbsp;eth0_txc&amp;nbsp;-max&amp;nbsp;-0.9&amp;nbsp;[get_ports&amp;nbsp;{eth0_txd[*]}]
set_output_delay&amp;nbsp;-clock&amp;nbsp;eth0_txc&amp;nbsp;-min&amp;nbsp;-2.9&amp;nbsp;[get_ports&amp;nbsp;{eth0_txd[*]}]
set_output_delay&amp;nbsp;-clock&amp;nbsp;eth0_txc&amp;nbsp;-max&amp;nbsp;-0.91.5&amp;nbsp;[get_ports&amp;nbsp;eth0_tx_ctl]
set_output_delay&amp;nbsp;-clock&amp;nbsp;eth0_txc&amp;nbsp;-min&amp;nbsp;-2.90.5&amp;nbsp;[get_ports&amp;nbsp;eth0_tx_ctl]

set_property&amp;nbsp;CLOCK_DEDICATED_ROUTE&amp;nbsp;FALSE&amp;nbsp;[get_nets&amp;nbsp;eth0_rxc]
set_property&amp;nbsp;CLOCK_DEDICATED_ROUTE&amp;nbsp;FALSE&amp;nbsp;[get_nets&amp;nbsp;eth0_txc]

set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;G1&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth0_mdc]
set_property&amp;nbsp;-dict&amp;nbsp;{PACKAGE_PIN&amp;nbsp;G2&amp;nbsp;IOSTANDARD&amp;nbsp;LVCMOS33}&amp;nbsp;[get_ports&amp;nbsp;eth0_mdio]
create_clock&amp;nbsp;-period&amp;nbsp;80.000&amp;nbsp;-name&amp;nbsp;eth0_mdc&amp;nbsp;[get_ports&amp;nbsp;eth0_mdc]
set_input_delay&amp;nbsp;-clock&amp;nbsp;eth0_mdc&amp;nbsp;-max&amp;nbsp;10&amp;nbsp;[get_ports&amp;nbsp;eth0_mdio]
set_input_delay&amp;nbsp;-clock&amp;nbsp;eth0_mdc&amp;nbsp;-min&amp;nbsp;0&amp;nbsp;[get_ports&amp;nbsp;eth0_mdio]
set_output_delay&amp;nbsp;-clock&amp;nbsp;eth0_mdc&amp;nbsp;-max&amp;nbsp;10&amp;nbsp;[get_ports&amp;nbsp;eth0_mdio]
set_output_delay&amp;nbsp;-clock&amp;nbsp;eth0_mdc&amp;nbsp;-min&amp;nbsp;0&amp;nbsp;[get_ports&amp;nbsp;eth0_mdio]

set_clock_groups&amp;nbsp;-asynchronous&amp;nbsp;-group&amp;nbsp;[get_clocks&amp;nbsp;sys_clk_25mhz]&amp;nbsp;-group&amp;nbsp;[get_clocks&amp;nbsp;eth0_rxc]&amp;nbsp;-group&amp;nbsp;[get_clocks&amp;nbsp;eth0_txc]&lt;/pre&gt;&lt;p&gt;编译上电测试：&lt;br/&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508041754294687230340.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;收发均正常，收工！&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 26 Jul 2025 21:57:42 +0800</pubDate></item><item><title>Verilog IIC器件枚举工具 SI5341 SI5394等器件也可使用</title><link>https://world.myfpga.cn/index.php/post/460.html</link><description>&lt;p&gt;程序如下：&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-verilog&quot;&gt;`timescale&amp;nbsp;1ns&amp;nbsp;/&amp;nbsp;1ps

module&amp;nbsp;i2c_address_scanner&amp;nbsp;(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;input&amp;nbsp;&amp;nbsp;wire&amp;nbsp;SYSCLK2_P,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;LVDS差分时钟正端
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;input&amp;nbsp;&amp;nbsp;wire&amp;nbsp;SYSCLK2_N,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;LVDS差分时钟负端
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output&amp;nbsp;wire&amp;nbsp;SI_RSTBB,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Si5394复位（低有效）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output&amp;nbsp;wire&amp;nbsp;I2C_SI5394_SCL,&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;I2C时钟
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;inout&amp;nbsp;&amp;nbsp;wire&amp;nbsp;I2C_SI5394_SDA,&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;I2C数据（双向）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output&amp;nbsp;reg&amp;nbsp;[7:0]&amp;nbsp;LED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;扫描结果指示
);

//&amp;nbsp;内部时钟信号（差分转单端）
wire&amp;nbsp;clk;
IBUFDS&amp;nbsp;#(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.DIFF_TERM(&amp;quot;FALSE&amp;quot;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.IBUF_LOW_PWR(&amp;quot;TRUE&amp;quot;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.IOSTANDARD(&amp;quot;LVDS&amp;quot;)
)&amp;nbsp;clk_ibufds&amp;nbsp;(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.O(clk),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.I(SYSCLK2_P),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.IB(SYSCLK2_N)
);

//&amp;nbsp;参数定义
localparam&amp;nbsp;CLK_FREQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;100_000_000;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;100&amp;nbsp;MHz
localparam&amp;nbsp;I2C_FREQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;100_000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;I2C时钟频率&amp;nbsp;(100&amp;nbsp;kHz)
localparam&amp;nbsp;DIVIDER_I2C&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;CLK_FREQ&amp;nbsp;/&amp;nbsp;(2&amp;nbsp;*&amp;nbsp;I2C_FREQ)&amp;nbsp;-&amp;nbsp;1;
localparam&amp;nbsp;COUNTER_ADDR&amp;nbsp;&amp;nbsp;=&amp;nbsp;500_000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;500ms地址切换周期

//&amp;nbsp;状态机定义
typedef&amp;nbsp;enum&amp;nbsp;logic&amp;nbsp;[2:0]&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IDLE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;空闲状态
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;START,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;发送起始条件
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SEND_ADDR,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;发送设备地址
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK_ACK,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;检查ACK响应
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STOP,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;发送停止条件
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NEXT_ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;准备下一个地址
}&amp;nbsp;state_t;

//&amp;nbsp;状态寄存器
reg&amp;nbsp;[2:0]&amp;nbsp;state&amp;nbsp;=&amp;nbsp;IDLE;
reg&amp;nbsp;[2:0]&amp;nbsp;next_state&amp;nbsp;=&amp;nbsp;IDLE;

//&amp;nbsp;定时控制
reg&amp;nbsp;[31:0]&amp;nbsp;timer_count&amp;nbsp;=&amp;nbsp;0;
reg&amp;nbsp;addr_switch_pulse&amp;nbsp;=&amp;nbsp;0;

//&amp;nbsp;I2C控制信号
reg&amp;nbsp;[15:0]&amp;nbsp;i2c_counter&amp;nbsp;=&amp;nbsp;0;
reg&amp;nbsp;i2c_clk&amp;nbsp;=&amp;nbsp;1;
reg&amp;nbsp;sda_out&amp;nbsp;=&amp;nbsp;1;
reg&amp;nbsp;sda_oe&amp;nbsp;=&amp;nbsp;0;
wire&amp;nbsp;sda_in&amp;nbsp;=&amp;nbsp;I2C_SI5394_SDA;

//&amp;nbsp;地址扫描控制
reg&amp;nbsp;[6:0]&amp;nbsp;current_addr&amp;nbsp;=&amp;nbsp;7&amp;#39;h00;&amp;nbsp;&amp;nbsp;//&amp;nbsp;当前尝试的地址（7位）
reg&amp;nbsp;[7:0]&amp;nbsp;addr_response&amp;nbsp;=&amp;nbsp;8&amp;#39;h00;&amp;nbsp;//&amp;nbsp;地址响应位图
reg&amp;nbsp;[3:0]&amp;nbsp;bit_count&amp;nbsp;=&amp;nbsp;0;
reg&amp;nbsp;found&amp;nbsp;=&amp;nbsp;0;
reg&amp;nbsp;[7:0]&amp;nbsp;found_count&amp;nbsp;=&amp;nbsp;0;

//&amp;nbsp;I2C时钟边沿检测
reg&amp;nbsp;i2c_clk_prev&amp;nbsp;=&amp;nbsp;0;
wire&amp;nbsp;i2c_clk_rising&amp;nbsp;=&amp;nbsp;(i2c_clk_prev&amp;nbsp;==&amp;nbsp;0&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;i2c_clk&amp;nbsp;==&amp;nbsp;1);
wire&amp;nbsp;i2c_clk_falling&amp;nbsp;=&amp;nbsp;(i2c_clk_prev&amp;nbsp;==&amp;nbsp;1&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;i2c_clk&amp;nbsp;==&amp;nbsp;0);

//&amp;nbsp;设备地址显示
always&amp;nbsp;@(posedge&amp;nbsp;clk)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LED&amp;nbsp;&amp;lt;=&amp;nbsp;{found,&amp;nbsp;current_addr};
end

//&amp;nbsp;地址切换定时器（0.5秒）
always&amp;nbsp;@(posedge&amp;nbsp;clk)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(timer_count&amp;nbsp;&amp;gt;=&amp;nbsp;COUNTER_ADDR)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timer_count&amp;nbsp;&amp;lt;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addr_switch_pulse&amp;nbsp;&amp;lt;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;else&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timer_count&amp;nbsp;&amp;lt;=&amp;nbsp;timer_count&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addr_switch_pulse&amp;nbsp;&amp;lt;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
end

//&amp;nbsp;I2C时钟生成（100&amp;nbsp;kHz）
always&amp;nbsp;@(posedge&amp;nbsp;clk)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i2c_clk_prev&amp;nbsp;&amp;lt;=&amp;nbsp;i2c_clk;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i2c_counter&amp;nbsp;&amp;gt;=&amp;nbsp;DIVIDER_I2C)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i2c_counter&amp;nbsp;&amp;lt;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i2c_clk&amp;nbsp;&amp;lt;=&amp;nbsp;~i2c_clk;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;else&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i2c_counter&amp;nbsp;&amp;lt;=&amp;nbsp;i2c_counter&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
end

//&amp;nbsp;I2C总线控制
assign&amp;nbsp;I2C_SI5394_SCL&amp;nbsp;=&amp;nbsp;(state&amp;nbsp;!=&amp;nbsp;IDLE)&amp;nbsp;?&amp;nbsp;i2c_clk&amp;nbsp;:&amp;nbsp;1&amp;#39;b1;
assign&amp;nbsp;I2C_SI5394_SDA&amp;nbsp;=&amp;nbsp;sda_oe&amp;nbsp;?&amp;nbsp;sda_out&amp;nbsp;:&amp;nbsp;1&amp;#39;bz;

//&amp;nbsp;ILA信号
wire&amp;nbsp;[7:0]&amp;nbsp;current_addr_8bit&amp;nbsp;=&amp;nbsp;{1&amp;#39;b0,&amp;nbsp;current_addr};
wire&amp;nbsp;ack_detected&amp;nbsp;=&amp;nbsp;(state&amp;nbsp;==&amp;nbsp;CHECK_ACK&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;i2c_clk_rising&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;sda_in&amp;nbsp;==&amp;nbsp;0);
wire&amp;nbsp;[7:0]&amp;nbsp;response_map&amp;nbsp;=&amp;nbsp;addr_response;

//&amp;nbsp;主状态机
always&amp;nbsp;@(posedge&amp;nbsp;clk)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state&amp;nbsp;&amp;lt;=&amp;nbsp;next_state;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;(state)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IDLE:&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_oe&amp;nbsp;&amp;lt;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_out&amp;nbsp;&amp;lt;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;found&amp;nbsp;&amp;lt;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(addr_switch_pulse)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;next_state&amp;nbsp;&amp;lt;=&amp;nbsp;START;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bit_count&amp;nbsp;&amp;lt;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;START:&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_oe&amp;nbsp;&amp;lt;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;确保START状态持续足够时间
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i2c_clk_falling)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_out&amp;nbsp;&amp;lt;=&amp;nbsp;1;&amp;nbsp;//&amp;nbsp;SCL高时SDA高
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i2c_clk_rising)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_out&amp;nbsp;&amp;lt;=&amp;nbsp;0;&amp;nbsp;//&amp;nbsp;SCL高时拉低SDA（起始条件）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;next_state&amp;nbsp;&amp;lt;=&amp;nbsp;SEND_ADDR;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SEND_ADDR:&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_oe&amp;nbsp;&amp;lt;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i2c_clk_falling)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(bit_count&amp;nbsp;&amp;lt;&amp;nbsp;8)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;发送7位地址&amp;nbsp;+&amp;nbsp;R/W位(0=写)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(bit_count&amp;nbsp;&amp;lt;&amp;nbsp;7)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_out&amp;nbsp;&amp;lt;=&amp;nbsp;current_addr[6&amp;nbsp;-&amp;nbsp;bit_count];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;else&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_out&amp;nbsp;&amp;lt;=&amp;nbsp;1&amp;#39;b0;&amp;nbsp;//&amp;nbsp;写命令
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bit_count&amp;nbsp;&amp;lt;=&amp;nbsp;bit_count&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(bit_count&amp;nbsp;==&amp;nbsp;8)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_oe&amp;nbsp;&amp;lt;=&amp;nbsp;0;&amp;nbsp;//&amp;nbsp;释放SDA用于ACK检测
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;next_state&amp;nbsp;&amp;lt;=&amp;nbsp;CHECK_ACK;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK_ACK:&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_oe&amp;nbsp;&amp;lt;=&amp;nbsp;0;&amp;nbsp;//&amp;nbsp;主机释放SDA
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i2c_clk_rising)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(sda_in&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;begin&amp;nbsp;//&amp;nbsp;ACK&amp;nbsp;detected
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;found&amp;nbsp;&amp;lt;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addr_response&amp;nbsp;&amp;lt;=&amp;nbsp;addr_response&amp;nbsp;|&amp;nbsp;(1&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;current_addr);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;found_count&amp;nbsp;&amp;lt;=&amp;nbsp;found_count&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;next_state&amp;nbsp;&amp;lt;=&amp;nbsp;STOP;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STOP:&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_oe&amp;nbsp;&amp;lt;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i2c_clk_falling)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_out&amp;nbsp;&amp;lt;=&amp;nbsp;0;&amp;nbsp;//&amp;nbsp;SCL低时SDA低
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i2c_clk_rising)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sda_out&amp;nbsp;&amp;lt;=&amp;nbsp;1;&amp;nbsp;//&amp;nbsp;SCL高时SDA高（停止条件）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;next_state&amp;nbsp;&amp;lt;=&amp;nbsp;NEXT_ADDR;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NEXT_ADDR:&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;移动到下一个地址
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(current_addr&amp;nbsp;==&amp;nbsp;7&amp;#39;h7F)&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;current_addr&amp;nbsp;&amp;lt;=&amp;nbsp;7&amp;#39;h00;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;else&amp;nbsp;begin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;current_addr&amp;nbsp;&amp;lt;=&amp;nbsp;current_addr&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;next_state&amp;nbsp;&amp;lt;=&amp;nbsp;IDLE;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default:&amp;nbsp;next_state&amp;nbsp;&amp;lt;=&amp;nbsp;IDLE;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endcase
end

//&amp;nbsp;复位信号保持无效
assign&amp;nbsp;SI_RSTBB&amp;nbsp;=&amp;nbsp;1&amp;#39;b1;

//&amp;nbsp;ILA实例化
ila_inst&amp;nbsp;ila&amp;nbsp;(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.clk(clk),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;采样时钟
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.probe0(I2C_SI5394_SCL),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;I2C&amp;nbsp;SCL
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.probe1(I2C_SI5394_SDA),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;I2C&amp;nbsp;SDA
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.probe2(state),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;状态机状态（3位）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.probe3(current_addr_8bit),&amp;nbsp;&amp;nbsp;//&amp;nbsp;当前扫描地址（8位）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.probe4({7&amp;#39;b0,&amp;nbsp;ack_detected}),&amp;nbsp;//&amp;nbsp;ACK检测信号
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.probe5(response_map),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;地址响应位图（8位）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.probe6({7&amp;#39;b0,&amp;nbsp;found}),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;当前地址发现标志
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.probe7(found_count)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;发现设备计数
);

endmodule&lt;/pre&gt;&lt;p&gt;运行结果如图所示：&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507211753109166770025.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;能够找到器件地址为0x68&lt;/p&gt;</description><pubDate>Mon, 21 Jul 2025 22:44:42 +0800</pubDate></item><item><title>自研板卡 Xilinx A7 100Msps/8bit/2CH ADC WithTrig 千兆以太网 40MBW</title><link>https://world.myfpga.cn/index.php/post/459.html</link><description>&lt;h1&gt;1板卡设计框图&lt;br/&gt;&lt;/h1&gt;&lt;h2&gt;1.1电源&lt;br/&gt;&lt;/h2&gt;&lt;p&gt;板卡支持DC和Type-C供电两种方式，5V电源通过多个LDO产生数字和模拟用的多路3.3V电源以及-5V运放用电源&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508041754276958323914.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h2&gt;1.2模拟输入&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508041754276912212866.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;设计带宽为40Mhz。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508041754277825401242.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h2&gt;1.3触发输入&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508041754276895145226.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h2&gt;1.4数字部分&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508041754277276788446.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h1&gt;2.测试记录&lt;br/&gt;&lt;/h1&gt;&lt;h2&gt;2.1电源功率&lt;/h2&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;测试多路电源电压正常，纹波＜1%，满足设计目标。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;实测无FPGA情况下整板功率0.59W，带FPGA整板正常模式功率2.5W，全速以太网发送时功率2.9W，满足设计目标。&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;2.2输入测试&lt;/h2&gt;&lt;p&gt;ADC输入波形无明显失真，幅值同仿真结果基本一致。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508041754277472636146.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;在预设电压范围内实测-3dB带宽范围为43Mhz，同仿真结果基本一致。&lt;/p&gt;&lt;h2&gt;2.3以太网通信测试&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508071754529802265666.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h2&gt;2.4上位机显示测试&lt;br/&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/08/202508071754529788121063.png&quot; alt=&quot;c74d5ed5be899f0559fe2bef6063b5e.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 09 Jul 2025 21:55:33 +0800</pubDate></item><item><title>NANDO3.5汉化版 免费下载 仅用于学习和教育目的</title><link>https://world.myfpga.cn/index.php/post/458.html</link><description>&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;ue-upload&quot; style=&quot;line-height: 16px;&quot;&gt;&lt;img src=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507081751942618191955.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p class=&quot;ue-upload&quot; style=&quot;line-height: 16px;&quot;&gt;&lt;img style=&quot;vertical-align: middle; margin-right: 2px;&quot; src=&quot;https://world.myfpga.cn/zb_system/image/filetype/zip.png&quot;/&gt;&lt;a style=&quot;font-size:12px; color:#0066cc;&quot; href=&quot;https://world.myfpga.cn/zb_users/upload/2025/07/202507081751942584731559.zip&quot; title=&quot;NANDO3.5汉化版.zip&quot;&gt;NANDO3.5汉化版.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 08 Jul 2025 10:40:32 +0800</pubDate></item></channel></rss>