xsxuanze.vhd
来自「VHDL的数字电子钟程序」· VHDL 代码 · 共 97 行
VHD
97 行
-------------------------xsxuanze---------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith;
entity xsxuanze is
port(h_high : in std_logic_vector(3 downto 0);
h_low : in std_logic_vector(3 downto 0);
m_high : in std_logic_vector(3 downto 0);
m_low : in std_logic_vector(3 downto 0);
s_high: in std_logic_vector(3 downto 0);
s_low: in std_logic_vector(3 downto 0);
sdh_high : in std_logic_vector(3 downto 0);
sdh_low : in std_logic_vector(3 downto 0);
sdm_high : in std_logic_vector(3 downto 0);
sdm_low : in std_logic_vector(3 downto 0);
sds_high: in std_logic_vector(3 downto 0);
sds_low: in std_logic_vector(3 downto 0);
en : in std_logic;
clk: in std_logic;
BT : out std_logic_vector(7 downto 0);
SG : out std_logic_vector(7 downto 0)
);
end xsxuanze;
architecture a of xsxuanze is
signal cnt8:std_logic_vector(2 downto 0);
signal AN :std_logic_vector(3 downto 0);
begin
process(clk)
begin
IF (CLK'EVENT AND CLK = '1') THEN
if cnt8 = "111" then
cnt8 <="000";
else
CNT8 <= CNT8 + "001";
end if;
END IF;
end process;
P1:
PROCESS (cnt8)
BEGIN
if(en='0')then
CASE CNT8 IS
WHEN "000" => BT <= "11111110"; An <=h_high;
WHEN "001" => BT <= "11111101"; An <=h_low;
WHEN "010" => BT <= "11111011"; An <="1111";
WHEN "011" => BT <= "11110111"; An <=m_high;
WHEN "100" => BT <= "11101111"; An <=m_low;
WHEN "101" => BT <= "11011111"; An <="1111";
WHEN "110" => BT <= "10111111"; An <=s_high;
WHEN "111" => BT <= "01111111"; An <=s_low;
WHEN OTHERS => BT <= "11111111"; An <= "1110" ;
END CASE;
else
CASE CNT8 IS
WHEN "000" => BT <= "11111110"; An <=sdh_high;
WHEN "001" => BT <= "11111101"; An <=sdh_low;
WHEN "010" => BT <= "11111011"; An <="1111";
WHEN "011" => BT <= "11110111"; An <=sdm_high;
WHEN "100" => BT <= "11101111"; An <=sdm_low;
WHEN "101" => BT <= "11011111"; An <="1111";
WHEN "110" => BT <= "10111111"; An <=sds_high;
WHEN "111" => BT <= "01111111"; An <=sds_low;
WHEN OTHERS => BT <= "11111111"; An <= "1110" ;
END CASE;
end if;
END PROCESS P1;
P3:
PROCESS ( An )
BEGIN
CASE An IS
WHEN B"0000" => SG <= "11000000"; -- 0
WHEN B"0001" => SG <= "11111001"; -- 1
WHEN B"0010" => SG <= "10100100"; -- 2
WHEN B"0011" => SG <= "10110000"; -- 3
WHEN B"0100" => SG <= "10011001"; -- 4
WHEN B"0101" => SG <= "10010010"; -- 5
WHEN B"0110" => SG <= "10000010"; -- 6
WHEN B"0111" => SG <= "11111000"; -- 7
WHEN B"1000" => SG <= "10000000"; -- 8
WHEN B"1001" => SG <= "10010000"; -- 9
WHEN B"1010" => SG <= "10111111";--"0001000"; -- A
WHEN B"1011" => SG <= "10111111";--"0000011"; -- B
WHEN B"1100" => SG <= "10111111";--"1000110"; -- C
WHEN B"1101" => SG <= "10111111";--"0100001"; -- D
WHEN B"1110" => SG <= "11111111";--"0000110"; -- E
WHEN B"1111" => SG <= "10111111";--"1111111"; -- -
WHEN OTHERS => NULL;
END CASE;
END PROCESS P3;
end a;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?