VHDL语言四人抢答器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中南林业科技大学

课程设计报告

设计名称:基于VHDL语言的四人抢答器

姓名:杜涵学号:******** 专业班级:电子信息工程一班

院(系):计算机与信息工程学院

设计时间:2015年12月8日

设计地点:东园22栋201

目录

一、设计题目………………………………………………

二、设计要求………………………………………………

三、设计目的………………………………………………

四、设计背景………………………………………………

五、使用工具………………………………………………

六、设计原理………………………………………………

七、设计结构………………………………………………

八、原理图…………………………………………………

九、模块程序………………………………………………

十、引脚分配………………………………………………十一、设计结果验证………………………………………十二、总结…………………………………………………

一、设计题目:基于VHDL语言的四路抢答器

二丶设计要求:

1、设计制作一个竞赛抢答器,每组受控于一个抢答开关,分别为S1, S2, S3, S4。

2、控制键K,用于控制整个系统清零, K=0,系统清零;抬起复位键时,K=1,抢答开始。

3、每答对一题计十分,每次答题时间不能超过60秒。

4、第一抢答者按下抢答按钮,对应的led灯点亮,同时数码管显示是第几位抢答者,并封锁其他各组的按钮,即其他任何一组按键都不会再使电路响应。与此同时,数码管开始显示60秒的倒计时。通过K键复位,开始下一轮抢答。

三、设计目的

1.通过设计竞赛抢答器的实例来体会设计实际产品的过程,在学好理论的基础上,提高动手实践能力。

2.学习怎样用vhdl语言来描述自己的设计思路,调试硬件后,能够使产品实现功能。

3.进一步掌握用vhdl语言编写数字电路。

4.在做课题过程中,掌握多位共阴极扫描显示数码管的驱动及编码,学会使用和调试硬件。

四、设计背景

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

抢答器是一种应用非常广泛的设备,在各种竞猜、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管可控硅、发光管等组成,能通过发光管的指示辨认出选手。现在大多数抢答器均使用单片机和数字集成电路,并增加了许多新的功能,如选手号码显示、抢按器或抢按后的计时、选手得分显示等功能。

五、使用工具:装有Quartus II软件的PC、Cyclone 系列FPGA开发板(ep2c5t144c8)

六、设计原理

根据设计要求,我们经过分析应用分模块的方式比较容易设计该抢答器,我们底层应用VHDL语言,顶层应用原理图的方式进行设计,然后通过仿真验证并不断修改完善设计。

模块:

(1)四人按键抢答模块:设计为五个输入按键,其实S键为主持人控制抢答过程的按键,当有选手抢答后使其他人的按键无效。然后根据抢答成功者的编号使对应LED灯点亮,同时输出一个状态让数码管显示抢答者编号。主持人S键复位,开始下一轮抢答。

(2)计时模块:在有人抢答后开始一个60秒的倒计时,并输出道数码管显示,CLK来自1HZ分频模块。

(3)计分模块:在选手答题正确后通过外接ADD键给该选手加分,每次加十分,并输出到数码管显示,CLEAR键为清空所有选手分数。

(4)译码模块:讲选手序号,倒计时以及选手分数显示出来,CLK由1KHz分频模块提供。

(5)1HZ与1KHz分频模块:程序由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_logic_vector(3 downto 0);

XI:buffer std_logic_vector(3 downto 0)); End QD;

Architecture aa of QD is

signal s_0,s_1,s_2,s_3,l_1,l_2,l_3,l_4:std_logic; begin

process(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 (clk'event and clk='1') then

if (s_0='1' or s_1='1' or s_2='1' 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";

相关文档
最新文档