📄 display.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY display IS
PORT( SCLK:IN STD_LOGIC;
RESET:IN STD_LOGIC;
SECDIS:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
ADDSEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
hourhdis:IN INTEGER RANGE 0 TO 2;
hourldis:IN INTEGER RANGE 0 TO 9;
minhdis: IN INTEGER RANGE 0 TO 5;
minldis:IN INTEGER RANGE 0 TO 9;
sechdis:IN INTEGER RANGE 0 TO 5;
secldis: IN INTEGER RANGE 0 TO 9);
PROCEDURE LEDDISP(NUMBER:INTEGER RANGE 0 TO 9) IS
BEGIN
CASE NUMBER IS
WHEN 0=>
SECDIS<="00111111";
WHEN 1=>
SECDIS<="00000110";
WHEN 2=>
SECDIS<="01011011";
WHEN 3=>
SECDIS<="01001111";
WHEN 4=>
SECDIS<="01100110";
WHEN 5=>
SECDIS<="01101101";
WHEN 6=>
SECDIS<="01111101";
WHEN 7=>
SECDIS<="00000111";
WHEN 8=>
SECDIS<="01111111";
WHEN 9=>
SECDIS<="01100111";
END CASE;
END LEDDISP;
END display;
ARCHITECTURE archi of display IS
TYPE STATE IS(S1,S2,S3,S4,S5,S6);
SIGNAL NEXSTA,CURSTA:STATE;
BEGIN
SCAN:
PROCESS(SCLK)
BEGIN
IF RESET='1'THEN
NEXSTA<=S1;
ELSIF (SCLK='1'AND SCLK'EVENT)THEN
CURSTA<=NEXSTA;
END IF;
CASE CURSTA IS
WHEN S1=>
ADDSEL<="000";
LEDDISP(hourhdis);
NEXSTA<=S2;
WHEN S2=>
ADDSEL<="001";
LEDDISP(hourldis);
NEXSTA<=S3;
WHEN S3=>
ADDSEL<="010";
LEDDISP(minhdis);
NEXSTA<=S4;
WHEN S4=>
ADDSEL<="011";
LEDDISP(minldis);
NEXSTA<=S5;
WHEN S5=>
ADDSEL<="100";
LEDDISP(sechdis);
NEXSTA<=S6;
WHEN S6=>
ADDSEL<="101";
LEDDISP(secldis);
NEXSTA<=S1;
WHEN OTHERS=>
NULL;
END CASE;
END PROCESS;
END archi;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -