数字逻辑实验报告Verilog时序逻辑设计Word格式.docx

上传人:b****6 文档编号:21832096 上传时间:2023-02-01 格式:DOCX 页数:16 大小:202.61KB
下载 相关 举报
数字逻辑实验报告Verilog时序逻辑设计Word格式.docx_第1页
第1页 / 共16页
数字逻辑实验报告Verilog时序逻辑设计Word格式.docx_第2页
第2页 / 共16页
数字逻辑实验报告Verilog时序逻辑设计Word格式.docx_第3页
第3页 / 共16页
数字逻辑实验报告Verilog时序逻辑设计Word格式.docx_第4页
第4页 / 共16页
数字逻辑实验报告Verilog时序逻辑设计Word格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数字逻辑实验报告Verilog时序逻辑设计Word格式.docx

《数字逻辑实验报告Verilog时序逻辑设计Word格式.docx》由会员分享,可在线阅读,更多相关《数字逻辑实验报告Verilog时序逻辑设计Word格式.docx(16页珍藏版)》请在冰豆网上搜索。

数字逻辑实验报告Verilog时序逻辑设计Word格式.docx

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计数器。

十、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1