数字式竞赛抢答器VHDL.doc
《数字式竞赛抢答器VHDL.doc》由会员分享,可在线阅读,更多相关《数字式竞赛抢答器VHDL.doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除数字系统设计与硬件描述语言期末考试作业题目: 数字式竞赛抢答器设计 学院: 电子信息工程 专业: 电子信息工程 学号: 姓名: 一、 选题设计描述1. 功能介绍此设计用于竞赛的四人抢答,有如下的功能:(1) 具有多路抢答功能,台数设计为四;(2) 具有抢答器开始后30秒倒计时,30秒后无人抢答显示超时,并报警;(3) 能显示超前抢答犯规,并警报;(4) 能显示各组得分,大队加分,答错扣分;当系统复位,主持人按下抢答开始按键,处于使能状态,抢答开始,某路抢答键按下时,该路信号将其他路信号锁存,同时抢答铃声响起,直至此路按键松开,显示该路组号。2.
2、算法简介本设计采用分层设计思想,分为:信号鉴别模块、计时模块、计分模块、BCD译码模块、分频器,还有顶层模块。信号鉴别模块。此模块主要实现抢答器的抢答功能,并能够分辨是正常抢答还是提前抢答,选取最先按下的一路信号,锁存其余信号,实现信号选取功能。在此模块中,用到的信号为抢答信号a、b、c、d;抢答使能信号en;抢答结果信号states;警报时钟信号clk2;复位信号rst;提前抢答信号fangui。计时模块。此模块主要实现抢答过程中的计时功能,在抢答开始后进行30秒的倒计时,且在30秒后显示无人抢答报警信号。其中有抢答时钟信号clk;系统复位信号rst;抢答使能信号en;无人抢答警报信号war
3、n;计时中止信号stop;计时十位个位信号tb,ta。计分模块。此模块主要实现给四个抢答器计分的功能,初始条件下,为每个抢答器信号预制5分,当某组抢答且回答正确时加一分,答错减一分,未获答题机会时保持不变。其中设有时钟信号clk;复位信号rst;抢答使能信号en;抢答结果显示信号states;记分加减信号add(add1时为加,add0时为减);四个信号的得分显示信号a_out,b_out,c_out,d_out。BCD译码模块。此模块主要实现将抢答结果信号显示在bcd七段译码器上。其中输入信号a;输出译码结果信号q。分频器。此模块主要实现时钟分频功能。在开头对时钟信号进行一次千分频。其中时钟
4、输入信号clkin,输出信号clk。顶层模块。将前几个模块综合在一起,形成一个整体。分频器输出作为其他模块所需的时钟信号,使整个系统正常运转。二、 程序源代码及说明抢答信号鉴别模块的程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qdjb is port(clk2,en,rst:in std_logic; a,b,c,d:in std_logic; fangui:out std_logic; states:out std_logic_vector(3 downto 0);end
5、 qdjb;architecture one of qdjb issignal sinor,fanguif,tmp:std_logic;signal cnt:std_logic_vector(5 downto 0);beginsinor=a or b or c or d;p1:process(a,rst,b,c,d,tmp) begin if rst=1 then -复位信号有效,系统复位。 tmp=1;states=0000; elsif tmp=1 then if a=1 then -判断哪路信号变化,进行选取 states=0001;tmp=0; -对states进行置数 elsif b
6、=1 then states=0010;tmp=0; elsif c=1 then states=0011;tmp=0; elsif d=1 then states=0100;tmp=0; else tmp=1;states=0000; end if ; end if;end process p1; p2:process(clk2,en,rst,cnt) -判断是否提前抢答并报警 begin if rst=1 then cnt=000000;fanguif=0; -初始化提前抢答犯规信号 elsif clk2event and clk2=1 then if en=0 and sinor=1 t
7、hen if cnt111111 then fanguif=not fanguif;cnt=cnt+1; else fanguif=0; end if; end if; end if;end process p2;fangui=fanguif;end one;计时模块的程序:library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity js is port(clk,rst,en,stop:in std_logic; warn:buffer std_logic; ta,tb:buffer std_
8、logic_vector(3 downto 0);end js;architecture one of js issignal co:std_logic;beginp1:process(clk,rst,en,stop,ta) -个位计时信号进行0到9循环计数 begin if rst=1 or stop=1 then ta=0000; elsif clkevent and clk=1 then co=0; if en=1 then if ta=0000 then ta=1001;co=1; else ta=ta-1; end if; end if; end if;end process p1;
9、p2:process(co,rst,en,stop,tb) -十位计时信号0到3变化 begin if rst=1 or stop=1 then tb=0011; elsif coevent and co=1 then if en=1 then if tb=0000 then tb=0011; else tb=tb-1; end if; end if; end if;end process p2;p3:process(rst,ta,tb) -计时时间到达,报警 begin if rst=1 then warn=0; elsif ta=0000 and tb=0000 then warn=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字式 竞赛 抢答 VHDL
限制150内