交通灯VHDL程序.docx

上传人:牧羊曲112 文档编号:3241510 上传时间:2023-03-12 格式:DOCX 页数:11 大小:37.72KB
返回 下载 相关 举报
交通灯VHDL程序.docx_第1页
第1页 / 共11页
交通灯VHDL程序.docx_第2页
第2页 / 共11页
交通灯VHDL程序.docx_第3页
第3页 / 共11页
交通灯VHDL程序.docx_第4页
第4页 / 共11页
交通灯VHDL程序.docx_第5页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《交通灯VHDL程序.docx》由会员分享,可在线阅读,更多相关《交通灯VHDL程序.docx(11页珍藏版)》请在三一办公上搜索。

1、交通灯VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY jtd IS PORT(CLK:IN STD_LOGIC; -20MHZYY:IN STD_LOGIC; -黄闪控制位SET_YY:IN STD_LOGIC; -调整倒计时的脉冲信号SET:IN STD_LOGIC_VECTOR(1 DOWNTO 0); -倒计时信号选择位R1,G1,Y1,R2,G2,Y2:OUT STD_LOGIC; -红绿黄灯信号输出GAO,DI:OUT STD_LOGIC_VECTOR(3 DOWN

2、TO 0)-倒计时输出);END jtd;ARCHITECTURE BHV OF jtd IS SIGNAL CLK_1HZ,CLK_2HZ:STD_LOGIC; -信号SIGNAL R1_TEMP,R2_TEMP,Y1_TEMP,Y2_TEMP,G1_TEMP,G2_TEMP:STD_LOGIC;SIGNAL GAO_TEMP,DI_TEMP,GAO_TEMP1,DI_TEMP1:STD_LOGIC_VECTOR(3 DOWNTO 0);TYPE SX IS (S0,S1,S2,S3); -红绿蓝灯白天的四个状态BEGINP2_1HZ:PROCESS(CLK) -分频出所需的1HZ VARI

3、ABLE CNT2:STD_LOGIC_VECTOR(23 DOWNTO 0);BEGINIF(CLKEVENT AND CLK=1) THENIF(CNT2=9999999) THEN CLK_1HZ<=NOT CLK_1HZ;CNT2:=000000000000000000000000;ELSECNT2:=CNT2+1;END IF;END IF;END PROCESS P2_1HZ;-P3_2HZ:PROCESS(CLK) -分频出所需的2HZ,用于黄灯闪烁VARIABLE CNT3:STD_LOGIC_VECTOR(22 DOWNTO 0);BEGINIF(CLKEVENT AND

4、 CLK=1) THENIF(CNT3=4999999) THEN CLK_2HZ<=NOT CLK_2HZ;CNT3:=00000000000000000000000;ELSECNT3:=CNT3+1;END IF;END IF;END PROCESS P3_2HZ;-P4_SET:PROCESS(SET_YY,SET)VARIABLE GAO_TEMP2,DI_TEMP2:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF(SET=00 OR SET=01) THEN -选中倒计时默认值GAO_TEMP2:=0100;DI_TEMP2:=0000;ELSIF(SE

5、T_YYEVENT AND SET_YY=1) THENIF SET=10 THEN GAO_TEMP2:=GAO_TEMP2+1; -选中倒计时高位,并在SET_YY的作用下调整大小IF(GAO_TEMP2=10) THEN GAO_TEMP2:=0000;END IF;END IF;IF SET=11 THEN DI_TEMP2:=DI_TEMP2+1; -选中倒计时低位,并在SET_YY的作用下调整大小IF(DI_TEMP2=10) THEN DI_TEMP2:=0000;END IF;END IF;END IF;GAO_TEMP1<=GAO_TEMP2;DI_TEMP1<=DI

6、_TEMP2;END PROCESS P4_SET;-P5_SX:PROCESS(CLK_1HZ,GAO_TEMP1,DI_TEMP1,SET)VARIABLE A:STD_LOGIC;VARIABLE S : SX;BEGINIF(CLK_1HZEVENT AND CLK_1HZ=1) THEN IF(YY=0) THENCASE S IS WHEN S0 =>IF(A=0) THEN -状态1:东西绿灯亮37s,南北方向红灯亮37sGAO_TEMP<=GAO_TEMP1;DI_TEMP<=DI_TEMP1;A:=1;R1_TEMP<=0;Y1_TEMP<=0;G1_TE

