兴业花园:如何用VHDL设计一个八路彩灯控制器?要求1彩灯明暗变化节拍为0.25和0.5S两种节拍交替进行

来源:百度文库 编辑:高校问答 时间:2024/04/27 19:03:47
2彩灯用发光二极管LED模拟3演示花型3种(自拟)4要求系统以两种节拍交替循环演示3种花型

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CDKZ IS
PORT(CLK:IN STD_LOGIC;
D:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END CDKZ;
ARCHITECTURE ART OF CDKZ IS
SIGNAL A:INTEGER RANGE 0 TO 8;
SIGNAL B:INTEGER RANGE 0 TO 3;
SIGNAL Q,T:STD_LOGIC;
BEGIN
PROCESS(CLK)IS
BEGIN
IF CLK'EVENT AND CLK='1'THEN
IF A=8 THEN
A<=1;T<=NOT T;
IF B=2 THEN
B<=0;
else
B<=B+1;
END IF;
ELSIF A=0 THEN
A<=1;T<='1';
ELSIF T='1'THEN
A<=A+1;
ELSIF T='0'AND Q='1'THEN
A<=A+1;Q<=NOT Q;
ELSIF T='0'AND Q='0'THEN
Q<=NOT Q;
END IF;
END IF;
END PROCESS;
D<="01010101"WHEN A=1 AND B=1 ELSE
"10101010"WHEN A=2 AND B=1 ELSE
"01010101"WHEN A=3 AND B=1 ELSE
"10101010"WHEN A=4 AND B=1 ELSE
"01010101"WHEN A=5 AND B=1 ELSE
"10101010"WHEN A=6 AND B=1 ELSE
"01010101"WHEN A=7 AND B=1 ELSE
"10101010"WHEN A=8 AND B=1 ELSE
"10000000"WHEN A=1 AND B=2 ELSE
"11000000"WHEN A=2 AND B=2 ELSE
"11100000"WHEN A=3 AND B=2 ELSE
"11110000"WHEN A=4 AND B=2 ELSE
"11111000"WHEN A=5 AND B=2 ELSE
"11111100"WHEN A=6 AND B=2 ELSE
"11111110"WHEN A=7 AND B=2 ELSE
"11111111"WHEN A=8 AND B=2 ELSE
"10000001"WHEN A=1 AND B=0 ELSE
"11000011"WHEN A=2 AND B=0 ELSE
"11100111"WHEN A=3 AND B=0 ELSE
"11111111"WHEN A=4 AND B=0 ELSE
"01111110"WHEN A=5 AND B=0 ELSE
"00111100"WHEN A=6 AND B=0 ELSE
"00011000"WHEN A=7 AND B=0 ELSE
"00000000"WHEN A=8 AND B=0;
END ARCHITECTURE ART;