交通燈VHDL程序设计.doc
文本预览下载声明
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity div is
port(clk3:IN std_logic;
clkout1,clkout2:OUT std_logic);
end div;
architecture one of div is
begin
process(clk3)
variable cnt:integer range 0 to
variable tmp:std_logic;
begin
if(clk3event and clk3=1)then
if cntthen --1s分频
cnt:=0;
tmp:=not tmp;
else cnt:=cnt+1;
end if;
end if;
clkout1=tmp;
end process;
process(clk3)
variable cnt:integer range 0 to 100000;
variable tmp:std_logic;
begin
if(clk3event and clk3=1)then --1ms分频
if cnt=25000 then
cnt:=0;
tmp:=not tmp;
else cnt:=cnt+1;
end if;
end if;
clkout2=tmp;
end process;
end one;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY KZ IS
PORT(CLK,dtufa:IN STD_LOGIC;
Gn,Yn,Rn,L1,L2, Gd,Yd,Rd :OUT STD_LOGIC);
END;
ARCHITECTURE ART OF KZ IS
BEGIN
PROCESS(CLK,dtufa) IS
VARIABLE S,y:INTEGER RANGE 0 TO 124;
BEGIN
if dtufa=1then
Gn=1; --南北向绿灯亮
Yn=1;
Rn=0;
L1=1;
Gd=1;
Yd=1;
Rd=0; --东西向红灯亮
L2=1;
elsIF(CLKEVENT AND CLK=1)THEN
IF S98 THEN
S:=0;
else
S:=S+1;
end if;
IF 0=s and S33 THEN --40s内
Gn=0; --南北向绿灯亮
Yn=1;
Rn=1;
L1=1;
Gd=1;
Yd=1;
Rd=0; --东西向红灯亮
L2=1;
ELSIF s=33 THEN --南北向绿灯闪烁的第1秒
Gn=1;
Yn=1;
Rn=1;
L1=1;
Gd=1;
Yd=1;
Rd=0;
L2=1;
ELSIF s=34 THEN --南北向绿灯闪烁的第2秒
Gn=0;
Yn=1;
Rn=1;
L1=1;
Gd=1;
Yd=1;
Rd=0;
L2=1;
ELSIF s=35 THEN --南北向绿灯闪烁的第3秒
Gn=1;
Yn=1;
Rn=1;
L1=1;
Gd=1;
Yd=1;
Rd=0;
L2=1;
ELSIF s=36 THEN --南北向绿灯闪烁的第4秒
Gn=0;
Yn=1;
Rn=1;
L1=1;
Gd=1;
Yd=1;
Rd=0;
显示全部