名称:4路倒计时抢答器设计VHDL代码Quartus? DE2-115开发板
软件:Quartus
语言:VHDL
代码功能:
4路抢答器设计
要求:
1、具有复位和开始按键;
2、主持人按下开始按键后,开始倒计时9~0秒;
3、倒计时为0时开始抢答,通过led指示抢答者;
4、提前抢答对应的led闪烁报警。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE2-115开发板验证,DE2-115开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
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 ??????);
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=539
168