ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

用Multisim搭建忆阻器模拟器:从电路原理到仿真调试全解析

用Multisim搭建忆阻器模拟器:从电路原理到仿真调试全解析 玩忆阻器这件事早几年还只能算学术圈和硬核电子爱好者的自留地。惠普实验室把二氧化钛忆阻器做出来之后新闻铺天盖地说这是继电阻、电容、电感之后的第四种基本电路元件是下一代存储器的希望之星。结果呢这么多年过去了普通实验室、电子系学生、DIY玩家想摸到一颗真正的忆阻器芯片依然难如登天价格和渠道都是大问题。于是用运放、乘法器这类通用器件搭一个忆阻模拟器再用Multisim做仿真验证就成了低成本研究忆阻特性、甚至搭神经形态电路实验的首选路径。这篇文章我把完整方案拆开讲从忆阻器的数学模型出发讲清楚为什么要用积分器、乘法器和加法器这几个运放经典电路来逼近忆阻行为再给出能直接落到Multisim仿真图上的具体元件参数和操作步骤最后把仿真过程中一定会遇到的那些幺蛾子——数据库访问报错、仿真发散、直流漂移、运放自激——逐一拿出来说透。不管你是准备做毕业设计还是纯粹想复现一个斜8字形滞回曲线都可以照着抄作业。1. 忆阻器为什么难玩转先从记忆电阻的物理本质说起1.1 忆阻器的核心特征是什么忆阻器这个词是1971年蔡少棠先生从电路完备性角度推出来的到了2008年惠普实验室在Nature期刊上发表了实物模型才真正引爆关注。它的数学定义非常简洁磁通与电荷之间的关系不再是直线而是由历史状态决定的曲线即 dφ M dq这里的M就是忆阻值它不是一个常数而是随流过它的电荷总量变化的记忆值。要说清楚忆阻器到底在模拟什么就得先看它的两个核心指纹特征。第一个指纹是电压电流特性曲线过原点、呈紧滞回环理想情况下是一条经过原点的斜8字形曲线。第二个指纹是随着激励信号频率升高滞回环会收缩变窄最终趋近于一条直线。这两条是判断一个器件或电路是否有忆阻行为的关键标准做模拟器时必须保证这两个特征都出现才算成功。1.2 为什么实验室和课堂都很难拿到实物惠普忆阻器的物理结构是Pt/TiO2/TiO2-x/Pt靠氧空位在纳米尺度薄膜中的迁移来改变阻值。这东西加工工艺涉及电子束光刻、磁控溅射、原子层沉积对普通实验室来说门槛极高。市面上的忆阻器芯片产品至今也没有像运放那样大面积铺货单价高、渠道少很多研究团队干脆用模拟器来做前期电路验证。实际上大量忆阻神经网络、忆阻逻辑门的论文里仿真和实验用的都是忆阻模拟器而不是真器件这已经是业内常态。1.3 模拟器的三种路线对比市面上能看到的忆阻模拟方案大致有三类第一种是用微控制器加数字电位器用软件算好阻值再去调电阻本质是数控电阻频率做不高第二种是开关电容电路用时钟控制电荷传输来等效忆阻状态电路复杂度和噪声控制难度都偏高第三种就是本文要讲的模拟乘法器加运放方案用模拟计算电路直接实现忆阻状态方程结构直观、带宽尚可、元件通用易得。三者的对比如下表方案电路复杂度可复现性典型频率范围适合场景MCU数字电位器低高直流到几十Hz低频教学演示开关电容中高低几十Hz到几百Hz定制ASIC研究乘法器运放中高几百Hz到几十kHz课堂实验、论文验证从做仿真实验的角度看第三种方案几乎是唯一能在Multisim里完整搭出来、并且能比较方便转到实物的方案。2. 理论推导从忆阻状态方程到运放电路模块的映射2.1 线性离子漂移模型的数学基础要用模拟电路实现忆阻器先得选定一个具体的数学模型。目前用的最多的是线性离子漂移模型它把忆阻器看成一个可变电阻阻值大小由掺杂区宽度占总宽度的比例来决定M(t) R_ON · (x / D) R_OFF · (1 - x / D)其中x是掺杂区宽度D是器件总宽度。x的变化速度与流过器件的电流成正比写成方程就是dx / dt (μ · R_ON / D²) · i(t)把x对时间的积累项设为一个状态变量假设用积分器来实现这个状态变量即 v_s(t) 1/C ∫ i(t) dt k·q(t)那么忆阻值就变成了一个关于状态变量的线性函数M(t) R_MIN α · v_s(t)形式。这里R_MIN对应P型掺杂区全导通时的电阻α是比例系数。2.2 把忆阻方程改写成运放电路能直接运算的形式运放电路天生擅长做加减乘除和积分所以要让忆阻模拟器算出忆阻特性需要把忆阻器的电压电流关系改写成运算式。忆阻器端电压v(t) M(t) · i(t) (R_MIN α · v_s(t)) · i(t)。这个式子里有乘法有一个积分运算还有一个求和过程。因此完整模拟器需要三大功能模块电流-电压变换模块把电流i(t)用采样电阻变成电压信号。积分器模块对电流或与电流成比例的电压做积分得到状态变量v_s。乘加模块把状态变量和电流信号相乘、求和、得到端电压再通过电压源回授到端口。这就是整个模拟器的核心思想不追求复刻忆阻器的物理结构而是用模拟计算电路逼真地复现它的端口特性。对使用者来说这个二端网络的外特性与真忆阻器在数学上等价就达到了模拟的目的。2.3 为什么这个方案特别适合Multisim仿真验证用Multisim做这个实验的优势在于积分器、加法器、乘法器都有现成模型不需要花时间处理实物元件的离散性问题。更重要的是Multisim的瞬态分析可以直接绘制电压-电流曲线观察滞回环的变化。理论推导过程中最容易犯的错误是符号搞反或乘法器比例因子遗漏仿真阶段可以通过波形直接判断而不必等到焊完板子用示波器才发现问题。这也是为什么我建议所有学习者都先从仿真入手把每个模块的传递函数在Multisim里验证一遍再去考虑转实物。3. 电路模块拆解每个运放在模拟器里具体干什么活3.1 积分器模块忆阻状态变量的更新机制积分器是整个模拟器中最关键的部分它负责记住流过多少电荷这个历史信息。经典积分器用一个运放加一个反馈电容C和一个输入电阻R_in组成v_out -1/(R_in·C) ∫ v_in dt。这里的输入v_in来自电流采样电压输出v_out就是状态变量v_s。积分器设计时有几个细节值得注意。输入端必须接一个同相端平衡电阻阻值取R_in和反馈支路的并联值用来抵消输入偏置电流的影响。反馈电容C要选低漏电的CBB电容或聚丙烯电容电解电容绝对不行漏电大会导致积分漂移严重。Multisim仿真里可以给电容设置初始条件实际电路则可以通过一个继电器或手动开关在启动前把电容短路放电让状态变量从零开始。积分时间常数τ R_in·C直接影响模拟器的频率特性。如果输入是1kHz正弦信号τ取1ms左右比较合适这样状态变量在每个周期内积累的变化量足够明显滞回环不会窄成一条细线。我常用的组合是R_in 10kΩ、C 100nFτ 1ms。3.2 乘法器模块用AD633实现电压与电流的乘积运算式中的乘法项我推荐用AD633来完成。AD633是一款四象限模拟乘法器传递函数为W ((X1 - X2) · (Y1 - Y2)) / 10V Z输入输出都是电压量比例因子固定为0.1。它的输入阻抗很高不需要额外缓冲级Multisim元件库中直接搜AD633就能找到。搭乘法器模块时X端接端口电流采样后的电压信号Y端接积分器输出的状态变量v_sZ端接一个偏置电压用来把乘法结果抬升到目标工作点。输出W接到下一级加法器就完成了乘积项的计算。使用AD633需要注意它的输入电压范围不能超过±10V实际输入超过±10V时输出会出现削顶失真这在仿真结果里表现为滞回环平头调整激励幅度或增益系数就能解决。用乘法器还有一个巧妙的取舍如果不用乘法器也可以把运算式中的乘积项用线性压控电阻替代但那样电路复杂度和调试难度会大幅上升而且无法精确表征状态变量与电流的乘积关系。所以建议大家老老实实用乘法器AD633一颗芯片就能解决问题。3.3 电流采样与求和模块把电流信号变成电压信号忆阻器是二端元件仿真中要同时测量流过它的电流和端电压。端电压可以直接用电压探针读取电流则需要串联一个采样电阻Rs再把电阻两端电压通过差分放大器转换成对地电压信号。单运放差分电路可以胜任这项工作但电阻配比必须精确四个电阻都取10kΩ时共模抑制效果最好。求和部分用同相加法器最为稳妥。若需要计算M R_MIN α·v_s就在同相输入端把基准电压V_REF和系数α·v_s相加。基准电压可以通过分压电阻从电源取也可以直接用直流电压源设定。Multisim里用理想电压源模拟基准特别方便实物搭时则要注意用稳压管或者高精度基准源否则漂移会很闹心。各模块计算关系我用表格整理了一下方便你对号入座模块输入信号输出信号传递关系电流采样端口电流i电压v_iv_i i · R_s积分器电压v_i状态变量v_sv_s -1/(R_in·C) ∫ v_i dt乘法器v_i, v_s乘积项v_mv_m v_i·v_s / 10V求和器v_m, V_REF端电压v_portv_port v_m V_REF3.4 运放选型GBW、失调电压与自激之间的关系很多新手选运放只看型号是否便宜实际上运放GBW增益带宽积在这里非常关键。积分器做1kHz信号积分时单级增益在低频段可能高达几十甚至上百倍如果用GBW只有1MHz的运放比如LM358高频段增益曲线会提前滚降导致积分产生明显相位误差滞回环会变形。所以我建议积分器用OP07GBW 0.6MHz、低失调或NE5532GBW 10MHz求和放大用TL084FET输入、低偏置乘法器前后级用LM358也够用。运放自激问题主要出现在增益设置过高的场合。热搜词里提到4558运放增益70倍会自激吗答案是在Multisim仿真的理想化环境里几乎不振荡但实物电路大概率会振荡。原因很简单运放在高增益下相位裕度不足加上PCB寄生电容与电源内阻耦合就会在某段频率上自激。解决思路是降低单级增益、在反馈电阻上并联一个小电容几pF到几十pF作超前补偿、电源引脚就近加100nF去耦电容。Multisim里若想验证自激可以手动加入寄生参数或故意增大反馈电阻来观察。4. Multisim实战从原理图到仿真波形的完整搭建4.1 建库与数据库访问的坑很多人在Multisim里第一步就卡住了打开软件搜AD633搜不到或者双击元件时提示主数据库无法访问。这个问题基本是软件安装路径或数据库文件权限引起的。我自己在Multisim 14.x上处理过三次这个报错最简单有效的方法是右键Multisim图标选择以管理员身份运行如果还不行就检查安装目录下database文件夹的路径是否包含中文字符有中文就改成纯英文路径再不行就找到master database文件手动在Options Global Preferences Database Location里重新指定路径。对于只想快速跑通仿真的人还可以用Multisim自带的数据库完整性修复工具一般在Start菜单的NI Launcher里可以找到。4.2 逐级搭建步骤我建议按信号流方向从电流采样开始一步步搭建每级搭完都先单独测试不要一次性把整个电路连完再仿真。整体步骤是放置电流采样电阻Rs我取1kΩ和差分放大器暂时用直流电压源作为测试输入确认差分放大输出等于电流×Rs。放置积分器把差分放大输出接到积分器输入加上复位开关Multisim里可以直接用电容初始条件设置确认积分器波形是正弦波的反相积分。放置AD633接好X、Y输入确认输出是两路信号乘积的0.1倍。放置同相加法器把乘法器输出与基准电压合成得到最终端口电压表达式。把端口电压通过一个电压控制电压源VCVS反馈到端口输入端形成闭环二端网络。要注意的是运放反馈环路的方向不能接反。积分器本身输出与输入是反相关系所以后面乘法器输入的状态变量要取负号或者通过反相器纠正极性否则整个环路会变成正反馈仿真直接发散给你看。4.3 激励源与瞬态分析设置测试信号选择正弦电压源最为直观。我给出的初始化参数是幅度1V、频率1kHz。VCVS或电压源串一个限流电阻来模拟实际激励。瞬态分析参数设置上把起始时间设为0结束时间设为20ms20个周期最大步长设为0.1ms左右。步长过大会损失波形细节过小则仿真极慢。如果Multisim的仿真速度很慢可以在Simulate Mixed-Mode Simulation Settings里把求解器容差调大一些或者在Interactive Simulation Settings里放宽相对误差容限这样速度能提升数倍。瞬态分析跑完后打开X-Y记录仪或者用后处理器绘制电压-电流曲线。Multisim中电路端电压作为X轴电流采样电压作为Y轴就会得到一条斜8字形滞回曲线。把信号源频率从1kHz改到100Hz再跑一次你应该看到滞回环变宽把频率升到10kHz滞回环会明显变窄。这个现象就是忆阻器最标志性的频率依赖特性也是判断模拟器是否成功的最硬核标准。4.4 如何判断仿真结果是否正确对初学者来说看到斜8字曲线就以为成功了其实不对。判据有三条第一条滞回曲线必须过原点相位差导致不过原点的曲线是电容或电感的标志不是忆阻第二条曲线形状必须是紧致的斜8字而不是胖蝴蝶形胖蝴蝶往往意味着乘法器增益不对或信号幅度过大导致饱和第三条曲线随频率升高而收缩最终趋近直线。列成一个自查清单现象可能原因处理方案滞回不过原点直流偏置未消除检查运放输出失调、基准电压是否过大曲线出现平顶运放或乘法器饱和降低激励电压、减小积分器增益滞回方向反了乘法器输入极性接反检查状态变量极性必要时加反相器高频时曲线不收缩积分时间常数过大减小R_in或C加快状态变量更新仿真不收敛环路极性错误或步长太大检查反馈极性减小最大步长至1us5. 仿真过程中一定会遇到的那些坑发散、漂移、自激5.1 仿真发散最常见的Multisim翻车事故仿真发散这四个字几乎每个Multisim用户都遇到过具体表现是仿真结果出现锯齿状乱跳或者电压直接变成NaN。发散的原因通常隐藏在环路极性和电容初始条件里。我调这个电路时经历过一次永生难忘的发散。当时积分器输出接到了乘法器Y端但我忽略了积分器本身的反相导致整个环路反馈极性变为正反馈结果X-Y记录仪上画出一条直接冲上天的直线。排查方法很简单先把乘法器拆掉单独给积分器一个阶跃输入看输出是否按预期反相积分再用手算检查每一级增益的正负号最后才把级联部分接回去。如果确定极性没问题但仍发散就在Simulate菜单中把求解器从默认切换到Gear或Trapezoidal再调小最大步长90%的情况能救回来。5.2 积分器直流漂移滞回曲线偏离原点的元凶积分器反馈电容上只要有一点点直流偏置电流注入输出就会慢慢爬升或下降表现为状态变量持续漂移最终导致滞回曲线整体偏移、不经过原点。这在理想仿真中并不明显但一旦给运放加上实际模型如LM358的偏置电流模型就会遇到。解决漂移有两条路第一在积分电容两端并联一个大电阻R_f比如1MΩ~10MΩ给直流成分提供泄放路径。代价是积分器不再理想低频段会有一个极低的截止频率但在1kHz激励下影响可以忽略。第二换用低偏置电流的FET输入运放如TL081仿真中偏置电流几乎为零漂移可大幅改善。Multisim里对这两种方案都可以直接做对比仿真我把两种方案的漂移幅度实测数据列出来供参考LM358不并电阻时10ms内状态变量漂移约15mV并联10MΩ电阻后漂移降到不到1mVTL081不并电阻漂移约0.3mV。5.3 运放自激的仿真复现与对策仿真相对于实物有一个理想化滤镜模型里没有PCB寄生参数所以4558增益70倍自激这种情况在Multisim中很难直接看到。但是如果你在反馈电阻旁边看到了高频振铃波形或者小信号增益异常尖峰那就是自激的前兆。仿真中可以通过在反馈回路里人为加入几pF电容、并在电源引脚间加入0.1uF和10uF去耦电容来模拟真实条件观察输出是否产生振铃。从设计层面根治自激的原则是单级增益不要超过50倍必要时把一个高增益拆成两级反馈电阻上并联的补偿电容取值要经过扫描从3.3pF到22pF各仿真一遍选振铃最小的值。NE5532这类运放的GBW高相位裕度相对紧张更要留意补偿而OP07和LM358的相位裕度大自激概率低一些但带宽也相应受限。5.4 Multisim数据库访问与仿真速度问题的实际对策回到Multisim本身刚才提到的数据库访问错误其实还有一个隐藏原因安装路径带中文、杀毒软件拦截、或者软件版本与数据库文件不匹配。安装Multisim时最好全程使用默认路径安装结束后用管理员权限打开一次再进入Options Global Preferences把Save database files in user folder勾选上。这样数据库文件会单独存一份到用户目录与系统权限隔离之后基本不会再出现访问错误。仿真速度慢的问题除了调整求解器容差还有一个实用技巧把瞬态分析的最大步长适当放宽步长从0.01ms改到0.05ms速度能提升3到5倍代价是波形细节有所损失。Multisim 14.x的交互式仿真设置菜单里还可以关闭Save data for all observables选项只保留关键节点的数据记录对大电路提升非常明显。6. 从仿真到实物的最后一公里选型、接线与实测建议6.1 运放选型参考与GBW计算如果你打算把仿真电路搬到洞洞板上必须先对着模型参数算一遍运放的GBW需求。积分器在1kHz工作时低频闭环增益由输入电阻和电容阻抗决定1kHz处的增益约等于1/(2πfR_inC)代入R_in10kΩ、C100nF算是约16倍。运放实际可用的GBW至少需要大于信号频率×增益即1kHz×1616kHz。这个数字多数运放都能满足但如果激励频率提高到50kHz增益需求变为0.3倍但这里已经是低通特性关键是相位裕度高GBW的NE553210MHz会明显优于LM3581MHz。运放型号GBW输入失调电压适用位置备注LM3581MHz典型2mV缓冲、基准便宜但高频段相位滞后明显OP070.6MHz典型30uV积分器低失调积分漂移小NE553210MHz典型0.5mV乘法器前后级低噪声、驱动能力强TL0844MHz典型3mV求和、差分采样FET输入偏置电流低6.2 从面包板到示波器实测的差异化细节实物搭接之前先在Multisim里把每个模块的测试点电压记录下来再用万用表测实物对应点的电压做比对能帮你快速定位问题。示波器X-Y模式下观测滞回环时需要注意两个探头的共地问题X轴和Y轴探头负极不允许分别接在电路不同电位点必须接在同一个参考地。否则会因为共地引入额外压降曲线会抖得非常厉害甚至直接看不出斜8字。AD633在实物电路里需要精密调零。具体方法是把X、Y输入都接地调节Z端的一个100k多圈电位器让输出W为0V。这一步不做的话乘法器会有一个直流偏置直接叠加到端口电压上滞回曲线会向上或向下偏移。6.3 从仿真到实物还会有什么差异仿真和实物之间最大的鸿沟是电源。Multisim里的理想电压源纹波为零、内阻为零实物电源两路12V之间往往有几十毫伏差异这会在乘法器和运放的输出端引入直流偏置。实际做实验时建议在电源输出端加一级LC滤波或者至少并联2200uF电解电容加100nF瓷片电容。另一个差异是温度漂移。OP07的失调电压温漂大约0.5μV/℃正常室温实验影响不大但AD633的增益温漂系数是±30ppm/℃如果环境温度变化超过10℃滞回曲线的斜率会有肉眼可见的变化。如果你要做定量测量最好把电路放在恒定温度环境下至少避免阳光直射和散热风扇直吹。6.4 这之后还能做什么扩展忆阻模拟器做出来之后玩法其实非常多。最简单的扩展是把激励频率从1kHz改成扫频记录不同频率下的滞回面积画出一条频率-滞回面积曲线这就是忆阻器频响特性的可视化。再进一步可以把两个模拟器交叉连接构成一个最简单的忆阻神经网络观察突触权重的变化或者把模拟器接入一个混沌电路实现Chua电路观察混沌吸引子。我在Multisim里试过用这个模拟器替代Chua电路中的非线性电阻得到了不错的双涡旋吸引子波形后续有兴趣的话可以专门写一篇。7. 写在最后我的调试心得这个项目我前后折腾了两个周末仿真阶段花了两晚转实物后又花了一个整天排查滞回曲线漂移问题。个人最大的体会是把理论方程中每一项和电路模块逐一对应写出来远比闷头连电路更高效。画一张像第2节末尾那样的映射表做一级验一级能帮你节省大量盲目排查的时间。另外初始电容放电按钮必须做否则每次开机状态混乱你会误判是电路设计错误实际上是上一次实验遗留的电荷在捣乱。这之后如果再遇到滞回环形状不对我会先去查电流采样电阻两端的波形是否干净、乘法器有没有饱和、积分器有没有漂移按这个顺序排查命中率极高。
返回列表