📄 show.vhd
字号:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity show is
Port ( clk3200 :in std_logic;
reset :in std_logic;
show_th,show_hu,show_ten,show_one: in std_logic_vector(3 downto 0);
led_data:out std_logic_vector(6 downto 0);
w1,w2,w3,w4:out std_logic);
end show;
architecture Behavioral of show is
type state is (thousand,hundred,ten,one);
signal current:state;
signal clkout:std_logic;
begin
show:process(clk3200)
begin
if reset='0' then
current<=thousand;
w1<='1';w2<='1';w3<='1';w4<='1';
elsif rising_edge(clk3200) then
case current is
when thousand =>w1<='0';w2<='1';w3<='1';w4<='1';
case show_th is
when "0000"=>led_data<="0000001";
when "0001"=>led_data<="1001111";
when "0010"=>led_data<="0010010";
when "0011"=>led_data<="0000110";
when "0100"=>led_data<="1001100";
when "0101"=>led_data<="0100100";
when "0110"=>led_data<="0100000";
when "0111"=>led_data<="0001111";
when "1000"=>led_data<="0000000";
when "1001"=>led_data<="0000100";
when others=>null;
end case;
current<=hundred;
when hundred =>w2<='0';w1<='1';w3<='1';w4<='1';
case show_hu is
when "0000"=>led_data<="0000001";
when "0001"=>led_data<="1001111";
when "0010"=>led_data<="0010010";
when "0011"=>led_data<="0000110";
when "0100"=>led_data<="1001100";
when "0101"=>led_data<="0100100";
when "0110"=>led_data<="0100000";
when "0111"=>led_data<="0001111";
when "1000"=>led_data<="0000000";
when "1001"=>led_data<="0000100";
when others=>null;
end case;
current<=ten;
when ten =>w3<='0';w1<='1';w2<='1';w4<='1';
case show_ten is
when "0000"=>led_data<="0000001";
when "0001"=>led_data<="1001111";
when "0010"=>led_data<="0010010";
when "0011"=>led_data<="0000110";
when "0100"=>led_data<="1001100";
when "0101"=>led_data<="0100100";
when "0110"=>led_data<="0100000";
when "0111"=>led_data<="0001111";
when "1000"=>led_data<="0000000";
when "1001"=>led_data<="0000100";
when others=>null;
end case;
current<=one;
when one =>w4<='0';w1<='1';w2<='1';w3<='1';
case show_one is
when "0000"=>led_data<="0000001";
when "0001"=>led_data<="1001111";
when "0010"=>led_data<="0010010";
when "0011"=>led_data<="0000110";
when "0100"=>led_data<="1001100";
when "0101"=>led_data<="0100100";
when "0110"=>led_data<="0100000";
when "0111"=>led_data<="0001111";
when "1000"=>led_data<="0000000";
when "1001"=>led_data<="0000100";
when others=>null;
end case;
current<=thousand;
when others=>null;
end case;
end if;
end process;
end Behavioral;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -