📄 display.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 + -