☰
运放与乘法器DIY忆阻模拟器:Multisim仿真实现V-I滞回曲线
2026/10/7 6:33:00 网站建设 项目流程

第一次在论文里看到忆阻器的V-I特性曲线时,我第一反应是:这玩意要是能真拿示波器扫出那条斜8字滞回线,该多过瘾。可现实很骨感——实验室里没有忆阻器样品,市面上能买到的所谓“忆阻器模块”要么是教学演示板,要么是商家拿普通元件凑数的东西。直到后来读到用运算放大器和模拟乘法器构造忆阻模拟器的思路,我才真正把理论曲线和实测波形对上号。

这篇文章就从这个思路说起:用运放和乘法器自己DIY一个忆阻模拟器,从数学原理到电路设计,再到Multisim仿真里的完整搭建与调试,全部过一遍。内容偏实操,适合正在做课程设计、毕业设计,或者对忆阻器工作原理好奇但手头没有真实器件的朋友。跟着走完,你也能在Multisim里稳定扫出那条标志性的滞回曲线。

1. 为什么要用运放和乘法器做忆阻模拟器

1.1 忆阻器到底是什么

忆阻器(Memristor)在1971年被蔡少棠从电路基本变量对称性的角度预言出来,当时并没有实物。它描述的是电荷 q 与磁通 φ 之间的关系,理想忆阻器的阻值不是常数,而是取决于过去流过它的电荷量或施加在它上面的电压历史。这个“记住历史”的特性,让它天然适合做非易失存储和神经形态计算的研究。

判断一个器件是不是忆阻器,最直观的证据就是V-I特性曲线。无论输入信号的幅度和频率怎么变,这条曲线都必须经过原点,并呈现一条像蝴蝶翅膀一样的窄滞回线,频率越高,滞回环越收窄,最终趋近于一条直线。这个特征也叫pinched hysteresis loop,是忆阻器区别于普通电阻、电容、电感的最重要指纹。

由于市面上几乎没有成熟商用的忆阻器芯片,研究它的人只能从两个方向入手:要么去特定科研机构要TiO2基的样品,要么自己想办法搭一个行为级模拟器。前者门槛高、周期长、测试设备还要专门定制;后者成本低、可控性强,还能顺手把运放、乘法器这类基础模拟电路练熟,性价比非常高。

1.2 模拟器能解决什么问题

忆阻模拟器的本质,是用通用模拟电路复现忆阻器的输入输出关系,而不是在物理上复刻它的内部材料机制。对我们做工程和教学的人来说,这个思路已经足够用了。你想验证一个忆阻器模型在电路中的行为,比如交叉阵列、阈值开关、突触权值更新,手里有一个“电气行为等价”的模拟器,就能把电路层面的问题研究得很清楚。

更重要的是,模拟器里的参数几乎都是可调的。积分时间常数、乘法器系数、求和权重,任何一个旋钮拧一下,忆阻的非线性程度、滞回曲线张开的幅度、记忆的时间长度都会跟着变。这种动态可调特性,对理解理想忆阻器数学方程里每个项的物理含义,帮助特别大。我在Multisim里调到满意的曲线后,再回头看论文里的公式,很多地方突然就通了。

1.3 为什么是这个组合,而不是单片机或者FPGA

要用电路实现一个带记忆的电阻,关键就是两件事:一是要对输入信号做积分,得到状态变量;二是要用状态变量去调制当前的电导值。运放最擅长做积分、求和、差分这些线性运算,而乘法器刚好负责把状态变量和输入信号乘起来,形成非线性乘积项。两者一组合,理想的磁通控制忆阻方程就变成了实实在在的电路连线。

如果用单片机或FPGA做数字方案,其实也完全可以,但需要先把模拟信号采样成数字量,再用查表或迭代算法算等效电阻,最后通过数字电位器或DAC输出。这个链路明显绕了一层,对理解忆阻器本身的电路行为帮助有限,还容易引入采样率、量化噪声和算法延迟的问题。所以,在Multisim仿真和实验室验证阶段,“运放经典电路 + 模拟乘法器”始终是我优先推荐的组合,既直观又好调。

2. 从数学方程到能仿真的电路方案

2.1 忆阻器的两种数学模型

忆阻器的建模通常分为电荷控制和磁通控制两类。电荷控制型把忆阻值写成电荷 q(t) 的函数,形式为 v(t) = M(q(t))·i(t),其中 M(q) = dφ/dq;磁通控制型则把忆导值写成磁通 φ(t) 的函数,形式为 i(t) = W(φ(t))·v(t),其中 W(φ) = dq/dφ。两种形式在数学上对偶,但在电路实现上难度差别很大。

电荷控制型需要对电流积分来获取 q(t),而电流检测本身就比测电压复杂,需要额外的采样电阻和仪表放大电路,误差源多。磁通控制型只需要对输入电压 v(t) 积分,一个标准反相积分器就能搞定,电路结构简洁很多。所以我选择磁通控制型作为DIY方案的基础,这在忆阻模拟器文献里也是最常见的做法。

2.2 把目标方程映射成电路模块

我们以最经典的线性磁通控制模型为例,设目标方程为:

i(t) = (1/Ra − β·φ(t)) · v(t)

其中 φ(t) = ∫v(t)dt。这个方程的含义很直白:等效电导不再是固定值,而是随着输入电压的历史积分线性变化。当 φ(t) 增大时,等效电导逐渐减小或增大,具体取决于 β 的符号,于是从输入端看进去,就呈现出一个“阻值会记忆”的元件。

用运放和乘法器实现这个方程,需要三个模块。第一,反相积分器把 v(t) 积成 φ(t),这里注意积分器输出自带一个负号,记的时候要小心。第二,模拟乘法器把 φ(t) 和 v(t) 相乘,输出一个与乘积成正比的电压。第三,由运放组成的求和/减法电路,把 v(t)/Ra 这一项和乘积项合并起来,形成总电流信号。三个模块级联起来,电导 G(t) = 1/Ra − βφ(t) 就自然出现了。

2.3 三种实现方案横向对比

为了说清楚为什么选择模拟运放方案,我整理了三种常见实现路径的对比,供不同需求的朋友参考。

方案核心器件优点缺点适用场景
模拟运放+乘法器TL081、AD633直观、低成本、全模拟链路、无采样延迟参数受元件精度影响,需手动校准教学、预研、电路行为验证
数字MCU/FPGASTM32、FPGA+ADC/DAC参数灵活、可跑复杂模型链路长、有延迟、需要写代码复杂忆阻模型的数值模拟
专用忆阻器件TiO2样品、Knowm芯片真实物理器件、接近实际产品难购买、成本高、测试门槛高科研与产品验证

从这个表能看出,在“理解原理、快速迭代、低成本复现”这个目标下,模拟方案优点非常突出。Multisim里还能直接把这些器件拉出来搭,跑瞬态分析、扫参数都很方便,这也是本文选择它作为实战平台的原因。

3. 核心模块设计与参数计算

3.1 积分器设计:状态变量这一路是灵魂

积分器是整个模拟器最核心的模块,因为忆阻的“记忆”就体现在这里。我用TL081搭建标准反相积分器,输入电压 v(t) 通过电阻 R2 接到反相输入端,电容 C1 跨接在输出端和反相输入端之间。输入输出关系是:

Vφ(t) = −(1/(R2·C1)) · ∫v(t)dt

这个式子里的负号是反相结构带来的。为了后面乘法器工作方便,可以在积分器之后再接一级反相缓冲器把负号消掉,也可以在乘法器输入引脚上做调整,我习惯在方程里直接带上负号。时间常数 τ = R2·C1 决定了状态变量变化的快慢,我第一版取 R2=10kΩ、C1=0.1μF,τ=1ms。这个值对应后面要观察的100Hz~500Hz激励信号,积分输出幅度适中,不会过早饱和。

这里有一个必须处理的坑:纯积分器对直流偏置极其敏感。运放的输入失调电压、偏置电流都会在电容上持续积累,导致输出在仿真开始几毫秒内就冲到电源轨。解决方法是给积分电容并联一个泄放电阻 R3,通常取1MΩ。这个电阻把积分器变成了一个截止频率极低(约1.6Hz)的低通滤波器,既不影响目标信号频段的积分行为,又能把直流漂移压住。Multisim仿真时还可以在电容属性里把初始条件设为0,效果更干净。

3.2 差分放大电路实现电流检测

要实现方程里的 i(t),需要一个与电流成正比的电压信号。最常见的做法是在输入端串联一个采样电阻 Rs=1kΩ,然后用差分放大电路检测 Rs 两端的电压。差分放大器由运放和四个等值电阻构成,增益设为10,输出 vx = 10·i(t)·Rs。

搭建差分放大时需要注意电阻匹配问题。四个电阻哪怕偏差1%,共模抑制比也会明显下降,输出电压里会混入共模分量。Multisim里电阻都是理想值,这个问题不明显,但在实际洞洞板搭电路时就要重视。另一个细节是运放增益带宽积(运放GBW)的选择。TL081的GBW约3MHz,闭环增益10倍时,理论带宽还有300kHz,对最高1kHz的激励来说绰绰有余。如果换成LM358,GBW只有1.1MHz,10倍增益下带宽吃不消,波形幅度就会在高频段衰减。

实验中发现,运放的失调电压会直接叠加在 vx 上,表现为滞回曲线上下不对称。所以调试时我先用理想运放模型验证电路结构,确认没问题后再切换成TL081,逐级检查每个节点的直流工作点。

3.3 乘法器选型:AD633还是其他方案

乘法器是这个DIY的核心非线性来源,我选AD633。这颗四象限模拟乘法器非常经典,传输函数为:

W = (X1 − X2)·(Y1 − Y2) / 10V + Z

也就是说,两个输入电压的乘积会被除以10V的内部基准电压。Multisim的Analog库里有AD633AN模型,直接就能用,供电±12V或±15V都行。要注意输出系数0.1这个常数,很多人第一次仿真时忘记考虑它,结果等效电导β偏小了10倍,曲线张力完全出不来。

AD633的X、Y输入端各有两个差分引脚。X1接积分器输出 Vφ,X2接地;Y1接原始输入电压 v(t),Y2接地。Z端通常接一个调零电位器,用于抵消输出偏移。在Multisim里不方便拧电位器时,可以直接接一个很小的直流电压源微调,仿真中观察曲线对称性来整定。

如果Multisim版本里找不到AD633,也可以用Control Functions库里的Behavioral Multiplication器件做纯数学乘法。但这种无源的理想乘法器没有输入失调、没有内部缩放系数,仿真结果会和真实器件略有差异。我的建议是:先用Behavioral Multiplication验证整体架构是否正确,再换成AD633做最终确认,这样能同时避免“电路问题”和“器件模型问题”的干扰。

3.4 电流合成与等效忆阻调整

最后一步是把 v(t)/Ra 项和乘法器的非线性项合成一个总电流。我采用反相求和电路:第一路输入接来自采样电阻的电流信号 vx,第二路输入接乘法器输出 W,两只输入电阻分别标记为 Rg 和 Rm,反馈电阻为 Rf。求和输出电压:

Vsum = −Rf·(vx/Rg + W/Rm)

这个 Vsum 与总电流成正比,把它送给示波器Y通道,X通道接 v(t),就能直接观察V-I滞回曲线。

整个电路的等效电导大概可以写成:

G(t) ≈ 1/Ra − (β·Vφ(t)) / (10·Rm)

调整 Ra、Rm 的比例,就能控制线性电导项和非线性项的权重。想要明显的滞回效果,必须让非线性项在状态变量变化范围内起到和线性项可比的作用,否则曲线就只是一根偏斜的直线。我在实际调试时,激励电压取1V到3V,频率100Hz到500Hz,时间常数1ms到10ms,曲线张力比较明显。如果需要负忆阻特性,把求和改成减法即可,只需把乘法器那一路接到求和运放的同相输入端或额外加一级反相。

4. Multisim仿真实战全流程

4.1 元件放置与电源配置

打开Multisim之后,先把仿真环境设置好。我习惯把两个直流电源 VCC 和 VEE 设为+12V和−12V,所有运放和乘法器统一使用这两路供电。原理图中建议用/双电源符号,避免每个芯片重复接电源线。元件库路径比较简单:TL081在Analog下Virtural或TIL库,AD633AN在Analog库,电阻电容在Basic库。

