ARTICLE DETAIL

资讯详情

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

Multisim数据选择器级联实战:74LS151升级32选1

Multisim数据选择器级联实战:74LS151升级32选1 用Multisim把8选1数据选择器升级成32选1这件事在数字电路课程设计里几乎属于必练项目很多初学Multisim的人也都是从这类数据选择器电路开始上手的。网上能搜到的教程不少但大多数是直接甩一张仿真图让你照着抄很少把“为什么要这么接”讲清楚。这篇我从头到尾走一遍先从74LS151的引脚行为出发用两片拼一个16选1热热身再用四片搭出完整的32选1最后把Multisim里常踩的数据库无法访问、仿真报错、元件找不到这些坑一并解决。想真正理解数据选择器级联逻辑而不是只会复制电路图的人这篇应该能帮你省不少时间。1. 设计思路从8选1到32选1到底改了什么1.1 数据选择器在电路里到底扮演什么角色数据选择器也叫多路选择器英文缩写MUX核心功能一句话就能说清根据地址码从多路输入数据中选出一路送到输出。你可以把它想成车站的检票口——多条通道对应多路数据广播通知打开哪个检票口对应地址码选中哪一路数据。8选1就是8个数据输入通道用3根地址线控制32选1则是32个输入通道需要5根地址线。这多出来的2根地址线就是整个级联设计的核心。很多教材把数据选择器归类为“组合逻辑电路中的中规模器件”听起来很严肃实际用起来却很直白。它的输入输出关系完全由真值表决定不涉及触发器、时钟、状态记忆这些概念所以仿真和实物搭建的难度都在连线而不是逻辑理解。对于准备课程设计的学生来说用Multisim把数据选择器从8选1扩展到32选1本质上是在练一种“分层思考”的能力怎么用小模块拼大系统怎么让每个模块各司其职又怎么把多个输出正确合并成一个。1.2 为什么不用一片现成的32选1芯片很多人第一反应是有没有32选1的单芯片可以直接用答案是不太现实。目前市面上常见的通用数据选择器中8选1的74LS151、双4选1的74LS153、16选1的74LS150比较常见再往上做属于专用芯片或者可编程逻辑器件的领域数字电路实验里基本见不到32选1的通用成品。所以用多片8选1拼出32选1既是被迫的选择也是更通用的工程方案。那能不能用一堆逻辑门直接搭理论上是能的——把32路输入对应的“地址与逻辑”全部展开再用一个大的或门合并但这需要大量门电路布线混乱、排错困难完全不值得。相比之下级联数据选择器的方式非常规整每一种规模的扩展都遵循同样的套路——新增的地址位负责决定“选哪一片”原有的地址位仍然负责在片内“选哪一路”。这种可扩展的结构才是数据选择器真正的设计美感所在。1.3 抓住核心地址增量加片选使能从8选1到32选1地址码从3位增加到5位新增的2位地址负责“选片”原来的3位地址负责“片内选择”。怎么让某一片在需要的时候工作、不需要的时候彻底关闭这就要用到74LS151的使能端。74LS151的使能端是低电平有效当使能端接高电平时芯片被禁止输出被强制拉低。这个特性让多片芯片的输出可以安全地合并到一路没被选中的芯片输出恒为0不会干扰被选中芯片的工作。所以级联的基本策略可以概括成一句话用新增的高位地址经过译码器生成多个片选信号分别控制各片151的使能端。哪个片区被选中哪一片就正常输出没被选中的片区输出锁在0。最后再把这些输出用一个选择级合并就成了更大的选择器。后面的操作步骤全是围绕这个思路展开的把这个逻辑想透了搭起来就不会乱。2. 核心元件与Multisim环境准备2.1 74LS151引脚与行为速查动手之前第一步是吃透74LS151这个主角。它是16脚DIP封装8路数据输入D0到D73根地址输入A0、A1、A2一个低电平有效的使能端E非原码输出Y和反码输出W。具体引脚分布如下表所示搭电路时对照着看最方便。引脚号名称功能1D3数据输入32D2数据输入23D1数据输入14D0数据输入05W反相输出6Y原码输出7E非使能端低有效8GND地9D4数据输入410D5数据输入511D6数据输入612D7数据输入713A0地址输入014A1地址输入115A2地址输入216VCC电源正极行为描述也很直接当E非为高电平时芯片被禁止Y输出低电平、W输出高电平当E非为低电平时芯片正常工作Y等于对应地址选中的那一路数据W则等于它的反相。这个“禁止时输出恒为0”的特性是后面多片输出合并的理论基础。你可能会想W端有什么用在某些合并方案里利用W端的神逻辑可以少用门电路但为了思路清晰本文的主方案统一用Y端加后续选择级处理。2.2 在Multisim里把151找出来Multisim中放置元件的操作不复杂但新手常在这里卡住。打开原理图编辑界面后按快捷键CtrlW或者点击Place Component按钮会弹出元件选择窗口。在搜索框输入74LS151Group选择TTLFamily选择74LS系列一般就能找到74LS151N之类的型号。如果搜索不到大概率是数据库有问题这个留在第5章专门解决。找到元件后还有一个容易忽略的设置74LS151这样的数字芯片在Multisim原理图中默认不显示VCC和GND引脚仿真时会自动连接。如果你想在图中明确看到电源和地可以双击元件打开属性在“小程序”或“模板”设置里勾选显示电源引脚。我个人的建议是刚开始练习时让Multisim隐藏电源图面会清爽很多等后期画实物电路图时再显示也不迟。另外把网格对齐打开连线会规整很多后续改线也省事。2.3 仿真前的几条环境设置建议仿真之前建议先把几个常用设置调好避免中途反复折腾。第一个是颜色和显示在Options菜单的Sheet Properties里可以把背景设成白色、连线设成纯色这样截图或录屏做报告时更清楚。第二个是仿真模式数字电路仿真选择Digital模式即可Multisim会按数字逻辑快速计算不会像模拟仿真那样做大量收敛迭代。第三个是交互组件的大小从右侧工具栏拖出逻辑开关、指示灯时默认可能偏小按住Ctrl滚动鼠标滚轮可以缩放方便观察。这里特别提醒一点Multisim的元件库搜索框支持通配符。比如你只记得型号末尾可以直接输入151系统会列出所有名称里带151的元件这个方法在记不全型号时非常有用。环境设置搞定了接下来就可以正式搭电路。3. 完整搭建过程从两片16选1到四片32选13.1 热身两片151搭16选1先别急着直接上32选1先用两片74LS151搭一个16选1把“片选加合并”的套路走一遍。16选1需要4位地址A3、A2、A1、A0其中低3位A2、A1、A0同时接到两片151的地址端A3作为高位负责选片。数据方面第0到第7路数据I0到I7接第一片U1的D0到D7第8到第15路数据I8到I15接第二片U2的D0到D7。选片逻辑怎么做A3为0时U1工作A3为1时U2工作。因为E非是低有效所以把A3直接接到U2的E非再把A3经过一个反相器接到U1的E非。这样A30时U1的E非为0被选中U2的E非为1被禁止A31时反过来。输出合并需要两个Y端接到同一个输出节点但74LS151的输出是推挽输出两个Y不能直接连在一起否则一个输出高一个输出低会形成冲突。正确做法是把U1的Y和U2的Y接进一个2输入或门或门的输出就是最终16选1的输出。为什么可以用或门关键就是前面提到的“禁止时Y恒为0”。同一时刻只有一片151被选中被选中的那片根据地址正常输出数据另一片被禁止Y保持低电平。低电平与任何信号相或都不影响结果所以或门能正确合并。如果你此时想的是“为什么不用线与”说明你清楚两个推挽输出直接并联是会打架的这个意识在数字电路里很重要。3.2 正式开工四片151搭32选1的总体结构理解了16选132选1就是在同样的框架上加规模。32选1需要5位地址A4、A3、A2、A1、A0其中低3位A2、A1、A0并行连接到四片151的地址端高2位A4、A3用于片选。四片151分别记为U1、U2、U3、U4各自负责8路数据U1负责I0到I7U2负责I8到I15U3负责I16到I23U4负责I24到I31。片选信号由A4和A3经过一个2-4译码器产生这里选用74LS139它是双2-4译码器输出低电平有效刚好匹配151的低有效使能端。74LS139的G非接地以保证译码器始终工作A4和A3作为译码输入四个输出分别接到U1到U4的E非。当A4A3为00时译码器选中Y0输出低电平U1被使能A4A3为01时Y1输出低U2被使能以此类推。最后的输出合并也采用二级选择方案四片151的Y端不直接接或门而是分别接到第五片151记为U5的D0、D1、D2、D3U5作为输出选择级。之所以用一片151而不是三个或门是因为四路信号合并本身就是“4选1”的选择问题正好是151的拿手好戏。这样整张电路图的模块化程度很高后续想扩展成64选1时只需再多加一级选择而已。3.3 地址映射与引脚级接线清单到了具体接线阶段最怕的就是地址和数据对应关系搞错。先把32路数据的分配整理成表照这个表接出错的概率会小很多。数据区间数据位接至芯片芯片数据引脚I0-I7D0-D7U1D0到D7I8-I15D0-D7U2D0到D7I16-I23D0-D7U3D0到D7I24-I31D0-D7U4D0到D7地址线的接法比较讲究。低3位A2、A1、A0接到U1到U4的A2、A1、A0注意顺序不能反A2是最高位。高2位A4、A3接入74LS139的B、A输入具体端口名可能随Multisim库里的符号略有不同但逻辑是2-4译码译码输出Y0、Y1、Y2、Y3分别接U1、U2、U3、U4的E非。最后看U5的地址输入U5的D0、D1、D2、D3分别接U1.Y、U2.Y、U3.Y、U4.YU5的A0接A3、A1接A4E非接地。这样A4A3为00时U1工作U5的地址也是00正好选择D0也就是U1的输出A4A3为01时U2工作U5地址为01选择D1对应U2的输出逻辑完美对上。这种“低地址并行、高地址译码选片、输出再进一级选择”的结构是数据选择器级联的标准范式。接线时建议按颜色区分总线地址线用蓝色数据线用黑色输出线用红色这样后期排查时一目了然。Multisim里可以通过右键线束选择Wire Color快速改色真遇到故障时能省不少时间。3.4 仿真验证步骤与预期结果电路搭完必须验证不能直接交差。先把输入信号准备好地址部分用5个逻辑开关分别模拟A4到A0数据部分用逻辑开关或VCC/GND产生固定高低电平比如为I0到I31按二进制规律交替接高低电平这样能一眼看出输出是否正确。把最终输出接一个指示灯Probe或LED开始逐地址验证。按地址从00000到11111顺序切换对应的输出应该依次等于I0到I31的数据。每切一个地址就记一次结果建议做一张验证表。比如让所有偶数索引的输入I0、I2、I4……接高电平奇数索引的输入接低电平那么当A4A3A2A1A0为00000时指示灯亮00001时灭00010时亮依次类推。如果某个地址对应的输出不符合预期优先检查该地址对应的那一片151的数据输入是否接反以及译码器输出和E非的对应关系是否错位。从原理到接线再到验证整套流程走下来数据选择器级联的“套路”基本就掌握了。如果仿真结果不对不要着急改线先用探针检查各级关键节点先看译码器的输出是否按地址变化再看对应芯片的E非是否为低最后看U5的输入。逐级定位一般很快就能把问题揪出来。4. 调试、扩展与Multisim仿真技巧4.1 静态验证时最容易被忽略的三个点第一个坑是悬空输入。Multisim里逻辑电路的空脚不会自动接地或接VCC尤其是TTL芯片悬空输入在仿真中可能被识别成不确定逻辑导致输出闪烁或错误。所有不用的数据输入如果不需要可以接地但最好是给每个输入都明确接上高低电平不要留空的输入引脚。第二个坑是隐藏电源。虽然Multisim默认把VCC和GND隐藏但不代表它们不存在。如果仿真时提示元器件供电异常或者某些输出电平明显不对很可能是隐藏电源没有被正确识别。这时候双击芯片在属性里把电源引脚设为可见然后检查VCC端是否有5V、GND端是否接地。第三个坑是地址线顺序。A0、A1、A2、A3、A4分别对应二进制位的最低到最高位很多人喜欢按原理图上的视觉顺序从左到右接线结果把高低位搞反。验证时如果发现输出规律整体错位比如地址00001选中了I2而不是I1基本可以断定是地址位序接反了。4.2 用计数器加逻辑分析仪做动态扫描静态验证虽然直观但32个地址一个一个切换确实累。想让Multisim自动扫描全部地址办法很简单把5位地址输入接到一个计数器芯片的输出再让计数器循环计数。推荐用74LS161四位二进制计数器两片级联成5位时钟端接一个数字时钟源频率设成1Hz或10Hz循环输出00000到11111。输出端接Multisim的逻辑分析仪Logic Analyzer就能看到完整的波形时序地址递增时输出Y应该忠实地按照输入数据规律变化。逻辑分析仪的时钟设置很关键将Clock来源设置为内部或外部频率设为时钟源的4倍以上否则容易采样丢点。看波形时重点观察输出的跳变时刻是否和地址变化对齐如果输出相对地址有延迟那是正常的逻辑门传播延迟不用紧张。动态扫描的价值不只是省事它还能暴露出静态验证发现不了的问题比如某些输入被意外短路、某一片使能端没有按预期打开。波形上一旦出现不规则的毛刺或重复段基本能直接定位到对应的那一片151。这样的调试方式在后续做更复杂的交通灯控制器、数据分配器等项目时同样适用。4.3 从32选1再往上64选1的递归结构掌握了32选1扩展到64选1就只是重复同一套逻辑。64选1需要6位地址低3位仍然是片内选择高3位经过3-8译码器比如74LS138产生8个片选信号控制8片151。输出合并可以继续用一片151做成第二级选择选择它的地址就是高3位如果第二级151只有8路输入刚好D0到D7接8片151的Y端完美匹配。如果规模再大比如128选1、256选1可以选择“多级树形结构”每8个输出合成一个中间节点再做多级选择。这种结构的每一级都在做同样的“译码加选择”非常规整也适合写程序生成电路或后续在FPGA里实现。理解数据选择器级联的递归性是这门课最有价值的收获之一因为这正是“分层设计”思想在组合逻辑中的具体体现。需要注意的是级数越多信号经过的选择级越多传播延迟越大。在Multisim里仿真是按理想逻辑走的延迟几乎看不出来但做实物时就要考虑速度上限。级联到一定深度时如果工作频率较高可以考虑用触发器打拍同步或者换用可编程逻辑器件来实现这就是后话了。5. Multisim高频问题排查实录5.1 “Multisim访问数据库发生错误”怎么解决数据选择器电路本身不复杂很多人却是被Multisim软件问题卡住的。最常见的提示是打开元件库时弹出数据库访问错误或者搜索元件时报“Unable to access database”。根据我几次踩坑的经验按下面的顺序排查基本能解决大部分情况。第一把Multisim以管理员身份运行。右键图标选择“以管理员身份运行”很多权限类数据库问题就消失了。第二检查安装路径是否包含中文。Multisim对中文路径的支持不算好路径里带“用户”、“新文件夹”这类字眼时数据库文件定位可能出错。第三关闭杀毒软件先试一次。数据库文件被隔离是常见原因尤其是一些安全软件会把db文件误判为可疑文件。第四重置用户数据库。来到C盘用户目录下AppData对应的Multisim文件夹找到user.dbd文件把它改名或删除Multisim下次启动会自动重建。如果在Tools菜单的Database里打开Database Manager能直接查看当前数据库的路径和状态这里也可以手动重新指定数据库位置。最后的手段是修复安装在控制面板里找到Multisim右键选择“修复”会自动恢复被破坏的数据库文件。这些方法我都实测过不用一上来就卸载重装那样太折腾。5.2 主数据库无法访问时最直接的恢复姿势“主数据库无法访问”通常比用户数据库问题严重一些因为主数据库属于安装目录下的只读库普通用户没有写权限坏掉后不能直接在软件里修。先检查主数据库文件是否存在默认位置一般在安装目录的database文件夹下文件名类似MasterDB.db。如果这个文件还在但大小为0KB基本就是坏了可以用同版本电脑上的对应文件覆盖或者执行修复安装恢复。如果文件根本找不到大概率是安装时被杀毒软件拦掉了。把Multisim整个安装目录加入杀毒软件白名单然后重新修复安装一般能找回。还有一个变态但有效的方法把安装目录下的database整个文件夹拷出来备份以后出问题直接覆盖回去立竿见影。我自己的习惯是装好Multisim后立刻把database文件夹压缩保存后面省了很多麻烦。5.3 仿真卡顿、速度太慢改哪里数据选择器是纯数字逻辑电路按理说仿真速度应该很快。如果你发现仿真迟钝得像蜗牛十有八九是仿真设置或元件模型选择出了问题。打开Simulate菜单下的Mixed-Mode Simulation Settings可以调整SPICE仿真参数将相对误差容限适当放宽或者把最大步长调大都能明显提速。另一个容易被忽视的原因是误用了模拟模型。Multisim元件库里有些芯片同时提供“数字模型”和“真实SPICE模型”如果选到了带模拟特性的模型仿真器会去计算内部晶体管级的细节速度自然慢。用74LS151时确认选择的是Digital或Ideal模型不要在“真实模型”上硬等。另外示波器这类仪器的刷新频率也影响交互流畅度不需要看波形时可以直接关闭仪器视图。5.4 其它让新手抓狂的小问题搜索不到74LS151按我前面的方法用通配符搜索还是找不到就重启用数据库修复。仿真时提示“Simulation failed”最常见的原因是数字电源和地没有正确连接或者信号回路断开检查每个芯片的VCC和GND。汉化的问题我一般不建议装第三方汉化包Multisim英文界面里的参数描述更准确中文翻译版本良莠不齐容易出现元件属性看不懂反而改错的情况。至于示波器占空比显示不准多半是时基没有设置好把Time Base的秒/格调小波形展开后占空比读数就准了。这些软件层面的问题实际花掉的时间往往比搭电路本身还多。把它们记下来下次遇到就不用再百度一遍了。最后再分享一个我自己的小习惯Multisim里线路多的时候尽量给关键信号线命名比如A0、A1、WE、OUT而不是任由软件自动编号。有了名字之后无论是查找节点、加探针还是后期改图效率都会高出一大截。数据选择器的级联实验虽然基础但这里面涉及的译码选片、输出合并、逐级调试的思路放到后续更复杂的数字系统设计里依然是最核心的底层能力。
返回列表