数字逻辑实验报告Verilog时序逻辑设计Word格式.docx
《数字逻辑实验报告Verilog时序逻辑设计Word格式.docx》由会员分享,可在线阅读,更多相关《数字逻辑实验报告Verilog时序逻辑设计Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
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
initialbegin
CLK=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;
end
alwaysbegin
#5CLK=~CLK;
modulevr74x74_tb;
//Inputs
regCLK;
regD;
regPR_L;
regCLR_L;
//Outputs
wireQ;
wireQN;
//InstantiatetheUnitUnderTest(UUT)
vr74x74uut(
.CLK(CLK),
.D(D),
.PR_L(PR_L),
.CLR_L(CLR_L),
.Q(Q),
.QN(QN)
);
仿真结果如下图所示
检查输入输出关系,设计无误。
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);
源码如下:
S1=0;
S0=0;
A=0;
B=0;
C=0;
D=0;
//Wait100nsforglobalresettofinish
#100;
//Addstimulushere
S1=0;
S0=0;
#100;
S0=1;
RIN=1;
S1=1;
A=0;
B=0;
C=0;
LIN=1;
#100;
A=1;
B=1;
C=1;
D=1;
End
alwaysbegin
测试文件:
modulevr74x194_tb;
regLIN;
regRIN;
regS1;
regS0;
regA;
regB;
regC;
wireQA;
wireQB;
wireQC;
wireQD;
//InstantiatetheUnitUnderTest(UUT)
Vr74x194uut(
.LIN(LIN),
.RIN(RIN),
.S1(S1),
.S0(S0),
.A(A),
.B(B),
.C(C),
.QA(QA),
.QB(QB),
.QC(QC),
.QD(QD)
initialbegin
//InitializeInputs
CLK=0;
CLR_L=0;
LIN=0;
RIN=0;
检验输入输出结果正常,设计无误。
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'
.A(1'
.B(1'
b0),
.C(1'
.D(1'
b0),
.QA(X2),
.QB(X1),
.QC(X0)
);
xor(w3,X1,X0);
nor(w1,X2,X1);
xor(w6,w1,w3);
moduleLFSR_tb;
regRESET;
wireX2;
wireX1;
wireX0;
LFSRuut(
.RESET(RESET),
.X2(X2),
.X1(X1),
.X0(X0)
CLK=0;
RESET=1;
//Addstimulushere
RESET=0;
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]);
moduleVr74x163(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;
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);
//Addstimulushere
CLR_L=0;
LD_L=1'
bx;
ENT=1'
ENP=1'
#20;
LD_L=0;
D=4'
b1111;
LD_L=1;
ENT=0;
ENP=0;
ENT=1;
ENP=1;
end
3位LFSR计数器顶层设计模块
modulelfsr_8_main(
inputCLK,
inputRESET,
outputLED2,LED1,LED0
wireCLK_1Hz;
counter_100Mu1(CLK,CLK_1Hz);
LFSR_8u2(CLK_1Hz,RESET,LED2,LED1,LED0);
八、实验结论:
边沿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的数字信号;
在FPGA开发板上调试了3位LFSR计数器。
十、对本实验过程及方法、手段的改进建议:
无
报告评分:
指导教师签字: