可编程器件及数字系统设计实习报告Word格式文档下载.docx
《可编程器件及数字系统设计实习报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《可编程器件及数字系统设计实习报告Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
2.设置一个系统“开始复位”开关K,该开关由主持人控制,当主持人按下该开关后开始抢答。
3.抢答器具有锁存与显示功能。
在允许抢答的时间内,选手按动按钮,锁存相应的编号,并在LED数码管上显示。
选手抢答实行优先锁存,当其他选手在之后进行抢答时,只显示优先抢答选手编号。
4.在主持人并未打开开始抢答按钮时,如有人抢先抢答,其对应编号在LED数码管上显示,同时红灯亮,蜂鸣器报警提示。
二、设计方案
抢答器是由多个模块进行设计,分别为:
抢答器鉴别模块、译码模块、报警模块,最后是综合。
1.抢答器鉴别模块:
在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余抢答信号封锁的功能。
在这个模块输入端有4人抢答输入信号端S1,S2,S3,S4和有一个时钟信号端CLK,这个时钟信号是个高频信号,用以扫描S1,S2,S3,S4是否有信号输入。
输出端有对应于S1,S2,S3,S4编号的4个指示灯LED。
在此模块中高频时钟信号一直作用,此时,若主持人按下K即为开始抢答信号,所有输出端都自动清零。
在抢答的时间以内,如有人抢答成功,该人指示灯点亮,锁存输出到译码显示模块,用以显示优先抢答人的组号,并锁定输入端S以阻止系统响应其他抢答者的信号。
2.译码模块:
将抢答过程中锁存的BCD码转换成7段码用于LED的显示。
4报警模块:
在这个模块中主要实现抢答过程中的报警功能,当主持人还没按下控制键,此时有人抢答,ALARM报警提示,直到主持人清零。
三、设计实现
1﹑抢答器鉴别模块
在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余抢答信号封锁的功能。
并且在未开始抢答时,能够判别哪一个按键被按下,并由LED数码管显示出来。
1.1抢答成功部分
其代码如下:
process(S1,S2,S3,S4,K)
begin
if(K='
1)then
if(S1='
1'
)then
D<
="
0001"
;
elsif(S2='
0010"
elsif(S3='
0100"
elsif(S4='
1000"
elsif(S1='
0'
ANDS2='
ANDS3='
ANDS4='
)then
0000"
endif;
endprocess;
1.2抢答犯规部分
其代码如下:
process(S1,S2,S3,S4,K)
begin
--清零处理
)ANDNOT(s4='
ORs2='
ORs3='
;
ORs1='
)ANDNOT(s1='
2﹑译码模块
将抢答过程中锁存的BCD码转换成7段码用LED的显示
process(D)
caseDis
when"
=>
ledag<
0000001"
1001111"
0010010"
0000110"
1001100"
whenothers=>
1111111"
endcase;
endprocess;
3﹑报警模块
在这个模块中主要实现抢答过程中的报警功能,当未开始抢答时,如有人按下按键,则蜂鸣器开始报警。
process(TEMP2)
caseTEMP2is
when"
01"
Y<
='
G<
10"
11"
whenothers=>
endprocess;
四、实验结果及分析
下载到核心板上以后,再通过杜邦线连接到焊到的板上后,能正确的实现其功能。
具体为:
当总的开关没拨下以前如有人按下按键,则报警灯亮,同时蜂鸣器发出响声报时;
在开始抢答时,选手抢答成功时,其对应的灯亮,同时LED数码管上显示对应的编号。
通过实践基本达到了设计的要求,基本上达到了实验的目的。
五、实习总结
经过三个星期的QuartusⅡ课程设计,通过不懈努力,成功地设计出了数字式四路抢答器。
回首这几周,虽然已经了解QuartusⅡ技术,但是对相关知识还是了解甚少,也遇到了很多困难,但是在这次实习的过程中还是受益匪浅,收获颇丰,甚为欣慰。
在这次课程设计的前期,我们已经学习了QuartusⅡ概论,VHDL描述语言和设计应用方面的基础知识,使得能够较熟练地使用QuartusⅡ软件进行设计开发,用原理图输入及VHDL语言等设计输入并编译仿真,同时对以往学过的理论知识有了更加透彻的理解。
我的自主设计为数字式四路抢答器,根据电路的特点,采用层次化结构化设计,将设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来调试。
在设计的过程中,遇到问题先独立思考,查找资料。
遇到自己不能解决的时候就和其他组研究讨论,最后向指导老师请教。
这样既提高了我独立发现问题、分析问题、解决问题的能力,又很好地培养了交流合作的精神。
但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。
而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。
所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。
本实验通过QuartusⅡ软件实现,让我对VHDL语言有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。
通过这次设计,进一步加深了对QuartusⅡ的了解,让我对它有了更加浓厚的兴趣。
特别是当每一个子模块编写调试成功时,心里特别的高兴。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次独自完成老师规定的任务,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
总的来说,这次设计的抢答器还是比较成功的,在设计中遇到了很多问题,最后在我自己仔细的检查和编译下,终于迎刃而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。
经历数日的实践眼看尘埃落定,感觉忍不住要长出一口气。
结果怎样已然不再重要,在这期间,经历了阶段性成功的狂喜、测试失败后的绝望、陷入困境时的不知所措,重新投入的振作。
这已经就足够了。
六、附录(程序或电路图)
各模块部分仿真图
1﹑抢答鉴别模块
3﹑源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityqdqis
port(S1,S2,S3,S4:
instd_logic;
K:
DOUT:
outstd_logic_vector(3downto0);
ledag:
outstd_logic_vector(6downto0);
y:
OUTstd_logic;
G:
OUTSTD_LOGIC);
endqdq;
architecturebehaveofqdqis
signalEnable_Flag:
std_logic;
signalS:
std_logic_vector(3downto0);
signalD:
SIGNALTEMP1:
STD_LOGIC;
SIGNALTEMP2:
STD_LOGIC_VECTOR(1DOWNTO0);
TEMP1<
=S1ORS2ORS3ORS4;
TEMP2<
=K&
TEMP1;
process(S1,S2,S3,S4,K)--允许抢答控制
begin
S<
=S1&
S2&
S3&
S4;
If(K='
Enable_Flag<
elsif(S="
1111"
endif;
process(S1,S2,S3,S4,K)--抢答犯规部分
Else--抢答成功部分
dout<
=D;
process(TEMP2)--报警部分
process(D)--译码部分
endbehave;