数字式竞赛抢答器VHDL
「基于VHDL的智力竞赛抢答器完全设计」

「基于VHDL的智力竞赛抢答器完全设计」智力竞赛抢答器是一种常见的比赛辅助设备,它可以帮助比赛主持人快速确定哪位选手按下抢答器按钮,并且在一定的时间内限制其他选手抢答。
本文将基于VHDL(Very High Speed Integrated Circuit Hardware Description Language)对智力竞赛抢答器进行完全设计。
首先,我们需要确定抢答器的基本功能。
智力竞赛抢答器应该具备以下功能:1.按下按钮时抢答器需要发出信号,主持人可以通过这个信号来确认哪位选手抢答。
2.如果已经有选手抢答,其他选手不能再次抢答,抢答器需要提供信号以阻止其他选手抢答。
基于上述功能需求,我们可以进行如下设计。
首先,我们需要使用VHDL语言定义抢答器所需要用到的模块和信号。
```entity 抢答器 isportStart_Button : in std_logic; -- 抢答器按钮输入信号Response : out std_logic; -- 抢答信号Busy : out std_logic -- 抢答器忙碌信号end entity 抢答器;```在抢答器模块中,我们需要定义两个重要的信号:Start_Button,表示抢答器按钮的输入信号;Response,表示抢答信号的输出;Busy,表示抢答器忙碌信号的输出。
接下来,我们需要定义这些信号的行为。
根据抢答器的功能需求,我们可以进行如下行为定义。
```architecture 抢答器行为 of 抢答器 issignal isPressed : std_logic := '0'; -- 按钮按下信号signal isBusy : std_logic := '0'; -- 抢答器忙碌信号beginprocess(Start_Button)beginif Start_Button = '1' and isBusy = '0' then -- 按钮按下,且抢答器没有被占用isPressed <= '1'; -- 设置按钮按下信号为1isBusy <= '1'; -- 设置抢答器忙碌信号为1end if;if isPressed = '1' then -- 如果按钮被按下Response <= '1'; -- 输出抢答信号else -- 如果按钮未被按下Response <= '0'; -- 不输出抢答信号end if;end process;--重置抢答器状态reset_process : processbeginif Start_Button = '0' thenisPressed <= '0'; -- 标记按钮未被按下isBusy <= '0'; -- 标记抢答器未被占用end if;end process;--根据抢答器的状态设置忙碌信号busy_signal_process : process(response, isBusy) beginif isBusy = '1' thenBusy <= '1'; -- 输出忙碌信号elseBusy <= '0'; -- 不输出忙碌信号end if;end process;end architecture 抢答器行为;```以上代码定义了抢答器的行为,通过进程的方式处理输入信号,并根据当前的状态输出相应的信号。
VHDL抢答器

VHDL抢答器的设计一.VHDL抢答器要求:1.抢答器同时供4名选手,分别用4个按钮S0~ S3表示。
2.设置一个系统“开始复位”开关S,该开关由主持人控制(当主持人按下该开关后以前的状态复位并且开始计时抢答)。
3.抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。
选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。
4. 抢答器具有定时抢答功能,且一次抢答的时间(0-99S)。
当主持人启动“开始复位”键后,定时器进行减计时。
5. 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
二.程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LOCK ISPORT( CLK,CLEAR:IN STD_LOGIC;WARN:IN STD_LOGIC;S0,S1,S2,S3:IN STD_LOGIC;STATES:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);STOP:OUT STD_LOGIC;LED:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END LOCK;ARCHITECTURE ONE OF LOCK ISSIGNAL G:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLEAR,CLK,S0,S1,S2,S3)BEGINIF CLEAR='1' THEN G<="0000";LED<="0000";STOP<='0';ELSIF CLK'EVENT AND CLK='1' THENIF WARN='0' THENIF( S3='1')AND NOT(G(0)='1' OR G(1)='1' OR G(2)='1') THENG(3)<='1';LED(3)<='1';ELSIF( S2='1')AND NOT(G(0)='1' OR G(1)='1' OR G(3)='1') THENG(2)<='1';LED(2)<='1';ELSIF( S1='1')AND NOT(G(0)='1' OR G(2)='1' OR G(3)='1') THENG(1)<='1';LED(2)<='1';ELSIF( S0='1')AND NOT(G(1)='1' OR G(2)='1' OR G(3)='1') THENG(0)<='1';LED(3)<='1';END IF;STOP<=G(0) OR G(1) OR G(2) OR G(3);END IF;END IF;CASE G ISWHEN "0001"=>STATES<="0001"; WHEN "0010"=>STATES<="0010"; WHEN "0100"=>STATES<="0011"; WHEN "1000"=>STATES<="0100"; WHEN OTHERS=>STATES<="0000"; END CASE;END PROCESS;END ARCHITECTURE ONE;VHDL抢答器的设计学院:水利电力学院班级: 08电机姓名:王富德学号:0803505034。
预备抢答抢答器的VHDL实现

