EDA交通灯课程设计.docx
《EDA交通灯课程设计.docx》由会员分享,可在线阅读,更多相关《EDA交通灯课程设计.docx(9页珍藏版)》请在冰豆网上搜索。
EDA交通灯课程设计
EDA交通灯课程设计
姓名:
XXX
学号:
*********
专业:
*******
学院:
电气与信息工程学院
1系统功能设计要求
1.东西各设有一个绿、黄、红指示灯;一个2位7段数码管
(1)南北和东西方向各有一组绿,黄,红灯,各自的持续时间分别为20s,5s,25s;
(2)当有特殊情况时,两个方向均为红灯,计时暂停,当特殊情况结束后,控制器恢复原来状态,继续正常工作。
(3)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的剩余时间。
3.能实现正常的倒计时显示功能。
能实现总体清理功能,计数器由初始状态开始计数,对应状态的指示灯亮。
2设计原理
2.1交通灯控制器的状态转换
根据论文题目要求,将红绿灯的状态转换列成如下表
上表为交通灯控制器的状态转换表
2.2设计方案
1、显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。
2、每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。
3、控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。
2.2LED动态显示与频率
由于交通灯需要使用2位7段LED数码管指示通行剩余时间,故采用LED动态扫描方式显示当前时间。
频率设定CLK1k对应的频率为1024hz
3电路符号
交通控制器的电路符号如图1.3所示。
其中,CLK1K为系统时钟信号输入端,SN为禁止通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4、为数码管地址选择信号输出端。
4设计方法
采用文本编辑法,既采用vhdl语言描述交通控制器,代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitytrafficIS
port(clk1k,SN:
instd_logic;
led1,led2,led3,led4:
outstd_logic_vector(3downto0);
--显示管显示时间用
light:
outstd_logic_vector(5downto0));--红绿黄灯
endtraffic;
architecturetraffic1oftrafficIS
signalS:
std_logic_vector(1downto0);--状态
signalDXT:
std_logic_vector(7downto0):
=X"01";
--东西方向时间
signalNBX:
std_logic_vector(7downto0):
=X"01";
--南北方向时间
signalART,AGT,AYT,BRT,BGT,BYT:
std_logic_vector(7downto0);--红绿黄灯信号
signalSL:
std_logic;
signaltemp:
integerrange0to1023;--产生1s计数器时计数
signalclk:
std_logic;
begin
sL<='1';--红绿灯时间设定
ART<="00100101";
AGT<="00100000";
AYT<="00000100";
BRT<="00100101";
BGT<="00100000";
BYT<="00000100";
process(clk1k)--选频率为1024HZ
begin
if(clk1k'eventandclk1k='1')then
iftemp=1023then
temp<=0;
clk<='1';
else
temp<=temp+1;
clk<='0';
endif;
endif;
endprocess;--进程结束
process(clk,DXT,NBX)--状态转换进程
begin
ifclk'eventandclk='1'then
if(DXT="00000001")OR(NBX="00000001")thenS<=S+1;
elseS<=S;
endif;--状态转换结束
endif;
endprocess;
process(clk,SN,S)--倒计时模块
begin
ifSN='1'thenDXT<=DXT;NBX<=NBX;
else
ifclk'eventandclk='1'then
if(DXT="0000000")OR(NBX="00000000")then
caseSIS
when"00"=>DXT<=ART;NBX<=BGT;--南北红灯、东西绿灯
when"01"=>NBX<=BYT;--南北红灯、东西黄灯
when"10"=>DXT<=AGT;NBX<=BRT;--南北绿灯、东西红灯
when"11"=>DXT<=AYT;--南北黄灯、东西红灯
whenothers=>NULL;
endcase;
endif;
ifDXT/="00000000"then
ifDXT(3downto0)="0000"then
DXT(3downto0)<="1001";
DXT(7downto4)<=DXT(7downto4)-1;
elseDXT(3downto0)<=DXT(3downto0)-1;
DXT(7downto4)<=DXT(7downto4);
endif;
endif;
ifNBX/="00000000"then
ifNBX(3downto0)="0000"then
NBX(3downto0)<="1001";
NBX(7downto4)<=NBX(7downto4)-1;
elseNBX(3downto0)<=NBX(3downto0)-1;
NBX(7downto4)<=NBX(7downto4);
endif;
endif;
endif;
endif;
endprocess;--倒计时模块结束
process(SL,DXT,NBX,S,SN)--显示模块
begin
caseSLIS
when'1'=>led1<=NBX(3downto0);
led2<=NBX(7downto4);
led3<=DXT(3downto0);
led4<=DXT(7downto4);
whenothers=>NULL;
endcase;
ifSN='1'thenlight<="001001";
else
caseSIS
when"00"=>light<="010001";
when"01"=>light<="100001";
when"10"=>light<="001010";
when"11"=>light<="001100";
whenothers=>NULL;
endcase;
endif;
endprocess;
endtraffic1;
5软件仿真
时序仿真图
6结论
数码管动态显示,需要通过位选、段选控制。
通过查询手册,将2位位选信号接到试验箱数码管位选端,将7位段选信号连接到试验箱数码管的段选控制端。
当送人合适的控制信号后,数码管即可正常工作。
通过下载仿真后,能得到预期的实验结果。
通过拨动(开关控制)为高电平,能实现交通灯紧急状态(红灯全亮)。
若SN为低电平,数码管和主南北的红绿灯能有序亮灭。
7收获及感想
短短一个星期的EDA课程设计很块就结束了,虽然在之前的学习过程中还存在着没有弄懂的问题,但是通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。
在拿到题目后,首先进行了单元模块的设计,将每一个单元模块设计完成后再经行仿真,在波形仿真的过程中,同样遇到了困难,有的时候,由于ENDTIME的时间修改的太大,会出现仿真时间过长的问题,这个时候应该要把ENDTIME的时间相应的改小,或是修改系统时钟的频率。
在设计的过程中还应该多联系下实际情况,要了解实际情况下交通信号灯的工作情况,才能更好的完成此次的课程设计。
在今后的工作和学习中,我们不能仅仅把目光停留在课本上,要多理论联系实际。
有的时候,理论上是正确的东西放到现实中去,可能由于种种因素的制约,并不能达到实际的效果,还需要我们进行相应的修改才能完成要求。
这次的课程设计使我巩固了以前学习到的知识,还使我掌握了以前没有掌握的知识,同时锻炼了自己的能力。