7、MP<=1;R2_TEMP<=1;Y2_TEMP<=0;G2_TEMP<=0;ELSEIF(GAO_TEMP=0 AND DI_TEMP=0100) THENS :=S1;A :=0;GAO_TEMP<=0000;DI_TEMP<=0011;ELSIF(DI_TEMP=0) THENDI_TEMP<=1001;GAO_TEMP<=GAO_TEMP-1;ELSE DI_TEMP<=DI_TEMP-1;END IF;END IF;WHEN S1 =>IF(A=0) THEN -状态2:东西黄灯闪烁3s,南北方向红灯亮3sGAO_TEMP<=0000;DI

8、_TEMP<=0010;A:=1;R1_TEMP<=0;Y1_TEMP<=1;G1_TEMP<=0;R2_TEMP<=1;Y2_TEMP<=0;G2_TEMP<=0;ELSEIF(GAO_TEMP=0 AND DI_TEMP=0001) THENS :=S2;A :=0;GAO_TEMP<=0000;DI_TEMP<=0000;ELSE DI_TEMP<=DI_TEMP-1;END IF;END IF;WHEN S2 =>IF(A=0) THEN -状态3:东西红灯亮37s,南北方向绿灯亮37sGAO_TEMP<=GAO_TEMP1;DI_TEM

9、P<=DI_TEMP1;A:=1;R1_TEMP<=1;Y1_TEMP<=0;G1_TEMP<=0;R2_TEMP<=0;Y2_TEMP<=0;G2_TEMP<=1;ELSEIF(GAO_TEMP=0 AND DI_TEMP=0100) THENS :=S3;A :=0;GAO_TEMP<=0000;DI_TEMP<=0011;ELSIF(DI_TEMP=0) THENDI_TEMP<=1001;GAO_TEMP<=GAO_TEMP-1;ELSE DI_TEMP<=DI_TEMP-1;END IF;END IF;WHEN S3 =>IF(A=

10、0) THEN -状态4:东西红灯亮3s,南北方向黄灯闪烁3sGAO_TEMP<=0000;DI_TEMP<=0010;A:=1;R1_TEMP<=1;Y1_TEMP<=0;G1_TEMP<=0;R2_TEMP<=0;Y2_TEMP<=1;G2_TEMP<=0;ELSEIF(GAO_TEMP=0 AND DI_TEMP=0001) THENS :=S0;A :=0;GAO_TEMP<=0000;DI_TEMP<=0000;ELSE DI_TEMP<=DI_TEMP-1;END IF;END IF;END CASE;END IF;END IF;END

11、PROCESS P5_SX;P6_OUT:PROCESS(R1_TEMP,Y1_TEMP,G1_TEMP,R2_TEMP,Y2_TEMP,G2_TEMP,YY,CLK_2HZ,SET)BEGINIF(YY=1) THEN -晚上红绿黄灯的状态输出R1<=0;Y1<=CLK_2HZ;G1<=0;R2<=0;Y2<=CLK_2HZ;G2<=0; GAO<=0000;DI<=0000;ELSIF(SET=01 OR SET=00) THEN -白天红绿黄灯的输出R1<=R1_TEMP;Y1<=Y1_TEMP AND CLK_2HZ;G1<=G1_TEMP;R2<=R2_TEMP;Y2<=Y2_TEMP AND CLK_2HZ;G2<=G2_TEMP; GAO<=GAO_TEMP;DI<=DI_TEMP;ELSE -调整时间时红绿黄的输出R1<=0;Y1<=CLK_2HZ;G1<=0;R2<=0;Y2<=CLK_2HZ;G2<=0; GAO<=GAO_TEMP1;DI<=DI_TEMP1;END IF;END PROCESS P6_OUT;END BHV;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号