📄 manual.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;
entity manual is
port(
clk: in std_logic;
cp:in std_logic;
en: in std_logic_vector(1 downto 0);
count: in std_logic_vector(1 downto 0);
L1:out std_logic;
L2:out std_logic;
L3:out std_logic;
L4:out std_logic;
L5:out std_logic;
L6:out std_logic;
L7:out std_logic;
L8:out std_logic;
h1:out std_logic;
h2:out std_logic;
h3:out std_logic;
h4:out std_logic;
h5:out std_logic;
h6:out std_logic;
h7:out std_logic;
h8:out std_logic
);
end ;
architecture behavor of manual is
signal b:std_logic_vector(12 downto 0):="0000000000000";
signal a:std_logic_vector(2 downto 0);
signal e:std_logic_vector(2 downto 0);
signal z:std_logic_vector(2 downto 0);
signal x:std_logic_vector(2 downto 0);
signal n:std_logic_vector(1 downto 0);
signal m:std_logic_vector(4 downto 0);
signal c:std_logic_vector(0 to 7);
signal d:std_logic_vector(0 to 7);
begin
process(clk,cp)
begin
if(clk'event and clk='1') then
if(cp='0')then
b<=b+1;
else
b<="0000000000000";
end if;
end if;
end process;
process(clk)
begin
e(0)<=b(0);
e(1)<=b(1);
e(2)<=b(2);
z(0)<=b(6);
z(1)<=b(7);
z(2)<=b(8);
if(clk'event and clk='1') then
if(en="00")then
case z is
when "000"=>c<="10000000";
when "001"=>c<="01000000";
when "010"=>c<="00100000";
when "011"=>c<="00010000";
when "100"=>c<="00001000";
when "101"=>c<="00000100";
when "110"=>c<="00000010";
when others=>c<="00000001";
end case;
else
case e is
when "000"=>c<="10000000";
when "001"=>c<="01000000";
when "010"=>c<="00100000";
when "011"=>c<="00010000";
when "100"=>c<="00001000";
when "101"=>c<="00000100";
when "110"=>c<="00000010";
when others=>c<="00000001";
end case;
end if;
h8<=c(0);
h7<=c(1);
h6<=c(2);
h5<=c(3);
h4<=c(4);
h3<=c(5);
h2<=c(6);
h1<=c(7);
end if;
end process;
process(clk)
begin
a(0)<=b(0);
a(1)<=b(1);
a(2)<=b(2);
x(0)<=b(9);
x(1)<=b(10);
x(2)<=b(11);
n(0)<=b(9);
n(1)<=b(10);
m(0)<=b(8);
m(1)<=b(9);
m(2)<=b(10);
m(3)<=b(11);
m(4)<=b(12);
if(clk'event and clk='1') then
if(en="10")then
if(count="00")then
case a is
when "000" =>d<="11111111";
when "001" =>d<="11000111";
when "010" =>d<="11011011";
when "011" =>d<="11011011";
when "100" =>d<="11000111";
when "101" =>d<="11011011";
when "110" =>d<="11011011";
when others =>d<="11000111";
end case;
elsif(count="01")then
case a is
when "000" =>d<="11111111";
when "001" =>d<="11011011";
when "010" =>d<="11011011";
when "011" =>d<="11011011";
when "100" =>d<="11011011";
when "101" =>d<="11011011";
when "110" =>d<="11011011";
when others =>d<="11100111";
end case;
elsif(count="10")then
case a is
when "000" =>d<="11111111";
when "001" =>d<="11000111";
when "010" =>d<="11011011";
when "011" =>d<="11011011";
when "100" =>d<="11000111";
when "101" =>d<="11011111";
when "110" =>d<="11011111";
when others =>d<="11011111";
end case;
else
case a is
when "000" =>d<="11111111";
when "001" =>d<="00000000";
when "010" =>d<="11100111";
when "011" =>d<="11100111";
when "100" =>d<="11100111";
when "101" =>d<="11100111";
when "110" =>d<="11100111";
when others =>d<="11100111";
end case;
end if;
elsif(en="00")then
case x is
when "000" =>d<="01111111";
when "001" =>d<="00111111";
when "010" =>d<="00011111";
when "011" =>d<="00001111";
when "100" =>d<="00000111";
when "101" =>d<="00000011";
when "110" =>d<="00000001";
when others =>d<="00000000";
end case;
elsif(en="01")then
if(n="00")then
case a is
when "000" =>d<="11111111";
when "001" =>d<="11000111";
when "010" =>d<="11011011";
when "011" =>d<="11011011";
when "100" =>d<="11000111";
when "101" =>d<="11011011";
when "110" =>d<="11011011";
when others =>d<="11000111";
end case;
elsif(n="01")then
case a is
when "000" =>d<="11111111";
when "001" =>d<="11011011";
when "010" =>d<="11011011";
when "011" =>d<="11011011";
when "100" =>d<="11011011";
when "101" =>d<="11011011";
when "110" =>d<="11011011";
when others =>d<="11100111";
end case;
elsif(n="10")then
case a is
when "000" =>d<="11111111";
when "001" =>d<="11000111";
when "010" =>d<="11011011";
when "011" =>d<="11011011";
when "100" =>d<="11000111";
when "101" =>d<="11011111";
when "110" =>d<="11011111";
when others =>d<="11011111";
end case;
elsif(n="11")then
case a is
when "000" =>d<="11111111";
when "001" =>d<="00000000";
when "010" =>d<="11100111";
when "011" =>d<="11100111";
when "100" =>d<="11100111";
when "101" =>d<="11100111";
when "110" =>d<="11100111";
when others =>d<="11100111";
end case;
end if;
elsif(en="11")then
if(m="00000" or m="00001" )then
case a is
when "000" =>d<="00000000";
when "001" =>d<="11100111";
when "010" =>d<="11100111";
when "011" =>d<="11100111";
when "100" =>d<="11100111";
when "101" =>d<="11100111";
when "110" =>d<="11100111";
when others =>d<="00000000";
end case;
elsif(m="00010")then
case a is
when "000" =>d<="00000001";
when "001" =>d<="11001111";
when "010" =>d<="11001111";
when "011" =>d<="11001111";
when "100" =>d<="11001111";
when "101" =>d<="11001111";
when "110" =>d<="11001111";
when others =>d<="00000001";
end case;
elsif(m="00011")then
case a is
when "000" =>d<="00000011";
when "001" =>d<="10011111";
when "010" =>d<="10011111";
when "011" =>d<="10011111";
when "100" =>d<="10011111";
when "101" =>d<="10011111";
when "110" =>d<="10011111";
when others =>d<="00000011";
end case;
elsif(m="00100")then
case a is
when "000" =>d<="00000111";
when "001" =>d<="00111111";
when "010" =>d<="00111111";
when "011" =>d<="00111111";
when "100" =>d<="00111111";
when "101" =>d<="00111111";
when "110" =>d<="00111111";
when others =>d<="00000111";
end case;
elsif(m="00101")then
case a is
when "000" =>d<="00001111";
when "001" =>d<="01111111";
when "010" =>d<="01111110";
when "011" =>d<="01111110";
when "100" =>d<="01111111";
when "101" =>d<="01111111";
when "110" =>d<="01111111";
when others =>d<="00001111";
end case;
elsif(m="00110")then
case a is
when "000" =>d<="00011111";
when "001" =>d<="11111110";
when "010" =>d<="11111101";
when "011" =>d<="11111101";
when "100" =>d<="11111110";
when "101" =>d<="11111111";
when "110" =>d<="11111111";
when others =>d<="00011111";
end case;
elsif(m="00111")then
case a is
when "000" =>d<="00111111";
when "001" =>d<="11111100";
when "010" =>d<="11111011";
when "011" =>d<="11111011";
when "100" =>d<="11111101";
when "101" =>d<="11111110";
when "110" =>d<="11111111";
when others =>d<="00111111";
end case;
elsif(m="01000")then
case a is
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -