EDA课程论文.docx
《EDA课程论文.docx》由会员分享,可在线阅读,更多相关《EDA课程论文.docx(14页珍藏版)》请在冰豆网上搜索。
EDA课程论文
湖南涉外经济学院
课程设计报告
课程名称:
EDA课程设计
报告题目:
四路抢答器
学生姓名:
所在学院:
信息科学与工程学院
专业班级:
学生学号:
指导教师:
张平华
2014年12月30日
课程设计任务书
报告题目
四人抢答器
完成时间
12/30
学生姓名
专业班级
指导教师
张平华
职称
副教授
总体设计要求和技术要点
设计一个4人抢答器,要求如下:
1.1个主持键、4个抢答键。
2.抢答的键号用一个数码管显示(可以采用静态显示)。
|
3.抢答的时间用两位数码管显示(可以采用静态显示),精确到0.01秒。
4.主持人按下,4个抢答键才有效,时间从0.1s开始计时。
5.当时间到8.8秒还没人按抢答键,抢答停止,抢答键无效;当主持键再次按下才有效。
6.在规定时间内抢答键按下时,显示先按下的键号,时间停止,抢答键无效;当主持键再次按下才有效。
工作内容及时间进度安排
第17周:
周1---周3:
立题、论证方案设计、程序设计与调试
第18周:
周1---周4:
硬件调试与测试,撰写课程设计报告
周5:
验收答辩
课程设计成果
1.与设计内容对应的软件程序
2.课程设计总结报告
【摘要】:
现代生活中,数字电路产品与我们接触的是越来越平凡了,包括计算机、电子表、智能仪器表及其它很多领域中,它给我们带来的不仅是工作上的方便,而且也给我们的学习上能够方便快捷。
这次EDA课程设计中,我做的是四人抢答器,基于设计要求,本文主要是从锁存器及计数器功能和VHDL语言着手,但侧重点在用VHDL语言上。
首先简单介绍一下数字电路、EDA、VHDL等的有关知识,其次介绍了一下设计要求和我的设计构想,再运用VHDL语言,写出程序代码,最后是一些总结和抢答器部分实验电路图与倒计时设计的电路图和用QuartusII软件仿真的结果部分图附录等部分。
关键词:
复位;锁存;计数器;七段显示器;译码器
目录
一.概述1
二.方案分析与对比1
§2.1方案分析1
§2.2方案对比1
§2.3整体设计论述2
三.单元关键模块设计3
§3.2抢答器显示模块3
四.硬件设施4
五.单元模块程序设计6
§5.1qiangda模块6
§5.2display模块8
§5.3VHDL原理图及波形仿真11
§5.4引脚图12
六.总结12
参考文献:
13
一.概述
抢答器的逻辑结构较简单,它主要由抢答鉴别模块、抢答显示模块组成。
在整个抢答器中最关键的是如何实现抢答封锁,在控制键按下的同时计数器倒计时显示有效剩余时间。
此外,整个抢答器还需有一个使能信号和一个复位信号,以便抢答器能实现公平抢答和停止。
抢答器共有2个输出显示,抢答代号、计数器的个位和小数位,他们输出全都为BCD码输出,这样便于和显示译码器连接。
当选手按下抢答键或倒计时到时数码显示管亮起抢答代号。
二.方案分析与对比
§2.1方案分析
将该任务分成四个模块进行设计,分别为:
抢答鉴别模块、抢答计时模块、译码模块、抢答代号与时间显示模块,最后是用原理图输入的顶层文件。
1.抢答鉴别模块:
在这个模块中主要实现抢答过程中的抢答功能,当有选手抢答时,选手编号被锁存,计时停止,其他选手抢答无效。
2.抢答计时模块:
在这个模块中主要实现抢答过程中的计时功能,在有抢答使能信号后计时器进行8.8秒倒计时,并且在8.8秒倒计时结束后无人抢答时显示0.0并停止计时。
3.译码模块:
在这个模块中主要实现抢答过程中将BCD码转换成7段的功能,以便驱动共阴极数码管。
4.抢答代号与时间显示模块:
在这个模块中,将译码模块中BCD码转换成7段译码,在7段译码数字显示管上进行十进制数的显示。
§2.2方案对比
实现抢答器系统的控制方法很多,可以用标准逻辑器件、可编程序控制器和单片机等方案来实现。
若用单片机方案来实现的话,模型可以由电源电路、单片机主控电路、无线收发控制电路和显示电路四部分组成。
在电源电路中,需要用到+5V的直流稳压电源,无线收发控制电路和显示电路应由编码芯片和数据发射模块两部分组成,主控电路的主要元件为AT89C51。
硬件设计完成后还要利用计算机软件经行软件部分的设计才能够实现相应的功能。
虽然利用单片机系统设计的抢答器相对来说较稳定,能够完成较多功能的实现,但这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统设计与调试的困难。
相反,使用基于FPGA的设计方法具有周期短,设计灵活,易于修改等明显的的优点。
而且,随着FPGA器件、设计语言和电子设计自动化工具的发展和改进,越来越多的电子系统采用FPGA来设计。
未来,使用FPGA器件设计的产品将出现在各个领域里。
因此,此次的抢答器的设计将采用基于FPGA的设计方案来实现所要求的功能。
§2.3整体设计论述
根据设计要求和系统所具有的功能,并参考相关的文献资料,经行方案设计,可以画出如下图所示四人抢答器的系统框图。
K3
K2
K1
K0
KAIN
CLK1
CLKCLK2
三.单元关键模块设计
§3.1抢答模块
四名抢答者各有一个抢答按钮,就是芯片里的输入S1,S2,S3,S4(四个按键)S5(主持人按键)主持人按下清零信号时,所有人的灯都不能亮且无法抢答,直到主持人复位后,可以开始抢答,抢答者就可以抢答,锁存器就是先有人抢答后阻碍其他抢答者的信号,接着抢答成功者所对应的输出states就将信号输出到下一个模块,同时灯也就亮了,所有强打着需在8.8秒之内完成抢答,否则视为无效抢答,下一轮开始继续抢答,其实体模块如下:
.
§3.2抢答器显示模块
将抢答鉴别模块抢答成功的组别和计时器的时间进行显示,del[2..0]端输入需显示的二进制数组,legad[6..0]端输出显示在数码管,这是最简单的一部分,功能的实现是数电里的知识。
计时模块所要实现的就是对的时间控制,因为选手必须在8.8秒之内完成抢答,否则抢答无效,当主持人再次按下才有效。
四.硬件设施
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
(1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有丰富的触发器和I/O引脚。
(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
(5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
FPGA有多种配置模式:
并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。
如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。
五.单元模块程序设计
5.1qiangda模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityQDQis
port(S1,S2,S3,S4:
instd_logic;
S5:
instd_logic;
clk:
instd_logic;
tim:
outintegerrange0to88;
Dout:
outstd_logic_vector(3downto0)
);
endQDQ;
architecturebehaveofQDQis
signalEnable_Flag,Enable_Flag_t:
std_logic;
signalD:
std_logic_vector(3downto0);
signalt:
integerrange0to88;
begin
process(S1,S2,S3,S4,S5)
begin
if(S5='1')then
D<="0000";
Enable_Flag<='1';
t<=0;
elsifclk'eventandclk='1'then
if(Enable_Flag='1')then
ift=88then
t<=88;
Enable_Flag_t<='0';
else
t<=t+1;
Enable_Flag_t<='1';
endif;
else
t<=0;
endif;
endif;
if(Enable_Flag='1'andEnable_Flag_t='1')then
if(S1='1')then
D<="0001";
Enable_Flag<='0';
elsif(S2='1')then
D<="0010";
Enable_Flag<='0';
elsif(S3='1')then
D<="0100";
Enable_Flag<='0';
elsif(S4='1')then
D<="1000";
Enable_Flag<='0';
endif;
dout<=d;
endif;
endprocess;
tim<=t;
endbehave;
5.2display模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitydisplayis
port(clk_scan:
instd_logic;
tim:
inintegerrange0to88;
Dout:
instd_logic_vector(3downto0);
ledag:
outstd_logic_vector(6downto0);
dp:
outstd_logic;
del:
outstd_logic_vector(2downto0)
);
enddisplay;
architecturebehaveofdisplayis
signald,num:
integerrange0to9;
signalt:
integerrange0to2;
begin
process(clk_scan)
begin
ifclk_scan'eventandclk_scan='1'then
ift=2then
t<=0;
else
t<=t+1;
endif;
endif;
endprocess;
process(dout)
begin
casedoutis
when"0000"=>num<=0;
when"0001"=>num<=1;
when"0010"=>num<=2;
when"0100"=>num<=3;
when"1000"=>num<=4;
whenothers=>num<=0;
endcase;
endprocess;
process(t)
begin
casetis
when0=>del<="110";d<=num;dp<='0';
when1=>del<="101";d<=timmod10;dp<='0';
when2=>del<="011";d<=tim/10;dp<='1';
whenothers=>del<="111";
endcase;
endprocess;
process(d)
begin
casedis
when0=>ledag<="0111111";
when1=>ledag<="0000110";
when2=>ledag<="1011011";
when3=>ledag<="1001111";
when4=>ledag<="1100110";
when5=>ledag<="1101101";
when6=>ledag<="1111101";
when7=>ledag<="0000111";
when8=>ledag<="1111111";
when9=>ledag<="0011111";
whenothers=>ledag<="0000000";
endcase;
endprocess;
endbehave;
5.3VHDL原理图及波形仿真
图3.总原理图
图4.总仿真波形图
这是一个四人组抢答器仿真图,其中四位抢答者分别为S1、S2、S3、S4,(S5主持人按键)他们控制这个输入实现抢答功能,当主持人按下clear为高电平时,就是清零信号,每个人抢答都无效,随着主持人按起清零信号让它为低电平时,各位抢答者都可以抢答,有抢答者先抢到时,其他人的抢答信号就被锁存器屏蔽掉,就不能实现抢答,但是需要抢答的抢答者必须在8.8秒之内完成抢答,否则无效,当主持人再次按下时才有效。
抢答者按下抢答器时,相对应的灯也就亮了,且数码管也会显示该抢答者对应的号码,主持人可以进行检测,当主持人按下清零键时才可以开始抢答。
5.4引脚图
图5.引脚图
六.总结
本次课程设计历经两周,这是我感觉最累的一次课设,也是最充实的一次设计,因为中间遇到了很多问题,有时候一个问题都要考虑一天还没办法解决,有使用工具软件的问题也有编写的程序问题,但是中间的体会与收获蛮多。
首先在做课程设计前,我上网搜集了关于仿真软件的使用教程说明,这样可以尽量避免一些操作上的问题,从而又学会了一种软件使用,接下来就是对课题的研究,先从小处着手,在慢慢的实现大方面的要求。
变量的定义,以及过程(process)的定义与应用等方面遇到了很大的阻力,也让我吃了不少的苦头,但是在自己的努力以及在同学的帮助下,我最终还是克服了重重难关。
虽然在程序的编写方面还不是很完善,但还是勉强设计出了需要的模块。
在这次设计中,应该说从功能的实现到流程图的绘制,从程序的编写到程序的检查,从程序的调试到实验报告的写作,其间每一个过程都无比艰辛。
此次实习让我了解到在头脑中抽象地记忆、理解那些课本上的理论知识,都是不够的,因为有些理论知识晦涩难懂,甚至要靠自己死记硬背。
而这次的实习就提供机会让我们在实践中灵活运用知识。
我们通过在实践中发现问题,进而去书本中找相关的知识去解决问题,从而巩固了理论知识,同时也增强了我们以后的学习兴趣,为以后的工作积累了一定的经验。
写报告时,整个布局的安排,格式的规划都会遇到各种小问题,直到整个实验做结束,收获很大,主要提高了自己的动手能力,仔细思考去做自己的东西,因为别人也帮不了全部,吸取了教训,掌握了知识,收益大,希望这些时间总结出来的经验能够在以后的学习生活中帮到自己。
最后对实验报告作了整理,自己又熟悉了一下整个流程,整个实验设计也告一段落,此次设计还是多亏了老师的细心指导,让我一步一步的完成本次课程设计,所以对于老师的细心指导,在这里万分感谢,让我在以后VHDL语言上能够更进一步。
参考文献:
[1]赵辉,电子设计工程,2012年第2期
[2]符兴昌,微计算机信息,2006年第14期
[3]徐志军、王金明编著,EDA技术与VHDL设计,北京:
电子工业出版社,2009年
[4]孙富明,电子技术应用,北京:
电子工业出版社,2007年
[5]徐彦凯,EDA课程设计课题的开发和体会,2011年第2期
[6] 陆重阳卢东华文爱军. IP技术在Soc中的地位及应用[J]. 微电子技术,2002(8).30-32.
[7] 吴亦锋.可编程序控制器原理与应用速成[M]. 福州:
福建科学技术学出版社,2005.122-124.
[8] 周力 李炜.我国智能交通控制系统的发展及展望[J].安徽:
安徽工程科技学院电气工程系,2009.