DE2 实验练习解答lab 3锁存器触发器和寄存器digital LogicDE2quartus II.docx

上传人:b****5 文档编号:28875092 上传时间:2023-07-20 格式:DOCX 页数:14 大小:460KB
下载 相关 举报
DE2 实验练习解答lab 3锁存器触发器和寄存器digital LogicDE2quartus II.docx_第1页
第1页 / 共14页
DE2 实验练习解答lab 3锁存器触发器和寄存器digital LogicDE2quartus II.docx_第2页
第2页 / 共14页
DE2 实验练习解答lab 3锁存器触发器和寄存器digital LogicDE2quartus II.docx_第3页
第3页 / 共14页
DE2 实验练习解答lab 3锁存器触发器和寄存器digital LogicDE2quartus II.docx_第4页
第4页 / 共14页
DE2 实验练习解答lab 3锁存器触发器和寄存器digital LogicDE2quartus II.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

DE2 实验练习解答lab 3锁存器触发器和寄存器digital LogicDE2quartus II.docx

《DE2 实验练习解答lab 3锁存器触发器和寄存器digital LogicDE2quartus II.docx》由会员分享,可在线阅读,更多相关《DE2 实验练习解答lab 3锁存器触发器和寄存器digital LogicDE2quartus II.docx(14页珍藏版)》请在冰豆网上搜索。

DE2 实验练习解答lab 3锁存器触发器和寄存器digital LogicDE2quartus II.docx

DE2实验练习解答lab3锁存器触发器和寄存器digitalLogicDE2quartusII

本练习的目的是研究锁存器、触发器和寄存器。

PartIRS锁存器

Altera的FPGA含有可供用户使用的触发器电路。

在PartIV演示如何使用它。

这里探讨如何不使用专用触发器来创建存储单元。

图1描述了门控锁存器电路。

可用门级电路或表达式来描述。

part1.v//rs锁存器门级描述

1//part1:

rs_ff

2modulers_ff(q,r,s,clk);

3inputclk,r,s;

4outputq;

5

6wirer_g,s_g,qa,qb/*synthesiskeep*/;

7

8and(r_g,r,clk);

9and(s_g,s,clk);

10nor(qa,r_g,qb);

11nor(qb,s_g,qa);

12

13assignq=qa;

14

15endmodule

16

其中/*synthesiskeep*/是编译指令,用来指定每个信号用一个单独的逻辑单元实现。

RTLViewer查看结果如下:

图2未加编译指令的RTL图

图3图2的内部结构

图5图4的内部结构

图4加上编译指令的RTL图

图6RS锁存器功能仿真结果

图7RS锁存器时序仿真结果

PartII门控D锁存器

如图8所示:

图8门控D锁存器

1.新建一个工程。

为门控D锁存器创建类似PartI中的代码,分析。

part2.v门控锁存器

1//part2top_levelfile

2moduletop_level(SW,LEDR0);

3input[1:

0]SW;//clk&d

4outputLEDR0;//q

5

6gated_d_latch(LEDR0,SW[0],SW[1]);

7

8endmodule

9

10

1//part2.vgatedd_latch

2modulegated_d_latch(q,d,clk);

3inputd,clk;

4outputq;

5

6wirer,s_g,r_g,qa,qb/*synthesiskeep*/;

7

8nand(s_g,d,clk);

9nand(r_g,r,clk);

10not(r,d);

11nand(qa,s_g,qb);

12nand(qb,r_g,qa);

13

14assignq=qa;

15

16endmodule

逻辑单元映射结果:

图9TechnologyMapViewer结果

仿真:

图10功能仿真结果

图11时序仿真结果

2.另建一个工程,新建一个顶层文件,定义相应的输入/出引脚,使用D锁存器,在DE2上验证。

指定引脚:

SW0

SW1

clk

LEDR0

小结:

锁存器是电平敏感型电路,D锁存器的优点在于不可能出现S=R=1这个麻烦状态。

Part III 主从D触发器

图12 主从D触发器

part3.v 主从D触发器

1//part3.vmaster_slavedff

2modulems_dff(SW,LEDR0);//Qm);

3input[1:

0]SW;

4outputLEDR0;

5//outputQm;

6

7wireqm,qs;

8

9gated_d_latchum(qm,SW[0],SW[1]);

10gated_d_latchus(qs,qm,~SW[1]);

11

12assignLEDR0=qs;

13//assignQm=qm;

14

15endmodule

仿真:

图13 主从D触发器功能仿真结果

Part IV 三种存储单元

