level 1
RangRy_
楼主
ENTITY LIGHT IS
PORT(
SRED: OUT STD_LOGIC; 行人方向红灯
SGREEN: OUT STD_LOGIC; 行人方向绿灯
ERED: OUT STD_LOGIC; 车辆方向红灯
EGREEN: OUT STD_LOGIC; 车辆方向绿灯
EYELLOW: OUT STD_LOGIC; --车辆方向黄灯
GT_SET: IN STD_LOGIC; ——预置有效信号输入
GHUMAN_TIME: IN INTEGER RANGE 31 DOWNTO 0; 行人通行时间
GHUMAN_CLKT: IN INTEGER RANGE 31 DOWNTO 0; 行人方向信号灯闪烁时间
GVEHICLE_TIME: IN INTEGER RANGE 31 DOWNTO 0; 车辆通行时间
REQUEST: IN STD_LOGIC; 请求信号输入
CLK: IN STD_LOGIC; 时钟信号
RST: IN STD_LOGIC 复位信号
);
END LIGHT;
ARCHITECTURE BEHAVE OF LIGHT IS --设计结构体
TYPE IN_STATES IS (ST0,ST1,ST2,ST3,ST4); 五种状态
SIGNAL CURRENT_STATE: IN_STATES;
SIGNAL NEXT_STATE: IN_STATES;
SIGNAL START: STD_LOGIC;
SIGNAL SIG: INTEGER RANGE 31 DOWNTO 0;
BEGIN
PROCESS(CURRENT_STATE,RST)
BEGIN
IF(RST='1' OR CURRENT_STATE=ST0)THEN
START<='0';
ELSE START<='1';
END IF;
END PROCESS;
A:PROCESS(START,CLK)
BEGIN
IF(RST='1')THEN
SIG<=0;
ELSIF(CLK'EVENT AND CLK='1')THEN
IF(START='1')THEN
IF(SIG=GVEHICLE_TIME)THEN
SIG<=0;
ELSE SIG<=SIG+1;
END IF;
ELSE SIG<=0;
END IF;
END IF;
END PROCESS A;
PROCESS(RST,CLK)
BEGIN
IF(RST='1')THEN
CURRENT_STATE<=ST0;
ELSIF(CLK'EVENT AND CLK='1')THEN
CURRENT_STATE<=NEXT_STATE;
END IF;
END PROCESS;
PROCESS(CLK,CURRENT_STATE)
BEGIN
CASE CURRENT_STATE IS
WHEN ST0=> ERED<='0';EGREEN<='1';EYELLOW<='0';SRED<='1';SGREEN<='0';
IF(REQUEST='1' AND GT_SET='0')THEN
NEXT_STATE<=ST1;
ELSE NEXT_STATE<=ST0;
END IF;
WHEN ST1=> ERED<='0';EGREEN<='0';EYELLOW<='1';SRED<='1';SGREEN<='0';
IF(SIG=1)THEN
NEXT_STATE<=ST2;
ELSE NEXT_STATE<=ST1;
END IF;
WHEN ST2=> ERED<='1';EGREEN<='0';EYELLOW<='0';SRED<='0';SGREEN<='1';
IF(SIG=GHUMAN_TIME)THEN
NEXT_STATE<=ST3;
ELSE NEXT_STATE<=ST2;
END IF;
WHEN ST3=> ERED<='1';EGREEN<='0';EYELLOW<='0';SRED<='0';SGREEN<=NOT CLK;
IF(SIG=GHUMAN_CLKT)THEN
NEXT_STATE<=ST4;
ELSE NEXT_STATE<=ST3;
END IF;
WHEN ST4=> ERED<='0';EGREEN<='1';EYELLOW<='0';SRED<='1';SGREEN<='0';
IF(SIG=GVEHICLE_TIME)THEN
NEXT_STATE<=ST0;
ELSE NEXT_STATE<=ST4;
END IF;
WHEN OTHERS=> ERED<='0';EGREEN<='1';EYELLOW<='0';
SRED<='1';SGREEN<='0';NEXT_STATE<=ST3;
END CASE;
END PROCESS;
END BEHAVE;
2016年05月18日 15点05分
1
PORT(
SRED: OUT STD_LOGIC; 行人方向红灯
SGREEN: OUT STD_LOGIC; 行人方向绿灯
ERED: OUT STD_LOGIC; 车辆方向红灯
EGREEN: OUT STD_LOGIC; 车辆方向绿灯
EYELLOW: OUT STD_LOGIC; --车辆方向黄灯
GT_SET: IN STD_LOGIC; ——预置有效信号输入
GHUMAN_TIME: IN INTEGER RANGE 31 DOWNTO 0; 行人通行时间
GHUMAN_CLKT: IN INTEGER RANGE 31 DOWNTO 0; 行人方向信号灯闪烁时间
GVEHICLE_TIME: IN INTEGER RANGE 31 DOWNTO 0; 车辆通行时间
REQUEST: IN STD_LOGIC; 请求信号输入
CLK: IN STD_LOGIC; 时钟信号
RST: IN STD_LOGIC 复位信号
);
END LIGHT;
ARCHITECTURE BEHAVE OF LIGHT IS --设计结构体
TYPE IN_STATES IS (ST0,ST1,ST2,ST3,ST4); 五种状态
SIGNAL CURRENT_STATE: IN_STATES;
SIGNAL NEXT_STATE: IN_STATES;
SIGNAL START: STD_LOGIC;
SIGNAL SIG: INTEGER RANGE 31 DOWNTO 0;
BEGIN
PROCESS(CURRENT_STATE,RST)
BEGIN
IF(RST='1' OR CURRENT_STATE=ST0)THEN
START<='0';
ELSE START<='1';
END IF;
END PROCESS;
A:PROCESS(START,CLK)
BEGIN
IF(RST='1')THEN
SIG<=0;
ELSIF(CLK'EVENT AND CLK='1')THEN
IF(START='1')THEN
IF(SIG=GVEHICLE_TIME)THEN
SIG<=0;
ELSE SIG<=SIG+1;
END IF;
ELSE SIG<=0;
END IF;
END IF;
END PROCESS A;
PROCESS(RST,CLK)
BEGIN
IF(RST='1')THEN
CURRENT_STATE<=ST0;
ELSIF(CLK'EVENT AND CLK='1')THEN
CURRENT_STATE<=NEXT_STATE;
END IF;
END PROCESS;
PROCESS(CLK,CURRENT_STATE)
BEGIN
CASE CURRENT_STATE IS
WHEN ST0=> ERED<='0';EGREEN<='1';EYELLOW<='0';SRED<='1';SGREEN<='0';
IF(REQUEST='1' AND GT_SET='0')THEN
NEXT_STATE<=ST1;
ELSE NEXT_STATE<=ST0;
END IF;
WHEN ST1=> ERED<='0';EGREEN<='0';EYELLOW<='1';SRED<='1';SGREEN<='0';
IF(SIG=1)THEN
NEXT_STATE<=ST2;
ELSE NEXT_STATE<=ST1;
END IF;
WHEN ST2=> ERED<='1';EGREEN<='0';EYELLOW<='0';SRED<='0';SGREEN<='1';
IF(SIG=GHUMAN_TIME)THEN
NEXT_STATE<=ST3;
ELSE NEXT_STATE<=ST2;
END IF;
WHEN ST3=> ERED<='1';EGREEN<='0';EYELLOW<='0';SRED<='0';SGREEN<=NOT CLK;
IF(SIG=GHUMAN_CLKT)THEN
NEXT_STATE<=ST4;
ELSE NEXT_STATE<=ST3;
END IF;
WHEN ST4=> ERED<='0';EGREEN<='1';EYELLOW<='0';SRED<='1';SGREEN<='0';
IF(SIG=GVEHICLE_TIME)THEN
NEXT_STATE<=ST0;
ELSE NEXT_STATE<=ST4;
END IF;
WHEN OTHERS=> ERED<='0';EGREEN<='1';EYELLOW<='0';
SRED<='1';SGREEN<='0';NEXT_STATE<=ST3;
END CASE;
END PROCESS;
END BEHAVE;