交通灯控制器-VHDL语言编写代码.pdf
--Title:交通灯控制器--
--Author:PanHongtao--
--Data:2006-10-1--
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityexp18is
port(Clk:instd_logic;--时钟输入
Rst:instd_logic;--复位输入
R1,R2:outstd_logic;--红灯输出
Y1,Y2:outstd_logic;--黄灯输出
G1,G2:outstd_logic;--绿灯输出
Display:outstd_logic_vector(6downto0);--七段码管显示输出
SEG_SEL:bufferstd_logic_vector(2downto0)--七段码管扫描驱动
);
endexp18;
architecturebehaveofexp18is
signalDisp_Temp:integerrange0to15;
signalDisp_Decode:std_logic_vector(6downto0);
signalSEC1,SEC10:integerrange0to9;
signalDirection:integerrange0to15;
signalClk_Count1:std_logic_vector(9downto0);--产生0.5Hz时钟的分频计数器
signalClk1Hz:std_logic;
signalDir_Flag:std_logic;--方向标志
begin
process(Clk)
begin
if(ClkeventandClk=1)then
if(Clk_Count11000)then
Clk_Count1=Clk_Count1+1;
else
endif;
endif;
endprocess;
Clk1Hz=Clk_Count1(9);
process(Clk1Hz,Rst)
begin
if(Rst=0)then
SEC1=0;
SEC10=2;
Dir_Flag=0;
elsif(Clk1HzeventandClk1Hz=1)then
if(SEC1=0)then
SEC1=9;
if(SEC10=0)then
SEC10=1;
else
SEC10=SEC10-1;
endif;
else
SEC1=SEC1-1;
endif;
if(SEC1=0andSEC10=0)then
Dir_Flag=n