4路倒计时抢答器设计VHDL代码Quartus DE2-115开发板

本文详细介绍了使用VHDL语言在Quartus工具下设计并实现的一款4路抢答器,包括复位和开始按键控制、倒计时功能、抢答提示以及与DE2-115开发板的集成。
摘要由CSDN通过智能技术生成

名称:4路倒计时抢答器设计VHDL代码Quartus  DE2-115开发板(文末获取)

软件:Quartus

语言:VHDL

代码功能:

4路抢答器设计

要求:

1、具有复位和开始按键

2、主持人按下开始按键后,开始倒计时9~0秒

3、倒计时为0时开始抢答,通过led指示抢答者

4、提前抢答对应的led闪烁报警

本代码已在DE2-115开发板验证,DE2-115开发板如下,其他开发板可以修改管脚适配:

DE2-115开发板.png

1. 工程文件

2 .程序文件

3 . 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

图中,复位后,主持人按下开始按键,开始倒计时9~0秒,倒计时结束前按下key1,表示1号提前抢答,蜂鸣器间隔响,led1闪烁。复位后,主持人重新按下开始键,开始倒计时,倒计时结束后先按下key3,3号抢答成功,led3亮,蜂鸣器响。此时再按下key4不响应。

注:LED低电平亮,蜂鸣器低电平响。

分频模块

系统时钟分频为1Hz和2Hz信号,1Hz用于倒计时,一次1秒。2Hz用于控制LED闪烁和蜂鸣器间隔响。

控制模块

控制模块通过状态机控制提前抢答,正常抢答,倒计时等功能。

显示模块

数码管显示倒计时和台号。

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
--抢答器
ENTITY qiangdaqi IS
   PORT (
      clk          : IN STD_LOGIC;--时钟
      rst_n        : IN STD_LOGIC;--复位--SW0
      start_n      : IN STD_LOGIC;--开始--SW1
      key_1        : IN STD_LOGIC;--按键1--key0
      key_2        : IN STD_LOGIC;--按键2--key1
      key_3        : IN STD_LOGIC;--按键3--key2
      key_4        : IN STD_LOGIC;--按键4--key3
      LED1         : OUT STD_LOGIC;--LED0
      LED2         : OUT STD_LOGIC;--LED1
      LED3         : OUT STD_LOGIC;--LED2
      LED4         : OUT STD_LOGIC;--LED3
      beep         : OUT STD_LOGIC;--蜂鸣器--LED4
dis1: out std_logic_vector(7 downto 0);--台号1显示
dis2: out std_logic_vector(7 downto 0);--台号2显示
dis3: out std_logic_vector(7 downto 0);--台号3显示
dis4: out std_logic_vector(7 downto 0);--台号4显示
      HEX      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管
   );
END qiangdaqi;
ARCHITECTURE behave OF qiangdaqi IS
--控制模块
   COMPONENT control IS
      PORT (
         clk      : IN STD_LOGIC;
         rst_n    : IN STD_LOGIC;
         start_n  : IN STD_LOGIC;
         key_1    : IN STD_LOGIC;
         key_2    : IN STD_LOGIC;
         key_3    : IN STD_LOGIC;
         key_4    : IN STD_LOGIC;
         clk_1Hz  : IN STD_LOGIC;
         clk_2Hz  : IN STD_LOGIC;
         LED1     : OUT STD_LOGIC;
         LED2     : OUT STD_LOGIC;
         LED3     : OUT STD_LOGIC;
         LED4     : OUT STD_LOGIC;
         beep     : OUT STD_LOGIC;
         down_time : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
      );
   END COMPONENT;
 --分频器  
   COMPONENT div IS
      PORT (
         clk      : IN STD_LOGIC;
         clk_1Hz  : OUT STD_LOGIC;
         clk_2Hz  : OUT STD_LOGIC
      );
   END COMPONENT;
   
--数码管译码
COMPONENT LED7S is
Port(
din: in std_logic_vector(3 downto 0);
dis1: out std_logic_vector(7 downto 0);--台号1显示
dis2: out std_logic_vector(7 downto 0);--台号2显示
dis3: out std_logic_vector(7 downto 0);--台号3显示
dis4: out std_logic_vector(7 downto 0);--台号4显示
y: out std_logic_vector(7 downto 0));
end COMPONENT;
   
   
   SIGNAL clk_1Hz    : STD_LOGIC;
   SIGNAL clk_2Hz    : STD_LOGIC;
   SIGNAL down_time  : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
--调用分频模块
   i_div : div
      PORT MAP (
         clk      => clk,
         clk_1Hz  => clk_1Hz,
         clk_2Hz  => clk_2Hz
      );
--调用控制模块   
   i_control : control
      PORT MAP (
         clk        => clk,
         rst_n      => rst_n,
         start_n    => start_n,
         key_1      => key_1,
         key_2      => key_2,
         key_3      => key_3,
         key_4      => key_4,
         clk_1Hz    => clk_1Hz,
         clk_2Hz    => clk_2Hz,
         LED1       => LED1,
         LED2       => LED2,
         LED3       => LED3,
         LED4       => LED4,
         beep       => beep,
         down_time  => down_time
      );
源代码

 扫描文章末尾的公众号二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值