把元件从库中拖出来之后,按下快捷键Ctrl+R旋转方向,按空格键翻转,按照电路结构排布。我习惯以积分器为中心,左边是差分放大器,右边是乘法器和求和器,这样信号流从输入到输出是从左到右,排查问题时一眼就能看出哪个节点波形异常。连线时注意不要让导线跨过元件封装,影响预览。

4.2 信号源与关键参数设置

激励信号用函数发生器或交流电压源都可以,我习惯用Function Generator设置正弦波。参数上,频率先给200Hz,幅度给3V(峰值6V,注意如果用了函数发生器,幅度通常显示的是峰值而不是有效值),DC offset设为0。这个频率既能保证积分器输出足够幅度,又不会让滞回环收缩得太厉害。

仿真类型选择Transient Analysis瞬态分析。Start Time设为0,End Time设为0.1s,Maximum Time Step设为10μs。这里的Maximum Time Step很关键,步长太大会丢失高频细节,滞回曲线变得毛糙;步长太小仿真速度会慢得让人怀疑人生。200Hz正弦波,一个周期5ms,用10μs步长相当于一个周期500个采样点,足够平滑了。

关于Multisim仿真速度修改,很多新手容易踩坑。如果Total Time设置成10秒而步长是1μs,那计算量是千万级的,跑起来当然卡。我的做法是先跑一个周期,确认电路架构正确,再改成0.1s看稳定的滞回曲线。还可以把不需要的电压表、电流表探针全部删掉,只保留示波器两个通道,计算负担能小很多。Multisim里Interactive Simulation模式下,可以边跑边暂停,我看动态趋势时常用它。

4.3 曲线观察与结果解读

在Multisim里观察V-I曲线,最方便的是把输入电压接示波器CH1,把 Vsum 电流信号接示波器CH2,然后在示波器面板上切到X-Y模式。这时候屏幕上显示的横轴是电压,纵轴是电流,理想情况会看到一个经过原点的斜8字滞回环。

我第一次成功跑出这个曲线时,波形还带着一点毛刺。毛刺的来源主要是积分器输出在正弦波过零点附近变化率最大,乘以输入电压后产生了较大的瞬间斜率,仿真步长稍一粗糙就会表现为高频抖动。把Maximum Time Step从100μs改到10μs,毛刺立即就消失了。如果看到的是圆形或椭圆形而不是斜8字,说明积分器或乘法器的相位处理有问题,最常见的是有一路信号极性接反了,查一下积分器负号的方向。

频率对曲线形状的影响也值得强调。把频率从100Hz调到1kHz,滞回环会明显变窄;继续调到10kHz,曲线几乎就是一条直线,看起来像普通电阻。这恰好复现了忆阻器理论里“高频时记忆特性消失”的行为,说明模拟器在行为层面和理想模型是一致的。

5. Multisim仿真踩坑实录

5.1 高频自激与运放选型问题

有人问“4558增益70倍会自激吗”,这本质是运放的相位裕度问题。在忆阻模拟器里,每个运放的闭环增益通常在1到10倍之间,远没到极限,所以自激不太会发生。但如果积分器后级接的乘法器输入电容较大,或者走线太长,高频环路里可能引入额外相移,这时候在反馈电阻上并联一个几十皮法的小电容,就能压住振荡。

运放模型的选择也会影响仿真结果。LM358在低频下波形没什么问题,但GBW只有1.1MHz左右,用在积分器上时,实际积分误差在高频段会变大。TL081是JFET输入运放,输入偏置电流小,对积分器友好,GBW也有3MHz。认真做仿真验证时,优先用TL081,LM358更适合低频大信号场景。

5.2 积分器饱和与初始化问题

这个坑我踩得最深。第一版电路没有在积分电容上并联泄放电阻,仿真跑到几十毫秒时,积分器输出直接顶到−12V电源轨,后面乘法器输出全是乱的。电容初始条件默认是0,但输入信号的直流偏置哪怕只有1mV,也会在积分器里不断积累,最终饱和。

解决办法有两个:一是在C1两端并联1MΩ电阻,让直流分量被泄放掉;二是在Multisim的电容属性里把Initial Conditions设置为0。两个方法一起用最稳,仿真曲线出来就是干净过零点的斜8字,没有任何漂移。

5.3 乘法器偏移导致曲线不对称

