ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:141.97KB ,
资源ID:7327026      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7327026.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(武汉理工大学EDA课程设计数字抢答器的设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

武汉理工大学EDA课程设计数字抢答器的设计.docx

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