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

多路智力抢答器VHDL代码Quartus仿真

06/26 15:22
583
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240110092022Q6.doc

共1个文件

名称:多路智力抢答器VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

2.多路智力抢答器的VHDL设计(每班20号以后的双号)

设计任务要求

(1)利用硬件描述语言FPGA器件,设计实现一个可容纳4、5、6、7组参赛者的多路智力抢答器,每组设置一个抢答按钮供抢答者使用。

(2)电路具有第一抢答信号的鉴别和锁存功能。

(3)设置计分电路。

(4)设置犯规扣分电路(选作)。

各模块实体名:XXXX自己两位学号,XXXX—一自己根据功能需要起名

任务学号对应:20、22、24号选7路;26、28、30号选6路;32、34、36号-选5路;38、40、42号选4路

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

控制模块仿真

计分模块仿真

显示模块仿真

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
   USE ieee.std_logic_arith.all;
--数码管显示模块
ENTITY display_26 IS
   PORT (
      clk             : IN STD_LOGIC;
      score_1         : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--分数1
      score_2         : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--分数2
      score_3         : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--分数3
      score_4         : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--分数4
      score_5         : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--分数3
      score_6         : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--分数4
      --数码管
      HEX0            : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX1            : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX2            : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX3            : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX4            : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX5            : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
   );
END display_26;
ARCHITECTURE behavioral OF display_26 IS
BEGIN
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         CASE score_1 IS--显示1组分数
            WHEN "0000" =>
               HEX0 <= "11000000";
            WHEN "0001" =>
               HEX0 <= "11111001";
            WHEN "0010" =>
               HEX0 <= "10100100";
            WHEN "0011" =>
               HEX0 <= "10110000";
            WHEN "0100" =>
               HEX0 <= "10011001";
            WHEN "0101" =>
               HEX0 <= "10010010";
            WHEN "0110" =>
               HEX0 <= "10000010";
            WHEN "0111" =>
               HEX0 <= "11111000";
            WHEN "1000" =>
               HEX0 <= "10000000";
            WHEN "1001" =>
               HEX0 <= "10010000";
            WHEN OTHERS =>
         END CASE;
      END IF;
   END PROCESS;
 
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         CASE score_2 IS--显示2组分数
            WHEN "0000" =>
               HEX1 <= "11000000";
            WHEN "0001" =>
               HEX1 <= "11111001";
            WHEN "0010" =>
               HEX1 <= "10100100";
            WHEN "0011" =>
               HEX1 <= "10110000";
            WHEN "0100" =>
               HEX1 <= "10011001";
            WHEN "0101" =>
               HEX1 <= "10010010";
            WHEN "0110" =>
               HEX1 <= "10000010";
            WHEN "0111" =>
               HEX1 <= "11111000";
            WHEN "1000" =>
               HEX1 <= "10000000";
            WHEN "1001" =>
               HEX1 <= "10010000";
            WHEN OTHERS =>
         END CASE;
      END IF;
   END PROCESS; 
   
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         CASE score_3 IS--显示3组分数
            WHEN "0000" =>
               HEX2 <= "11000000";
            WHEN "0001" =>
               HEX2 <= "11111001";
            WHEN "0010" =>
               HEX2 <= "10100100";
            WHEN "0011" =>
               HEX2 <= "10110000";
            WHEN "0100" =>
               HEX2 <= "10011001";
            WHEN "0101" =>
               HEX2 <= "10010010";
            WHEN "0110" =>
               HEX2 <= "10000010";
            WHEN "0111" =>
               HEX2 <= "11111000";
            WHEN "1000" =>
               HEX2 <= "10000000";
            WHEN "1001" =>
               HEX2 <= "10010000";
            WHEN OTHERS =>
         END CASE;
      END IF;
   END PROCESS;
   
   
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         CASE score_4 IS--显示4组分数
            WHEN "0000" =>
               HEX3 <= "11000000";
            WHEN "0001" =>
               HEX3 <= "11111001";
            WHEN "0010" =>
               HEX3 <= "10100100";
            WHEN "0011" =>
               HEX3 <= "10110000";
            WHEN "0100" =>
               HEX3 <= "10011001";
            WHEN "0101" =>
               HEX3 <= "10010010";
            WHEN "0110" =>
               HEX3 <= "10000010";
            WHEN "0111" =>
               HEX3 <= "11111000";
            WHEN "1000" =>
               HEX3 <= "10000000";
            WHEN "1001" =>
               HEX3 <= "10010000";
            WHEN OTHERS =>
         END CASE;
      END IF;
   END PROCESS;
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         CASE score_5 IS--显示5组分数
            WHEN "0000" =>
               HEX4 <= "11000000";
            WHEN "0001" =>
               HEX4 <= "11111001";
            WHEN "0010" =>
               HEX4 <= "10100100";
            WHEN "0011" =>
               HEX4 <= "10110000";
            WHEN "0100" =>
               HEX4 <= "10011001";
            WHEN "0101" =>
               HEX4 <= "10010010";
            WHEN "0110" =>
               HEX4 <= "10000010";
            WHEN "0111" =>
               HEX4 <= "11111000";
            WHEN "1000" =>
               HEX4 <= "10000000";
            WHEN "1001" =>
               HEX4 <= "10010000";
            WHEN OTHERS =>
         END CASE;
      END IF;
   END PROCESS;
 
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         CASE score_6 IS--显示6组分数
            WHEN "0000" =>
               HEX5 <= "11000000";
            WHEN "0001" =>
               HEX5 <= "11111001";
            WHEN "0010" =>
               HEX5 <= "10100100";
            WHEN "0011" =>
               HEX5 <= "10110000";
            WHEN "0100" =>
               HEX5 <= "10011001";
            WHEN "0101" =>
               HEX5 <= "10010010";
            WHEN "0110" =>
               HEX5 <= "10000010";
            WHEN "0111" =>
               HEX5 <= "11111000";
            WHEN "1000" =>
               HEX5 <= "10000000";
            WHEN "1001" =>
               HEX5 <= "10010000";
            WHEN OTHERS =>
         END CASE;
      END IF;
   END PROCESS; 
END behavioral;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=522

  • 2-240110092022Q6.doc
    下载

相关推荐