1、_计算机_学院 网络工程 专业 1 班_组、学号 姓名 协作者_ 教师评定_实验题目_数字逻辑期末综合实验_一、 题目(学号单号的做1、2,双号的做3、4)1. 用HC161设计一个九进制计数器(清零法和置数法,参考实验指导书P53)2. 用HC161设计一个分频器(参考实验指导书P52,不用数码显示)3. 用HC138译码器实现符合电路4. 用数据选择器实现符合电路二、 要求按顺序报告以下内容1. 设计分析过程2. 连线图3. 预分析其运行步骤、输入输出的变化过程(包括控制端)4. 实验通过老师验证的,拍下实验实际连线图,及验证数据;没通过验证的,分析实验不成功的原因。5. 用Verilog
2、编写的代码模块及测试平台6. 第一次仿真结果实验报告选做题目:用HC161设计一个九进制计数器(置数法)1. 设计分析过程九进制计数器的计数容量是9,而计数器74HC161的计数器容量为16。显然,如使74HC161的计数初值由7(对应的二进制数为0111)开始,即可将计数容量由16变为9,从而得到九进计数器,相应的状态图如图所示。111010111100110110000111111110101001/0/0/0/0 /1 /0/0/0/0由于需要在每次计数值达到1111后,下一个状态从0111开始,从而应使D3D2D1D0=0111。此时,还需生成置位信号,置位信号可通过将进位输出(TC)
3、取反获得,即=。2. 连线图166611 VCC VCC152clk CP TC C1431 D0 Q0 Q013411 D1 Q1 Q11251 D2 Q2 Q21160 D3 Q3 Q37111 CEP CET 198 GND 3. 预分析其运行步骤、输入输出的变化过程(包括控制端)输入变化主要是时钟信号的变化,其他数据变化都是根据时钟变化而变化的,实际连线图采用的是1Hz时钟信号,实验中是每1s产生一次时钟信号,即计数器每1s进行一次计数,从0111开始,随着时钟变化而进行计数,每次计数值达到1111后,下一个状态从0111开始。每次计数值达到1111时,还会生成进位信号,同时将进位信号
4、取反,形成置位信号,使计数器重新由0111开始计数。4. 实验通过老师验证的,拍下实验实际连线图,及验证数据;没通过验证的,分析实验不成功的原因。5. 用Verilog编写的代码模块及测试平台代码模块:moduleHC161(CP,CEP,CET,MRN,PEN,Dn,Qn,TC);inputCP;inputCEP,CET;output3:0Qn;inputMRN,PEN;input3:0Dn;outputTC;reg3:0qaux;regTC;always(posedgeCP)beginif(!MRN)qaux=4b0111;elseif(!PEN)qaux=Dn;elseif(CEP&CE
5、T)qaux=qaux+1;elseqaux=116661A0 VCC VCC Yout152 A1 Y0 143 A2 Y1 1341 E1 Y2 125 E2 Y3 1161 E3 Y4 711 Y7 Y5 198 GND Y63. 描述其运行步骤、输入输出的变化过程(包括控制端)控制端:因为138只有在E1=2=E3=1时才工作,所以测试代码中先让e1,e2,e3都为0,再分别过20个单位时间赋值为1使芯片工作。输入输出变化:输入端从0一直赋值到7,输出端是A0和A7的或运算之后的结果,因此只有在输入端为0或者7的时候输出端才为1。4. 时序电路画出状态转换图01011001110010
6、1001000111/0/0/0 /1 /0 /0 /0 /05. 用Verilog编写的代码模块及测试平台/ 138.vmodule hc138(E3,E2,E1,A,Yout);input E3,E2,E1;input 2:0A;output Yout;reg Yout;reg 7:0Y;always(E3,E2,E1,A) begin if(!(E2|E1)|(!E3) Y=8b11111111; else if(E2=E1&E2=E3&E3=1) if(A=3b000) Y=8b10000000; else if(A=3b111) Y=8b00000001; else Y=8b0000
7、0000; if(Y7|Y0) Yout=1; else Yout=0; endendmodule测试平台代码:/ test138fuhe.vtimescale 1ns/1nsmodule hc138test();reg2:0a;reg e3,e2,e1;wire yout;hc138 u1(e3,e2,e1,a,yout);initial begine1=0;e2=0;e3=0; #20 e2=1; #20 e1=1; #20 e3=1; #20 a=3b000; #20 a=3b001; #20 a=3b010; #20 a=3b011; #20 a=3b100; #20 a=3b101; #20 a=3b110; #20 a=3b111; #20; endendmodule8