📄 sevenduan.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity SEVENduan is
port(SCANCLK:IN STD_LOGIC;
BIN,time:IN integer range 0 to 255;
SEGOUT:out std_logic_vector(6 downto 0);
SELOUT:out std_logic_vector(3 downto 0);
getdata,jishudata:buffer std_logic_vector(7 downto 0));
end sevenduan;
architecture behav of sevenduan is
signal L,H,Sh,G:std_logic_vector(3 downto 0);
signal NUM:std_logic_vector(3 downto 0);
signal SEG:std_logic_vector(6 downto 0);
signal SEL:std_logic_vector(3 downto 0);
signal S:std_logic_vector(2 downto 0);
begin
getdata<="00000000" WHEN BIN = 0 ELSE
"00000001" WHEN BIN = 1 ELSE
"00000010" WHEN BIN = 2 ELSE
"00000011" WHEN BIN = 3 ELSE
"00000100" WHEN BIN = 4 ELSE
"00000101" WHEN BIN = 5 ELSE
"00000110" WHEN BIN = 6 ELSE
"00000111" WHEN BIN = 7 ELSE
"00001000" WHEN BIN = 8 ELSE
"00001001" WHEN BIN = 9 ELSE
"00010000" WHEN BIN = 10 ELSE
"00010001" WHEN BIN = 11 ELSE
"00010010" WHEN BIN = 12 ELSE
"00010011" WHEN BIN = 13 ELSE
"00010100" WHEN BIN = 14 ELSE
"00010101" WHEN BIN = 15 ELSE
"00010110" WHEN BIN = 16 ELSE
"00010111" WHEN BIN = 17 ELSE
"00011000" WHEN BIN = 18 ELSE
"00011001" WHEN BIN = 19 ELSE
"00100000" WHEN BIN = 20 ELSE
"00100001" WHEN BIN = 21 ELSE
"00100010" WHEN BIN = 22 ELSE
"00100011" WHEN BIN = 23 ELSE
"00100100" WHEN BIN = 24 ELSE
"00100101" WHEN BIN = 25 ELSE
"00100110" WHEN BIN = 26 ELSE
"00100111" WHEN BIN = 27 ELSE
"00101000" WHEN BIN = 28 ELSE
"00101001" WHEN BIN = 29 ELSE
"00110000" WHEN BIN = 30 ELSE
"00110001" WHEN BIN = 31 ELSE
"00110010" WHEN BIN = 32 ELSE
"00110011" WHEN BIN = 33 ELSE
"00110100" WHEN BIN = 34 ELSE
"00110101" WHEN BIN = 35 ELSE
"00110110" WHEN BIN = 36 ELSE
"00110111" WHEN BIN = 37 ELSE
"00111000" WHEN BIN = 38 ELSE
"00111001" WHEN BIN = 39 ELSE
"01000000" WHEN BIN = 40 ELSE
"01000001" WHEN BIN = 41 ELSE
"01000010" WHEN BIN = 42 ELSE
"01000011" WHEN BIN = 43 ELSE
"01000100" WHEN BIN = 44 ELSE
"01000101" WHEN BIN = 45 ELSE
"01000110" WHEN BIN = 46 ELSE
"01000111" WHEN BIN = 47 ELSE
"01001000" WHEN BIN = 48 ELSE
"01001001" WHEN BIN = 49 ELSE
"01010000" WHEN BIN = 50 ELSE
"01010001" WHEN BIN = 51 ELSE
"01010010" WHEN BIN = 52 ELSE
"01010011" WHEN BIN = 53 ELSE
"01010100" WHEN BIN = 54 ELSE
"01010101" WHEN BIN = 55 ELSE
"01010110" WHEN BIN = 56 ELSE
"01010111" WHEN BIN = 57 ELSE
"01011000" WHEN BIN = 58 ELSE
"01011001" WHEN BIN = 59 ELSE
"01100000" WHEN BIN = 60 ELSE
"01100001" WHEN BIN = 61 ELSE
"01100010" WHEN BIN = 62 ELSE
"01100011" WHEN BIN = 63 ELSE
"01100100" WHEN BIN = 64 ELSE
"01100101" WHEN BIN = 65 ELSE
"01100110" WHEN BIN = 66 ELSE
"01100111" WHEN BIN = 67 ELSE
"01101000" WHEN BIN = 68 ELSE
"01101001" WHEN BIN = 69 ELSE
"01110000" WHEN BIN = 70 ELSE
"01110001" WHEN BIN = 71 ELSE
"01110010" WHEN BIN = 72 ELSE
"01110011" WHEN BIN = 73 ELSE
"01110100" WHEN BIN = 74 ELSE
"01110101" WHEN BIN = 75 ELSE
"01110110" WHEN BIN = 76 ELSE
"01110111" WHEN BIN = 77 ELSE
"01111000" WHEN BIN = 78 ELSE
"01111001" WHEN BIN = 79 ELSE
"10000000" WHEN BIN = 80 ELSE
"10000001" WHEN BIN = 81 ELSE
"10000010" WHEN BIN = 82 ELSE
"10000011" WHEN BIN = 83 ELSE
"10000100" WHEN BIN = 84 ELSE
"10000101" WHEN BIN = 85 ELSE
"10000110" WHEN BIN = 86 ELSE
"10000111" WHEN BIN = 87 ELSE
"10001000" WHEN BIN = 88 ELSE
"10001001" WHEN BIN = 89 ELSE
"10010000" WHEN BIN = 90 ELSE
"10010001" WHEN BIN = 91 ELSE
"10010010" WHEN BIN = 92 ELSE
"10010011" WHEN BIN = 93 ELSE
"10010100" WHEN BIN = 94 ELSE
"10010101" WHEN BIN = 95 ELSE
"10010110" WHEN BIN = 96 ELSE
"10010111" WHEN BIN = 97 ELSE
"10011000" WHEN BIN = 98 ELSE
"10011001" WHEN BIN = 99 ELSE
"00000000";
jishudata<="00000000" WHEN time = 0 ELSE
"00000001" WHEN time = 1 ELSE
"00000010" WHEN time = 2 ELSE
"00000011" WHEN time = 3 ELSE
"00000100" WHEN time = 4 ELSE
"00000101" WHEN time = 5 ELSE
"00000110" WHEN time = 6 ELSE
"00000111" WHEN time = 7 ELSE
"00001000" WHEN time = 8 ELSE
"00001001" WHEN time= 9 ELSE
"00010000" WHEN time = 10 ELSE
"00010001" WHEN time = 11 ELSE
"00010010" WHEN time = 12 ELSE
"00010011" WHEN time = 13 ELSE
"00010100" WHEN time = 14 ELSE
"00010101" WHEN time = 15 ELSE
"00010110" WHEN time= 16 ELSE
"00010111" WHEN time = 17 ELSE
"00011000" WHEN time= 18 ELSE
"00011001" WHEN time = 19 ELSE
"00100000" WHEN time= 20 ELSE
"00100001" WHEN time= 21 ELSE
"00100010" WHEN time= 22 ELSE
"00100011" WHEN time= 23 ELSE
"00100100" WHEN time = 24 ELSE
"00100101" WHEN time = 25 ELSE
"00100110" WHEN time = 26 ELSE
"00100111" WHEN time = 27 ELSE
"00101000" WHEN time = 28 ELSE
"00101001" WHEN time = 29 ELSE
"00110000" WHEN time = 30 ELSE
"00110001" WHEN time = 31 ELSE
"00110010" WHEN time = 32 ELSE
"00110011" WHEN time = 33 ELSE
"00110100" WHEN time = 34 ELSE
"00110101" WHEN time = 35 ELSE
"00110110" WHEN time = 36 ELSE
"00110111" WHEN time = 37 ELSE
"00111000" WHEN time= 38 ELSE
"00111001" WHEN time = 39 ELSE
"01000000" WHEN time = 40 ELSE
"01000001" WHEN time = 41 ELSE
"01000010" WHEN time = 42 ELSE
"01000011" WHEN time = 43 ELSE
"01000100" WHEN time= 44 ELSE
"01000101" WHEN time= 45 ELSE
"01000110" WHEN time = 46 ELSE
"01000111" WHEN time = 47 ELSE
"01001000" WHEN time= 48 ELSE
"01001001" WHEN time = 49 ELSE
"01010000" WHEN time = 50 ELSE
"01010001" WHEN time = 51 ELSE
"01010010" WHEN time = 52 ELSE
"01010011" WHEN time = 53 ELSE
"01010100" WHEN time = 54 ELSE
"01010101" WHEN time = 55 ELSE
"01010110" WHEN time = 56 ELSE
"01010111" WHEN time = 57 ELSE
"01011000" WHEN time = 58 ELSE
"01011001" WHEN time = 59 ELSE
"01100000" WHEN time = 60 ELSE
"01100001" WHEN time = 61 ELSE
"01100010" WHEN time = 62 ELSE
"01100011" WHEN time = 63 ELSE
"01100100" WHEN time = 64 ELSE
"01100101" WHEN time = 65 ELSE
"01100110" WHEN time = 66 ELSE
"01100111" WHEN time = 67 ELSE
"01101000" WHEN time = 68 ELSE
"01101001" WHEN time = 69 ELSE
"01110000" WHEN time = 70 ELSE
"01110001" WHEN time = 71 ELSE
"01110010" WHEN time = 72 ELSE
"01110011" WHEN time = 73 ELSE
"01110100" WHEN time = 74 ELSE
"01110101" WHEN time = 75 ELSE
"01110110" WHEN time = 76 ELSE
"01110111" WHEN time = 77 ELSE
"01111000" WHEN time = 78 ELSE
"01111001" WHEN time= 79 ELSE
"10000000" WHEN time = 80 ELSE
"10000001" WHEN time = 81 ELSE
"10000010" WHEN time = 82 ELSE
"10000011" WHEN time = 83 ELSE
"10000100" WHEN time = 84 ELSE
"10000101" WHEN time = 85 ELSE
"10000110" WHEN time = 86 ELSE
"10000111" WHEN time = 87 ELSE
"10001000" WHEN time = 88 ELSE
"10001001" WHEN time = 89 ELSE
"10010000" WHEN time = 90 ELSE
"10010001" WHEN time = 91 ELSE
"10010010" WHEN time = 92 ELSE
"10010011" WHEN time = 93 ELSE
"10010100" WHEN time = 94 ELSE
"10010101" WHEN time = 95 ELSE
"10010110" WHEN time = 96 ELSE
"10010111" WHEN time = 97 ELSE
"10011000" WHEN time= 98 ELSE
"10011001" WHEN time = 99 ELSE
"00000000";
CONNECTION:BLOCK
BEGIN
L<=getdata(3 downto 0);
H<=getdata(7 downto 4);
Sh<=jishudata(7 downto 4);
G<=jishudata(3 downto 0);
SELOUT<=SEL;
SEGOUT(6 DOWnTO 0)<=SEG;
END BLOCK CONNECTION;
FREE_COUNTRE:BLOCK
signal q:std_logic_vector(2 downto 0);
begin
process(scanclk)
begin
if scanclk'event and scanclk='1' then
q<=q+1;
if q=3 then
q<="000";
end if;
end if;
end process;
S<=q(2 downto 0);
sel<="0001"when s=0 else
"0010"when s=1 else
"0100"when s=2 else
"1000"when s=3 else
"0000";
end block free_countre;
select_bcd:block
begin
num<=L WHEN (S=0)ELSE
H WHEN (S=1)ELSE
G WHEN (S=2)ELSE
Sh;
end block SELECT_BCD;
SEVEN_SEG:BLOCK
BEGIN
SEG <= "0111111" WHEN NUM = "0000" ELSE
"0000110" WHEN NUM = "0001"ELSE
"1011011" WHEN NUM = "0010" ELSE
"1001111" WHEN NUM = "0011" ELSE
"1100110" WHEN NUM = "0100" ELSE
"1101101" WHEN NUM = "0101" ELSE
"1111101" WHEN NUM = "0110" ELSE
"0000111" WHEN NUM = "0111" ELSE
"1111111" WHEN NUM = "1000" ELSE
"1101111" WHEN NUM = "1001" ELSE
"1110111" WHEN NUM = "1010" ELSE
"1111100" WHEN NUM = "1011" ELSE
"0111001" WHEN NUM = "1100" ELSE
"1011110" WHEN NUM = "1101" ELSE
"1111001" WHEN NUM = "1110" ELSE
"1110001" WHEN NUM = "1111" ELSE
"0000000";
end block seven_seg;
End behav;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -