名称:4人抢答器设计VHDL代码Quartus FPGA实验箱
软件:Quartus
语言:VHDL
代码功能:
要求
(1)1个主持键、4个抢答键。
(2)抢答的键号用一个数码管显示(可以采用静态显示)。
(3)抢答的时间用两位数码管显示(可以采用静态显示),精确到0.15。
(4)主持键按下,4个抢答键才有效,时间从0.0s开始计时。
(5)当时间到8.8s还没人按抢答键,抢答停止,抢答键无效;当主持键再次按下才有效。
(6)在规定时间内抢答键按下时,显示先按下的键号,时间停止,抢答键无效:当主持键再次按下才有效 。
(7)必须先进行前仿真,并打印出仿真波形。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在FPGA实验箱验证,FPGA实验箱如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
状态图
5. 管脚分配
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --显示模块 ENTITY display IS PORT ( clk_1KHz : IN STD_LOGIC;--时钟1KHz first_num : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--抢答号码 time_ten : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--计时十位 time_one : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--计时个位 SEL : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管位选 SEG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 ); END display; ARCHITECTURE behave OF display IS SIGNAL cnt : STD_LOGIC_VECTOR(2 DOWNTO 0) := "000"; SIGNAL data : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; BEGIN PROCESS (clk_1KHz) BEGIN IF (clk_1KHz'EVENT AND clk_1KHz = '1') THEN cnt <= cnt + "001";--计时0~7 END IF; END PROCESS; SEL <= cnt;--位选 PROCESS (cnt, first_num, time_ten, time_one) BEGIN CASE cnt IS WHEN "000" => data <= first_num;--抢答号码 WHEN "010" => data <= time_ten;--计时十位 WHEN "011" => data <= time_one;--计时个位 WHEN OTHERS => data <= "1010";--A END CASE; END PROCESS; --输出到数码管段选 PROCESS (cnt,data) BEGIN if(cnt="010")then--计时十位,显示小数点 CASE data IS WHEN "0000" => SEG <= NOT(X"c0") OR "10000000"; WHEN "0001" => SEG <= NOT(X"f9") OR "10000000"; WHEN "0010" => SEG <= NOT(X"a4") OR "10000000"; WHEN "0011" => SEG <= NOT(X"b0") OR "10000000"; WHEN "0100" => SEG <= NOT(X"99") OR "10000000"; WHEN "0101" => SEG <= NOT(X"92") OR "10000000"; WHEN "0110" => SEG <= NOT(X"82") OR "10000000"; WHEN "0111" => SEG <= NOT(X"f8") OR "10000000"; WHEN "1000" => SEG <= NOT(X"80") OR "10000000"; WHEN "1001" => SEG <= NOT(X"90") OR "10000000"; WHEN "1010" => SEG <= "00000000" OR "10000000"; when others=> SEG <= "00000000"; END CASE;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1054
1124