1、武汉理工大学EDA课程设计数字抢答器的设计1 绪论在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等多种手段指示出第一抢答者。为了能在实际中得到真正的应用,它必须有以下功能:(1).有在主持人按下开始开关后,抢答才有效。(2).当其中有一路选手按下后,其它的开关失效。(3).具有声音报告功能,当有选手按下时,同时有响声表示有人抢答。当然以上只是最简单而且是十分必要的功能。为了做到这点,必须设计一个所用元件最少,结构最简单,成功率最高的作品来。2 设计要求1)设计一个4组参赛的数字式抢答器2)抢答器具有第一信号鉴别和锁存功能,使除第一抢答外地按钮
2、不起作用。3)设置一个主持人“复位”按钮。4)主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2-3秒的音响。5)设置一个记分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。3 Quartus II软件简介Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDLVerilogHDL等多种设计输入形式,可以完成从设计输入到硬件配置的完整PLD设计流程。提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。4 方案设计4.1方案选择及论证数字式抢答器应具备锁存
3、功能,将第一个抢答者的信号进行锁存,并有音响予以配合,来保证抢答的及时性。此外,计分部分应由主持人操控,答对加十分,答错扣十分。所以,整体系统应使用抢答、扬声器、计分三部分。4.2设计框图图 1 总体框图5 程序及各模块设计5.1 主程序模块主程序负责将各个模块例化,使整个程序完整有调理。主程序包括三个模块:抢答模块、扬声器模块、计分模块。Pin【3.0】端口为四位选手的抢答输入端口,抢答信号由bee_in送至扬声器模块,扬声器接到高电平马上发声。另外,由计分模块显示出该选手的分数,以及对其进行加分减分操作。在三个模块结合下完成抢答的任务。各模块所对应的实体名:(1)抢答模块 QD(2)扬声器
4、模块 bee(3)计分模块 count 主程序模块QDQ将这三个模块组合在一起,并对其分别例化,使整个抢答系统完整且不易出错。图 2 主程序模块集成芯片5.2 抢答模块抢答鉴别模块用来准确直观地判断四位抢答者谁最先按下按钮,并为显示端送出信号,使观众能够清楚地知道是哪一组抢答成功,是整个系统的核心部分。同时组别显示端为下一模块输入信号,以方便主持人为该组抢答成功者进行加减分的操作。由pin3.0输入抢答信号,四位选手分别对应b1000、b0100、 b0010、 b0001。图 3 抢答模块集成芯片抢答语句:if rst =1 then gate1=1; bee_in=0; elsif pin
5、 = b1000 then pout= b1000;gate1=0;即当主持人按下复位之后,抢答开始。如果是一号选手抢到,则将b“1000”赋给pin,扬声器响起,并且将该选手的序号由pout端送入计分模块,方便评委给该选手作出评分。5.3 扬声器模块扬声器模块时钟信号采用50MHZ。扬声器在接到抢答信号以后持续响两秒钟,然后恢复低电平:if clkevent and clk=1 then if num=1000 then num=b0000_0000_0000_0000; bee_out=0;这样可以保证扬声器不会一直响下去。图 4 扬声器模块集成芯片5.4 计分模块如图,pout【3.0】
6、为选择对应的选手。Start为主持人的开始按键,right_in为加分按键,wrong_in为减分按键,output为对应选手的得分输出。加分计算方法:if pout = b1000 then count0= count1+b0000_1010;elsif pout = b0100 then count1= count2+b0000_1010;即预先给每位选手置入分数为100分,答对一题后,加十分。减法同理,见程序清单。图 5 计分模块集成芯片6 仿真及调试6.1抢答模块仿真图 6 抢答模块仿真此仿图中,时钟信号clk为默认值。先由rst进行清零,随后PIN端口3-0依次输入高电平,即分别在不
7、同时间按下抢答按键,对应的POUT端口立即响应。本图模拟中pin【3】选手最先按下抢答按键,其对应的pout【3】号输出端口也立即响应;同时,输出给扬声器的信号bee_in也同时响应。6.2 扬声器模块仿真图 7 扬声器模块仿真当bee_in接收到高电平信号时,意为有人已经按下抢答按键,扬声器马上响应,输出bee_out为高电平。6.3 计分模块仿真图 8 计分模块仿真计分模块工作:当按下STSRT时,start为高电平,计分模块开始工作。与其对应的选手选择端口POUT中pout【3】为高,意为pout【3】号选手已对问题作出了回答,并且答错,此时由主持人按下wrong_in按键,则判断为该选
8、手答错,扣十分。Count输出端口由原来的26+25+22=100变为26+24+21=90分。7 总结刚开始做这个题目的时候,软件还不会用,对于整个题目也是摸不着头脑。经过一段时间的收集资料,以及对软件功能的摸索,我逐渐开始熟悉这个课题并开始着手设计。在设计的过程中,遇到了许多困难,比如程序编译错误,仿真工具不会用,波形仿真错误等等。在与同学讨论的过程中,我的一些问题得到了解决,也收获了很多知识。这次EDA的课程设计,最大的收获应该是学会了如何熟练运用QuartusII软件的各种功能,以及对VHDL语言的熟悉。同时,我也学到了不屈不挠不放弃的精神,遇到困难要敢于面对,寻找解决的方法,而不是一
9、个人钻牛角尖。总之,这次课设让我受益匪浅。参考文献1郑燕.基于VHDL与Quartus软件的可编程逻辑器件应用与开发.北京:国防工业出版社,20112周润景.基于Quartus II的FPGA/CPLD数字系统设计实例.北京:电子工业出版社,20103徐志军,王金明等.EDA技术与VHDL设计.北京:电子工业出版社,2009.14 王彩凤,胡波等EDA技术在数字电子技术实验中的应用 J. 实验科学与技术,2011,(1):1-25 肖宇; 游明星在QuartusII仿真中输入激励波形数据 J. 今日电子,2010,(4):13-17附录 程序清单(1)主程序library ieee;use i
10、eee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-top entityentity QDQ is port(pin:in std_logic_vector(3 downto 0);-qiangda anjian rst,clk:in std_logic;-clk=50M start:in std_logic; right_in,wrong_in:in std_logic; bee_out:out std_logic; count0,count1,count2,count3:buffer std_logic_vector(7 down
11、to 0);-ji fen pout:buffer std_logic_vector(3 downto 0);-LEDend QDQ;architecture QDQ of QDQ iscomponent QD isport(pin:in std_logic_vector(3 downto 0); clk:in std_logic; rst:in std_logic; bee_in:out std_logic; pout:buffer std_logic_vector(3 downto 0);end component;component count isport(pout:in std_lo
12、gic_vector(3 downto 0); start:in std_logic; right_in,wrong_in:in std_logic; count0,count1,count2,count3:buffer std_logic_vector(7 downto 0);end component;component bee isport(bee_in:in std_logic; bee_out:out std_logic; clk:in std_logic; pout:in std_logic_vector(3 downto 0);end component;signal bee_i
13、n:std_logic;beginQD_use:QD port map(pin,clk,rst,bee_in,pout);count_use:count port map(pout,start,right_in,wrong_in,count0,count1,count2,count3);bee_use:bee port map(bee_in,bee_out,clk,pout);end QDQ;(2)抢答模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity QD is port(pin:
14、in std_logic_vector(3 downto 0); clk:in std_logic; rst:in std_logic; bee_in:out std_logic; pout:buffer std_logic_vector(3 downto 0);end QD;architecture QD of QD issignal gate,gate1,clk_1:std_logic;beginclk_1 = gate and clk;process(rst,gate1)beginif rst =1 then gate=1;elsif gate1=0 then gate=0;else n
15、ull;end if;end process;process(clk_1)begin if clk_1event and clk_1 =1 then if rst =1 then gate1=1; bee_in=0; elsif pin = b1000 then pout= b1000; gate1=0; bee_in=1; elsif pin = b0100 then pout= b0100; gate1=0; bee_in=1; elsif pin = b0010 then pout= b0010; gate1=0; bee_in=1; elsif pin = b0001 then pou
16、t= b0001; gate1=0; bee_in=1; else NULL; end if; end if;end process;end QD;(3)扬声器模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bee isport(bee_in:in std_logic; bee_out:out std_logic; clk:in std_logic; pout:in std_logic_vector(3 downto 0);end bee;architecture bee of
17、bee issignal num:std_logic_vector(15 downto 0);signal lcx:std_logic;begin process(clk)beginlcx=bee_in;if lcx=0 and bee_in=1 thenbee_out=1;num=b0000_0000_0000_0000;elsif clkevent and clk=1 then if num=1000 then num=b0000_0000_0000_0000; bee_out=0; elsif num1000 and pout/=0000 then num=num+b0000_0000_
18、0000_0001;bee_out=1; end if;end if;end process;end bee;(4)计分模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count isport(pout:in std_logic_vector(3 downto 0); start:in std_logic; right_in,wrong_in:in std_logic; count0,count1,count2,count3:buffer std_logic_vector(7 d
19、ownto 0);end count;architecture count of count isbeginprocess(right_in,wrong_in,start)beginif start = 1 then count0=b0110_0100; count1=b0110_0100; count2=b0110_0100; count3=b0110_0100;elsif right_in=1 then if pout = b1000 then count0= count1+b0000_1010; elsif pout = b0100 then count1= count2+b0000_1
20、010; elsif pout = b0010 then count2= count3+b0000_1010; elsif pout = b0001 then count3= count0+b0000_1010; else null; end if;elsif wrong_in=1 then if pout = b1000 then count0= count1-b0000_1010; elsif pout = b0100 then count1= count2-b0000_1010; elsif pout = b0010 then count2= count3-b0000_1010; elsif pout = b0001 then count3= count0-b0000_1010; else null; end if;else null;end if;end process; end count;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1