资源描述:
《上海交通大学 EDA大作业 交通灯》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、交通灯一、设计方案与设计过程1.具体效果该交通灯的实验模拟了十字路口的交通灯的时间和颜色变化。主干道上绿灯亮的时间为8秒,闪烁3秒,黄灯亮的时间为2秒,红灯亮的时间为11秒。支干道上绿灯亮的时间为6秒,闪烁3秒,黄灯亮的时间为2秒,红灯亮的时间为13秒。主干道上绿灯亮和闪烁、黄灯亮共13秒,这时支干道上的红灯一直亮着。支干道上的绿灯亮6秒、闪烁3秒及黄灯亮2秒,主干道上的红灯亮11秒。倒计时由数码管显示,前两个数码管显示主干道上的时间,三四两个数码管显示支道上的时间。主干道上绿灯亮的时间为8秒,数码管显示起始时间7秒,然后依次递减至0,
2、绿灯闪烁3秒,黄灯亮的时间为2秒(这段时间数码管不显示)。支干道红灯亮的时间为13秒,数码管显示起始时间为12秒,然后依次递减至0。支干道上绿灯亮的时间为6秒,数码管显示起始时间5秒,然后依次递减至0,绿灯闪烁3秒,黄灯亮的时间为2秒(这段时间数码管不显示),主干道红灯亮的时间为11秒,数码管显示起始时间为10秒,然后依次递减至0。以上是基础部分的要求,还有四个拓展部分的要求。用点阵显示红绿灯,主干道用左边的点阵,一共是3*4,支干道用右边的点阵显示,一共是3*4,黄灯由红灯和绿灯同时显示模拟。加入夜间和时钟模式,用第五六个数码管显示时
3、间,一共是24个小时,并且用一个微动开关进行修改。当22时到6时之间,交通灯只闪烁黄灯,其余时间显示与基础部分相同。最后增加一个清零功能,即使是红绿灯计时回到初始状态,用一个微动开关控制。2.设计方案(1)选择频率交通灯所需的频率只有二种:1Hz和2Hz。4M频率经过20、21(q[21..0])次分频后得到。1Hz的频率供计数器工作,产生标准的1秒脉冲信号。2Hz的频率供绿灯闪烁用,3秒闪烁共6次(亮、暗各3次)。数码管一共六个,扫描显示需要6个不同时钟状态,用q[2..0]即可实现。点阵一共八排,扫描显示需要8个不同时钟状态,用q[
4、2..0]业绩可实现。(2)交通灯控制模块交通灯一共24种状态,只需要一个模24的计数器做循环即可。在main和branch模块中分别列出24种状态的红灯是否亮,绿灯是否亮,黄灯是否亮,是否闪烁,数码管是否显示,两个数码管显示内容的真值表。输出供后面显示模块判断。(3)数码管显示模块一共要显示六个数码管,用扫描显示,频率尽量高。同时加入判断是否是夜间模式,如果是夜间,主干道和支干道的倒计时不显示,白天按照交通灯控制模块中输出的真值显示。(4)绿灯闪烁模块由于绿灯要闪烁,加入一个绿灯闪烁模块,用交通灯控制模块输出的maintringle和
5、branchtringle信号控制。如果是高电平,即绿灯会闪烁,输出每秒切换一次高低电平;如果是低电平,即绿灯不会闪烁,则判断绿灯是否亮,是亮的则输出高电平,不是亮的则输出低电平。(2)点阵显示模块加入夜间判断,如果是夜间,则闪烁黄灯,频率1Hz;如果不是夜间,按照输入的主干道上红绿黄灯的状态显示。黄灯是红灯和绿灯合成的颜色。(3)消抖模块考虑到按键时可能会一次跳很多步,加入消抖模块,使按一次键尽量只变化一个数。二、顶层图三、源程序1.main(主干道上的交通灯控制)SUBDESIGNmain(incount[4..0]:INPUT;%
6、输入时钟maingreen,mainred,mainyellow:output;out1[3..0],out2[3..0],maintringle,maindigselect:OUTPUT;)begintableincount[4..0]=>maingreen,mainred,mainyellow,out1[3..0],out2[3..0],maintringle,maindigselect;h"0"=>1,0,0,h"0",h"7",0,1;h"1"=>1,0,0,h"0",h"6",0,1;h"2"=>1,0,0,h"0",h"5"
7、,0,1;h"3"=>1,0,0,h"0",h"4",0,1;h"4"=>1,0,0,h"0",h"3",0,1;h"5"=>1,0,0,h"0",h"2",0,1;h"6"=>1,0,0,h"0",h"1",0,1;h"7"=>1,0,0,h"0",h"0",0,1;h"8"=>1,0,0,h"0",h"0",1,1;h"9"=>1,0,0,h"0",h"0",1,1;h"A"=>1,0,0,h"0",h"0",1,1;h"B"=>0,0,1,h"0",h"0",0,0;h"C"=>0,0,1,h"0",h"0",0,0;h"D"=>
8、0,1,0,h"1",h"0",0,1;h"E"=>0,1,0,h"0",h"9",0,1;h"F"=>0,1,0,h"0",h"8",0,1;h"10"=>0,1,0,h"0",h"7",0,1;h"11