📄 hex2ssd.vhd
字号:
------------------------------------------------------------------------------ hex2ssd: display hex on 7 segments display-- blanks when not enable-- pinout ssd: an3-0 dd abcdefg ----------------------------------------------------------------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity hex2ssd is port( clk: in std_logic; enable: in std_logic; hex: in std_logic_vector(15 downto 0); dot: in std_logic_vector(3 downto 0); ssd: out std_logic_vector(11 downto 0) );end hex2ssd;architecture behavioral of hex2ssd issignal c: std_logic_vector(10 downto 0) := (others => '0');signal nibble: std_logic_vector(3 downto 0); begin process begin wait until rising_edge(clk); case c(10 downto 9) is when "00" => nibble <= hex(3 downto 0); ssd(7) <= dot(0); ssd(11 downto 8) <= "1110"; when "01" => nibble <= hex(7 downto 4); ssd(7) <= dot(1); ssd(11 downto 8) <= "1101"; when "10" => nibble <= hex(11 downto 8); ssd(7) <= dot(2); ssd(11 downto 8) <= "1011"; when "11" => nibble <= hex(15 downto 12); ssd(7) <= dot(3); ssd(11 downto 8) <= "0111"; when others => null; end case; case nibble is when "0000" => ssd(6 downto 0) <= "0000001"; -- 0 when "0001" => ssd(6 downto 0) <= "1001111"; -- 1 when "0010" => ssd(6 downto 0) <= "0010010"; -- 2 when "0011" => ssd(6 downto 0) <= "0000110"; -- 3 when "0100" => ssd(6 downto 0) <= "1001100"; -- 4 when "0101" => ssd(6 downto 0) <= "0100100"; -- 5 when "0110" => ssd(6 downto 0) <= "0100000"; -- 6 when "0111" => ssd(6 downto 0) <= "0001111"; -- 7 when "1000" => ssd(6 downto 0) <= "0000000"; -- 8 when "1001" => ssd(6 downto 0) <= "0000100"; -- 9 when "1010" => ssd(6 downto 0) <= "0001000"; -- A when "1011" => ssd(6 downto 0) <= "1100000"; -- b when "1100" => ssd(6 downto 0) <= "0110001"; -- C when "1101" => ssd(6 downto 0) <= "1000010"; -- d when "1110" => ssd(6 downto 0) <= "0110000"; -- E when "1111" => ssd(6 downto 0) <= "0111000"; -- F when others => null; end case; if (enable = '0') then ssd(6 downto 0) <= "1111111"; end if; c <= c + '1'; end process;end behavioral;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -