名称:数字式竞赛抢答器设计 VHDL代码Quartus 21EDA EPM240开发板(文末获取)
软件:Quartus
语言:VHDL
代码功能:
数字式竞赛抢答器设计
设计一个可容纳四组参赛者同时抢答的数字抢答器。
要求:(1)能判断第一抢答者并报警指示抢答成功,其他组抢答均无效;
(2)设计倒计时时钟,若提前抢答则对相应的抢答组发出警报。
本代码已在21EDA EPM240开发板验证,21EDA EPM240开发板如下,其他开发板可以修改管脚适配:
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;
源代码
扫描文章末尾的公众号二维码