扫码加入

  • 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

4人抢答器设计VHDL代码Quartus FPGA实验箱

2025/08/25
1124
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240Z91I402304.doc

共1个文件

名称: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实验箱如下,其他开发板可以修改管脚适配:

FPGA实验箱.jpg

演示视频:

设计文档:

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

  • 2-240Z91I402304.doc
    下载

相关推荐