实验三:交通灯控制器
LIBRARY IEEE;
USE ;
ENTITY JTD IS
PORT(CLK,SM,SB:IN BIT;
MR,MY,MG,BR,BY,BG:OUT BIT);
END JTD;
ARCHITECTURE ART OF JTD IS
TYPE STATE_TYPE IS(A,B,C,D);
SIGNAL STATE:STATE_TYPE;
BEGIN
CNT:PROCESS(CLK)
VARIABLE S:INTEGER RANGE 0 TO 29;
VARIABLE CLR,EN:BIT;
BEGIN
IF(CLK’EVENT AND CLK=’1’)THEN
IF CLR=’0’THEN S:=0;
ELSIF EN=’0’THEN S:=1;
ELSE S:=S+1;
END IF;
CASE STATE IS
WHEN A=>MR<=’0’;MY<=’0’;MG<=’1’;
BR<=’1’;BY<=’0’;BG<=’0’;
IF(SB AND SM)=’1’THEN
IF S=29 THEN
STATE<=B;CLR:=’0’;EN:=’0’;
ELSE
STATE<=A;CLR:=’1’;EN:=’1’;
END IF;
ELSIF(SB AND(NOT SM))=’1’THEN
STATE<=B;CLR:=’0’;EN:=’0’;
ELSE
STATE<=A;CLR:=’1’;EN:=’1’;
END IF;
WHEN B=>MR<=’0’;MY<=’0’;MG<=’0’;
BR<=’1’;BY<=’0’;BG<=’0’;
IF S=3 THEN
STATE<=C;CLR:=’0’;EN:=’0’;
ELSE
STATE<=B;CLR:=’1’;EN:=’1’;
END IF;
WHEN C=>MR<=’1’;MY<=’0’;MG<=’0’;
BR<=’0’;BY<=’0’;BG<=’1’;
IF(SM AND SB)=’1’THEN
IF S=29 THEN
STATE<=D;CLR:=’0’;EN:=’0’;
ELSE
STATE<=C;CLR:=’1’;EN:=’1’;
END IF;
ELSIF SB=’0’THEN
EDA交通灯 来自淘豆网m.daumloan.com转载请标明出处.