1、电 子 科 技 大 学实 验 报 告学生姓名:任彦璟 学 号:2015040101018 指导教师:吉家成 米源 王华一、实验项目名称:Verilog 时序逻辑设计二、实验目的:掌握边沿 D 触发器 74x74、同步计数器 74x163、4 位通用移位寄存器74x194,的工作原理。设计移位寄存器 74x194 设计 3 位最大序列长度线性反馈移位寄存器(LFSR:Linear Feedback Shift Register)计数器。设计同步计数器 74x163 。三、实验内容:1设计边沿 D 触发器 74x74。2设计通用移位寄存器 74x194。3采用 1 片 74x194 和其它小规模逻
2、辑门设计 3 位 LFSR 计数器。4设计 4 位同步计数器 74x163。四、实验原理:74x74 逻辑电路图C L K _ DC L R _ L _ DS 1 _ LS 1 _ HS 0 _ LS 0 _ Hw 1w 2w 3w 4w 5w 6w 7w 8w 9w 1 0w 1 1w 1 2w 1 3w 1 4w 1 5w 1 6w 1 7w 1 8w 1 9w 2 074x194 逻辑电路图3 位 LFSR 逻辑电路图74x163 逻辑电路图上图的设计可以采用门级描述,也可以采用教材数字设计原理与实践(第 4 版)第 525 页的表 8-20 中的行为描述五、实验器材(设备、元器件):P
3、C 机、Windows XP、Anvyl 或 Nexys3 开发板、Xilinx ISE 14.7 开发工具、Digilent Adept 下载工具。六、实验步骤:实验步骤包括:建立新工程,设计代码与输入,设计测试文件,设置仿真,查看波形,约束与实现、生成流代码与下载调试。七、关键源代码及波形图:1D 触发器的 Verilog 代码源码如下module vr74x74(CLK, D, PR_L, CLR_L, Q, QN);input CLK, D, PR_L, CLR_L ;output Q, QN ;wire w1, w2, w3, w4 ;nand (w1, PR_L, w2, w4);
4、nand (w2, CLR_L, w1, CLK) ;nand (w3, w2, CLK, w4) ;nand (w4, CLR_L, w3, D) ;nand (Q, PR_L, w2, QN);nand (QN, Q, w3, CLR_L);endmodule仿真结果如下图所示module vr74x74_tb;/ Inputsreg CLK;reg D;reg PR_L;reg CLR_L;/ Outputswire Q;wire QN;/ Instantiate the Unit Under Test (UUT)vr74x74 uut (.CLK(CLK), .D(D), .PR_L(
5、PR_L), .CLR_L(CLR_L), .Q(Q), .QN(QN);initial beginCLK = 0 ;PR_L = 1 ;CLR_L = 1 ;D = 0 ;#4 D = 1 ;#2 D = 0 ;#8 D = 0 ;#2 D = 1 ;#13 CLR_L = 0 ;#10 CLR_L = 1 ;#10 PR_L = 0 ;#5 D = 0 ;#10 PR_L = 1 ;endalways begin#5 CLK = CLK ;endendmodule检查输入输出关系,设计无误。24 位通用移位寄存器 74x194源码如下:module Vr74x194(CLK,CLR_L,L
6、IN,RIN,S1,S0,A,B,C,D,QA,QB,QC,QD);input CLK,CLR_L,LIN,RIN,S1,S0,A,B,C,D ;output QA,QB,QC,QD ;wire CLK_D ;wire CLR_L_D ;wire S1_L,S1_H;wire S0_L,S0_H;wire QAN,QBN,QCN,QDN ;wire w1,w2,w3,w4,w5,w6,w7,w8,w9,w10;wire w11,w12,w13,w14,w15,w16,w17,w18,w19,w20;buf(CLK_D,CLK);buf(CLR_L_D,CLR_L);not(m1,S1);not
7、(m0,S0);and(n1,S0,m1,RIN);and(n2,S0,S1,A);and(n3,m0,m1,QA);and(n4,m0,S1,QB);and(n5,S0,m1,QA);and(n6,S0,S1,B);and(n7,m0,m1,QB);and(n8,m0,S1,QC);and(n9,S0,m1,QB);and(n10,S0,S1,C);and(n11,m0,m1,QC);and(n12,m0,S1,QD);and(n13,S0,m1,QC);and(n14,S0,S1,D);and(n15,m0,m1,QD);and(n16,m0,S1,LIN);or(p1,n1,n2,n3,
8、n4);or(p2,n5,n6,n7,n8);or(p3,n9,n10,n11,n12);or(p4,n13,n14,n15,n16);vr74x74 q1(CLK_D,p1,1b1,CLR_L_D,QA,QAN);vr74x74 q2(CLK_D,p2,1b1,CLR_L_D,QB,QBN);vr74x74 q3(CLK_D,p3,1b1,CLR_L_D,QC,QCN);vr74x74 q4(CLK_D,p4,1b1,CLR_L_D,QD,QDN);endmodule测试文件:module vr74x194_tb;/ Inputsreg CLK;reg CLR_L;reg LIN;reg R
9、IN;reg S1;reg S0;reg A;reg B;reg C;reg D;/ Outputswire QA;wire QB;wire QC;wire QD;/ Instantiate the Unit Under Test (UUT)Vr74x194 uut (.CLK(CLK), .CLR_L(CLR_L), .LIN(LIN), .RIN(RIN), .S1(S1), .S0(S0), .A(A), .B(B), .C(C), .D(D), .QA(QA), .QB(QB), .QC(QC), .QD(QD);initial begin/ Initialize InputsCLK
10、= 0;CLR_L = 0;LIN = 0;RIN = 0;S1 = 0;S0 = 0;A = 0;B = 0;C = 0;D = 0;/ Wait 100 ns for global reset to finish#100;/ Add stimulus hereCLR_L = 1 ;S1 = 0 ;S0 = 0 ;#100 ;S1 = 0 ;S0 = 1 ;RIN = 1 ;#100 ;S1 = 1 ;S0 = 1 ;A = 0 ;B = 0 ;C = 0 ;D = 0 ;#100 ;S1 = 1 ;S0 = 0 ;LIN = 1 ;#100 ;S1 = 1 ;S0 = 1 ;A = 1 ;
11、B = 1 ;C = 1 ;D = 1 ;Endalways begin#5 CLK = CLK ;endendmodule仿真结果如下图所示检验输入输出结果正常,设计无误。33 位 LFSR 计数器源码如下:module LFSR( CLK,RESET,X2,X1,X0);input CLK,RESET;output X2,X1,X0;wire w1,w3,w6 ;Vr74x194 U1(.CLK(CLK), .CLR_L(1b1), .RIN(w6), .S1(RESET), .S0(1b1), .A(1b1), .B(1b0), .C(1b0), .D(1b0),.QA(X2), .QB
12、(X1) , .QC(X0);xor (w3,X1,X0) ;nor (w1,X2,X1) ;xor (w6,w1,w3) ;endmodule仿真结果如下图所示module LFSR_tb;/ Inputsreg CLK;reg RESET;/ Outputswire X2;wire X1;wire X0;/ Instantiate the Unit Under Test (UUT)LFSR uut (.CLK(CLK), .RESET(RESET), .X2(X2), .X1(X1), .X0(X0);initial begin/ Initialize InputsCLK = 0;RESE
13、T = 1;/ Wait 100 ns for global reset to finish#100;/ Add stimulus hereRESET = 0 ;endalways begin#5 CLK = CLK ;endendmodule检验输入输出结果正常,设计无误。4. 74x163 计数器源码如下and(w21,w20,w25);not(w26,ENT);nor(w1,LD_L,CLR);nor(w2,w1,CLR);xor(w4,w25,QN0);xor(w10,w9,QN1);xor(w16,w15,QN2);xor(w22,w21,QN3);and(w3,w1,A);and(
14、w5,w2,w4);and(w7,w1,B);and(w11,w2,w10);and(w13,w1,C);and(w17,w2,w16);and(w19,w1,D);and(w23,w2,w22);or(w6,w3,w5);or(w12,w7,w11);or(w18,w13,w17);or(w24,w19,w23);vr74x74 U1 (D0, CLK, 1, CLR_L, Q0, QN0);vr74x74 U2 (D1, CLK, 1, CLR_L, Q1, QN1);vr74x74 U3 (D2, CLK, 1, CLR_L, Q2, QN2);vr74x74 U4 (D3, CLK,
15、1, CLR_L, Q3, QN3);endmodulemodule Vr74x163(CLK,CLR_L,LD_L,ENP,ENT,D,Q,RCO);input CLK,CLR_L,LD_L,ENP,ENT;input 3:0D;output 3:0Q;output RCO;wire w1,w2,w3,w4,w5,w6,w7,w8,w9,w10;wire w11,w12,w13,w14,w15,w16,w17,w18,w19,w20;wire w21,w22,w23,w24,w25,w26;wire CK;wire CLR;wire 3:0QN;wire CLK1;buf(CLK1,CLK)
16、;not(CLR,CLR_L);not(w8,QN0);nor(w14,QN1,QN0);nor(w20,QN2,QN1,QN0);and(w25,ENP,ENT);and(w9,w8,w25);and(w15,w14,w25);3 位 LFSR 计数器顶层设计模块/ Add stimulus hereCLR_L = 0 ;LD_L = 1bx ;ENT = 1bx ;ENP = 1bx ;#20 ;CLR_L = 1 ;LD_L = 0;ENT = 1bx ;ENP = 1bx ;D = 4b1111 ;#20 ;CLR_L = 1 ;LD_L = 1;ENT = 0 ;ENP = 1bx
17、;#20 ;CLR_L = 1 ;LD_L = 1;ENT = 1bx ;ENP = 0 ;#20 ;CLR_L = 1 ;LD_L = 1;ENT = 1 ;ENP = 1 ;endalways begin#5 CLK = CLK ;endmodule lfsr_8_main(input CLK ,input RESET ,output LED2 , LED1 , LED0 );wire CLK_1Hz ; counter_100M u1( CLK , CLK_1Hz ) ;LFSR_8 u2(CLK_1Hz , RESET , LED2 , LED1 , LED0 ); endmodule
18、仿真结果如下图所示八、实验结论:边沿 D 触发器负跳沿触发的主从触发器工作时,必须在正跳沿前加入输入信号。如果在 CP 高电平期间输入端出现干扰信号,那么就有可能使触发器的状态出错。而边沿触发器允许在 CP 触发沿来到前一瞬间加入输入信号。移位寄存器 D、2D、1D、0D 为并行输入端;3Q、2Q、1Q、0Q 为并行输出端;RS 为右移串行输入端;LS 为左移串行输入端 1S、0S 为操作模式控制端;RC 为直接无条件清零端;CP 为时钟脉冲输入端。74LS194 有 5 种不同操作模式:并行送数寄存;右移(方向由 3Q0Q);左移(方向由 0Q3Q);保持及清零。对于同步计数器,由于时钟脉冲
19、同时作用于各个触发器,克服了异步触发器所遇到的触发器逐级延迟问题,于是大大提高了计数器工作频率,各级触发器输出相差小,译码时能避免出现尖峰;但是如果同步计数器级数增加,就会使得计数脉冲的负载加重。九、总结及心得体会: 在这此次试验中,根据边沿 D 触发器 74x74 的原理图编写设计和仿真模块;根据通用移位寄存器 74x194 的原理图编写设计和仿真模块;采用 1 片 74x194和其它小规模逻辑门设计 3 位 LFSR 计数器,编写设计和仿真了模块;根据 4 位同步计数器 74x163 的原理图编写设计和仿真了模块;将输入为 100MHz 的系统时钟采用 7 片 74x163 和其它小规模逻辑门设计了 1Hz 的数字信号;在 FPGA 开发板上调试了 3 位 LFSR 计数器。十、对本实验过程及方法、手段的改进建议: 无报告评分:指导教师签字: