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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

VHDL语言四人抢答器.docx

1、VHDL语言四人抢答器中南林业科技大学课程设计报告 设计名称: 基于VHDL语言的四人抢答器 姓 名: 杜涵 学 号: 20134491 专业班级: 电子信息工程 一班 院(系): 计算机与信息工程学院 设计时间: 2015年12月8日 设计地点: 东园22栋201 一、设计题目二、设计要求三、设计目的四、设计背景五、使用工具六、设计原理七、设计结构八、原理图九、模块程序十、引脚分配十一、设计结果验证十二、总结一、设计题目:基于VHDL语言的四路抢答器二丶设计要求: 1、设计制作一个竞赛抢答器,每组受控于一个抢答开关,分别为S1, S2, S3, S4。 2、控制键K,用于控制整个系统清零,

2、K=0,系统清零;抬起复位键时,K=1,抢答开始。 3、每答对一题计十分,每次答题时间不能超过60秒。 4、第一抢答者按下抢答按钮,对应的led灯点亮,同时数码管显示是第几位抢答者,并封锁其他各组的按钮,即其他任何一组按键都不会再使电路响应。与此同时,数码管开始显示60秒的倒计时。通过K键复位,开始下一轮抢答。三、设计目的 1.通过设计竞赛抢答器的实例来体会设计实际产品的过程,在学好理论的基础上,提高动手实践能力。 2.学习怎样用vhdl语言来描述自己的设计思路,调试硬件后,能够使产品实现功能。 3.进一步掌握用vhdl语言编写数字电路。4.在做课题过程中,掌握多位共阴极扫描显示数码管的驱动及

3、编码,学会使用和调试硬件。四、设计背景现代电子产品几乎渗透了社会的各个领域EDA技术是电子设计的发展趋势,EDA工具从数字系统设计的单一领域,应用范围己涉及模拟、微波等多个领域,可实现各个领域电子系统设计的测试、设计仿真和布局布线等。设计者只要完成对电子系统的功能描述,就可利用计算机和EDA工具,进行设计处理,最终得到设计结果。 随着大规模集成电路技术和计算机技术的不断发展,即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。从目前的EDA技术来看,其发展

4、趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。抢答器是一种应用非常广泛的设备,在各种竞猜、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管可控硅、发光管等组成,能通过发光管的指示辨认出选手。现在大多数抢答器均使用单片机和数字集成电路,并增加了许多新的功能,如选手号码显示、抢按器或抢按后的计时、选手得分显示等功能。五、使用工具:装有Quartus II软件的PC、Cyclone系列FPGA开发板(ep2c5t144c8)六、设计原理根据设计要求,我们经过分析应用分模块的方式比较容易设计该抢答器,我们底层应用VHDL语言,顶层应用原理图的方式进行设计

5、,然后通过仿真验证并不断修改完善设计。模块:(1)四人按键抢答模块:设计为五个输入按键,其实S键为主持人控制抢答过程的按键,当有选手抢答后使其他人的按键无效。然后根据抢答成功者的编号使对应LED灯点亮,同时输出一个状态让数码管显示抢答者编号。主持人S键复位,开始下一轮抢答。(2)计时模块:在有人抢答后开始一个60秒的倒计时,并输出道数码管显示,CLK来自1HZ分频模块。(3)计分模块:在选手答题正确后通过外接ADD键给该选手加分,每次加十分,并输出到数码管显示,CLEAR键为清空所有选手分数。(4)译码模块:讲选手序号,倒计时以及选手分数显示出来,CLK由1KHz分频模块提供。(5)1HZ与1

6、KHz分频模块:程序由FPGA板的50MHz频率编写。七、设计结构八、原理图:九、模块程序1、抢答模块程序:Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Use ieee.std_logic_arith.all;Entity QD is Port( s,clk:in std_logic; s0,s1,s2,s3:in std_logic; states:buffer std_logic_vector(3 downto 0); T:out std_logic; LIANG:buffer std_l

7、ogic_vector(3 downto 0); XI:buffer std_logic_vector(3 downto 0); End QD;Architecture aa of QD issignal s_0,s_1,s_2,s_3,l_1,l_2,l_3,l_4:std_logic;beginprocess(s0,s1,s2,s3,s,clk)begin XI=1111;if (s=0) then s_0=0;s_1=0;s_2=0;s_3=0;LIANG=1111; elsif (clkevent and clk=1) then if (s_0=1 or s_1=1 or s_2=1

8、or s_3=1) then null; elsif s0=0 then s_0=1;states=0001;LIANG=1110; elsif s1=0 then s_1=1;states=0010;LIANG=1101; elsif s2=0 then s_2=1;states=0011;LIANG=1011; elsif s3=0 then s_3=1;states=0100;LIANG=0111; else states=0000; end if; end if;T= s_0 or s_1 or s_2 or s_3;end process;end aa ;说明:S为主持人复位键; S

9、0,S1,S2,S3:四个抢答选手; STATES:抢答组号输出 T:在S按下后使倒计时停止; LIANG:控制四个LED灯,点亮选手对应LED灯; XI:使另外四个LED灯熄灭;2、计时模块程序:library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_1164.all;entity JS isport(clk,s,T:in std_logic; sw,gw:buffer std_logic_vector(3 downto 0);end JS;architectur

10、e aa of JS isbeginprocess(clk,s,T)beginif (s=0) then sw=0110;gw=0000; elsif(clkevent and clk=1) then if(T=0) then gw=gw;sw=sw; elsif (gw=0000) then gw=1001; if(sw=0000) then sw=0000; else sw=sw-1; end if; else gw=gw-1; end if; if (sw=0 and gw=0) then sw=0000;gw=0000; end if; end if;end process;end a

11、a;说明:S:按下后倒计时开始; SW:输出倒计时十位数; GW:输出倒计时百位数3、计分模块LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JFQ IS PORT(RST: IN STD_LOGIC; ADD: IN STD_LOGIC; CHOS: IN STD_LOGIC_VECTOR(3 DOWNTO 0); OUT1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END ENTITY JFQ ; ARCHITECTURE ART OF JFQ

12、IS BEGIN PROCESS(RST,ADD,CHOS) IS VARIABLE POINTS_A0: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_B0: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_C0: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_D0: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST=1 THEN POINTS_A0:=0000; POINTS_B0:=0000; POINTS_C0:=0

13、000; POINTS_D0:=0000; ELSIF (ADDEVENT AND ADD=0) THEN IF CHOS=0001 THEN IF POINTS_A0=1001 THEN POINTS_A0:=0000; ELSE POINTS_A0:=POINTS_A0+1; END IF; END IF; IF CHOS=0010 THEN IF POINTS_B0=1001 THEN POINTS_B0:=0000; ELSE POINTS_B0:=POINTS_B0+1; END IF; END IF; IF CHOS=0011 THEN IF POINTS_C0=1001 THEN

14、 POINTS_C0:=0000; ELSE POINTS_C0:=POINTS_C0+1; END IF; END IF; IF CHOS=0100 THENIF POINTS_D0=1001 THEN POINTS_D0:=0000; ELSE POINTS_D0:=POINTS_D0+1; END IF; END IF; END IF; IF chos=0001 then out1=POINTS_a0;ELSIF chos=0010 then out1=POINTS_b0;ELSIF chos=0011 then out1=POINTS_c0;ELSIF chos=0100 then o

15、ut1=POINTS_D0;ELSIF chos=0000 then out1=0000;END IF;END PROCESS; END ARCHITECTURE ART; 说明:RST:分数清零按键; ADD:加分按键; CHOS=STATES:输入选手组号; OUT1:输出分数;4、译码显示模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity YM is port(a:in std_logic_vector(3 dow

16、nto 0); b:in std_logic_vector(3 downto 0); c:in std_logic_vector(3 downto 0); clk1:in std_logic; Y:in std_logic_vector(3 downto 0); adres: out std_logic_vector(7 downto 0); led7s: out std_logic_vector(7 downto 0) );end YM;ARCHITECTURE segled of YM issignal S:integer range 0 to 12;signal D:std_logic_

17、vector(3 downto 0);signal zero:std_logic_vector(3 downto 0);beginP1: process(clk1) begin zero=0000;if clk1event and clk1=1 then if S5 then S=S+1; else SD=a; adresD=b; adresD=c; adresD=Y; adresD=zero;adresnull; end case;end process P2;P3:process(D) begin case D is when 0000 =led7sled7sled7sled7sled7s

18、led7sled7sled7sled7sled7snull; end case;end process P3;end segled;说明:A:输入选手组号; B:倒计时十位; C:倒计时个位; Y:选手分数; ADRES:控制数码管位选; LED7S:控制数码管段选;5、分频模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity FP is port( clk: in STD_LOGIC; clk1Hz: out std_l

19、ogic);end FP;ARCHITECTURE segled of FP isbegin PROCESS (clk) VARIABLE count:INTEGER RANGE 0 TO 49999999;BEGIN IF clkEVENT AND clk=1 THEN IF count=24999999 THEN clk1Hz=0; count=24999999 AND count=49999999 THEN clk1Hz=1; count:=count+1; ELSE count:=0; END IF; END IF; END PROCESS ; END ARCHITECTURE seg

20、led;(分频1HZ时将其中的数去掉三个9)6、计分器ADD加分输入消抖模块程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY XIAOD IS PORT (CLK,ADD:IN STD_LOGIC; ADD_EN: OUT STD_LOGIC );END ENTITY;ARCHITECTURE BHV OF XIAOD ISBEGINPROCESS(CLK,ADD) VARIABLE COUNT1 :INTEGER RANGE 0 TO 100000; BEGIN IF ADD=

21、0 THEN IF RISING_EDGE(CLK) THEN IF COUNT1100000 THEN COUNT1:=COUNT1+1; ELSE COUNT1:=COUNT1; END IF; IF COUNT1=99999 THEN ADD_EN=1; ELSE ADD_EN=0; END IF; END IF; ELSE COUNT1:=0;END IF; END PROCESS ;END;十:引脚分配十一、设计结果验证 编译成功后下载到FPGA板上进行结果验证:数码管显示0 60 00;按下S后,显示0 59 00;S0抢答后,显示1倒计时停止 按下ADD显示10 第一个LED灯点亮;S1抢答后,显示2倒计时停止 按下ADD显示10第二个LED灯点亮;S2抢答后,显示3倒计时停止 按下ADD显示10第三个LED灯点亮;S3抢答后,显示4倒计时停止 按下ADD显示10第四个LED灯点亮;若按下RST键,所有选手得分清零。十二:总结在这次的课程设计中,我对VHDL语言以及QUARTUS II软件的应用有了更深刻的认识。一个个程序的编写及模块的生成锻炼了我的思维,让我对每个模块的功能、每段程序的作用有了更多的了解。通过不断的思考,总的原理图才能够完成。通过不断的出错与修改、完善,最终才能在FPGA上应用,我感觉付出都是值得的。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1