📄 ledshow.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ledshow IS
PORT(
clk,urgen : IN STD_LOGIC;
state : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
sub,set1,set2 : IN STD_LOGIC;
r1,g1,y1,r2,g2,y2 : OUT STD_LOGIC;
led1,led2 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ledshow;
ARCHITECTURE a OF ledshow IS
SIGNAL count1,count2 : STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL setstate1,setstate2 : STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL tg1,tg2,tr1,tr2,ty1,ty2 : STD_LOGIC;
BEGIN
led1<="11111111" WHEN urgen='1' AND clk='0' ELSE count1;
led2<="11111111" WHEN urgen='1' AND clk='0' ELSE count2;
tg1<='1' WHEN state="00" AND urgen='0' ELSE '0';
ty1<='1' WHEN state="01" AND urgen='0' ELSE '0';
tr1<='1' WHEN state(1)='1' OR urgen='1' ELSE '0';
tg2<='1' WHEN state="10" AND urgen='0' ELSE '0';
ty2<='1' WHEN state="11" AND urgen='0' ELSE '0';
tr2<='1' WHEN state(1)='0' OR urgen='1' ELSE '0';
setstate1<= "01000000" WHEN state="00" ELSE
"00000101" WHEN state="01" ELSE
"01000101" ;
setstate2<= "01000000" WHEN state="10" ELSE
"00000101" WHEN state="11" ELSE
"01000101" ;
label2:
PROCESS (sub)
BEGIN
IF sub'event AND sub='1' THEN
IF set2='1' THEN
count2<=setstate2;
ELSIF count2(3 DOWNTO 0)="0000" THEN count2<=count2-7; ELSE count2<=count2-1; END IF;
g2<=tg2;
r2<=tr2;
y2<=ty2;
END IF;
END PROCESS label2;
label1:
PROCESS (sub)
BEGIN
IF sub'event AND sub='1' THEN
IF set1='1' THEN
count1<=setstate1;
ELSIF count1(3 DOWNTO 0)="0000" THEN count1<=count1-7; ELSE count1<=count1-1; END IF;
g1<=tg1;
r1<=tr1;
y1<=ty1;
END IF;
END PROCESS label1;
END a;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -