电子科技大学实验报告学生姓名:任彦璟学号:2015040101018指导教师:吉家成米源王华一、实验项目名称:Verilog时序逻辑设计二、实验目的:掌握边沿D触发器74x74、同步计数器74x163、4位通用移位寄存器74x194,的工作原理。设计移位寄存器74x194设计3位最大序列长度线性反馈移位寄存器(LFSR:LinearFeedbackShiftRegister)计数器。设计同步计数器74x163。三、实验内容:1.设计边沿D触发器74x74。2.设计通用移位寄存器74x194。3.采用1片74x194和其它小规模逻辑门设计3位LFSR计数器。4.设计4位同步计数器74x163。四、实验原理:74x74逻辑电路图CLK_DCLR_L_DS1_LS1_HS0_LS0_Hw1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w2074x194逻辑电路图3位LFSR逻辑电路图74x163逻辑电路图上图的设计可以采用门级描述,也可以采用教材《数字设计—原理与实践》(第4版)第525页的表8-20中的行为描述五、实验器材(设备、元器件):PC机、WindowsXP、Anvyl或Nexys3开发板、XilinxISE14.7开发工具、DigilentAdept下载工具。六、实验步骤:实验步骤包括:建立新工程,设计代码与输入,设计测试文件,设置仿真,查看波形,约束与实现、生成流代码与下载调试。七、关键源代码及波形图:1.D触发器的Verilog代码源码如下modulevr74x74(CLK,D,PR_L,CLR_L,Q,QN);inputCLK,D,PR_L,CLR_L;outputQ,QN;wirew1,w2,w3,w4;nand(w1,PR_L,w2,w4);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仿真结果如下图所示modulevr74x74_tb;//InputsregCLK;regD;regPR_L;regCLR_L;//OutputswireQ;wireQN;//InstantiatetheUnitUnderTest(UUT)vr74x74uut(.CLK(CLK),.D(D),.PR_L(PR_L),.CLR_L(CLR_L),.Q(Q),.QN(QN));initialbeginCLK=0;PR_L=1;CLR_L=1;D=0;#4D=1;#2D=0;#8D=0;#2D=1;#13CLR_L=0;#10CLR_L=1;#10PR_L=0;#5D=0;#10PR_L=1;endalwaysbegin#5CLK=~CLK;endendmodule检查输入输出关系,设计无误。2.4位通用移位寄存器74x194源码如下:moduleVr74x194(CLK,CLR_L,LIN,RIN,S1,S0,A,B,C,D,QA,QB,QC,QD);inputCLK,CLR_L,LIN,RIN,S1,S0,A,B,C,D;outputQA,QB,QC,QD;wireCLK_D;wireCLR_L_D;wireS1_L,S1_H;wireS0_L,S0_H;wireQAN,QBN,QCN,QDN;wirew1,w2,w3,w4,w5,w6,w7,w8,w9,w10;wirew11,w12,w13,w14,w15,w16,w17,w18,w19,w20;buf(CLK_D,CLK);buf(CLR_L_D,CLR_L);not(m1,S1);not(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,n4);or(p2,n5,n6,n7,n8);or(p3,n9,n10,n11,n12);or(p4,n13,n14,n15,n16);vr74x74q1(CLK_D,p1,1'b1,CLR_L_D,QA,QAN);vr74x74q2(CLK_D,p2,1'b1,CLR_L_D,QB,QBN);vr74x74q3(CLK_D,p3,1'b1,CLR_L_D,QC,QCN);vr74x74q4(CLK_D,p4,1'b1,CLR_L_D,QD,QDN);endmodule测试文件:modulevr74x194_tb;//InputsregCLK;regCLR_L;regLIN;regRIN;regS1;regS0;regA;regB;regC;regD;//OutputswireQA;wireQB;wireQC;wireQD;//InstantiatetheUnitUnderTest(UUT)Vr74x194uut(.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));initialbegin//InitializeInputsCLK=0;CLR_L=0;LIN=0;RIN=0;S1=0;S0=0;A=0;B=0;C=0;D=0;//Wait100nsforglobalresettofinish#100;//AddstimulushereCLR_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;B=1;C=1;D=1;Endalwaysbegin#5CLK=~CLK;endendmodule仿真结果如下图所示检验输入输出结果正常,设计无误。3.3位LFSR计数器源码如下:moduleLFSR(CLK,RESET,X2,X1,X0);inputCLK,RESET;outputX2,X1,X0;wirew1,w3,w6;Vr74x194U1(.CLK(CLK),.CLR_L(1'b1),.RIN(w6),.S1(RESET),.S0(1'b1),.A(1'b1),.B(1'b0),.C(1'b0),.D(1'b0),.QA(X2),.QB(X1),.QC(X0));xor(w3,X1,X0);nor(w1,X2,X1);xor(w6,w1,w3);endmodule仿真结果如下图所示moduleLFSR_tb;//InputsregCLK;regRESET;//OutputswireX2;wireX1;wireX0;//InstantiatetheUnitUnderTest(UUT)LFSRuut(.CLK(CLK),.RESET(RESET),.X2(X2),.X1(X1),.X0(X0));initialbegin//InitializeInputsCLK=0;RESET=1;//Wait100nsforglobalresettofinish#100;//AddstimulushereRESET=0;endalwaysbegin#5CLK=~CLK;endendmodule检验输入输出结果正常,设计无误。4.74x163计数器源码如下and(w21,w20,w25);not(w26,ENT);nor(w1,LD_L,CLR);nor(w2,w1,CLR);xor(w4,w25,~QN[0]);xor(w10,w9,~QN[1]);xor(w16,w15,~QN[2]);xor(w22,w21,~QN[3]);and(w3,w1,A);and(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);vr74x74U1(D[0],CLK,1,CLR_L,Q[0],QN[0]);vr74x74U2(D[1],CLK,1,CLR_L,Q[1],QN[1]);vr74x74U3(D[2],CLK,1,CLR_L,Q[2],QN[2]);vr74x74U4(D[3],CLK,1,CLR_L,Q[3],QN[3]);endmodulemoduleVr74x163(CLK,CLR_L,LD_L,ENP,ENT,D,Q,RCO);inputCLK,CLR_L,LD_L,ENP,ENT;input[3:0]D;output[3:0]Q;outputRCO;wirew1,w2,w3,w4,w5,w6,w7,w8,w9,w10;wirew11,w12,w13,w14,w15,w16,w17,w18,w19,w20;wirew21,w22,w23,w24,w25,w26;wireCK;wireCLR;wire[3:0]QN;wireCLK1;buf(CLK1,CLK);not(CLR,CLR_L);not(w8,QN[0]);nor(w14,QN[1],QN[0]);nor(w20,QN[2],QN[1],QN[0]);and(w25,ENP,ENT);and(w9,w8,w25);and(w15,w14,w25);3位LFSR计数器顶层设计模块//AddstimulushereCLR_L=0;LD_L=1'bx;ENT=1'bx;ENP=1'bx;#20;CLR_L=1;LD_L=0;ENT=1'bx;ENP=1'bx;D=4'b1111;#20;CLR_L=1;LD_L=1;ENT=0;ENP=1'bx;#20;CLR_L=1;LD_L=1;ENT=1'bx;ENP=0;#20;CLR_L=1;LD_L=1;ENT=1;ENP=1;endalwaysbegin#5CLK=~CLK;end仿真结果如下图所示八、实验结论:边沿D触发器负跳沿触发的主从触发器工作时,必须在正跳沿前加入输入信号。如果在CP高电平期间输入端出现干扰信号,那么就有可能使触发器的状态出错。而边沿触发器允许在CP触发沿来到前一瞬间加入输入信号。移位寄存器D、2D、1D、0D为并行输入端;3Q、2Q、1Q、0Q为并行输出端;RS为右移串行输入端;LS为左移串行输入端1S、0S为操作模式控制端;RC为直接无条件清零端;CP为时钟脉冲输入端。74LS194有5种不同操作模式:并行送数寄存;右移(方向由3Q→0Q);左移(方向由0Q→3Q);保持及清零。对于同步计数器,由于时钟脉冲同时作用于各个触发器,克服了异步触发器所遇到的触发器逐级延迟问题,于是大大提高了计数器工作频率,各级触发器输出相差小,译码时能避免出现尖峰;但是如果同步计数器级数增加,就会使得计数脉冲的负载加重。九、总结及心得体会:在这此次试验中,根据边沿D触发器74x74的原理图编写设计和仿真模块;根据通用移位寄存器74x194的原理图编写设计和仿真模块;采用1片74x194和其它小规模逻辑门设计3位LFSR计数器,编写设计和仿真了模块;根据4位同步计数器74x163的原理图编写设计和仿真了模块;将输入为100MHz的系统时钟采用7片74x163和其它小规模逻辑门设计了1Hz的数字信