预备抢答抢答器的 VHDL 实现
黄政辉
(湖北轻工职业技术学院机电系,湖北 武汉 430070)
摘要:抢答器是知识竞赛中的一种常用装置。结合知识竞赛中的实际抢答过程,给出了具有预备抢答功能的抢答器的 vhdl 设计,并给 出了 vhdl 语言中信号锁存的一种方法和改变分频器分频信号占空比的一种方案。 关键词:抢答器;预备抢答;vhdl;信号锁存;占空比;调整
如图 3 所示:
图 3 第一信号检测与违例判断模块仿真结果
图中第六队抢答信号 team6 最先产生,故输出信号 result6 为 1,其余为 0;此外,抢答在 start 到达之后,因此没有违规, nopre 输出为 1,违规信号 pre 输出为 0。
(3)秒脉冲发生模块。此模块输入时钟信号为 10MHz,经 10 分频器 7 次分频得 1Hz 信号。此 1Hz 信号除作计数脉冲控 制 93s 倒计时进程外,还将作为提示音的控制信号使用。本装 置控制声音要求秒脉冲的占空比为 1:2,而一般十进制计数器 的占空比为 1:10,设计时针对这一点,作了占空比调整。此模 块 vhdl 程序如下:
if tmp="0110" or tmp="0111" or tmp="1000" or tmp="1001" then — ——占空比调整为 1:2
DIV<='1'; else div<='0'; END IF; end if; end if; END PROCESS; end a;
程序中语句“if tmp="0110" or tmp="0111" or tmp="1000" or tmp="1001" then DIV<='1';”将占空比由 1:20 调整为 1:2。占 空比调整仿真结果如图 4 所示:
数字式竞赛抢答器的VHDL设计

实验报告实验名称:VHDL实验实验日期:2012年3月7日学院:信息工程学院班级:2009级通信工程一班姓名:沈晶晶学号:2009550607数字式竞赛抢答器的VHDL设计1、设计任务及要求:设计任务:(1)设计一个可容纳8组参赛的数字式抢答器,每组设一个按钮,供抢答使用。
(2)抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
(3)设置一个主持人“复位”按钮。
(4)主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,由指示灯显示抢答组的编号,同时扬声器发出2~3秒的音响。
扩展功能:(5)设置一个计分电路,每组开始预制100分,由主持人计分,答对一次加10分,答错一次减10分。
设计要求:(1)采用VHDL语言编写程序,并在QUARTUS II平台中进行仿真,下载到EDA实验箱进行验证。
(2)编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心得体会。
(3)设计时间和地点:两个星期,信息楼4楼EDA实验室。
定时抢答器的总体框图如图1所示,它由主体电路和扩展电路两部分构成,主体电路完成基本的抢答功能,即开始抢答后,当选手按动抢答键时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答。
扩展电路完成各选手的得分显示功能。
定时抢答器的工作过程是:接通电源时,主持人将开关置于“清除”位置,抢答器处于禁止工作状态,编号显示器灭灯;抢答开始时,主持人将控制开关拨到“开始”位置,扬声器给出声响提示,抢答器处于工作状态,这时,抢答器完成以下工作:(1)优先编码器电路立即分辨出抢答者编号,并由锁存器进行锁存,然后由译码显示电路显示编号;(2)扬声器发出短暂声响,提醒主持人注意;(3)控制电路要对输入编码电路进行封锁,避免其他选手再次进行抢答;(4)当选手将问题回答完毕,主持人操作计分开关,计分电路采用十进制加/减计数器、数码管显示。
本轮抢答完毕,主持人操作控制开关,使系统回复到禁止工作状态,以便进行下一轮抢答。
(完整)EDA课程设计——数字抢答器

数字式竞赛抢答器设计要求1、设计一个可容纳4组参赛的数字式抢答器,每组设一个按钮,供抢答使用.2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
3、设置一个主持人“复位”按钮。
4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出 2~3 秒的音响。
5、设置一个计分电路,每组开始预置 100 分,由主持人记分,答对一次加 10 分,答错一次减 10 分。
1、总体方案设计原理及分析1.1、方案原理按照设计要求,设计一个4组参赛的抢答器,所以这种抢答器要求有四路不同组别的抢答输入信号,并能识别最先抢答的信号,直观地通过数码显示和蜂鸣报警等方式提示主持人并显示出组别;同时该系统还应有复位功能。
主持人按下系统复位键(RST),系统进入抢答状态,计分模块输出初始信号给数码显示模块并显示出初始值。
当某参赛组抢先将抢答键按下时,系统将其余三路抢答信号封锁,同时扬声器发出2-3秒的声音提示,组别显示模块送出信号给数码显示模块,从而显示出该抢答成功组台号,并一直保持到下一轮主持人将系统清零为止。
主持人对抢答结果进行确认,随后,计时模块送出倒计时计数允许信号,开始回答问题,计时显示器则从初始值开始以计时,在规定的时间内根据答题的正误来确定加分或减分,并通过数码显示模块将成绩显示出来。
计时至0时,停止计时,扬声器发出超时报警信号,以中止未回答完问题。
当主持人给出倒计时停止信号时,扬声器停止鸣叫.若参赛者在规定时间内回答完为题,主持人可给出倒计时计数停止信号,以免扬声器鸣叫。
主持人按下复位键,即RST 为高电平有效状态,清除前一次的抢答组别,又可开始新的一轮的抢答。
此抢答器的设计中采用自顶向下的设计思路,运用VHDL 硬件描述语言对各个模块进行层次化、系统化的描述,并且先设计一个顶层文件,再把各个模块连接起来。
1。
2、方案设计框图主电路 扩展功能电路图1 方案系统结构图1.3、方案各路功能分析此方案是由主体电路和扩展电路两部分构成,整个系统包括这样几个主要模块:抢答鉴别模块、抢答计时模块、抢答计分模块、译码显示模块、报警模块。
VHDL四路抢答器的设计

VHDL四路抢答器的设计第一篇:VHDL四路抢答器的设计VHDL四路抢答器的设计设计要求:1.抢答器同时供N名选手,(此处假设4个)分别用4个按钮S0~S3表示。
2.设置一个系统“开始复位”开关S,该开关由主持人控制(当主持人按下该开关后以前的状态复位并且开始计时抢答)。
3.抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。
选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。
4.抢答器具有定时抢答功能,且一次抢答的时间(0-99S)。
当主持人启动“开始复位”键后,定时器进行减计时。
5.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
一、概述抢答器的逻辑结构主要由抢答鉴别lock模块、定时模块、译码模块和报警器模块组成。
在整个抢答器中最关键的是如何实现抢答封锁,在控制键按下的同时计数器倒计时显示有效剩余时间。
除此之外,整个抢答器还需有一个“复位开始”信号,以便抢答器能实现清零和开始。
抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。
当主持人按下控制键、选手按下抢答键蜂鸣器短暂响起。
•方案设计与论证嘿嘿!将该任务分成N个模块进行设计,分别为:抢答器鉴别模块、抢答器计时模块、译码模块、报警模块,最后是综合。
1.抢答器鉴别模块:在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。
在这个模块输入端有WARN输入(以时间控制系统的WARN输出信号为信号源)、一个和“时间控制系统”公用的CLEAR端、4人抢答输入信号端S0,S1,S2,S3和有一个时钟信号端CLK,这个时钟信号是个高频信号,用以扫描S0,S1,S2,S3是否有信号输入。
输出端有对应于S0,S1,S2,S3编号的4个指示灯LED 和4线2进制输出端STATES(用于锁存当前的状态),还有一个STOP 端用于指示S0,S1,S2,S3按钮状态(控制计时器停止)。
最全课程设计智力竞赛抢答器VHDL

Shaanxi University of Tecnology 通信工程专业课程设计Ⅱ题目竞赛抢答器的设计与实现学生姓名蒋清洋学号0613024047所在院(系)陕西理工学院电信工程系专业班级通信工程专业0 7 3 班指导教师侯宝生完成地点陕西理工学院电信工程系实验室2010 年 3 月 19 日通信工程专业课程设计Ⅱ任务书院(系) 电信工程系专业班级通信工程专业073班学生姓名蒋清洋一、课程设计Ⅱ题目竞赛抢答器的设计与实现二、课程设计Ⅱ工作自 2010 年 3 月 1 日起至 2010 年 3 月 19 日止三、课程设计Ⅱ进行地点: 电信工程系实验室四、课程设计Ⅱ的内容要求:设计一竞赛抢答器的设计与实现(方法要求:EDA)1、设计一个可容纳6组(或4组)参赛的数字式抢答器,每组设一个按钮,供抢答使用。
2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
3、设置一个主持人“复位”按钮。
4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2~3秒的音响。
5、设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。
指导教师侯宝生系(教研室)通信工程教研室接受任务开始执行日期2010年3月1日学生签名蒋青洋目录摘要-------------------------------------------------------------------------------- 4 绪论--------------------------------------------------------------------------------- 6 第一章方案及原理----------------------------------------------------------------- 7 一方案提出与分析---------------------------------------------------------- 71.0总体方案框图 ----------------------------------- 71.1方案一 ------------------------------------- 71.2 方案二 -------------------------------------- 71.3 方案分析 -------------------------------------- 7二系统的设计方案 ------------------------------------ 7 三.设计原理-------------------------------------------------------- 93.1总体结构设计------------------------------------------------- 93.2 FPGA简介------------------------------------------------ 9 第二章单元模块设计-------------------------------------------------------- 12一、抢答鉴别单元-------------------------------------------------- 12二、计分器电路单元---------------------------------------------------------- 13三、计时器电路单元--------------------------------------------------------- 14四、译码单元-------------------------------------------------------- 16五、模块的打包:-------------------------------------------------------- 17 第三章硬件测试-------------------------------- 18 外接电路器件------------------------------------------------ 20参考文献------------------------------------------------- 23 课程总结--------------------------------------------------- 24 致谢---------------------------------------------------- 25 附录A ----------------------------------------------------- 26[摘要]抢答器在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器。
VHDL语言设计四路抢答器

