基于FPGA八路电子抢答器设计1.docx
《基于FPGA八路电子抢答器设计1.docx》由会员分享,可在线阅读,更多相关《基于FPGA八路电子抢答器设计1.docx(15页珍藏版)》请在冰豆网上搜索。
基于FPGA八路电子抢答器设计1
基于FPGA八路电子抢答器设计
学生:
吴知龙
学号:
12021104
班级:
12电科二班
学院:
电子工程与电气自动化
日期:
2014。
12。
14
基于FPGA八路电子抢答器设计
摘要:
本文基于八路电子抢答器基本原理,充分利用Altera公司的FPGA芯片CycloneⅡEP2C5T144在软件Max+plusII10.0和硬件实验箱(ZY11EDA13BE)的平台上完成了八路电子抢答器的设计。
设计中充分对八路电子抢答器每个模块的特点进行了分析和优化,节省系统资源。
设计完成时在实验箱平台进行验证,对8个输入抢答信号进行锁存,并且无法进行下一次抢答,将抢答信号输出,用数码管进行显示等。
关键词:
抢答器现场可编程逻辑门阵列
Abstrsct:
Inthispaper,basedonthebasicprincipleofeight—channelelectronicbuzzer,makefulluseoftheCycloneFPGAchipofAlteracompanyⅡEP2C5T144inMax+plusII10.0softwareandhardwareexperimentbox(ZY11EDA13BE)platformscompletedeight—waydigitalviestoanswerfirstdevicedesign.Fullytoeight-wayelectronicbuzzerinthedesignofthecharacteristicsofeachmoduleareanalyzedandoptimized,savesystemresources。
Designisfinishedinexperimentboxplatformforvalidation,to8viestoanswerfirstinputsignalislatched,andcouldnotbenexttimeviestoanswerfirst,viestoanswerfirstsignaloutput,usingdigitaltubedisplay,etc。
Keyworld:
responderFPGA
1引言
1。
1EDA概述
20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性.这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展.
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
1。
2VHDL概述
VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。
VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。
目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。
当然在一些实力较为雄厚的单位,它也被用来设计ASIC。
VHDL主要用于描述数字系统的结构,行为,功能和接口.除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体分成外部和内部,既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
2设计要求
八路电子抢答器是为竞赛抢答而设计的一种优先判决器,竞赛者可以分为若干组,抢答时各组对主持人提出的问题做出判断,并按下抢答按键回答问题,我们称之为抢答器 。
抢答器应用非常广泛,可以涉及很多方面,例如,通信方面,可以对多种信号进行优先判决,从而做出相应的工作,并且其他信号不予干扰。
航空航天方面,可以对多路信号进行锁存和判决,从而达到应用的效果.
本文所设计的八路电子抢答器,是利用Altera公司的FPGA芯片CycloneⅡEP2C5T144在软件Max+plusII10.0和硬件实验箱(ZY11EDA13BE)的平台,满足对8个抢答信号的其中一个进行锁存,再通过数码管进行显示相应数字.由主持人进行复位清零,再进行下一轮抢答.该控制器由抢答器、编码器、译码器、8位的与门四部分组成.
3设计方案
3.1抢答器原理
抢答器由8个发射信号器、1个接收器、一个控制器组成,可用于8组或8组以下的智力竞赛中。
设计一个八路抢答器,用VHDL编写程序,能够使8个人同时进行抢答类型的游戏,可同时共8名选手或8个组同时参加比赛,他们编号分别为1,2,3,4,5,6,7,8各用一个抢答器按钮,按钮的编号和选手编号相对应,依次为a0,a1,a2,a3,a4,a5,a6,a7.比赛前,将参赛组从1至8编号,每组发给对应的一个发射器。
将接收器放于各组中央或前方.主持人按一下控制器(该键用于启动抢答和每次抢答后器件清零的作用)后,抢答开始.此后,哪一组最先按下发射器上的抢答键,接收器就立即显示该组的组号并锁定,同时发出蜂鸣声,提示抢答已有结果并结束抢答。
以后,按下任何一路抢答键均不起反映.只有主持人再次按动启动键后,才能进行下一次抢答。
该控制器由抢答器、编码器、译码器、8位的与门四部分组成。
根据功能要求,须设计有抢答电路、编码电路、译码电路、主持人控制电路,各个电路都有其自己的功能。
通过复位按键RST,电路进入就绪状态,等待抢答。
然后再由主持人发布抢答命令进入抢答状态。
在电路中“1-8”为8路抢答器的8个按键,如果有人按下按键,程序就会判断是谁先按下的,然后输出抢答者号码的七段码值,并封锁键盘,保持刚才按键按下时刻的时间,禁止其他 人按键的输入,从而实现了抢答的功能。
当要进行下一次的抢答时,由主持人先按一下复位按键RST,电路复位,进入下一次抢答的就绪状态。
该电路的组成如图3。
1。
1:
图3.1.1电路组成
基于上述原理,这里给出八路抢答器系统工作原理框图(图3.1。
2):
图3.1。
2工作原理图
3。
2模块分析
(1) 抢答输入开关电路
该电路由8个开关按键组成,每一个选手与一个开关对应。
开关为常开型,即当按下开关时,开关自动的弹开断开,此时输入抢答信号自动变为高电平;当按下抢答开关时,开关闭合,输入抢答信号为低电平。
(2)锁存器
当只要有一个且为任意一个抢答输入信号产生时,触发器电路被触发,在输出端产生相应的开关电平信息,同时为避免之后的抢答开关按钮也按下产生错乱,最先产生的输出电平变化又反馈回来将触发器锁定住,并保持输出的电平信息.这样就避免了抢答先后发生紊乱不清楚的现象发生.
(3)编码器
编码器的作用是将开关信息转化为8421BCD码,以提供数字显示电路所需要的编码输入,低电平有效.将数字1-8进行编码,转化为8421BCD码。
(4)译码器
译码器的作用是将编码器输出的8421BCD码转化为数码管需要的逻辑状态,译码器由七段共阴二极管组成,高位在左,低位在右,如当输入译码器的信号为“1101101”时,数码管的七个段g,f,e,d,c,b,a分别接1,1,0,1,1,0,1,接有高电平的段亮,于是数码管显示为“5”。
(5)解锁器
当触发锁存电路被锁存后,若要进行下一轮的重新抢答,则需要将锁存器解锁,可通过强迫是复位控制置为1,使锁存处于等待锁存状态,以准备进行下一轮的抢答.
(6)数码显示器与喇叭
数码显示管有发光的共阴二极管(LED)数码管,数码管显示相应的数字1—8,喇叭为高电平触发,通过RST复位键控制,RST复位键按下,喇叭触发。
3。
3系统整体构架
图3。
3。
1系统整体构架
如图3.3。
1所示为抢答器的系统框图,可以看到G[0]~G[7]为8组选手的输入抢答按钮,RST为复位控制信号,B[1]~B[8]是传输到编码器的中间信号,并由译码器输出对应的数码管编号。
该系统描述的功能是当所有开关输入信号G[0]~G[7]均未按下,锁存器输出全为高电平,经过8个输入的与门反馈信号仍为高点平,该信号作为锁存器时能端控制信号即en,使锁存器出浴等待接收触发输入状态;当任一开关输入信号G[0]~G[7]中的任一开关按下时,输出信号中必然会有一路为低电平,则反馈信号发生与门后变成低电平,时能信号EN也为成为低电平后,EN传给锁存器则立即使锁存器接受到的开关被封锁,这时其他抢答者信息的输入将被封锁,不能再传输到锁存器中。
由此可见,触发锁存器电路具有时序电路的特征,是实现抢答器功能的关键所在。
RST为复位控制信号,也是低电平有效,当主持人复位后即提示抢答开始时,编码器的B[1.。
8]全为高电平,反馈时能信号与门为高电平,是锁存器处于等待抢答输入信号的状态。
输入的信号一旦锁定后,译码器的B[3..0]信号的输入到7段译码器中,7段译码器含有7段共阴极二极管,对输入的LED[0]~LED[7]进行验证,led数码管对应显示出最先抢答者的编号,并且蜂鸣器发出响声。
3。
4各子模块的设计与仿真
(1)锁存器模块与仿真波形
1锁存器VHDL源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164。
ALL;
USEIEEE.STD_LOGIC_UNSIGNED。
ALL;
ENTITYsuocunqiIS
PORT(A1,A2,A3,A4,A5,A6,A7,A8:
INSTD_LOGIC;
B1,B2,B3,B4,B5,B6,B7,B8:
OUTSTD_LOGIC;
EN,RST:
INSTD_LOGIC);
ENDsuocunqi;
ARCHITECTUREONEOFsuocunqiIS
BEGIN
PROCESS(EN,RST,A1,A2,A3,A4,A5,A6,A7,A8)
BEGIN
IFRST=’0'THEN
B1<='1’;B2<='1';
B3〈=’1’;B4〈=’1';
B5<='1’;B6<=’1';
B7<='1';B8<=’1’;
ELSIFEN=’1’THEN
B1<=A1;B2<=A2;
B3<=A3;B4〈=A4;
B5〈=A5;B6〈=A6;
B7<=A7;B8〈=A8;
ENDIF;
ENDPROCESS;
ENDONE;
2锁存器波形仿真图
图3。
4.1锁存器仿真图
锁存器波形分析:
从波形图3。
4。
1可以得出当复位信号RST复位后即为高电平时,抢答开始,当一旦有抢答输入信号时。
使能信号EN立即变为低电平,即锁存发生,此时再有抢答信号输入已经不发生作用。
如图抢答开始,最先抢答的是A1,此时蜂鸣器LA变为高电平响起,时能EN置为0,锁存开始,之后的抢答无用了,在之后的RST=1那段,输出B=”01111111”,同理第二个RST=1段是B=”10111111".
3锁存器的封装模块图
图3.4.2锁存器封装模块
(2)编码器模块与仿真波形
1编码器VHDL源程序
LIBRARYIEEE;
USEIEEE。
STD_LOGIC_1164.ALL;
ENTITYbianmaqiIS
PORT(A1,A2,A3,A4,A5,A6,A7,A8:
INSTD_LOGIC;
B:
OUTINTEGERRANGE1TO8);
ENDbianmaqi;
ARCHITECTUREABCOFbianmaqiIS
SIGNALA:
STD_LOGIC_VECTOR(1TO8);
BEGIN
A〈=A1&A2&A3&A4&A5&A6&A7&A8;
PROCESS(A)
BEGIN
CASEAIS
WHEN”11111110"=〉B<=1;
WHEN”11111101"=>B<=2;
WHEN”11111011”=>B〈=3;
WHEN”11110111”=〉B<=4;
WHEN"11101111"=>B<=5;
WHEN"11011111"=〉B〈=6;
WHEN"10111111”=>B〈=7;
WHEN”01111111"=>B<=8;
WHENOTHERS=>B<=0;
ENDCASE;
ENDPROCESS;
ENDABC;
2编码器仿真波形
图3。
4。
3编码器仿真图
波形分析:
如图3。
4.3知,编码器为纯组合电路,处理数据为二进制,当分别向编码器输入不同信号时,对应输出不同的数值。
如输入A<="11111111",译码器输出B<= ”1",其他同理。
3编码器的封装模块图
图3.4。
4编码器封装模块
(3)译码器模块与仿真波形
1译码器VHDL源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164。
ALL;
ENTITYyimaqiIS
PORT(B:
ININTEGERRANGE8DOWNTO0;
LED:
OUTSTD_LOGIC_VECTOR(7DOWNTO1);
LA:
OUTSTD_LOGIC);
ENDyimaqi;
ARCHITECTUREABCOFyimaqiIS
BEGINPROCESS(B)
BEGIN
CASEBIS
WHEN 1=>LED<=”0000110”;
WHEN 2=>LED〈="1011011";
WHEN 3=>LED<=”1001111";
WHEN 4=〉LED〈="1100110";
WHEN 5=〉LED〈="1101101”;
WHEN 6=>LED〈=”1111101”;
WHEN 7=>LED<=”0000111”;
WHEN 8=>LED〈=”1111111";
WHEN OTHERS=〉LED<=”0111111”;
ENDCASE;
IFB〉=1ANDB〈=8THENLA<='1';
ELSELA〈='0’;
ENDIF;
ENDPROCESS;
ENDABC;
2译码器波形仿真图
图3.4。
5译码器仿真图
波形分析:
如图3。
4。
5知,七段数码为纯组合电路,处理数据为二进制,当分别向译码器输入不同信号时,对应数码管的七个段接高电平的亮起,从而输出不同的数值。
如输入B<=’0’,译码器输出LED〈= ”3F”,数码管显示为“0”,数码管输出LA<='0',喇叭不响;如输入B〈='1’,译码器输出LED〈=”06”,数码管显示为“1”,数码管输出LA<=’1',喇叭响;其他同理。
3译码器的封装模块
图3.4。
6译码器封装模块
(4)模块和仿真波形
1完整的硬件编辑原理图
图3.4.7系统原理图
2完整模块波形仿真图
图3.4.8系统仿真图
波形分析:
由图3.4.8可知,此图为8路抢答器的完整的时序仿真波形,它把抢答器,编码和译码的模块综合为一体,使抢答输入一发生,便在数码显示管上显示该组最先抢答的编号。
从上述文本语言输入可见,是将二者的语言综合写在了一块儿,综合后的文本更加简练,由仿真图形也可以清晰看出该电路的最终功能和应用。
4调试与故障处理
4.1调试
引脚锁定完成,便进行硬件下载命令.试验箱接通电源后,便进行实验验证,按下清零键RST,然后按下抢答的开关按钮,当下按的是第几个编号,数码管显示的就是该编号,同时蜂鸣器响起,再按其他的抢答按钮已无反应,表示抢答成功,该锁存模块电路时正确的.然后再按下清零键RST,再逐一尝试其他的抢答开关按钮,观察是否都能正常工作,如果都正常工作,则表示该8路智能抢答器设计正确.
打开实验箱,讲导线连接到对应的引脚上,按下复位键,此时只有发光二级管是亮的,然后按下一号组,蜂鸣器响起,同时显示器上显示1,这时再按下2,显示器仍然显示1。
按下复位键,先按2,再按3,显示器显示2,蜂鸣器叫。
实验成功。
4。
2故障处理和分析
如果蜂鸣器不叫,考虑是否导线短路或者断路,然后依次检测所用导线,如果此时仍然不叫,检测所用引脚是否是好的,用万用表检测。
如果仍然不叫,回来看程序,看程序中是否用了非门将低电平信号转换为高电平信号。
显示管不能显示数字。
仍然首先考虑导线,各个线段进行测试,判断是否良好。
若完好继续检测芯片是否完好。
在8个显示引脚随意输入一个二进制数组,然后看该对应的显示断好不,依次检测。
如果不能锁存,问题就一般出现在原理上,应该从原理上进行分析。
5设计心得体会
这次的EDA课程设计,熟练地掌握了EDA设计软件max+plus2的操作,之前学会了基本的课程设计以及编译仿真的操作,这次的八路电子抢答器又让我学到很多,但是其中也遇到了很多困难。
这次实验不仅仅是验证性的,还要由自己来分析,思考,设计,测试和验证以及改正,所以这个期间我个人觉得还是有困难的.还好的是老师在课程设计之前给我们大家讲了一下抢答器的基本原理和功能,在理解了它的三个模块锁存器,编译器和译码器各自的功能和应用之后我们设计起来就事半功倍了,
实验过程中,我遇到的最大的问题就是在设计用VHDL语言编程的时候,总是不能完成硬件模块的连接,编译时总是有错误,最后在自己查阅资料和老师的帮助下,将程序全部重新封装,以及重新连接,最后通过了编译。
我在实验室进行实物操作时也没有想象中的那么顺利,我重复操作了很多次,最后将实物焊接起来,进行最后调试。
这次课程设计完成,感谢常老师的细心指导,认真教学,为我以后的实验打下坚实的基础。