⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.vhd

📁 输入为八位十进制数
💻 VHD
字号:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

entity display is
  port(clk       : in  std_logic;
       number_a  : in  std_logic_vector(4 downto 0);
       number_b  : in  std_logic_vector(4 downto 0);
       number_c  : in  std_logic_vector(4 downto 0);
       number_d  : in  std_logic_vector(4 downto 0);
       number_e  : in  std_logic_vector(4 downto 0);
       number_f  : in  std_logic_vector(4 downto 0);
       number_g  : in  std_logic_vector(4 downto 0);
       number_h  : in  std_logic_vector(4 downto 0);
       scale     : out std_logic_vector(7 downto 0);
       dout      : out std_logic_vector(7 downto 0)
             );
end;

architecture behav of display is

signal number     :  std_logic_vector(2 downto 0);  
signal LED        :  std_logic_vector(4 downto 0);
signal clk_counter:  std_logic_vector(5 downto 0);
signal clk_d      :  std_logic;

begin

process(clk)
     begin
       if rising_edge(clk) then
          clk_counter<=clk_counter+1;
          if clk_counter=0 then 
                 clk_d<=not clk_d;
          end if;
       end if;
end process;
   
process(clk_d)     
    begin        
       if rising_edge(clk_d) then
            number<=number+1;
            case number(2 downto 0) is            
              when "000" => LED<=number_a; scale<="00000001";
              when "001" => LED<=number_b; scale<="00000010";
              when "010" => LED<=number_c; scale<="00000100";
              when "011" => LED<=number_d; scale<="00001000";
              when "100" => LED<=number_e; scale<="00010000";
              when "101" => LED<=number_f; scale<="00100000";
              when "110" => LED<=number_g; scale<="01000000";
              when "111" => LED<=number_h; scale<="10000000";
              when others => scale<="00000000";
            end case;           
        end if;      
end process;

process(LED)
    begin
       case LED(4 downto 0) is
            when "00000" => dout <= "11000000";
            when "00001" => dout <= "11111001";
            when "00010" => dout <= "10100100";
            when "00011" => dout <= "10110000";
            when "00100" => dout <= "10011001";
            when "00101" => dout <= "10010010";
            when "00110" => dout <= "10000010";
            when "00111" => dout <= "11111000";
       	    when "01000" => dout <= "10000000";
       		when "01001" => dout <= "10010000";

			when "10000" => dout <= "01000000";
            when "10001" => dout <= "01111001";
            when "10010" => dout <= "00100100";
            when "10011" => dout <= "00110000";
            when "10100" => dout <= "00011001";
            when "10101" => dout <= "00010010";
            when "10110" => dout <= "00000010";
            when "10111" => dout <= "01111000";
       	    when "11000" => dout <= "00000000";
       		when "11001" => dout <= "00010000";

       		when "11111" => dout <= "11111111";
       		when others => dout <= "11111111";
        end case; 
end process;

end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -