软件:Quartus
语言:VHDL
代码功能:
多路竞赛抢答器的设计与实现
实验目的:设计并制作一个多路竞赛抢答器(至少8路)
实验内容:抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。
当第一个人按下按键后,则在显示器上显示该组的号码,同时电路将其他各组按键封锁,使其不起作用。若抢答时间内无人抢答,警报器发出警报。回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 仿真图
5.1 整体仿真
设置抢答时间为12秒内,若抢答时间内无人抢答,警报器发出警报。
5.2 抢答控制模块
5.3 分频模块
5.4 显示模块
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --8路抢答器 ENTITY?qiangdaqi?IS ???PORT?( ??????clk????????????:?IN?STD_LOGIC;--时钟 ??????reset_n????????:?IN?STD_LOGIC;--复位 ??????start_p????????:?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 ??????key_5??????????:?IN?STD_LOGIC;--抢答键5 ??????key_6??????????:?IN?STD_LOGIC;--抢答键6 ??????key_7??????????:?IN?STD_LOGIC;--抢答键7 ??????key_8??????????:?IN?STD_LOGIC;--抢答键8 ?????? ??????led_overtime???:?OUT?STD_LOGIC;--超时报警 ?????? ??--数码管 ??????HEX0???????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????HEX1???????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????HEX2???????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ???); END?qiangdaqi; ARCHITECTURE?behavioral?OF?qiangdaqi?IS --分频模块,时钟分频到1Hz COMPONENT?fenping?IS ???PORT?( ??????clk_50M??:?IN?STD_LOGIC;--输入时钟 ??????clk_1Hz??:?OUT?STD_LOGIC--输出1Hz使能信号 ???); END?COMPONENT; ??? ???--显示模块 ???COMPONENT?display?IS ??????PORT?( ?????????clk????????????:?IN?STD_LOGIC; ?????????HEX0???????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????HEX1???????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????HEX2???????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); time_down???????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);--倒计时 ?????????qiangda????????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0) ??????); ???END?COMPONENT; ??? ???--抢答控制模块 ???COMPONENT?qiandda_ctrl?IS ??????PORT?( ??????clk?????????????:?IN?STD_LOGIC;--时钟 clk_1Hz?????????:?IN?STD_LOGIC;--1Hz时钟 ??????reset_n?????????:?IN?STD_LOGIC;--复位 ??????start_p?????????:?IN?STD_LOGIC;--开始 --8个抢答按键 ??????key_1???????????:?IN?STD_LOGIC; ??????key_2???????????:?IN?STD_LOGIC; ??????key_3???????????:?IN?STD_LOGIC; ??????key_4???????????:?IN?STD_LOGIC; ??????key_5???????????:?IN?STD_LOGIC; ??????key_6???????????:?IN?STD_LOGIC; ??????key_7???????????:?IN?STD_LOGIC; ??????key_8???????????:?IN?STD_LOGIC; ??????led_overtime????:?OUT?STD_LOGIC;--超时报警 ???time_down???????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--倒计时 ??????qiangda?????????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0)--抢答号 ??????); ???END?COMPONENT; ???SIGNAL?qiangda?????????????:?STD_LOGIC_VECTOR(3?DOWNTO?0); ???SIGNAL?clk_1Hz:?STD_LOGIC; SIGNAL?time_down???????:?STD_LOGIC_VECTOR(7?DOWNTO?0);--倒计时 BEGIN --调用分频模块,时钟分频到1Hz i_fenping:?fenping ???PORT?MAP??( ??????clk_50M???=>?clk,--输入时钟 ??????clk_1Hz???=>?clk_1Hz--输出1Hz使能信号 ???); --调用抢答控制模块 ???i_qiandda_ctrl?:?qiandda_ctrl ??????PORT?MAP?( ?????????clk?????????????=>?clk, clk_1Hz?????????=>?clk_1Hz, ?????????reset_n?????????=>?reset_n, ?????????start_p?????????=>?start_p, ????????? ?????????key_1???????????=>?key_1, ?????????key_2???????????=>?key_2, ?????????key_3???????????=>?key_3, ?????????key_4???????????=>?key_4, ?????????key_5???????????=>?key_5, ?????????key_6???????????=>?key_6, ?????????key_7???????????=>?key_7, ?????????key_8???????????=>?key_8, ????????? ?????????led_overtime????=>?led_overtime,--超时报警 ?????????time_down???=>?time_down,--倒计时 ?????????qiangda?????????=>?qiangda--抢答号?? ??????); ? ??? ???--调用显示模块 ???i_display?:?display ??????PORT?MAP?( ?????????clk?????????????=>?clk, ?????????time_down???????=>?time_down,--倒计时 ?????????qiangda?????????=>?qiangda, ?????????HEX0????????????=>?HEX0, ?????????HEX1????????????=>?HEX1, ?????????HEX2????????????=>?HEX2 ??????); ??? END?behavioral;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=624
							阅读全文
							
						
					
								
								
								
240