上海交通大学 eda大作业 交通灯

上传人:第*** 文档编号:34235140 上传时间:2018-02-22 格式:DOC 页数:11 大小:354KB
返回 下载 相关 举报
上海交通大学 eda大作业 交通灯_第1页
第1页 / 共11页
上海交通大学 eda大作业 交通灯_第2页
第2页 / 共11页
上海交通大学 eda大作业 交通灯_第3页
第3页 / 共11页
上海交通大学 eda大作业 交通灯_第4页
第4页 / 共11页
上海交通大学 eda大作业 交通灯_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《上海交通大学 eda大作业 交通灯》由会员分享,可在线阅读,更多相关《上海交通大学 eda大作业 交通灯(11页珍藏版)》请在金锄头文库上搜索。

1、交通灯1、设计方案与设计过程 1.具体效果该交通灯的实验模拟了十字路口的交通灯的时间和颜色变化。主干道上绿灯亮的时间为8 秒,闪烁3 秒,黄灯亮的时间为2秒,红灯亮的时间为11 秒。支干道上绿灯亮的时间为6 秒,闪烁3 秒,黄灯亮的时间为2秒,红灯亮的时间为13 秒。主干道上绿灯亮和闪烁、黄灯亮共13 秒,这时支干道上的红灯一直亮着。支干道上的绿灯亮6 秒、闪烁3 秒及黄灯亮2 秒,主干道上的红灯亮11 秒。倒计时由数码管显示,前两个数码管显示主干道上的时间,三四两个数码管显示支道上的时间。主干道上绿灯亮的时间为8 秒,数码管显示起始时间7 秒,然后依次递减至0,绿灯闪烁3 秒,黄灯亮的时间为

2、2 秒(这段时间数码管不显示) 。支干道红灯亮的时间为13秒,数码管显示起始时间为12 秒,然后依次递减至0。支干道上绿灯亮的时间为6 秒,数码管显示起始时间5 秒,然后依次递减至0,绿灯闪烁3 秒,黄灯亮的时间为2 秒(这段时间数码管不显示),主干道红灯亮的时间为11秒,数码管显示起始时间为10 秒,然后依次递减至0。以上是基础部分的要求,还有四个拓展部分的要求。用点阵显示红绿灯,主干道用左边的点阵,一共是 3*4,支干道用右边的点阵显示,一共是 3*4,黄灯由红灯和绿灯同时显示模拟。加入夜间和时钟模式,用第五六个数码管显示时间,一共是 24个小时,并且用一个微动开关进行修改。当 22 时到

3、 6 时之间,交通灯只闪烁黄灯,其余时间显示与基础部分相同。最后增加一个清零功能,即使是红绿灯计时回到初始状态,用一个微动开关控制。2.设计方案(1)选择频率交通灯所需的频率只有二种:1Hz 和2Hz。4M 频率经过20、21(q21.0)次分频后得到。1Hz 的频率供计数器工作,产生标准的1 秒脉冲信号。2Hz 的频率供绿灯闪烁用,3 秒闪烁共 6 次(亮、暗各 3 次) 。数码管一共六个,扫描显示需要 6个不同时钟状态,用 q2.0即可实现。点阵一共八排,扫描显示需要 8个不同时钟状态,用 q2.0业绩可实现。(2)交通灯控制模块交通灯一共 24种状态,只需要一个模 24的计数器做循环即可

4、。在main和 branch模块中分别列出 24种状态的红灯是否亮,绿灯是否亮,黄灯是否亮,是否闪烁,数码管是否显示,两个数码管显示内容的真值表。输出供后面显示模块判断。(3)数码管显示模块一共要显示六个数码管,用扫描显示,频率尽量高。同时加入判断是否是夜间模式,如果是夜间,主干道和支干道的倒计时不显示,白天按照交通灯控制模块中输出的真值显示。(4)绿灯闪烁模块 由于绿灯要闪烁,加入一个绿灯闪烁模块,用交通灯控制模块输出的maintringle和 branchtringle信号控制。如果是高电平,即绿灯会闪烁,输出每秒切换一次高低电平;如果是低电平,即绿灯不会闪烁,则判断绿灯是否亮,是亮的则输

5、出高电平,不是亮的则输出低电平。(5)点阵显示模块加入夜间判断,如果是夜间,则闪烁黄灯,频率 1Hz;如果不是夜间,按照输入的主干道上红绿黄灯的状态显示。黄灯是红灯和绿灯合成的颜色。(6)消抖模块考虑到按键时可能会一次跳很多步,加入消抖模块,使按一次键尽量只变化一个数。2、顶层图 三、源程序1.main(主干道上的交通灯控制)SUBDESIGN main(incount4.0: INPUT ;%输入时钟maingreen,mainred,mainyellow : output;out13.0,out23.0,maintringle,maindigselect : OUTPUT;)beginta

