基于EDA技术的智能交通信号灯的设计.docx
《基于EDA技术的智能交通信号灯的设计.docx》由会员分享,可在线阅读,更多相关《基于EDA技术的智能交通信号灯的设计.docx(23页珍藏版)》请在冰豆网上搜索。
![基于EDA技术的智能交通信号灯的设计.docx](https://file1.bdocx.com/fileroot1/2023-2/2/183d236e-ef24-4561-be13-8a8cb9aef3c7/183d236e-ef24-4561-be13-8a8cb9aef3c71.gif)
基于EDA技术的智能交通信号灯的设计
南通纺织职业技术学院毕业设计(论文)
基于EDA技术的智能交通信号灯的设计
班级09电子信息
专业电子信息工程
教学系机电系
指导老师
完成时间年月日至年月日
摘要
此设计是基于EDA技术的智能交通信号灯的设计,利用MAX+plusII软件进行仿真,实现十字路口上红绿灯转换。
利用倒计时显示对十字路口的信号灯进行四个方向上面的状态转换,使各个方向上面的行人及车辆得到安全顺利的通过。
十字路口的红绿灯指挥者行人和车辆的安全运行,实现红绿灯的自动指挥使交通管理工作得到改善,也是城市交通管理工作自动化的重要标志之一。
解决好公路交通灯控制问题将是保障交通有序,安全,快捷运行的重要环节。
丹现在又得交通灯信号控制系统都是单一的固定时序控制,不能够根据实际交通状况进行调节控制。
EDA中用VHDL语言设计交通信号灯控制系统,并在MAX+plusII系统对FPGA/CPLD芯片进行下载,犹豫生成的是集成化得数字电路,没有系统设计中的接线问题,所以故障率低,可靠性高,而且体积非常小。
关键词:
交通信号灯EDAVHDL
2软件介绍………………………………………………………………
2.3硬件描述语言VHDL
3.3硬件电路设计…………………………………………………………
3.3.1数码管显示电路
3.3.2红绿灯输出电路
3.3.3硬件电路图
6结束语................................................21
1绪论
1.1课程设计背景
目前,随着科技与经济的发展,交通问题也日渐突出,全国大中小城市都普遍存在着交通堵塞、秩序混乱的现象。
如何解决城市交通问题已经成为群众的迫切需求。
城市交通发展中存在的问题,其根本原因在于城市交通管理体制的不科学。
交通信号灯是交通信号中的重要组成部分,是道路交通的基本语言。
“红灯停、绿灯行、黄灯等一等”这句俗话家喻户晓。
伴随着社会的发展以及人类水平的提高,汽车数量在不断增加,EDA技术的发展和应用领域也在不断的扩大与深入,机械、电子、航空、海运、信息等领域的重要性日渐突出,利用EDA技术设计智能交通信号灯对交通灯进行智能化设计的需求更加的迫切。
1.2基本功能
能控制十字路口四个方向上的红、绿、黄灯的状态,用LED灯表示当前交通状态,用七段数码管显示当前交通状态剩余秒数。
能实现正常的倒计时功能。
该交通灯的亮灭顺序如图2.1所示。
图2.1交通灯亮灭顺序图
能实现总体清零功能,按下清零键后,系统实现总体清零,计数器由初始状态计数,对应状态的指示灯亮。
用VHDL语言设计符合上述要求的交通灯控制器,并用层次化方法设计该电路。
1.2能实现特殊状态的功能
例如消防车、救护车等车辆通过时实现下列功能:
①按下特殊状态键后,能实现特殊状态功能;
②显示倒计时的七段数码管闪烁;
③计数器停止计数并保持在原来的状态;
④东西、南北路口均显示红灯状态;
⑤特殊状态解除后能继续计数。
2软件介绍
2.1EDA技术概述
电子设计技术的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。
EDA技术已有30年的发展历程,大致可分为三个阶段。
70年代为计算机辅助设计(CAD)阶段,人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作。
80年代为计算机辅助工程(CAE)阶段。
与CAD相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。
CAE的主要功能是:
原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。
90年代为电子系统设计自动化(EDA)阶段。
EDA技术在进入21世纪后,得到了更大的发展,突出表现在以下几个方面:
●使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能;
●在仿真和设计两方面支持标准硬件描述语言的功能强大的EDA软件不断推出;
●电子技术全方位纳入EDA领域;
●EDA使得电子领域各学科的界限更加模糊,更加互为包容;
●更大规模的FPGA和CPLD器件的不断推出;
●基于EDA工具的ASIC设计标准单元已涵盖大规模电子系统及IP核模块;
●软硬件IP核在电子行业的产业领域、技术领域和设计应用领域得到进一步确认;
●SOC高效低成本设计技术的成熟。
2.2MAX+PlusⅡ简介
ALTERA公司推出的MAX+PlusⅡ软件支持多种硬件描述语言,提供FPGA/CPLD的设计,仿真和烧写环境。
MAX+PlusⅡ界面友好、使用便捷,具有原理图输入和文本输入两种输入手段,以及波形与EDIF等格式文件,并支持这些文件的任意混合设计。
利用MAX+PlusⅡ自身配备的逻辑综合及芯片编程等功能,可将涉及电路图或电路描述的程序变成基本的逻辑单元写入可编程芯片中,作为ASIC芯片。
2.3硬件描述语言VHDL
硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言。
VHDL语言具有很强大的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率的可靠性。
用VHDL进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。
3硬件电路设计
3.1硬件电路模块
硬件设计框图如图3.1所示。
图3.1硬件设计框图
各模块功能如下:
(1)主芯片FLEX10K10:
主要进行交通智能信号灯的运行;
(2)74LS244:
七段数码管驱动电路;
(3)七段数码管:
显示倒计时的秒数;
(4)138译码器:
七段数码管译码电路;
(5)下载器:
完成对整个程序的下载功能;
(6)555定时器:
提供FLEX10K10基准信号。
3.2主控芯片简介
3.2.1EPF10K10LC84-4主芯片(图3.2)
利用10K10芯片对智能交通信号灯进行设计与制作。
EPF10K10LC84-4系列器件是一种嵌入式的PLD产品。
它采用可重构的CMOSSRAM单元,其结构集成了实现通用多功能门列阵所需的全部特性。
10K10系列器件的容量可达25万门,能够高密度、高速度、高性能地将整个数字系统集成于单个器件中。
每个EPF10K10器件包含一个嵌入式阵列和一个逻辑式阵列,每个器件的配置通常是在系统上电时完成,通过存储一个ALTERA串行PROM中的配置数据,或者存储一个由系统控制器提供的配置数据来实现。
配置数据也能从系统ROM或下载器获得。
输入信号由1号CLK引脚导入;26、41、46、68、82引脚都接地;25、27、28引脚分别接138译码器的A、B、C端;38、39、47、48、49、50、51、52I/O引脚分别接驱动244的A8---A1端;55、34、13、76引脚分别对应着下载端口的下载孔;31、32引脚也接地。
图3.2EPF10K10LC84-4主芯片
3.2.2555定时器
多谐振荡器是能产生矩形波的一种自激振荡器电路,由于矩形波中除基波外还含有丰富的高次谐波,故称为多谐振荡器。
多谐振荡器没有稳态,只有两个暂稳态,在自身因素的作用下,电路就在两个暂稳态之间来回转换,故又称它为无稳态电路。
R1、R2和C1是外接定时元件,电路中将高电平触发端(6脚)和低电平触发端(2脚)并接后接到R2和C1的连接处,将放电端(7脚)接到R1,R2的连接处。
555定时器电路如图3.3所示。
图3.3555定时器
由于接通电源瞬间电容C1来不及充电,电容器两端电压uc为低电平,小于1/3VDD,故高电平触发端与低电平触发端均为低电平.输出vo为高电平,放电管VT截止。
这时,电源经R1、R2对电容C1充电,使电压uc按指数规律上升,当uc上升到2/3VDD时,输出vo为低电平,放电管VT导通,把uc从1/3VDD上升到2/3VDD这段时间内电路的状态称为第一暂稳态,其维持时间TPH的长短与电容的充电时间有关。
充电时间常数T充=(R1+R2)*C。
不难理解,接通电源后电路就在两个暂稳态之间来回翻转,则输出可得矩形波。
电路一旦起振后,uc电压总是在1/3VDD~2/3VDD之间变化。
对倒计时进行定时R1、R2=47Ω,C1=10μF,C2=0.01μF,计算F=1/0.7(R1+2R2)*C=1/0.7*141*10*10-6=1KHZ。
3.2.3下载器
下载器电路图如图3.4所示。
图3.4下载器
PC机中编写的VHDL语言的程序通过下载电路下载到FPGA芯片,使电路实现所需的功能。
下载线需接1KΩ的上拉电阻。
下载器标准并口10针引脚定义如表3.1所示。
表3.1下载器标准并口10针引脚定义
引脚
PS方式
信号名
描述
1
SCLK
时钟
2
GND
地
3
CONFIG_DONE
配置控制
4
Vcc
电源
5
Ncinfig
配置控制
6
------
------
7
nSTATUS
配置状态指示
8
------
------
9
DATA0
数据(到器件)
10
GND
地
3.3硬件电路设计
3.3.1数码管显示电路
图3.5数码管显示电路
74LS138为3线-8线译码器,当一个选通端(OE1)为高电平,另两个选通端(/(OE2A)和/(OE2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
74LS244为3态8位缓冲器,一般用作总线驱动器。
74LS244没有锁存的功能。
地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。
该设计是用来驱动数码管。
数码管显示电路由八个共阴极的数码管所组成,数码管两两显示东西、南北四个方向上面的信号灯的倒计时的秒数。
8位数码管动态扫描显示,它将所有数码管的8个段线相应地并接在一起,并接到74LS244芯片的Y1到Y8口,控制字段输出。
而各位数码管的共阴极由74LS138的/Y0到/Y7来实现8位数码管的位输出控制。
对于一组数码管动态扫描显示需要由两组信号来控制:
一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。
由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。
因此,在同一时刻如果各位数码管的位选线都处于选通状态的话,8位数码管将显示相同的字符。
若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。
即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。
同时,段线上输出相应位要显示字符的字型码。
这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。
3.3.2红绿灯输出电路
图3.6红绿灯输出电路图
十字路口的智能交通信号灯最普遍的就是红绿灯的造型,“红灯停、绿灯行、黄灯等一等”,这句话家喻户晓。
如图3.6所示就是红绿灯的输出电路图,6个LED显示管分别表示南北、东西两个对应方向上面的红绿灯,六个LED显示器分别接主控芯片10K10的六个I/O口。
3.3.3硬件电路图
由以上各部分的电路图可得到总的硬件电路图,如图3.6所示。
10K10主控芯片中,输入信号由1号CLK引脚导入;26、41、46、68、82引脚都接地;25、27、28引脚分别接138译码器的A、B、C端;38、39、47、48、49、50、51、52I/O引脚分别接驱动244的A8---A1端;55、34、13、76引脚分别对应着下载端口的下载孔;31、32引脚也接地。
74LS244对两个七段数码管进行驱动、使其实现倒计时的显示功能,1、19、10引脚都接地;A1---A8分别接10K10主芯片的39—52I/O口;Y1---Y8分别驱动七段数码管的a---.dp。
138译码器的A、B、C端分别接10K10的25、27、28I/O口;4、5、8引脚接地;1号OE1引脚接电源VCC;Y7---Y0分别接8个数码管的com端。
图3.7硬件电路图
4功能模块VHDL语言设计
交通灯控制器的信号说明:
reset:
系统复位;
clk:
计时和闪烁频率;
clk1:
扫描频率;
jinji:
紧急情况既特殊状态信号,高电平代表紧急情况出现;
state:
状态变化信号,00代表东西绿灯,南北红灯;01代表东西黄灯,南北红灯;10代表东西红灯,南北绿灯;11代表东西红灯,南北黄灯;
jian1,jian2:
东西和南北方向的计数器减1信号;
zhizhu1,zhizhu2:
东西和南北方向计数器置数信号;
r1,g1,y1:
代表东西方向的红灯,绿灯和黄灯;
r2,g2,y2:
代表南北方向的红灯,绿灯和黄灯;
led1:
代表东西方向的倒计时显示;
led2:
代表南北方向的倒计时显示。
4.110K10模块图
10K10模块图如图4.1所示。
主要由KZMK控制模块、SCMK输出模块、SMMK扫描模块、FP分频模块、YMQ译码器模块、QDMMK七段码模块、LDSSMD绿灯闪烁模块七个模块组成。
由控制模块的reset和jinji、分频模块的clk_in口输入信号;分频模块的div_outB、div_outA分别控制模块的clk和扫描模块的clk;控制模块的state、jian、zhizhu1、zhizhu2分别对应输出模块的这四个口。
控制模块的zhizhug1、zhuzhug2分别对应绿灯闪烁模块的这两个口;输出模块的clk、jinji分别对应控制模块和绿灯闪烁模块的这两个口;输出模块的led1、led2分别对应扫描模块的d1、d2口;输出模块的g1、g2分别与绿灯闪烁模块的ig1、ig2口接;扫描模块的daout口与七段码模块的qq口相接;扫描模块的sel对应着译码器的sel口;输出模块的r1、r2、y1、y2和绿灯闪烁模块的g1、g2都加上非门后进行输出信号;译码器模块与七段码模块的q口和w口也为输出信号。
图4.110K10模块图
4.2各模块图的设计
共分为7个模块:
控制模块、输出模块、分频模块、绿灯闪烁模块、扫描模块、译码模块、七段码模块。
4.2.1控制模块
控制模块符号图如图4.2所示。
图4.2控制模块符号图
通过对时钟的计数控制运行状态的改变,输出相应的状态变化信息、递减信号和置数信号给输出模块进行显示同时输出绿灯闪烁控制信号给绿灯闪烁控制模块;出现紧急情况时停止计数和状态的变化,解除紧急状态后继续原来的运行状态。
由reset和jinji引脚输入信号,state、jian、zhizhu1、zhizhu2输出端分别接输出模块的这四个引脚,zhizhug1、zhizhug2分别接绿灯闪烁模块的这两个相对应的引脚。
VHDL源程序为:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitykzmkis
port(reset,clk,jinji:
instd_logic;
state:
outstd_logic_vector(1downto0);
jian,zhizhu1,zhizhu2,zhizhug1,zhizhug2:
outstd_logic);
endkzmk;
architectureaofkzmkis
signalcount:
std_logic_vector(6downto0);
signaljiantemp:
std_logic;
begin
jian<=jiantempand(notclk);
statelabel:
process(reset,clk)
begin
ifreset='0'then
count<="0000000";
state<="00";
elsifclk'eventandclk='1'then
ifjinji='0'thencount<=count+1;
jiantemp<='1';
elsifjinji='1'thenjiantemp<='0';
endif;
ifcount=0thenstate<="00";zhizhu1<='1';zhizhu2<='1';
elsifcount=28thenstate<="01";zhizhu1<='1';
elsifcount=33thenstate<="10";zhizhu1<='1';zhizhu2<='1';
elsifcount=61thenstate<="11";zhizhu2<='1';
elsifcount=66thencount<="0000000";elsezhizhu1<='0';zhizhu2<='0';
endif;
ifcount>24andcount<27
thenzhizhug1<='1';zhizhug2<='0';
elsifcount>32andcount<60
thenzhizhug2<='1';zhizhug1<='0';
elsezhizhug1<='0';zhizhug2<='0';
endif;
endif;
endprocessstatelabel;
enda;
4.2.2输出模块
输出模块符号图如图4.3所示。
图4.3输出模块符号图
在正常状态下通过控制模块输出的state状态信号,jian减信号和zhizhu1,zhizhu2置数信号控制东西和南北方向的指示灯和计数显示:
紧急状态下通过jinji紧急信号,clk时钟信号处理紧急情况,东西和南北方向均输出红灯,计数输出值停止倒计时并不断闪烁。
由jinji端输入信号,由r1、y1、r2、y2端输出信号,其余的引脚分别和控制模块与扫描模块的对应引脚想接。
VHDL源程序为;
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityscmkis
port(clk,jinji:
instd_logic;
state:
instd_logic_vector(1downto0);
jian,zhizhu1,zhizhu2:
instd_logic;
r1,g1,y1,r2,g2,y2:
outstd_logic;
led1,led2:
outstd_logic_vector(7downto0));
endscmk;
architectureaofscmkis
signalcount1,count2:
std_logic_vector(7downto0);
signalzhizhustate1,zhizhustate2:
std_logic_vector(7downto0);
signaltg1,tg2,tr1,tr2,ty1,ty2:
std_logic;
begin
led1<="00000000"whenjinji='1'andclk='0'elsecount1;
led2<="00000000"whenjinji='1'andclk='0'elsecount2;
tg1<='0'whenstate="00"andjinji='0'else'0';
ty1<='0'whenstate="01"andjinji='0'else'0';
tr1<='0'whenstate
(1)='1'orjinji='1'else'0';
tg2<='0'whenstate="10"andjinji='0'else'0';
ty2<='0'whenstate="11"andjinji='0'else'0';
tr2<='0'whenstate
(1)='0'orjinji='1'else'0';
zhizhustate1<="00010101"whenstate="00"else"00000011"
whenstate="01"else"00011000";
zhizhustate2<="00010101"whenstate="10"else"00000011"
whenstate="11"else"00011000";
label2:
process(jian)
begin
ifjian'eventandjian='1'then
ifzhizhu2='1'orcount2=1then
count2<=zhizhustate2;
elsifcount2(3downto0)="0000"thencount2<=count2-7;
elsecount2<=count2-1;
endif;
g2<=tg2;
r2<=tr2;
y2<=ty2;
endif;
endprocesslabel2;
label1:
process(jian)
begin
ifjian'eventandjian='1'then
ifzhizhu1='1'orcount1=1then
count1<=zhizhustate1;
elsifcount1(3downto0)="0000"thencount1<=count1-7;
elsecount1<=count1-1;
endif;
g1<=tg1;
r1<=tr1;
y1<=ty1;
endif;
endprocesslabel1;
enda;
4.2.3分频模块
分频模块符号图如图4.4所示。
图4.4分频模块符号图
将时钟信号经过分频得到所需要的信号。
系统的动态扫描需要1HZ的脉冲,而系统时钟计时模块需要1HZ的脉冲。
分频模块主要为系统提供所需的时钟计时脉冲。
该模块将1KHZ的脉冲信号进行分频,产生方波,作为系统时钟计时信号。
输入clk_in为1KHZ的信号,输出Div_outb为1HZ的信号,Div_outc为250HZ信号。
VHDL源程序为:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfpis
port(clk_in:
instd_logic;
div_outb,div_outc:
outstd_logic);
endfp;
architectureaoffpis
signalfre_nb:
integerrange0to500;