ARTICLE DETAIL

资讯详情

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

基于忆阻器的全功能巴甫洛夫联想记忆电路设计与仿真

基于忆阻器的全功能巴甫洛夫联想记忆电路设计与仿真 简介针对忆阻器在巴甫洛夫联想记忆电路应用中功能不完善、生物特性欠缺等问题这份docx文档系统阐述了一种全功能联想记忆电路的设计、实现与分析过程。资源面向神经形态计算、忆阻器件与电路设计领域的研究者及高年级学生完整覆盖水热合成法制备Ag/TiOx nanobelt/Ti忆阻器、器件性能测试、数学模型与SPICE电路模型构建以及包含两类学习过程和三类遗忘过程的电路设计并对比已有工作突出时序关系与抑制效应等生物真实性改进。包体为单个docx文件共1份压缩包大小2.33MB结构清晰图文结合便于按章节阅读和参考。目前已有159人学习适合作为相关课题研究、课程设计或毕设参考。 做忆阻器和神经形态电路的人几乎都会碰一次“巴甫洛夫”。我接过这个题目时导师只给了一句话做一个能自己学会、能自己忘掉、又能重新学会的电路。后来才知道这个目标用专业一点的说法就是“基于忆阻的全功能巴甫洛夫联想记忆电路”。这类电路在神经网络硬件里属于入门级但极其重要的里程碑因为它把条件反射、学习、遗忘、再学习这些生物行为真正压进了一个两端的忆阻器件里。这篇文章我把整个设计、计算和仿真过程完整记录下来适合正在做忆阻器应用、神经形态硬件或者想用电路复现认知行为模型的同学参考。先给个结论整个系统不需要复杂的FPGA推理也不需要ADC和大量数字逻辑核心就是一个忆阻器加一个运放求和电路就能把巴甫洛夫实验的“学习—联想—消退—再学习”全流程跑通。关键是搞清楚行为定义、器件选型、脉冲时序和阈值设计这四件事比堆电路重要得多。1. 巴甫洛夫实验到底在测什么电路行为定义1.1 从生理实验到电路行为巴甫洛夫经典实验里有几个角色食物是非条件刺激US天然会引起唾液分泌这种非条件反应UR铃声是条件刺激CS刚开始单独出现狗是不分泌唾液的。当铃声和食物反复配对出现之后单独给铃声狗也会分泌唾液这时候条件反应CR就建立了。如果再持续一段时间只给铃声、不给食物这个条件反应会慢慢消退。最有意思的是隔一段时间重新配对狗会学得比第一次快很多这叫快速再学习。放到电路里翻译一下非条件刺激US一个固定幅值的电压脉冲比如食物信号条件刺激CS另一个电压脉冲比如铃声信号非条件反应URUS输入后必须输出响应条件反应CR训练后CS输入能输出响应消退CS反复单独出现后不再输出响应再学习CS和US再次配对后CS恢复触发能力而且恢复速度更快。在设计电路前我建议先把这张行为表列出来后面所有参数选择都是为了满足这张表。行为阶段输入刺激系统输出忆阻器件状态初始状态CS单独无响应高阻态初始状态US单独有响应无关配对学习US CS允许响应高阻→低阻条件建立后CS单独有响应低阻态消退阶段CS反复单独响应减弱→消失低阻→高阻再学习US CS恢复响应快速回到低阻有了这张表就不会把“全功能”理解成单纯做加法。全功能的关键在于系统要具备可逆的突触权重变化并能把这种变化映射到输出响应上。1.2 为什么选忆阻器不选传统CMOS方案如果用传统数字方案做巴甫洛夫实验也可以做本质就是一个有限状态机加若干寄存器用一个标志位表示“有没有学会”CS来的时候就查标志位决定输出。但这样做没有物理层面的学习过程更谈不上突触可塑性。忆阻器的核心优势在于电导可连续调节且非易失。它的电阻状态正好对应突触权重电导增加就是突触增强电导降低就是突触抑制。而且忆阻器是两端器件可以直接放进信号通路里参与模拟运算不需要单独的存储单元和运算单元这在面积和功耗上都比CMOS方案有优势。我做这个项目时主要考虑的是器件的模拟特性、写入阈值、动态范围和循环耐久性模型基于VTEAM电压阈值模型已经很成熟。2. 从信号流到状态机总体架构设计2.1 顶层模块划分整个电路我分成五个模块输入脉冲产生器、忆阻突触权重网络、固定非条件刺激通路、求和放大与阈值比较器、数字控制状态机。输入脉冲产生器负责把外部的学习指令变成标准脉冲。每个刺激都用一组参数定义脉冲幅值、脉宽、极性、间隔时间。这里有个容易忽略的点同一个CS信号在测试阶段和训练阶段的幅值是不一样的。测试时只用0.5V读取电压低于器件写入阈值不会改变忆阻状态训练时用1.5V写入电压高于阈值才会修改权重。如果只有一个电压源通吃就会“一测就写、一写就乱”这是新手最容易犯的错。忆阻突触权重网络是核心。我用一个忆阻器M_CS串联一个1kΩ保护电阻放在CS信号和运放求和节点之间。保护电阻Rlim的作用是限流防止写入瞬间电流过大烧毁器件这是从第一次实测烧坏三颗样品之后学到的教训。US通路不需要忆阻器直接用一个固定电阻R_US接入求和节点因为食物信号必须天生就能触发响应不需要学习。2.2 状态机设计控制状态机我用Verilog写了一个简单的五状态机逻辑不复杂IDLE上电复位给忆阻器一个完整的擦除脉冲确保回到高阻态TEST分别发送CS读取脉冲和US读取脉冲记录比较器输出TRAIN同时发送CS写入脉冲1.5V和US读取脉冲重复N次CHECK再次只发CS读取脉冲检查是否已经建立条件响应EXTINCTION只发CS读取脉冲并在每个读取脉冲后加一个弱擦除脉冲模拟反复单独出现CS导致的消退RETRAIN回到TRAIN阶段重新配对学习。实际工作顺序是IDLE→TEST→TRAIN→CHECK→EXTINCTION→CHECK→RETRAIN→CHECK。每次CHECK后如果满足结束条件系统就停在当前状态方便观察波形。这里有一个生理逻辑要对齐消退阶段不能靠“加一个强复位直接把器件打回高阻”那样只是做一个RESET操作不是消退。消退应该是弱化——每个CS脉冲让忆阻器的电导退一点重复多次才完全消失。所以我用的是弱擦除脉冲幅值刚过复位阈值脉宽很短让阻值逐次回升。这个细节决定了系统是“全功能心理模型”还是“简单存储电路”。3. 核心电路落地参数计算与脉冲时序设计3.1 求和放大与阈值比较一个运放解决信号的求和不能靠简单并联电阻拉节点电压因为输入源阻抗和输出负载都会影响判断。我采用的是反相求和放大器结构把所有刺激通路接到运放反相输入端反馈电阻Rf决定增益。输出电压公式Vout -Rf × ( V_CS / R_CS_total V_US / R_US )其中R_CS_total Rlim M_CS即限流电阻加忆阻当前阻值。运放反相输入端是虚拟地所以每个输入支路互不干扰这是这个结构最大的好处。比较器采用迟滞比较器结构输出响应阈值设为0.8V回差下限0.3V。也就是说当|Vout|超过0.8V时判定为有响应当|Vout|回落到0.3V以下时判定为无响应。迟滞可以避免输出在阈值附近来回抖动。我用的是±3.3V供电的轨到轨运放型号选的是工业常用的低偏置电流运放具体型号不做硬性要求但必须注意不要选增益带宽太低的否则200ns的窄脉冲会被放大成圆头波形比较器判断会延迟。3.2 关键参数计算器件模型我用的是电压阈值忆阻器关键参数如下参数数值设计说明写入阈值 Vset0.9V超过后电导增加擦除阈值 Vreset-0.8V低于后电导降低初始高阻 Roff1MΩ未学习状态学习后低阻 Ron10kΩ完全学习状态测试读取电压 V_read0.5V低于双方向阈值训练写入电压 V_write1.5V高于Vset单独消退电压 V_reset_pulse-0.9V弱擦除逐次退化限流电阻 Rlim1kΩ防止写电流过大反馈电阻 Rf20kΩ设定增益基准非条件通路电阻 R_US10kΩ保证US刺激足以触发响应计算一下各个状态下的输出就能确认设计是否成立。学习前M_CS 1MΩCS读取0.5VVout_CS -20k × 0.5V / (1k 1000k) ≈ -10mV远小于0.8V不会触发响应。US读取0.5VVout_US -20k × 0.5V / 10k -1.0V绝对值大于0.8V稳定触发响应。也就是说非条件反射天生存在条件反射尚未建立。学习后M_CS 10kΩCS读取0.5VVout_CS -20k × 0.5V / (1k 10k) ≈ -0.91V超过0.8V阈值条件响应成功建立。注意如果没有Rlim输出刚好是-1.0V加了1kΩ保护电阻后输出降到-0.91V但仍在阈值之上所以这个保护电阻并不会破坏逻辑。这里还引出一个关于中间态的理解如果训练只进行了一半M_CS停在100kΩ那么CS读取输出只有约-0.1V不触发响应。这说明“学会”不是一个连续渐变的过程而是有一个输出阈值在起决定性作用。你可以通过控制忆阻器的电导态做多级学习但系统对外表现依然是离散的。3.3 脉冲时序和写电压的防误写设计写入和读取要严格区分。我在每个阶段都定义了脉冲序列以训练阶段为例第1~2μsCS写入脉冲幅值1.5V脉宽1μs第3~4μsUS读取脉冲幅值0.5V脉宽1μs两个脉冲有1μs间隔避免在求和节点上叠加出不希望出现的中间电平。为什么CS写入和US读取之间要有间隔因为训练阶段我们希望“配对出现”但不需要它们在模拟域叠加出一个2V的电压。如果CS 1.5V和US 0.5V同时在求和节点上出现运放会进入深度饱和恢复时间会影响下一个脉冲并且虚地电位也会不稳。加一个间隔之后两个信号在时间上“配对”但在电路层面分时处理效果更好。测试阶段只发一个0.5V的CS读取脉冲脉宽我压到200ns。短脉宽有两个意义一是减少热量积累降低阻变器件发生不希望的状态切换概率二是更接近生物脉冲的工作方式为后续扩展到脉冲时序依赖可塑性做准备。3.4 多通道扩展与交叉阵列单通道验证通过后自然就想到扩展成多路。只需要把多个CS支路一起接入求和节点每个CS支路都有自己的忆阻器和限流电阻US通路可以共享。扩展时最需要注意的是交叉阵列漏电流问题。想象一个4×4的忆阻交叉阵列选通某个器件做训练时其他未选中的器件会形成寄生路径把写入电压分走造成误写。此时必须给每个忆阻器串联一个选通晶体管也就是1T1R结构。在实际测试中2×2的小阵列不加晶体管问题不大但超过4×4之后漏电流就会严重影响状态精度。4. 仿真验证与常见问题排查实录4.1 仿真环境与结果我用的是Cadence Virtuoso Verilog-A忆阻器模型对比过LTSpice做行为验证两个工具都可行。Verilog-A模型里最核心的就是状态变量更新方程我简化为if V Vset: x 增加阻值下降if V Vreset: x 减小阻值上升else: x 保持不变I V × conductance(x)仿真跑完一个完整流程波形上看到的行为是IDLE阶段US脉冲触发输出高电平CS脉冲输出低电平TRAIN阶段重复5次后CHECK里CS脉冲开始触发输出高电平EXTINCTION阶段第一个CS脉冲仍然触发第二个开始逐渐变弱到第七个左右输出消失RETRAIN阶段只配对2次CS就重新恢复触发验证了快速再学习。这组波形就是整个设计的验收标准。如果做版图实现这一套核心结构面积非常小不算I/O和测试焊盘核心电路不到0.02mm²静态功耗主要来自阈值比较器。4.2 常见问题与排查方法我实际踩过的坑不少整理成表现象根因处理方法CS读取脉冲自身导致阻值变化读取电压高于器件写入阈值把读取电压压到0.3~0.5V脉宽压到200ns训练后CS仍然不触发写入脉冲宽度不够或限流电阻过大检查M_CS是否真的进入低阻必要时增加训练脉冲个数消退时触发电压跳变不稳定弱擦除脉冲太强一次就RESET回高阻降低复位电压或缩短脉宽输出响应判断闪烁抖动比较器没有迟滞增加迟滞区间或改用窗口比较器运放输出饱和后恢复慢CS与US脉冲在时间上重叠让两个脉冲错开1μs间隔扩展阵列后状态串扰未选通路形成漏电流路径改用1T1R结构每个忆阻器加选通管最值得说的是训练脉冲数量。最开始我用固定1.5V、1μs的训练脉冲打算写一次就从高阻到低阻。但实际器件有逐步响应特性一次写入往往只让器件降低一到两个数量级无法保证从1MΩ直接到10kΩ。后来我改成可配置的脉冲计数TRAIN阶段重复5次RETRAIN阶段重复2次。这样既提高了鲁棒性也真实模拟了“多次训练强化记忆”的生物学含义。再提醒一点关于保护电阻的取舍Rlim加得越大器件越安全但低阻态时的输出电压会被拉低可能掉到阈值以下。我实验后最终选1kΩ这串进去会让低阻态时增益损失约9%高阻态时损失约0.1%在阈值逻辑上完全可接受。如果你用Ron更低的器件比如1kΩ那Rlim也必须相应减小否则就白白浪费了忆阻器的动态范围。最后分享一个我做这类电路的经验控制状态机和模拟电路要分开调试。先用理想电阻代替忆阻器手动切换阻值验证运算放大器和阈值比较器的逻辑正常然后再换上真实忆阻模型最后再接入状态机做自动化跑测。不要一上来就全系统联合仿真否则波形一乱你根本分不清是状态机问题还是模拟通路问题。这类电路看起来小实际上里面既有器件物理、又有模拟设计、还有数字逻辑分模块排查是最快的路径。本文还有配套的精品资源点击获取
返回列表