基于vhdl语言的交通信号灯设计内容摘要:

END IF。 END IF。 END IF。 END PROCESS。 S=Q。 M 的控制端转向控制口 S END JTD_1。 该模块的时序仿真和功能仿真波形图如图 42 图 42 功能仿真 计时模块 JTD_TIME 的设计 计时模块用来设定 A 和 B 两个方向计时器的初值,并为显示模块 JTD_DIS提供倒计时时间。 当正常计时开始后,需要进行定时计数操作,由于东西和南北两个方向上的时间显示器是由两个 LED 七段显示数码管组成的,因此需要产生两个 2 位的计时信息: 2 个十位信号, 2 个个位信号,这个定时计数操作可以由一个定时计数器来完成,又因为交通灯的状态变化是在计时为 0 的情况下才能进行的,因此需要一个计时电路来产生使能信号,因此定时计数的功能就是用来产生2 个 2 位计时信息和使能信号。 计时模块的源文件程序如下: LIBRARY IEEE。 USE。 USE。 ENTITY JTD_TIME IS PORT( CLK,CLR:IN STD_LOGIC。 M,S:IN STD_LOGIC_VECTOR(2 DOWNTO 0)。 AT,BT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) )。 END JTD_TIME。 ARCHITECTURE JTD_2 OF JTD_TIME IS SIGNAL AT1,BT1:STD_LOGIC_VECTOR(7 DOWNTO 0)。 SIGNAL ART,AGT,ALT,ABYT:STD_LOGIC_VECTOR(7 DOWNTO 0)。 SIGNAL BRT,BGT,BLT:STD_LOGIC_VECTOR(7 DOWNTO 0)。 BEGIN ART=X55。 ART=“ 01010101” A 方向红灯亮 AGT=X40。 AGT=“ 01000000” A 方向绿灯亮 ALT=X15。 ALT=“ 00010101”灯间歇闪烁 ABYT=X05。 ABYT=“ 00000101” AB 两方向黄灯亮 BRT=X65。 BRT=“ 01100101” B 方向红灯亮 BGT=X30。 BGT=“ 00110000” B 方向绿灯亮 BLT=X15。 BLT=“ 00010101” B 方向灯闪烁 PROCESS(CLR,CLK,M,S) BEGIN IF CLR=39。 139。 THEN AT1=X01。 BT1=X01。 ELSIF (CLK39。 EVENT AND CLK=39。 139。 )THEN IF M=000THEN AT1=X01。 BT1=X51。 M=0 时, A 方向的计时器计时, B 方向的红灯亮 END IF。 IF M=001THEN AT1=X01。 BT1=X06。 M=1 时, A 方向的计时器计时, B 方向绿灯亮 END IF。 IF M=010THEN AT1=X41。 BT1=X01。 B 方向的计时器计时, A 方向的黄灯亮 END IF。 IF M=011THEN AT1=X06。 BT1=X01。 B 方向的计时器计时, A 方向的红灯亮 END IF。 IF M=100THEN IF(AT1=X01)OR(BT1=X01)THEN CASE S IS WHEN000=AT1=ALT。 BT1=BRT。 当 S=0 时, AB 两方向的计时器计时, A 方向车左转, B 方向的红灯亮 WHEN001=AT1=ABYT。 当 S=1 时, A 方向计时器计时, A 方向黄灯亮 WHEN010=AT1=AGT。 当 S=2 时, A 方向计时器计时, A 方向绿灯亮 WHEN011=AT1=ABYT。 当 S=3 时, AB 两方向黄灯亮, A 方向计时器计时 WHEN100=AT1=ART。 BT1=BLT。 当 S=4 时, A 方向计时,红灯亮, B 方向车左转, B 方向计时器计时 WHEN101=BT1=ABYT。 当 S=5 时, B 方向计时器计时, AB 两方向黄灯亮 WHEN110=BT1=BGT。 当 S=6 时, B 方向计时器计时, B 方向绿灯亮 WHEN111=BT1=ABYT。 当 S=7 时, B 方向计时器计时, AB 两方向车右转 WHEN OTHERS=AT1=AT1。 BT1=BT1。 END CASE。 END IF。 IF AT1/=X01THEN。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。