十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

74HC系列门电路实验:从真值表到组合逻辑设计

74HC系列门电路实验:从真值表到组合逻辑设计 简介这是一份面向广东工业大学数字逻辑与EDA设计课程的组合逻辑电路实验报告适合正在修读该课程或需要系统梳理组合逻辑电路知识的学生参考。报告内容覆盖基本门电路功能验证、组合逻辑电路设计、常用中规模集成电路应用等核心环节既包含实验目的、仪器器件清单也给出了完整的结果表格与连线图便于对照复盘。资源仅1个docx文档压缩包约21.16MB文件结构简洁、内容集中。目前已有946人学习下载。具体来看报告详细记录了74HC00、74HC02、74HC04、74HC08、74HC32、74HC86等基本门电路的真值表验证并完成了举重比赛裁判表决电路、交通灯故障检测电路的设计与实现同时针对74HC148编码器、74HC138译码器、74HC153数据选择器、74HC85数值比较器、74HC283全加器以及74HC4511数码显示译码器逐一进行了功能测试和连线说明。对于希望掌握组合逻辑电路实验方法、理解芯片逻辑功能并提升EDA设计实践能力的同学这份报告具有较好的参考价值。1. 一盏LED把六种门电路一次测明白第一次做这个实验的人十有八九会卡在同一处把74HC00的输入A、B分别接到逻辑开关上输出Y接LED拨动开关发现灯的亮灭和课本上的与非门真值表“对不上”。原因往往不是芯片坏了而是实验箱上的开关悬空时引脚电平不确定或者LED接法把逻辑状态反了。这个实验报告拆开看其实就是三件事把74HC00、74HC02、74HC04、74HC08、74HC32、74HC86这六片基本门的真值表验证清楚再拿其中几片拼出裁判表决和交通灯故障检测两个组合逻辑电路最后过一遍74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511这批中规模器件的引脚级操作。每一步都有固定的测试套路套路对了数据表几十分钟就能填完。2. 从74HC00到74HC86六种基本门的真值表与电流参数实测2.1 为什么选74HC系列而不是74LS或CD4000实验箱上给的器件是74HC系列这个选型有实际意义。74HC是高速CMOS逻辑工作电压范围是2V到6V在5V供电下输出高电平典型值是4.9V输出低电平约0.1V输入高电平阈值约3.5V输入低电平阈值约1.5V。对比74LS的TTL电平74HC的输入阻抗更高扇出能力更大而且静态功耗几乎可以忽略。实验箱上用逻辑笔或万用表测电压时只要测到超过3.5V就算逻辑1低于1.5V就算逻辑0这个判断标准要记牢否则LED亮度不够时会误判状态。74HC00、74HC02、74HC08、74HC32、74HC86都是14脚封装内含四个相同的二输入门74HC04是14脚封装内含六个反相器。引脚排布规律很强7脚接地14脚接VCC每个门有独立的输入端和输出端。连接实验箱时VCC和GND必须接对否则芯片温热甚至烧毁。2.2 实验箱连线步骤与LED状态判读接线顺序是固定的按照“先电源、再输入、后输出”来做不容易出错将74HC00插入实验箱IC座注意缺口方向一致。VCC接5VGND接地。将芯片第1脚和第2脚分别接到两位逻辑电平开关。第3脚Y接LED指示灯或逻辑笔。依次拨动开关组合00、01、10、11记录LED亮灭和逻辑状态。这里的关键点在于“亮”对应逻辑1还是逻辑0。大多数实验箱的LED指示灯是输出高电平点亮即输出1时LED亮。如果发现结果和真值表完全相反检查LED是否接在反相端。用万用表直接测输出引脚电压更可靠5V输出为逻辑10V为逻辑0。六种门的逻辑功能如下表芯片门类型逻辑表达式真值表特征74HC00四2输入与非门Y (A·B)只有AB1时输出074HC02四2输入或非门Y (AB)只有AB0时输出174HC04六反相器Y A输出与输入相反74HC08四2输入与门Y A·B只有AB1时输出174HC32四2输入或门Y AB只有AB0时输出074HC86四2输入异或门Y A⊕B输入相异时输出12.3 用脚本生成真值表核对实测数据手工测完六片芯片后可以用一段简单的Python脚本生成标准真值表和实验报告里的表1到表6逐行比对gates { 74HC00 (NAND): lambda a, b: not (a and b), 74HC02 (NOR): lambda a, b: not (a or b), 74HC04 (NOT): lambda a: not a, 74HC08 (AND): lambda a, b: a and b, 74HC32 (OR): lambda a, b: a or b, 74HC86 (XOR): lambda a, b: a ^ b, } for name, fn in gates.items(): print(f--- {name} ---) for i in range(2): for j in range(2): if name 74HC04 (NOT): y int(fn(i)) print(fA{i} - Y{y}) else: y int(fn(i, j)) print(fA{i} B{j} - Y{y})运行这段脚本输出的是标准真值表数值。实测数据和脚本输出一致说明连线正确。常见的错误是74HC00和74HC08的引脚看反——两个芯片引脚完全一样只有功能不同插错芯片后真值表会变成“AB1时输出1”看起来像与门实际上是非门输出经过两次反相后的结果。2.4 一个实验箱上容易被忽略的细节74HC00一片里面有四个独立的与非门实验只测了其中一个门。这块芯片上其余门的输入端如果悬空CMOS输入脚的电平会漂移导致芯片内部电流异常增加。稳妥的做法是把不用的输入端统一接到VCC或GND。这也是为什么实验报告里每次只放一个连接图但实际实验箱上跳线却比图上多好几根的原因。以后做任何CMOS芯片实验悬空输入都是第一号坑。3. 从真值表到逻辑函数裁判表决与交通灯故障检测的化简路径3.1 举重裁判表决电路少数服从多数的逻辑实现举重比赛有三个裁判每个裁判亮成功或失败最终结果按少数服从多数确定。变量定义A、B、C分别表示裁判1、裁判2、裁判3的判决1表示成功0表示失败Y表示最终判决结果1表示成功。列出真值表后可以看出Y1的行有四个ABC011、101、110、111。用卡诺图化简得到一个最简与或式Y AB BC AC这个表达式的物理含义很直白只要任意两个裁判同时判成功最终结果就是成功。实验报告里的方案一就是用74HC08取三个两两与项再用74HC32把三个与项合成一个或门。用Verilog描述这个电路数据流建模一句话就够module referee( input wire A, B, C, output wire Y ); assign Y (A B) | (B C) | (A C); endmodule这段代码里A、B、C是三个裁判输入Y是表决结果。仿真时把八个输入组合全部跑一遍对比Y的值是否和真值表一致比在实验箱上拨开关快得多。实验报告里没有这一步但实际做EDA设计时这是标准流程。3.2 交通灯故障检测全灭和多亮都要报警交通灯有三盏灯红灯R、黄灯Y、绿灯G。正常工作时只能有一盏灯亮其余两盏熄灭。故障状态有两种全灭和三盏中有两盏或以上同时亮。观察实验报告表9Z1对应的输入组合是000、011、101、110、111即全灭或至少两灯亮的情况。用卡诺图化简四个1方格和一个孤立格合并后得到Z ABC AB AC BC这个函数里ABC检测全灭AB、AC、BC检测任意两灯同时亮。如果想让实现成本更低可以用德摩根定律把与或式转换成与非-与非形式Z ((ABC) · (AB) · (AC) · (BC))用74HC00一片就能完成全部逻辑因为与非门是通用门任何逻辑函数都可以只用与非门实现。实验时把三路输入接到逻辑开关输出Z接LED拨动组合验证即可。3.3 两种设计的对比与EDA仿真裁判表决电路用与门和或门实现交通灯电路用与非门实现这是两种典型的设计思路。前者直观适合教学演示后者实用因为实际电路中与非门的 delay 和成本通常更优。用EDA工具Quartus或嘉立创EDA做原理图输入时直接拖放器件并连线然后跑功能仿真timescale 1ns / 1ps module tb_referee; reg A, B, C; wire Y; referee uut(.A(A), .B(B), .C(C), .Y(Y)); initial begin for (int i 0; i 8; i) begin {A, B, C} i; #10; $display(A%b B%b C%b Y%b, A, B, C, Y); end $finish; end endmodule仿真中的$display会打印八行结果与手工测得的真值表对照完全一致说明逻辑设计无误。到这里组合逻辑设计的基本流程就走通了一遍真值表到逻辑式、逻辑式到电路、电路到仿真验证。4. 74HC148到74HC283编码译码、选择比较、加法进位与数码管驱动4.1 74HC148优先编码器低电平有效的反码输出74HC148是8-3优先编码器8条输入I0到I7低电平有效输出A2、A1、A0是二进制反码。实验板上把输入拨码开关全部拨到高电平然后单个拉低观察输出。输入低有效输出A2 A1 A0含义I700 0 0编码7I600 0 1编码6I500 1 0编码5I400 1 1编码4I301 0 0编码3I201 0 1编码2I101 1 0编码1I001 1 1编码0注意输出是反码所以I7优先编码时输出000而不是111。选通输入EI低电平有效输出使能GS和选通输出EO用于多片级联扩展。级联时低位的EO接高位的EI可以组成16-4编码器。实验报告里只要求测试逻辑单元但掌握级联方式对理解编码器的内部结构有帮助。4.2 74HC138译码器三个使能端如何组合使用74HC138是3-8译码器地址输入A2、A1、A0输出Y0到Y7低电平有效。三个使能端E1高有效E2和E3低有效。只有当E11、E20、E30时芯片才工作。地址A2 A1 A0有效输出000Y00001Y10010Y20011Y30100Y40101Y50110Y60111Y70实验时把A2、A1、A0接逻辑开关输出接LED逐个拨动地址码观察对应输出的LED点亮低电平亮。如果要实现4-16译码器用两片74HC138把A3接到第一片的E1和第二片的E2通过A3的电平选择哪一片工作。这个级联技巧在存储器地址译码里非常常见。4.3 74HC153双4选1数据选择器实现三变量函数74HC153内部有两个独立的4选1数据选择器每个都有4个数据输入、2个公共地址选择端和独立的选通端。实验内容是用它实现逻辑函数。数据选择器的核心是当地址选择端A1A0确定后输出等于对应数据输入的值。因此任意三变量函数都可以用2个变量作为地址第3个变量经过逻辑组合后接到数据输入端。接线方式A1、A0接两个变量另一个变量的四种组合0、1、b、b分别接到数据输入I0到I3。比如要实现Y AB AB令A1A、A0B数据端接成I00、I11、I21、I30即可。这也解释了为什么数据选择器常被称为“万能逻辑单元”——不需要化简直接按真值表接数据端就行。4.4 74HC85数值比较器和74HC283全加器74HC85是4位数值比较器输入两组4位数A3..A0和B3..B0输出三个标志AB、AB、AB。级联输入用于扩展位数把低位的三个比较结果接到高位的级联端。实验里把两组拨码开关分别接到A和B输入观察三个输出LED。判断逻辑是从高位到低位逐位比较高位的比较结果优先。74HC283是4位全加器C0是进位输入C4是进位输出A3..A0和B3..B0是两个加数S3..S0是和。两个4位数相加结果可能溢出到第5位C4就是溢出标志。级联时把低位的C4接到高位的C0就可以实现8位加法器。module adder4( input wire [3:0] A, input wire [3:0] B, input wire C0, output wire [3:0] S, output wire C4 ); assign {C4, S} A B C0; endmodule这段Verilog里拼接运算符{C4, S}把进位标志和四位和拼成一个5位数赋值语句直接完成加法。综合后得到的电路和74HC283内部结构等价。用两片74HC283做8位加法时第一片算低4位C4输出接第二片的C0输入。4.5 74HC4511与数码管BCD码如何变成七段显示74HC4511是BCD锁存/七段译码驱动器专门驱动共阴极数码管。输入4位BCD码D3..D0输出a到g七个段驱动信号。芯片有锁存端LE、灯测试端LT和灭灯端BI。LT接低电平时所有段都点亮用来测试数码管好坏BI接低电平时所有段都熄灭。D3 D2 D1 D0数码管显示00000000110010200113010040101501106011171000810019实验箱上的LN3461A是4位共阴极数码管每位有独立的段引脚和位选引脚。74HC4511的a到g输出端必须串接限流电阻通常220欧姆到330欧姆否则段电流过大。连接后输入8421码数码管会显示对应十进制数字。要注意的是74HC4511只能显示0到9输入1010到1111时会显示空白或乱码这是正常现象。5. 悬空引脚、LED限流与EDA仿真把实验箱结果搬到电脑上验证5.1 悬空引脚的正确处理实验箱上的拨码开关如果不拨到确定位置对应的引脚就是悬空状态。CMOS芯片的浮空输入会因静电感应产生不定电平实测时表现为LED忽亮忽灭。解决方法是把不用的输入端经10kΩ电阻接到VCC或GND或者直接在实验箱上给逻辑开关加默认值。这个习惯比任何排错技巧都重要——大多数“电路不稳定”的故障追到最后都是悬空引脚的问题。5.2 LED限流电阻的计算误区实验报告里的“LED亮/灭”用逻辑状态记录但LED不能直接接芯片输出。5V电源、红色LED正向压降约2V、工作电流取10mA限流电阻R (5 - 2) / 0.01 300Ω取标称值330Ω。如果省掉限流电阻LED电流可能超过20mA芯片输出端口会过流损坏。用逻辑笔时则不需要考虑限流问题因为逻辑笔是高阻输入。5.3 用EDA工具验证组合逻辑电路实验箱上的连线验证完成后把同一个电路搬到EDA工具里跑一遍仿真能发现很多手工测试注意不到的时序问题。以裁判表决电路为例在仿真平台里加入毛刺观察module glitch_check; reg A, B, C; wire Y; referee uut(.A(A), .B(B), .C(C), .Y(Y)); initial begin A 0; B 0; C 0; #5 A 1; #5 B 1; #5 A 0; #5 C 1; #5 $display(Y%b at time%t, Y, $time); $finish; end endmodule如果A和B几乎同时变化Y可能在一个极短的时间窗口内误判为1。这是因为与门和或门的传播延时不同。实验箱上这种毛刺由于LED响应速度慢肉眼看不到但在高速数字系统里会造成逻辑错误。EDA仿真里给每个门加上延时模型就能提前捕捉到这类风险。一个实用的把实验箱电路转成仿真的技巧先按数据手册查出74HC系列单门传播延时典型值是7ns到9ns在仿真代码里给assign语句加#8的延时然后检查输出波形中的竞争冒险。如果发现不该出现的窄脉冲就需要在输出端加RC低通滤波或改用冗余项消除。这些做法在课程实验报告里不会要求但做实际项目时就是区分“电路能跑”和“电路可靠”的分界线。本文还有配套的精品资源点击获取
返回列表