如果V-I滞回曲线上下不对称,多半是乘法器输出有直流偏置。AD633的Z端就是用来调零的,Multisim里直接用一个小直流源接到Z端,给几毫伏到几十毫伏的补偿电压,观察曲线对称性调整。另一个隐蔽原因是乘法器的两个输入引脚之一有未被抵消的共模电压,检查X2、Y2是否都接地。

5.4 仿真不收敛与数值问题

Multisim有时会弹出“Simulation failed”或奇异矩阵错误。这通常是因为电路里有理想电压源直接并联、运放输出直接接地之类的不合理连接,也可能因为积分器和步长不匹配。排查思路很简单:先把所有理想运放换成TL081模型,再在每个运放输出端串一个100Ω的小电阻,隔离后面元件的输入电容。这一步能解决绝大多数收敛问题。最后把Maximum Time Step减小到原来的一半,数值稳定性会显著提升。

5.5 常见问题速查表

现象可能原因解决办法
积分器输出持续升高直到饱和积分电容没有泄放路径,直流偏置积累C1并联1MΩ电阻;电容初始条件设为0
滞回曲线不明显,接近直线非线性项权重太小,或激励频率过高增大乘法器输出增益,降低频率至100Hz~500Hz
曲线上下不对称或偏移乘法器Z端偏置、运放失调Z端加微调电压;检查X2、Y2接地
仿真速度极慢Total Time过长、步长太小、探针过多缩短仿真时间,增大步长,删除多余探针;分批仿真
Simulation failed 奇异矩阵器件模型不兼容或步长过大换TL081模型,运放输出串小电阻,减小步长
高频毛刺严重Maximum Time Step过大从100μs改到10μs或更小
曲线变成圆环某一级信号极性反了,相位不对检查积分器负号和乘法器输入极性

5.6 排查思路与个人经验

排查问题时,我习惯从信号流的方向逐级验证。先用电压探针看输入电压 v(t) 是否正常,再看积分器输出是不是一条标准的余弦波(正弦积分就是余弦),再看看乘法器输出是否包含一个频率加倍的成分,最后才去看示波器X-Y曲线。逐级确认的流程看起来慢,实际最省时间。任何一级波形异常都能立刻定位,不用对着一条莫名其妙的曲线瞎猜。

如果换了元件模型但波形变化很大,也别急着怀疑模型有问题,先看元件的供电是否接上、正负电源是否反了。模拟电路里大量所谓“玄学故障”,最后查出来都是电源接反、地线没共地之类的基本错误。

几个藏不住的实操细节

做到这里,电路和仿真已经能完整工作了,但还有一些细节值得单独写出来。积分器泄放电阻的选择不是越大越好,太大会失去泄放作用,太小会把积分输出“拉弯”。1MΩ到10MΩ之间,对应1kHz以上信号基本没影响,我用1MΩ很从容。

AD633的输出缩放系数0.1,既是便利也是坑。设计时把β值换算清楚,不然仿真出来的曲线总差着量级。用公式推完所有参数后,在Multisim里先跑一个单频正弦波,做一次“参数校准”,再用不同频率验证,整个流程才可靠。

放大器的输出串联小电阻、在每个运放电源引脚加0.1μF去耦电容,这些做法在仿真里看起来多余,但养成习惯后,将来把电路搬上洞洞板时会少很多麻烦。我在Multisim里给所有运放都加了电源去耦电容,仿真速度几乎没有影响,曲线稳定性却有所提升。

这套DIY忆阻模拟器做完后,我把放大倍数、积分时间常数、乘法器系数都做成了可调变量。换一组参数,曲线就从“强记忆”变成“弱记忆”,再换一组又能出现负阻特性的局部区段。这种灵活性让我对忆阻器模型的认识深了好几层,后面再看论文里的复杂模型方程,脑子里会自动浮现出对应的电路结构,理解起来顺畅多了。

如果你按这个流程搭完Multisim工程,顺利跑出了那条过原点的斜8字曲线,恭喜你,你已经把运放、乘法器、积分器这些模拟电路核心模块打通了。后续想往深了做,可以试试把这个模拟器接到一个简单交叉阵列里,看看阵列的串扰和记忆效应;也可以把乘法器换成电流传输器(OTA),做更高频率版本的模拟器。方向很多,但第一步都是从准确复现那条蝴蝶曲线开始的。祝调试顺利。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询