EDA抢答器设计报告.docx
- 文档编号:4988539
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:13
- 大小:29.12KB
EDA抢答器设计报告.docx
《EDA抢答器设计报告.docx》由会员分享,可在线阅读,更多相关《EDA抢答器设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
EDA抢答器设计报告
EDA实习设计报告
课题名称:
VHDL实现抢答器的设计
专业班级:
信息08-2
********
*******
2011年7月7日
一EDA数字技术的发展及应用
1.1EDA技术的发展与应用
现代电子产品几乎渗透了社会的各个领域EDA技术是电子设计的发展趋势,EDA工具从数字系统设计的单一领域,应用范围己涉及模拟、微波等多个领域,可实现各个领域电子系统设计的测试、设计仿真和布局布线等。
设计者只要完成对电子系统的功能描述,就可利用计算机和EDA工具,进行设计处理,最终得到设计结果。
随着大规模集成电路技术和计算机技术的不断发展,即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。
不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。
从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。
在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。
1.2设计的主要内容及要求
本次课程设计的主要目的旨在通过独立完成一个“电子时钟”的设计,达到对EDA技术的熟练掌握,提升对《EDA技术及应用》课程所学内容的掌握和应用。
以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
Quartus2在基于VHDL程序设计中拥有输入设计流程,其包括设计输入,综合,适配,仿真测试和编程下载等方法。
Quartus2与其他应用软件相比,他提供了更强大、更直观便捷和操作灵活的原理图输入设计功能,同时还配备了更丰富的适用于各种需要的元件库,其中包括基本的逻辑元件,宏功能元件,以及类似于IP核的参数可设置的宏功能块LPM库。
与传统的数字电路实验相比,Quartus2提供原理图输入设计功能具有不可比拟的优势和先进性:
1)设计者不必具备许多诸如编程技术,硬件描述语言等知识就能迅速入门,完成较大规模的电路设计系统。
2)能进行任意层次的数字系统设计,传统的数字电路实验只能完成单一层次的设计。
3)能对系统中的任意层次,或任一元件的功能进行精确的时序仿真。
4)通过时序仿真能迅速定位电路系统中的错误所在,并及时纠正。
1.3本次设计的目的及意义
第一,加深对VHDL语言设计的理解;
第二,通过对抢答器的设计加深对EDA课程的理解;
第三,通过对抢答器的设计了解简易集成电路的设计思路;
二设计整体思路
在本次课程设计中使用Altera公司的EPF10K10系列的FPGA芯片,基于实验室现有的DE-2实验板,实现“抢答器”的设计要求。
(1)设计一个可以容纳四组参赛队进行比赛的电子抢答器。
(2)具有第一抢答信号的鉴别和锁存功能。
(3)具有计时(10秒)功能。
(4)具有(自动)计分功能。
(5)具有犯规自动(减分)设置电路。
三单元模块设计部分
单元模块设计部分分四个部分,包括:
抢答模块,计时模块,计分模块,数据选择模块。
每个模块的作用分别为:
1.抢答模块:
实现四路抢答功能,以选手最快速度将拨码开关置1为抢答成功。
2.计分模块:
实现每位选手答题的计分功能,有手动加分减分功能,当选手抢答成功后10秒仍未答题则自动减分。
3.计时模块:
实现选手答题的计时功能,若选手抢答成功后没有答题则计时模块会发出信号给计分模块。
4.数据选择模块:
当选手抢答成功后,以该选手的号码最为数据选择的地址,数据选择将计时模块的减分信号线与该选手的计分模块相连接,若选手没有答题则扣分。
3.1抢答模块的设计
其程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityqiangdais
port(a:
instd_logic;
b:
instd_logic;
c:
instd_logic;
d:
instd_logic;
en_out:
outstd_logic;
en:
instd_logic;
adrout:
outstd_logic_vector(3downto0);
led_out:
bufferstd_logic_vector(6downto0));
endqiangda;
architecturebhvofqiangdais
signalkey_in:
std_logic_vector(3downto0);
begin
process(en)
begin
ifen='1'then
key_in<=a&b&c&d;
elsekey_in<="0000";
endif;
endprocess;
process(key_in)
variableled:
std_logic_vector(6downto0);
begin
casekey_inis
when"0000"=>led:
="1000000";--0
when"1000"=>led:
="1111001";--1
when"0100"=>led:
="0100100";--2
when"0010"=>led:
="0110000";--3
when"0001"=>led:
="0011001";--4
whenothers=>led:
=null;
endcase;
led_out<=led;
endprocess;
process(a,b,c,d)
begin
en_out<=aorborcord;
adrout<=key_in;
endprocess;
endbhv;
3.2计分模块的设计
其程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjifenis
port(a:
instd_logic;
b:
instd_logic;
c:
instd_logic;
led_out:
outstd_logic_vector(6downto0));
endjifen;
architecturebhvofjifenis
signalcnt_a:
std_logic_vector(2downto0);
signalcnt_b:
std_logic_vector(2downto0);
signalcnt_c:
std_logic_vector(2downto0);
signalcnt:
std_logic_vector(2downto0);
begin
process(a)
begin
ifa'eventanda='1'then
cnt_b<=cnt_b+1;
endif;
endprocess;
process(b)
begin
ifb'eventandb='1'then
cnt_a<=cnt_a-1;
endif;
endprocess;
process(c)
begin
ifc'eventandc='1'then
cnt_c<=cnt_c-1;
endif;
endprocess;
process(cnt)
begin
cnt<=cnt_a+cnt_b+cnt_c;
casecntis
when"000"=>led_out<="1000000";
when"001"=>led_out<="1111001";
when"010"=>led_out<="0100100";
when"011"=>led_out<="0110000";
when"100"=>led_out<="0011001";
when"101"=>led_out<="0010010";
when"110"=>led_out<="0000010";
when"111"=>led_out<="1111000";
--when"000"=>led_out<="0000000";
--when"001"=>led_out<="0010000";
--when"010"=>led_out<="0001000";
--when"011"=>led_out<="0000011";
--when"100"=>led_out<="1000110";
--when"101"=>led_out<="0100001";
--when"110"=>led_out<="0000110";
--when"111"=>led_out<="0001110";
--whenothers=>null;
endcase;
endprocess;
endbhv;
3.3计时模块的设计
其程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjishiis
port(clk:
instd_logic;
rst:
instd_logic;
rst1:
instd_logic;
led_out:
outstd_logic_vector(6downto0);
en1:
outstd_logic);
endjishi;
architecturebhvofjishiis
signalcnt:
std_logic_vector(27downto0);
signalnclk:
std_logic;
signalcntdata:
std_logic_vector(3downto0);
begin
process(clk,rst,rst1)
begin
ifrst='0'orrst1='0'thennclk<='1';
elsifclk'eventandclk='1'then
cnt<=cnt+1;
ifcnt=x"2faf080"then
cnt<=x"0000000";
nclk<='0';
elsenclk<='1';
endif;
endif;
endprocess;
process(nclk,rst)
begin
ifrst='0'thencntdata<="1001";en1<='0';
elsifnclk'eventandnclk='0'then
cntdata<=cntdata-1;
ifcntdata="0000"then
cntdata<="0000";
en1<='1';
elseen1<='0';
endif;
endif;
endprocess;
process(cntdata)
begin
casecntdatais
when"0000"=>led_out<="1000000";
when"0001"=>led_out<="1111001";
when"0010"=>led_out<="0100100";
when"0011"=>led_out<="0110000";
when"0100"=>led_out<="0011001";
when"0101"=>led_out<="0010010";
when"0110"=>led_out<="0000010";
when"0111"=>led_out<="1111000";
when"1000"=>led_out<="0000000";
when"1001"=>led_out<="0010000";
when"1010"=>led_out<="0001000";
when"1011"=>led_out<="0000011";
when"1100"=>led_out<="1000110";
when"1101"=>led_out<="0100001";
when"1110"=>led_out<="0000110";
when"1111"=>led_out<="0001110";
whenothers=>null;
endcase;
endprocess;
endbhv;
3.4数据选择模块的设计
其程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityxuanzeis
port(enin:
instd_logic;
adr:
instd_logic_vector(3downto0);
jian_a:
outstd_logic;
jian_b:
outstd_logic;
jian_c:
outstd_logic;
jian_d:
outstd_logic);
endxuanze;
architecturebhvofxuanzeis
begin
process(adr)
begin
caseadris
when"1000"=>jian_a<=enin;
when"0100"=>jian_b<=enin;
when"0010"=>jian_c<=enin;
when"0001"=>jian_d<=enin;
whenothers=>null;
endcase;
endprocess;
endbhv;
3.5例化连接部分
其程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityzongheis
port(clk:
instd_logic;
a:
instd_logic;
b:
instd_logic;
c:
instd_logic;
d:
instd_logic;
en:
instd_logic;
rst:
instd_logic;
aa:
instd_logic;
ab:
instd_logic;
ac:
instd_logic;
ad:
instd_logic;
ja:
instd_logic;
jb:
instd_logic;
jc:
instd_logic;
jd:
instd_logic;
qdout:
outstd_logic_vector(6downto0);
jf_a:
outstd_logic_vector(6downto0);
jf_b:
outstd_logic_vector(6downto0);
jf_c:
outstd_logic_vector(6downto0);
jf_d:
outstd_logic_vector(6downto0);
js:
outstd_logic_vector(6downto0);
off1:
outstd_logic_vector(7downto0):
="11111111";
off2:
outstd_logic_vector(7downto0):
="11111111");
endzonghe;
architecturebhvofzongheis
componentqiangda
port(a:
instd_logic;
b:
instd_logic;
c:
instd_logic;
d:
instd_logic;
en_out:
outstd_logic;
en:
instd_logic;
adrout:
outstd_logic_vector(3downto0);
led_out:
bufferstd_logic_vector(6downto0));
endcomponent;
componentjishi
port(clk:
instd_logic;
rst:
instd_logic;
rst1:
instd_logic;
led_out:
outstd_logic_vector(6downto0);
en1:
outstd_logic);
endcomponent;
componentjifen
port(a:
instd_logic;
b:
instd_logic;
c:
instd_logic;
led_out:
outstd_logic_vector(6downto0));
endcomponent;
componentxuanze
port(enin:
instd_logic;
adr:
instd_logic_vector(3downto0);
jian_a:
outstd_logic;
jian_b:
outstd_logic;
jian_c:
outstd_logic;
jian_d:
outstd_logic);
endcomponent;
signallin_er:
std_logic;
signallin_ad:
std_logic_vector(3downto0);
signallin_ee:
std_logic;
signallin_ja:
std_logic;
signallin_jb:
std_logic;
signallin_jc:
std_logic;
signallin_jd:
std_logic;
begin
u1:
qiangdaportmap(en=>en,a=>a,b=>b,c=>c,d=>d,en_out=>lin_er,adrout=>lin_ad,led_out=>qdout);
u2:
jishiportmap(clk=>clk,rst=>rst,rst1=>lin_er,en1=>lin_ee,led_out=>js);
u3:
xuanzeportmap(adr=>lin_ad,enin=>lin_ee,jian_a=>lin_ja,jian_b=>lin_jb,jian_c=>lin_jc,jian_d=>lin_jd);
u4:
jifenportmap(a=>aa,b=>ja,c=>lin_ja,led_out=>jf_a);
u5:
jifenportmap(a=>ab,b=>jb,c=>lin_jb,led_out=>jf_b);
u6:
jifenportmap(a=>ac,b=>jc,c=>lin_jc,led_out=>jf_c);
u7:
jifenportmap(a=>ad,b=>jd,c=>lin_jd,led_out=>jf_d);
endbhv;
例化连接原理图:
五EDA抢答器设计心得
首先,通过本次设计,我学会了综合运用各种知识,使得我理论学习得到应用,对我深刻掌握理论知识是很有帮助的,同时也帮助我提高独立分析问题和解决问题的能力,这对以后的工作是很有帮助的。
在这次设计中,我花了不少的时间,其中有苦也有乐。
苦的是我付出了不少的汗水,乐的是在付出的过程中我得到了许多,也学会了许多。
因为一个人的能力毕竟有限,在设计方面难免会出现这样那样的错误,但正是这些错误促进了我的进步。
根据电路的特点,我用层次化结构化设计概念,将此项设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试,这培养我了层次化设计的概念。
在这次课程设计中,我真正体会到了知识的重要性。
在设计的过程中,遇到问题我会先独立思考,到自己不能解决的时候我就会和同学讨论,实在解决不了我就会向指导老师请教,应该说从功能的实现到流程图的绘制,从程序的编写到程序的检查,从程序的调试到实验报告的写作,其间每一个过程都凝聚着大家对我的帮助。
在设计的过程中我进一步养成了软件设计的方法,了解了设计的步骤,进一步加深了对《EDA课程设计》这门课的理解,增强了以后学习的兴趣,为以后的工作积累了一定的经验,感谢老师给我们提供这次设计的机会。
此次课程设计不仅加强了我对专业知识的学习与了解,更有许多的感慨,主要有以下几点:
(1)加强了我们动手、思考和解决问题的能力。
我们很少能有这种机会来锻炼自己,通过这次课程设计,起到了很好的锻炼效果。
(3)我沉得做课程设计同时也是对课本知识的巩固和加强,课本的知识太多,平时课间的学习并不能很好的理解程序的功能,所以在这次课程设计过程中,我们了解了很多程序的功能,并且对于其在实际中的使用有了更多的认识。
我觉得我们做任何事情都要沉下心来做,遇到问题时千万不能急躁,要冷静的分析问题,这是解决问题的最好的方法,也是最有效的方法。
最后,我要感谢老师和同学们给我的帮助,没有你们的帮助,我是不能完成此次课程设计的,真的很感谢你们!
参考文献
[1]《电子技术课程设计指导》彭介华高等教育出版社.2000年出版
[2]EDA技术及应用教程梁勇、李会萍等机械工业出版社
[3]《CPLD数字电路设MAX+plusⅡ》廖裕评等清华大学出版社,2001
[4]EDA实用技术及应用刘艳萍、高振斌、李志军 国防工业出版社
[5]EDA技术及其应用潘松、赵敏笑 科学出版社(2007-12出版)
[6]EDA技术及应用实践高有堂 清华大学出版社(2006-08出版)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 抢答 设计 报告