6、bleincount4.0= maingreen,mainred,mainyellow,out13.0,out23.0,maintringle,maindigselect;h0=1,0,0,h0,h7,0,1;h1=1,0,0,h0,h6,0,1;h2=1,0,0,h0,h5,0,1;h3=1,0,0,h0,h4,0,1;h4=1,0,0,h0,h3,0,1;h5=1,0,0,h0,h2,0,1;h6=1,0,0,h0,h1,0,1;h7=1,0,0,h0,h0,0,1;h8=1,0,0,h0,h0,1,1;h9=1,0,0,h0,h0,1,1;hA=1,0,0,h0,h0,1,1;hB=0,

7、0,1,h0,h0,0,0;hC=0,0,1,h0,h0,0,0;hD=0,1,0,h1,h0,0,1;hE=0,1,0,h0,h9,0,1;hF=0,1,0,h0,h8,0,1;h10=0,1,0,h0,h7,0,1;h11=0,1,0,h0,h6,0,1;h12=0,1,0,h0,h5,0,1;h13=0,1,0,h0,h4,0,1;h14=0,1,0,h0,h3,0,1;h15=0,1,0,h0,h2,0,1;h16=0,1,0,h0,h1,0,1;h17=0,1,0,h0,h0,0,1;end table;end;2.Branch(支干道上的交通灯控制)SUBDESIGN branch

8、(incount4.0 : INPUT ;branchgreen,branchred,branchyellow : output;out33.0,out43.0,branchtringle,branchdigselect : OUTPUT;)begintableincount4.0=branchgreen,branchred,branchyellow,out33.0,out43.0,branchtringle,branchdigselect;h0=0,1,0,h1,h2,0,1;h1=0,1,0,h1,h1,0,1;h2=0,1,0,h1,h0,0,1;h3=0,1,0,h0,h9,0,1;h

9、4=0,1,0,h0,h8,0,1;h5=0,1,0,h0,h7,0,1;h6=0,1,0,h0,h6,0,1;h7=0,1,0,h0,h5,0,1;h8=0,1,0,h0,h4,0,1;h9=0,1,0,h0,h3,0,1;hA=0,1,0,h0,h2,0,1;hB=0,1,0,h0,h1,0,1;hC=0,1,0,h0,h0,0,1;hD=1,0,0,h0,h5,0,1;hE=1,0,0,h0,h4,0,1;hF=1,0,0,h0,h3,0,1;h10=1,0,0,h0,h2,0,1;h11=1,0,0,h0,h1,0,1;h12=1,0,0,h0,h0,0,1;h13=1,0,0,h0,

10、h0,1,1;h14=1,0,0,h0,h0,1,1;h15=1,0,0,h0,h0,1,1;h16=0,0,1,h0,h1,0,0;h17=0,0,1,h0,h0,0,0;end table;end;3.greenswich(绿灯闪烁控制模块)SUBDESIGN greenswitch(maingreen,branchgreen,maintringle,branchtringle,clk : INPUT;maingreenout,branchgreenout : OUTPUT;)beginif maintringle thenif !clk then maingreenout=vcc;els

11、e maingreenout=gnd;end if;elseif maingreen then maingreenout=vcc;else maingreenout=gnd;end if;end if;if branchtringle thenif !clk then branchgreenout=vcc;else branchgreenout=gnd;end if;elseif branchgreen then branchgreenout=vcc;else branchgreenout=gnd;end if;end if;end;4.digselector(数码管驱动选择模块)SUBDES

12、IGN digselector(maindigselect,branchdigselect,clk2.0,digin13.0,digin23.0,digin33.0,digin43.0,digin53.0,digin63.0 : INPUT;mainout1.0,branchout1.0,timeout1.0,digout3.0 : OUTPUT;)begindefaultsmainout1.0=gnd;branchout1.0=gnd;end defaults;if maindigselect thenif clk2.0=0 then mainout1=vcc;digout3.0=digin

13、13.0;end if;if clk2.0=1 then mainout0=vcc;digout3.0=digin23.0; end if; if clk2.0!=0 & clk2.0!=1 thenmainout1.0=gnd;end if;end if;if branchdigselect thenif clk2.0=2 thenbranchout1=vcc;digout3.0=digin33.0;end if;if clk2.0=3 thenbranchout0=vcc;digout3.0=digin43.0;end if;if clk2.0!=2 & clk2.0!=3 thenbra

14、nchout1.0=gnd;end if;end if;if clk2.0=4 thentimeout1=vcc;digout3.0=digin53.0;end if;if clk2.0=5 thentimeout0=vcc;digout3.0=digin63.0;end if;if clk2.0!=4 & clk2.0!=5 thentimeout1.0=gnd;end if;end;5.7segment(7 段显示模块)SUBDESIGN 7segment(i3.0 : INPUT ;a,b,c,d,e,f,g : OUTPUT;)begintablei3.0 = a,b,c,d,e,f,g;h0 = 0,0,0,0,0,0,1;h1 = 1,0,0,1,1,1,1;h2 = 0,0,1,0,0,1,0;h3 = 0,0,0,0,1,1,0;h4 = 1,0,0,1,1,0,0;h5 = 0,1,0,0,1,0,0;h6 = 0,1,0,0,0,0,0;h7

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号