数字式竞赛抢答器设计 VHDL代码Quartus 21EDA EPM240开发板

本文介绍了使用VHDL语言在Quartus工具下设计的数字竞赛抢答器,包括判断抢答者、倒计时功能和蜂鸣器报警。设计详细描述了控制模块、分频器以及显示模块的实现,并展示了在21EDAEPM240开发板上的应用和测试过程。
摘要由CSDN通过智能技术生成

名称:数字式竞赛抢答器设计 VHDL代码Quartus  21EDA EPM240开发板(文末获取)

软件:Quartus

语言:VHDL

代码功能:

数字式竞赛抢答器设计    

设计一个可容纳四组参赛者同时抢答的数字抢答器。

要求:(1)能判断第一抢答者并报警指示抢答成功,其他组抢答均无效;    

     (2)设计倒计时时钟,若提前抢答则对相应的抢答组发出警报。

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

21EDA EPM240开发板.png

1. 工程文件

2 .程序文件

3 . 程序编译

4. RTL图

5. 管脚分配

6. Testbench

7. 仿真图

整体仿真图

图中,复位后,按下开始按键,开始倒计时,倒计时结束前按下key1,表示1好提前抢答,蜂鸣器间隔响,led1闪烁。复位后,重新按下开始键,开始倒计时,倒计时结束后先后按下key3和key4,led3亮,表示3号先抢答,蜂鸣器响。

分频模块

控制模块

显示模块

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
ENTITY qiangdaqi IS
   PORT (
      clk          : IN STD_LOGIC;--时钟
      rst_n        : IN STD_LOGIC;--复位
      start_n      : IN STD_LOGIC;--开始
      key_1        : IN STD_LOGIC;--按键1
      key_2        : IN STD_LOGIC;--按键2
      key_3        : IN STD_LOGIC;--按键3
      key_4        : IN STD_LOGIC;--按键4
      LED1         : OUT STD_LOGIC;--LED1
      LED2         : OUT STD_LOGIC;--LED2
      LED3         : OUT STD_LOGIC;--LED3
      LED4         : OUT STD_LOGIC;--LED4
      beep         : OUT STD_LOGIC;--蜂鸣器
  en       : OUT STD_LOGIC;--使能
      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);
 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
en<='0';
--调用分频模块
   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
      );
--调用显示模块
   i_LED7S : LED7S
      PORT MAP (
         din  => down_time,
         y    => HEX
      );
   
END behave;
源代码

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

  • 19
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值