上海交通大学 EDA大作业 交通灯.docx
- 文档编号:2208796
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:13
- 大小:185.72KB
上海交通大学 EDA大作业 交通灯.docx
《上海交通大学 EDA大作业 交通灯.docx》由会员分享,可在线阅读,更多相关《上海交通大学 EDA大作业 交通灯.docx(13页珍藏版)》请在冰豆网上搜索。
上海交通大学EDA大作业交通灯
交通灯
1、设计方案与设计过程
1.具体效果
该交通灯的实验模拟了十字路口的交通灯的时间和颜色变化。
主干道上绿灯亮的时间为8秒,闪烁3秒,黄灯亮的时间为2秒,红灯亮的时间为11秒。
支干道上绿灯亮的时间为6秒,闪烁3秒,黄灯亮的时间为2秒,红灯亮的时间为13秒。
主干道上绿灯亮和闪烁、黄灯亮共13秒,这时支干道上的红灯一直亮着。
支干道上的绿灯亮6秒、闪烁3秒及黄灯亮2秒,主干道上的红灯亮11秒。
倒计时由数码管显示,前两个数码管显示主干道上的时间,三四两个数码管显示支道上的时间。
主干道上绿灯亮的时间为8秒,数码管显示起始时间7秒,然后依次递减至0,绿灯闪烁3秒,黄灯亮的时间为2秒(这段时间数码管不显示)。
支干道红灯亮的时间为13秒,数码管显示起始时间为12秒,然后依次递减至0。
支干道上绿灯亮的时间为6秒,数码管显示起始时间5秒,然后依次递减至0,绿灯闪烁3秒,黄灯亮的时间为2秒(这段时间数码管不显示),主干道红灯亮的时间为11秒,数码管显示起始时间为10秒,然后依次递减至0。
以上是基础部分的要求,还有四个拓展部分的要求。
用点阵显示红绿灯,主干道用左边的点阵,一共是3*4,支干道用右边的点阵显示,一共是3*4,黄灯由红灯和绿灯同时显示模拟。
加入夜间和时钟模式,用第五六个数码管显示时间,一共是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[2..0]业绩可实现。
(2)交通灯控制模块
交通灯一共24种状态,只需要一个模24的计数器做循环即可。
在main和branch模块中分别列出24种状态的红灯是否亮,绿灯是否亮,黄灯是否亮,是否闪烁,数码管是否显示,两个数码管显示内容的真值表。
输出供后面显示模块判断。
(3)数码管显示模块
一共要显示六个数码管,用扫描显示,频率尽量高。
同时加入判断是否是夜间模式,如果是夜间,主干道和支干道的倒计时不显示,白天按照交通灯控制模块中输出的真值显示。
(4)绿灯闪烁模块
由于绿灯要闪烁,加入一个绿灯闪烁模块,用交通灯控制模块输出的maintringle和branchtringle信号控制。
如果是高电平,即绿灯会闪烁,输出每秒切换一次高低电平;如果是低电平,即绿灯不会闪烁,则判断绿灯是否亮,是亮的则输出高电平,不是亮的则输出低电平。
(5)点阵显示模块
加入夜间判断,如果是夜间,则闪烁黄灯,频率1Hz;如果不是夜间,按照输入的主干道上红绿黄灯的状态显示。
黄灯是红灯和绿灯合成的颜色。
(6)消抖模块
考虑到按键时可能会一次跳很多步,加入消抖模块,使按一次键尽量只变化一个数。
2、顶层图
三、源程序
1.main(主干道上的交通灯控制)
SUBDESIGNmain
(
incount[4..0]:
INPUT;%输入时钟
maingreen,mainred,mainyellow:
output;
out1[3..0],out2[3..0],maintringle,maindigselect:
OUTPUT;
)
begin
table
incount[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",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"=>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"=>0,1,0,h"0",h"6",0,1;
h"12"=>0,1,0,h"0",h"5",0,1;
h"13"=>0,1,0,h"0",h"4",0,1;
h"14"=>0,1,0,h"0",h"3",0,1;
h"15"=>0,1,0,h"0",h"2",0,1;
h"16"=>0,1,0,h"0",h"1",0,1;
h"17"=>0,1,0,h"0",h"0",0,1;
endtable;
end;
2.Branch(支干道上的交通灯控制)
SUBDESIGNbranch
(
incount[4..0]:
INPUT;
branchgreen,branchred,branchyellow:
output;
out3[3..0],out4[3..0],branchtringle,branchdigselect:
OUTPUT;
)
begin
table
incount[4..0]=>branchgreen,branchred,branchyellow,out3[3..0],
out4[3..0],branchtringle,branchdigselect;
h"0"=>0,1,0,h"1",h"2",0,1;
h"1"=>0,1,0,h"1",h"1",0,1;
h"2"=>0,1,0,h"1",h"0",0,1;
h"3"=>0,1,0,h"0",h"9",0,1;
h"4"=>0,1,0,h"0",h"8",0,1;
h"5"=>0,1,0,h"0",h"7",0,1;
h"6"=>0,1,0,h"0",h"6",0,1;
h"7"=>0,1,0,h"0",h"5",0,1;
h"8"=>0,1,0,h"0",h"4",0,1;
h"9"=>0,1,0,h"0",h"3",0,1;
h"A"=>0,1,0,h"0",h"2",0,1;
h"B"=>0,1,0,h"0",h"1",0,1;
h"C"=>0,1,0,h"0",h"0",0,1;
h"D"=>1,0,0,h"0",h"5",0,1;
h"E"=>1,0,0,h"0",h"4",0,1;
h"F"=>1,0,0,h"0",h"3",0,1;
h"10"=>1,0,0,h"0",h"2",0,1;
h"11"=>1,0,0,h"0",h"1",0,1;
h"12"=>1,0,0,h"0",h"0",0,1;
h"13"=>1,0,0,h"0",h"0",1,1;
h"14"=>1,0,0,h"0",h"0",1,1;
h"15"=>1,0,0,h"0",h"0",1,1;
h"16"=>0,0,1,h"0",h"1",0,0;
h"17"=>0,0,1,h"0",h"0",0,0;
endtable;
end;
3.greenswich(绿灯闪烁控制模块)
SUBDESIGNgreenswitch
(
maingreen,branchgreen,maintringle,branchtringle,clk:
INPUT;
maingreenout,branchgreenout:
OUTPUT;
)
begin
ifmaintringlethen
if!
clkthenmaingreenout=vcc;
elsemaingreenout=gnd;
endif;
else
ifmaingreenthenmaingreenout=vcc;
elsemaingreenout=gnd;
endif;
endif;
ifbranchtringlethen
if!
clkthenbranchgreenout=vcc;
elsebranchgreenout=gnd;
endif;
else
ifbranchgreenthenbranchgreenout=vcc;
elsebranchgreenout=gnd;
endif;
endif;
end;
4.digselector(数码管驱动选择模块)
SUBDESIGNdigselector
(
maindigselect,branchdigselect,clk[2..0],digin1[3..0],digin2[3..0],
digin3[3..0],digin4[3..0],digin5[3..0],digin6[3..0]:
INPUT;
mainout[1..0],branchout[1..0],timeout[1..0],digout[3..0]:
OUTPUT;
)
begin
defaults
mainout[1..0]=gnd;
branchout[1..0]=gnd;
enddefaults;
ifmaindigselectthen
ifclk[2..0]==0then
mainout[1]=vcc;digout[3..0]=digin1[3..0];
endif;
ifclk[2..0]==1then
mainout[0]=vcc;digout[3..0]=digin2[3..0];
endif;
ifclk[2..0]!
=0&clk[2..0]!
=1then
mainout[1..0]=gnd;
endif;
endif;
ifbranchdigselectthen
ifclk[2..0]==2then
branchout[1]=vcc;digout[3..0]=digin3[3..0];
endif;
ifclk[2..0]==3then
branchout[0]=vcc;digout[3..0]=digin4[3..0];
endif;
ifclk[2..0]!
=2&clk[2..0]!
=3then
branchout[1..0]=gnd;
endif;
endif;
ifclk[2..0]==4then
timeout[1]=vcc;digout[3..0]=digin5[3..0];
endif;
ifclk[2..0]==5then
timeout[0]=vcc;digout[3..0]=digin6[3..0];
endif;
ifclk[2..0]!
=4&clk[2..0]!
=5then
timeout[1..0]=gnd;
endi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上海交通大学 EDA大作业 交通灯 EDA 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)