一、设计要求:在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等各种手段批示出第一抢答者。
同时,还可以设置计分、犯规及奖惩记录等各种功能。
本设计的具体功能是:1.可容纳四组参赛者进行抢答,每组设置一个抢答按钮供抢答者使用。
2.电路具有第一抢答信号的鉴别和锁存功能。
在主持人交系统复位并发出抢答指令后,若有一组先按下抢答开关,则该组指示灯亮并用组别显示电路显示抢答者的组别,同时扬声器发出“嘀嘟”的双音音响,且持续2~3秒。
此时,电路具备自锁功能,使他组的抢答开关不起作用。
3.具有计分功能,使每组在开始时的分数预置成100分,抢答后由主持人计分,答对一次加10分。
二、系统方案论证与模块划分:根据系统设计要求可知:1.系统的输入信号有:各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;2.系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口LED_A、LES_B、LED_C、LED_D,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。
3.本系统应具有的功能有:第一抢答信号的鉴别和锁存功能;抢答计时功能;各组得分的累加和动态显示功能。
根据以上的分析,我们可将整个系统分为三个主要模块:抢鉴别模块QDJB;抢答计时模块JSQ;抢答计分模块JFQ;对于需显示的信息,需增加或外接译码器,进行显示译码。
考虑到FPGA、CPLD的可用接口及一般EDA实验开发系统的输出显示资源的限制,这里我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。
整个系统的组成框图如图2-1所示:系统的工作原理如下:当主持人按下使能端EN1时,抢答器开始工作,A、B、C、D四个抢答者谁最先抢答成功则此选手的台号灯(LED_A—LED_D)将点亮,并且组别显示数码管将显示出抢答成功者的台号,并由蜂鸣器发出抢答成功的警报;接下来主持人提问,若回答正确,主持人按加分按钮ADD,抢答计分模块JFQ将给对应的组加分,并将该组的总分显示在对应的选手计分数码管JF2_A-JF0_A、JF2_B-JF0_B、JF2_C-JF0_C、JF2_D-JF0_D、上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字系统设计与硬件描述语言期末考试作业题目:数字式竞赛抢答器设计学院:电子信息工程专业:电子信息工程学号:姓名:一、选题设计描述1.功能介绍此设计用于竞赛的四人抢答,有如下的功能:(1)具有多路抢答功能,台数设计为四;(2)具有抢答器开始后30秒倒计时,30秒后无人抢答显示超时,并报警;(3)能显示超前抢答犯规,并警报;(4)能显示各组得分,大队加分,答错扣分;当系统复位,主持人按下抢答开始按键,处于使能状态,抢答开始,某路抢答键按下时,该路信号将其他路信号锁存,同时抢答铃声响起,直至此路按键松开,显示该路组号。
2.算法简介本设计采用分层设计思想,分为:信号鉴别模块、计时模块、计分模块、BCD译码模块、分频器,还有顶层模块。
信号鉴别模块。
此模块主要实现抢答器的抢答功能,并能够分辨是正常抢答还是提前抢答,选取最先按下的一路信号,锁存其余信号,实现信号选取功能。
在此模块中,用到的信号为抢答信号a、b、c、d;抢答使能信号en;抢答结果信号states;警报时钟信号clk2;复位信号rst;提前抢答信号fangui。
计时模块。
此模块主要实现抢答过程中的计时功能,在抢答开始后进行30秒的倒计时,且在30秒后显示无人抢答报警信号。
其中有抢答时钟信号clk;系统复位信号rst;抢答使能信号en;无人抢答警报信号warn;计时中止信号stop;计时十位个位信号tb,ta。
计分模块。
此模块主要实现给四个抢答器计分的功能,初始条件下,为每个抢答器信号预制5分,当某组抢答且回答正确时加一分,答错减一分,未获答题机会时保持不变。
其中设有时钟信号clk;复位信号rst;抢答使能信号en;抢答结果显示信号states;记分加减信号add(add=‘1’时为加,add=‘0’时为减);四个信号的得分显示信号a_out,b_out,c_out,d_out。
BCD译码模块。
此模块主要实现将抢答结果信号显示在bcd七段译码器上。
其中输入信号a;输出译码结果信号q。
分频器。
此模块主要实现时钟分频功能。
在开头对时钟信号进行一次千分频。
其中时钟输入信号clkin,输出信号clk。
顶层模块。
将前几个模块综合在一起,形成一个整体。
分频器输出作为其他模块所需的时钟信号,使整个系统正常运转。
二、程序源代码及说明抢答信号鉴别模块的程序:library ieee;use qdjb isport(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 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)beginif rst='1' then --复位信号有效,系统复位。
tmp<='1';states<="0000";elsif tmp='1' thenif a='1' then --判断哪路信号变化,进行选取states<="0001";tmp<='0'; --对states进行置数elsif b='1' thenstates<="0010";tmp<='0';elsif c='1' thenstates<="0011";tmp<='0';elsif d='1' thenstates<="0100";tmp<='0';else tmp<='1';states<="0000";end if ;end if;end process p1;p2:process(clk2,en,rst,cnt) --判断是否提前抢答并报警 beginif rst='1' thencnt<="000000";fanguif<='0'; --初始化提前抢答犯规信号 elsif clk2'event and clk2='1' thenif en='0' and sinor='1' thenif cnt<"111111" thenfanguif<=not fanguif;cnt<=cnt+1;else fanguif<='0';end if;end if;end if;end process p2;fangui<=fanguif;end one;计时模块的程序:library ieee;use js isport(clk,rst,en,stop:in std_logic;warn:buffer std_logic;ta,tb:buffer std_logic_vector(3 downto 0));end js;architecture one of js issignal co:std_logic;beginp1:process(clk,rst,en,stop,ta) --个位计时信号进行0到9循环计数 beginif rst='1' or stop='1' thenta<="0000";elsif clk'event and clk='1' thenco<='0';if en='1' thenif ta="0000" thenta<="1001";co<='1';else ta<=ta-1;end if;end if;end if;end process p1;p2:process(co,rst,en,stop,tb) --十位计时信号0到3变化beginif rst='1' or stop='1' thentb<="0011";elsif co'event and co='1' thenif en='1' thenif tb="0000" then tb<="0011";else tb<=tb-1;end if;end if;end if;end process p2;p3:process(rst,ta,tb) --计时时间到达,报警beginif rst='1' thenwarn<='0';elsif ta="0000" and tb="0000" thenwarn<='1';else warn<='0';end if;end process p3;end one;计分模块的程序:library ieee;use jf isport(clk,rst,en,add:in std_logic;states:in std_logic_vector(3 downto 0);a_out,b_out,c_out,d_out:buffer std_logic_vector(3 downto 0)); end jf;architecture one of jf isbeginp1:process(clk,rst,add,states,a_out,b_out,c_out,d_out)beginif (rst='1') thena_out<="0101";b_out<="0101";c_out<="0101";d_out<="0101"; --初始化置5分 elsif en='1'thenif clk'event and clk='1' thencase states iswhen "0001"=>if add='1' then --add信号为高时,加1分 if a_out="1111" then --最多15分a_out<="0000";else a_out<=a_out+1;end if;elsif add='0' then --add信号为0,减1分 if a_out="0000" thena_out<="0000";else a_out<=a_out-1;end if;end if;when "0010"=>if add='1' thenif b_out="1111" thenb_out<="0000";else b_out<=b_out+1;end if;elsif add='0' thenif b_out="0000" thenb_out<="0000";else b_out<=b_out-1;end if;end if;when "0011"=>if add='1' thenif c_out="1111" thenc_out<="0000";else c_out<=c_out+1;end if;elsif add='0' thenif c_out="0000" thenc_out<="0000";else c_out<=c_out-1;end if;end if;when "0100"=>if add='1' thenif d_out="1111" thend_out<="0000";else d_out<=d_out+1;end if;elsif add='0' thenif d_out="0000" thend_out<="0000";else d_out<=d_out-1;end if;end if;when others=>a_out<=a_out;b_out<=b_out;c_out<=c_out;d_out<=d_out;end case;end if;end if;end process p1;end one;抢答器顶层模块程序:library ieee;use qiangda isport(clkin,clk2,en,a,b,c,d,add,stop,rst:in std_logic;fangui,alarm:out std_logic;ta,tb:buffer std_logic_vector(3 downto 0);states:buffer std_logic_vector(3 downto 0);statesout:out std_logic_vector(0 to 6);a_out,b_out,c_out,d_out:buffer std_logic_vector(3 downto 0)); end qiangda;architecture bhv of qiangda iscomponent qdjb isport(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 component;component js isport(clk,rst,en,stop:in std_logic;warn:buffer std_logic;ta,tb:buffer std_logic_vector(3 downto 0));end component;component jf isport(clk,rst,en,add:in std_logic;states:in std_logic_vector(3 downto 0);a_out,b_out,c_out,d_out:buffer std_logic_vector(3 downto 0)); end component;component BCD7 isport(a:in std_logic_vector(3 downto 0);q:out std_logic_vector(0 to 6));end component BCD7;component divf isport(clk: IN STD_LOGIC;q : OUT STD_LOGIC;qn: OUT std_logic_vector(9 downto 0));end component divf;signal cnt:std_logic_vector(3 downto 0);signal clk: STD_LOGIC;signal divqn: std_logic_vector(3 downto 0);beginu1:qdjb port map(clk2,en,rst,a,b,c,d,fangui,states);u2:js port map(clk,rst,en,stop,alarm,ta,tb);u3:jf port map(clk,rst,en,add,states,a_out,b_out,c_out,d_out); u4:BCD7 port map(states,statesout);u5:divf port map(clkin,clk,divqn);end bhv;BCD7段译码器模块程序:LIBRARY IEEE;USE BCD7 ISPORT(a: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --数据输入q : OUT STD_LOGIC_VECTOR(0 TO 6) ); --7段输出END BCD7;ARCHITECTURE behav OF BCD7 ISBEGINPROCESS (a)BEGINcase a(3 downto 0) is -- BCD 7段译码表when "0000" => q<="1111110";when "0001" => q<="0110000";when "0010" => q<="1101101";when "0011" => q<="1111001";when "0100" => q<="0110011";when "0101" => q<="1011011";when "0110" => q<="1011111";when "0111" => q<="1110000";when "1000" => q<="1111111";when "1001" => q<="1111011";when others => q<="0000000";END case;END PROCESS;END behav;一千分频器模块程序:LIBRARY IEEE;USE divf ISPORT(clk: IN STD_LOGIC;q : OUT STD_LOGIC;qn: OUT std_logic_vector(9 downto 0)); END divf;ARCHITECTURE behav OF divf ISsignal rst: std_logic;signal qn1:std_logic_vector(9 downto 0); BEGINPROCESS (clk,rst)BEGINif rst='1' thenqn1<= "000";elsif clk'event and clk='1' thenqn1<=qn1+1;end if;END PROCESS;rst<='1' when qn1=1000 else '0';qn<=qn1; --计数q<=qn1(9); --分频输出,1000分频END behav;三、仿真结果及分析系统总体框图:对于各个模块的仿真测试所得结果,仿真波形分析如下:1、信号鉴别模块:仿真结果:本模块主要实现抢答功能。