收藏 分销(赏)

广工数字逻辑实验报告(期末综合实验).doc

上传人:w****g 文档编号:1248011 上传时间:2024-04-19 格式:DOC 页数:9 大小:2.07MB 下载积分:6 金币
下载 相关 举报
广工数字逻辑实验报告(期末综合实验).doc_第1页
第1页 / 共9页
广工数字逻辑实验报告(期末综合实验).doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
___计算机__学院 网络工程 专业 1 班____组、学号 姓名 协作者______________ 教师评定_________________ 实验题目_________________数字逻辑期末综合实验_________________ 一、 题目(学号单号的做1、2,双号的做3、4) 1. 用HC161设计一个九进制计数器(清零法和置数法,参考《实验指导书》P53) 2. 用HC161设计一个分频器(参考《实验指导书》P52,不用数码显示) 3. 用HC138译码器实现符合电路 4. 用数据选择器实现符合电路 二、 要求按顺序报告以下内容 1. 设计分析过程 2. 连线图 3. 预分析其运行步骤、输入输出的变化过程(包括控制端) 4. 实验通过老师验证的,拍下实验实际连线图,及验证数据; 没通过验证的,分析实验不成功的原因。 5. 用Verilog编写的代码模块及测试平台 6. 第一次仿真结果 实验报告 选做题目:用HC161设计一个九进制计数器(置数法) 1. 设计分析过程 九进制计数器的计数容量是9,而计数器74HC161的计数器容量为16。显然,如使74HC161的计数初值由7(对应的二进制数为0111)开始,即可将计数容量由16变为9,从而得到九进计数器,相应的状态图如图所示。 1110 1011 1100 1101 1000 0111 1111 1010 1001 /0 /0 /0 /0 /1 /0 /0 /0 /0 由于需要在每次计数值达到1111后,下一个状态从0111开始,从而应使D3D2D1D0=0111。此时,还需生成置位信号,置位信号可通过将进位输出(TC)取反获得,即=。 2. 连线图 1666 1 1 VCC VCC 15 2 clk CP TC C 14 3 1 D0 Q0 Q0 13 41 1 D1 Q1 Q1 12 5 1 D2 Q2 Q2 11 6 0 D3 Q3 Q3 7 11 1 CEP CET 1 9 8 GND 3. 预分析其运行步骤、输入输出的变化过程(包括控制端) 输入变化主要是时钟信号的变化,其他数据变化都是根据时钟变化而变化的,实际连线图采用的是1Hz时钟信号,实验中是每1s产生一次时钟信号,即计数器每1s进行一次计数,从0111开始,随着时钟变化而进行计数,每次计数值达到1111后,下一个状态从0111开始。每次计数值达到1111时,还会生成进位信号,同时将进位信号取反,形成置位信号,使计数器重新由0111开始计数。 4. 实验通过老师验证的,拍下实验实际连线图,及验证数据; 没通过验证的,分析实验不成功的原因。 5. 用Verilog编写的代码模块及测试平台 代码模块: module HC161(CP,CEP,CET,MRN,PEN,Dn,Qn,TC);  input CP;  input CEP,CET;  output[3:0] Qn;  input MRN,PEN;  input[3:0] Dn;  output TC;  reg[3:0] qaux;    reg TC;   always @ (posedge CP)  begin  if(!MRN)  qaux<=4'b0111;  else if(!PEN)  qaux<=Dn;  else if(CEP&CET)  qaux<=qaux+1;   else qaux<=qaux;   end   always @ (posedge CP)  begin   if(qaux==4'b1110 && CET==1)   TC=1'b1;  else TC=1'b0;  end   assign Qn=qaux;   endmodule  测试平台 `timescale 1ns/1ns module testbench; reg cp,cep,cet,mrn,pen; reg[3:0] dn; wire tc; wire[3:0] qn; parameter DELY=20; always #(DELY/2) cp=~cp; initial begin cep=1; repeat(15) #DELY cet=$random; end initial begin pen=1; #DELY pen=0; #60 pen=1; end initial begin mrn=1; repeat(20) #15 mrn=$random; end initial #300 $finish; HC161 test(cp,cep,cet,mrn,pen,dn,qn,tc); endmodule 6. 第一次仿真结果 1. 设计分析过程 根据符合电路的特点知,当数据选择器输入为0(000)或者7(111)时,输出为1;因此,138芯片中只需关心Y0和Y7。当Y0和Y7其中一个为1的时候,输出为1。则只需要将Y0和Y7或之后的结果赋值给Yout。 2. 连线图 >=1 1666 1 A0 VCC VCC Yout 15 2 A1 Y0 14 3 A2 Y1 13 41 E1 Y2 12 5 E2 Y3 11 6 1 E3 Y4 7 11 Y7 Y5 1 9 8 GND Y6 3. 描述其运行步骤、输入输出的变化过程(包括控制端) 控制端: 因为138只有在E1=2=E3=1时才工作,所以测试代码中先让e1,e2,e3都为0,再分别过20个单位时间赋值为1使芯片工作。 输入输出变化: 输入端从0一直赋值到7,输出端是A0和A7的或运算之后的结果,因此只有在输入端为0或者7的时候输出端才为1。 4. 时序电路画出状态转换图 010 110 011 100 101 001 000 111 /0 /0 /0 /1 /0 /0 /0 /0 5. 用Verilog编写的代码模块及测试平台 / 138.v module hc138(E3,E2,E1,A,Yout); input E3,E2,E1; input [2:0]A; output Yout; reg Yout; reg [7:0]Y; always@(E3,E2,E1,A) begin if(!(E2|E1)||(!E3)) Y=8'b11111111; else if(E2==E1&&E2==E3&&E3==1) if(A==3'b000) Y=8'b10000000; else if(A==3'b111) Y=8'b00000001; else Y=8'b00000000; if(Y[7]|Y[0]) Yout=1; else Yout=0; end endmodule 测试平台代码: // test138fuhe.v `timescale 1ns/1ns module hc138test(); reg[2:0]a; reg e3,e2,e1; wire yout; hc138 u1(e3,e2,e1,a,yout); initial begin e1=0;e2=0;e3=0; #20 e2=1; #20 e1=1; #20 e3=1; #20 a=3'b000; #20 a=3'b001; #20 a=3'b010; #20 a=3'b011; #20 a=3'b100; #20 a=3'b101; #20 a=3'b110; #20 a=3'b111; #20; end endmodule 8
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 报告/总结

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服