电平敏感存储元件与跳变沿触发的存储元件之间的比较。

图14 三种存储元件

part4.v 代码

1//part4top_levelfile

2modulesu_3(d,clk,qa,qb,qc);

3inputd,clk;

4outputqa,qb,qc;

5

6d_latchul(d,clk,qa);

7dff_pudp(d,clk,qb);

8dff_nudn(d,clk,qc);

9

10endmodule

11

12//dff_p

13moduledff_p(d,clk,q);

14inputd,clk;

15outputq;

16

17wireqm,qs;

18

19d_latchum(d,~clk,qm);

20d_latchus(qm,clk,qs);

21

22assignq=qs;

23

24endmodule

25

26//dff_n

27moduledff_n(d,clk,q);

28inputd,clk;

29outputq;

30

31wireqm,qs;

32

33d_latchum(d,clk,qm);

34d_latchus(qm,~clk,qs);

35

36assignq=qs;

37

38endmodule

39

40//Dlatch

41moduled_latch(d,clk,q);

42inputd,clk;

43outputregq;

44

45always@(d,clk)

46if(clk)

47q=d;

48

49endmodule

50

图15 在fpga内实现的电路

图16 功能仿真结果

PartVD触发器的应用

在DE2上显示两个16位的16进制数A和B,A在HEX7-4上显示,B在HEX3-0上显示。

用SW15-0输入A,然后输入B,即要求数A存储在电路中。

指定KEY1为clock,KEY0为Reset。

part5.v代码:

1//dff_Rwithasynchronousreset

2moduledff_R(d,clk,rst_n,q);

3inputd,clk,rst_n;

4outputregq;

5

6always@(negedgerst_n,posedgeclk)

7if(!

rst_n)

8q<=0;

9else

10q<=d;

11

12endmodule

13

14//top-levelfile

15modulepart5(SW,KEY,HEX7,HEX6,HEX5,HEX4,HEX3,HEX2,

16HEX1,HEX0);

17input[15:

0]SW;

18input[1:

0]KEY;

19output[6:

0]HEX7,HEX6,HEX5,HEX4,HEX3,HEX2,

20HEX1,HEX0;

21

22wire[15:

0]q;

23

24dff_Ru0(SW[0],KEY[1],KEY[0],q[0]);

25dff_Ru1(SW[1],KEY[1],KEY[0],q[1]);

26dff_Ru2(SW[2],KEY[1],KEY[0],q[2]);

27dff_Ru3(SW[3],KEY[1],KEY[0],q[3]);

28dff_Ru4(SW[4],KEY[1],KEY[0],q[4]);

29dff_Ru5(SW[5],KEY[1],KEY[0],q[5]);

30dff_Ru6(SW[6],KEY[1],KEY[0],q[6]);

31dff_Ru7(SW[7],KEY[1],KEY[0],q[7]);

32dff_Ru8(SW[8],KEY[1],KEY[0],q[8]);

33dff_Ru9(SW[9],KEY[1],KEY[0],q[9]);

34dff_Ru10(SW[10],KEY[1],KEY[0],q[10]);

35dff_Ru11(SW[11],KEY[1],KEY[0],q[11]);

36dff_Ru12(SW[12],KEY[1],KEY[0],q[12]);

37dff_Ru13(SW[13],KEY[1],KEY[0],q[13]);

38dff_Ru14(SW[14],KEY[1],KEY[0],q[14]);

39dff_Ru15(SW[15],KEY[1],KEY[0],q[15]);

40

41//numberB

42seg7_lutuh0(q[3:

0],HEX0);

43seg7_lutuh1(q[7:

4],HEX1);

44seg7_lutuh2(q[11:

8],HEX2);

45seg7_lutuh3(q[15:

12],HEX3);

46//numberA

47seg7_lutuh4(q[3:

0],HEX4);

48seg7_lutuh5(q[7:

4],HEX5);

49seg7_lutuh6(q[11:

8],HEX6);

50seg7_lutuh7(q[15:

12],HEX7);

51

52endmodule

Conclusion

本实验是目前为止(alteraDE2数字逻辑)最容易的一个,所花时间较少即可完成。

主要从门级到类似C语言的行为描述来构建存储单元。

区分电平敏感和边沿触发。

Reference

1.Altera数字逻辑设计实验练习3(DE2光盘)

2.《数字逻辑基础与verilog设计》ch7.StephenBrown…

ps:

这个实验要么是Stephen本人设计的,要么设计者看了他的这本书。

完全一样。

:

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

当前位置:首页 > 高中教育 > 高考

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

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