EDA的交通灯控制系统的设计.docx
- 文档编号:2568505
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:16
- 大小:26.45KB
EDA的交通灯控制系统的设计.docx
《EDA的交通灯控制系统的设计.docx》由会员分享,可在线阅读,更多相关《EDA的交通灯控制系统的设计.docx(16页珍藏版)》请在冰点文库上搜索。
EDA的交通灯控制系统的设计
封面
作者:
PanHongliang
仅供个人学习
第1章:
绪论
1.1EDA技术概述
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
1.1.1EDA技术的发展与应用
电子设计技术的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。
EDA技术是伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(CAD)、计算机辅助工程设计(CAE)和电子系统设计自动化(ESDA)三个发展阶段。
20世纪70年代为CAD阶段,这一阶段人们开始用计算机辅助进行IC版图编辑和PCB布局布线,取代了手工操作。
80年代为CAE阶段,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并通过电气连接网表将两者结合在一起,以实现工程设计。
90年代为ESDA阶段,ESDA的基本特征是设计人员按“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键部分用一片或几片专用集成电路实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。
ESDA的出现,使设计师开始实现“概念驱动工程”的梦想,从而摆脱了大量的辅助设计作,把精力集中在创造性的方案与概念构思上,极大地提高了系统的效率,缩短了产品的研制周期。
1.1.2EDA技术的基本特征
EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:
设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。
1.1.3EDA的设计方法
“自顶向下”的设计方法。
高层次设计是一种“自顶向下”的全新设计方法,这种设计方法首先从系统设计人手,在顶层进行功能方框图的划分和结构设计。
在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。
然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路。
由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避燃计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
1.1.4硬件描述语言
硬件描述语言(HDL)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。
VHDL是一种全方位的硬件描述语言,包括系统行为级。
寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件俄语言的功能,整个自顶向下或由底向上的电路设计过程都可以用VHDL来完成。
VHDL还具有以下优点:
(1)VHDL的宽范围描述能力使它成为高层进设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。
(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑艄设计,灵活且方便,而且也便于设计结果的交流、保存和重用。
(3)VHDL的设计不依赖于特定的器件,方便了工艺的转换。
(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。
1.2数字系统
数字系统是由对信息进行采集,转换、传输、存储、加工处理和利用的一组相互联系,相互作用的部件所组成的一个有机的整体.虽然信息来源不同,有经济信息、政治信息、图文信息,信息形态不一,有离散的、有连续的等等.但都可经过变换,转换成数字系统所能接收的数字信息,进行存储和处理.同时又可把数字系统加工、处理后的信息经过相应逆变换,成为对被控对象进行控制的可靠依据.数字系统具有可靠性强,精确度高,稳定性好可模块化,便于集成等优点.
数字系统通常由三部份组成:
输入接口、输出接口,数据器和控制器其结构如图1.1所示:
图1.1数字系统结构图
输入接口是用来将模似量转化为系统能接收的数字量的模块,同理输出接口是完成可逆变化的模块.数字系统的信号包括数据流和控制流信号,对数据流进行传送和加工处理为数据处理器,对控制流信号进行传送和加工处理为控制器.数据处理器和控制器是数字系统中最基本的两个部份.尽管各种数字系统可能具有完全不同的功能和形式,但是都可以用数据处理器和控制所构成的数字系统的本结构来描述.控制器的产生的输出控制信号影响着其它系统控制器的操作,使本系统与其它系统协调一致地工作,控制器的输入信号也有可能是其系统的输出控制信号.数据处理器作用是控制系统内各部份模块的工作,使它们按一定顺序进行操作,数字系统中就是这样通过数据处理器和控制器之间的密切配合协调工作,成为一个自动实现信息处理功能的有机整体.通常以是否有控制器作为区别数字系统和系统部件的标志,凡是包含控制器且能按顺序进行操作的系统,不论规模大小一律称为数字系统,否则只能是一个系统的部件.
1.3数字系统的设计方法
现代数字系统的设计方法早期的数字系统多采用试凑法设计,此法无固定的套路可循,主要凭借设计者的经验。
先进的现代数字系统设计是自上而下的模块化设计。
从整个系统功能出发,按一定原则将系统分成若干个子系统,再将每个子系统分成若干个功能模块,再将每个模块分成若干个较小模块——直至分成许多基本模块实现。
在自上而下划分过程中,最重要的是将系统或子系统按计算机组成思想那样划分成控制器和若干个受控制的功能模块。
受控部分通常为设计者们所熟悉的各种功能电路,无论是采用现成模块还是自行设计都有一些固定方法可依,无须花费更多精力。
主要任务是设计控制器,控制器在系统或子系统中只有一个,设计工作量不大。
从而大大简化了设计的难度,缩短了设计时间,而且修改设计也很方便,避免了牵一发而动全身。
1.3.1自底向上的设计方法(BottomUp)
这是一种传统的设计方法,其主要的设计过程是根据系统对硬件的要求,从整体上规划整个系统的功能,编写出详细技术规格书和系统控制流程图。
并根据所给的技术规格书和控制程图,对系统的功能进行细化,合理地划分功能模块,确立它们之间的相互关系:
这种划分过程不断在进行,直到划分得到的单元可以直接映射到实际的物理器件,完成上述划分后再行各功能模块设计与调试工作。
最后进行各模块电路的连接并进行系统联调,从而完成整个系统的硬件设计。
早期的数字系统设计多采用这种方法。
1.3.2自顶向下设计(TopDown)
随着微电子技术发展,VHDL硬件描述语言应用越来越广,硬件描述语言可以在各抽象层次上对电子系统进行描述,且借助于DEA设计:
工具,自动地实现从高层次到低层次的转换,使自顶向下的设计过程得以实现。
目前这种设计方法被工程界广为采用。
设计的总过程是从系统总体要求出发,从系统顶层开始,自上而下地逐步将系统设计内容进行细化,借助硬件描述语言进行编程,将系统硬件设计转化成软件编程,在此基础上再利用相应的逻辑综合工具EDA以及在线可编程ISP技术对各种可编程逻辑器件如CPLD、FPGA进行逻辑划分与适配,将所产生的菊花链文件映射到相应的可编芯片内,最后完成硬件的整体设计。
1.4现代数字系统的设计过程
在使用现场可编程逻辑器件以前,数字系统的设计过程是:
书面设计—硬件搭试—制作样机。
硬件搭试是很费时间的,往往因接线紊乱和接触不良而带来各式各样的麻烦,所用器件越多,搭试难度越大,当系统规模大到一定程度,系统复杂到一定程度,这种搭试实际上是不可行的。
由于计算机技术的发展和采用现场可编程逻辑器件,改变了数字系统设计的程式,硬件搭试被仿真所取代。
所谓仿真,就是在计算机上建立起系统的模型,然后加进合适的测试码(对组合电路)或测试序列(对时序电路),对此模型进行测试,以验证系统是否符合预期的设计,如不符合再行修改,直至满足设计要求,然后制作样机。
所以,现代数字系统设计过程是书面设计—仿真—(烧录器件)制作样机,这是一种快捷而且节约的方法。
第2章:
交通灯控制系统介绍
城市中常见的大型十字路口如图2.1所示。
图2.1十字路口示意图
一般情况下,当汽车行驶至十字交通路口时,有3种选择:
向前,向左转弯,向右转弯。
根据我国的交通规则规定,汽车是靠右行驶,向右拐弯只要走弧形的支干道即可,不需受十字交通灯的束缚。
因此,本文主要考虑前行和左转这两种情况。
十字路口交通灯负责控制各走向红绿灯的状态及转换,并且各状态之间有一定的时间过渡。
同时,东西南北每条干道上都为人行横道设置了红绿灯,提醒过路行人在安全时刻穿越道路,以保证行人的安全。
2.1交通灯控制系统的功能
交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。
在现代化的大城市中,十字交叉路口越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。
2.2交通灯控制系统设计
城市路口交通信号控制系统大体上分为三种类型:
定周期的信号机、多时段且具有无电缆协调功能的微电脑型信号机以及联网式自适应多相位智能型信号机。
具体采用哪种类型,应根据其应用场合及特点加以确定。
其中,第一种类型以其成本低,设计简单,安装及维护方便等特点得到了广泛应用。
2.3交通灯控制系统的基本组成模块
交通灯控制器原理框图如图2.2所示,包括置数模块、计数模块、主控制器模块和译码器模块。
置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。
其中,核心部分是主控制模块。
图2.2交通灯控制器原理框图
2.4交通灯控制器状态
2.5程序流程图
第3章:
交通灯控制系统的设计
有一条主干道和一条支干道的汇合点形成的十字路口,为确保车辆安全,迅速通行,在干道和支道的入口设置了红、绿(包括直行和左拐)、黄3色信号灯。
3.1交通灯控制器功能描述及设计方法
通过两组交通灯来模拟控制东西、南北两条通道上的车辆通行,所有功能在实验操作平台上进行模拟通过,根据原理其主要功能如下:
图3.1系统结构图
3.2设计要求
1.能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态,用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯;
2.南北向为主干道,每次通行时间为30S,东西向为支干道,每次通行时间为20S;
3.能实现正常的倒计时功能,用两组数码管作为东西、南北向的倒计时显示。
其中,黄灯:
5S。
4.能实现特殊状态的功能。
按下SP键后,能实现以下特殊功能:
(1)显示倒计时的两组数码管闪烁;
(2)计数器停止计数并保持在原来的状态;
(3)东西、南北路口均显示红灯状态;
(4)特殊状态解除后能继续计数;
5.能实现全清零功能。
按下reset键后,系统实现全清零,计数器由初状态计数,对应状态的指示灯亮;
6.用VHDL语言设计上述功能的交通灯控制器,并用层次化方法设计该电路;
7.仿真、验证设计的正确性。
3.2.1控制部分的设计
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
entityledcontrolis
port(reset,clk,urgen:
instd_logic。
state:
outstd_logic_vector(1downto0)。
sub,set1,set2:
outstd_logic)。
endledcontrol。
architectureaofledcontrolis
signalcount:
std_logic_vector(6downto0)。
signalsubtemp:
std_logic。
begin
sub<=subtempand(notclk)。
statelabel:
process(reset,clk)
begin
ifreset='1'then
count<="0000000"。
state<="00"。
elsifclk'eventandclk='1'then
ifurgen='0'thencount<=count+1。
subtemp<='1'。
elsesubtemp<='0'。
endif。
ifcount=0thenstate<="00"。
set1<='1'。
set2<='1'。
elsifcount=25thenstate<="01"。
set1<='1'。
elsifcount=30thenstate<="10"。
set1<='1'。
set2<='1'。
elsifcount=45thenstate<="11"。
set2<='1'。
elsifcount=50thencount<="0000000"。
elseset1<='0'。
set2<='0'。
endif。
endif。
endprocessstatelabel。
enda。
3.2.2显示部分的设计
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
entityledshowis
port(clk,urgen:
instd_logic。
state:
instd_logic_vector(1downto0)。
sub,set1,set2:
instd_logic。
r1,g1,y1,r2,g2,y2:
outstd_logic。
led1,led2:
outstd_logic_vector(7downto0))。
endledshow。
architectureaofledshowis
signalcount1,count2:
std_logic_vector(7downto0)。
signalsetstate1,setstate2:
std_logic_vector(7downto0)。
signaltg1,tg2,tr1,tr2,ty1,ty2:
std_logic。
begin
led1<="11111111"whenurgen='1'andclk='0'elsecount1。
led2<="11111111"whenurgen='1'andclk='0'elsecount2。
tg1<='1'whenstate="00"andurgen='0'else'0'。
ty1<='1'whenstate="01"andurgen='0'else'0'。
tr1<='1'whenstate
(1)='1'orurgen='1'else'0'。
tg2<='1'whenstate="10"andurgen='0'else'0'。
ty2<='1'whenstate="11"andurgen='0'else'0'。
tr2<='1'whenstate
(1)='0'orurgen='1'else'0'。
setstate1<="00100101"whenstate="00"else
"00000101"whenstate="01"else
"00100000"。
setstate2<="00010101"whenstate="10"else
"00000101"whenstate="11"else
"00110000"。
label2:
process(sub)
begin
ifsub'eventandsub='1'then
ifset2='1'then
count2<=setstate2。
elsifcount2(3downto0)="0000"thencount2<=count2-7。
elsecount2<=count2-1。
endif。
g2<=tg2。
r2<=tr2。
y2<=ty2。
endif。
endprocesslabel2。
label1:
process(sub)
begin
ifsub'eventandsub='1'then
ifset1='1'then
count1<=setstate1。
elsifcount1(3downto0)="0000"thencount1<=count1-7。
elsecount1<=count1-1。
endif。
g1<=tg1。
r1<=tr1。
y1<=ty1。
endif。
endprocesslabel1。
enda。
3.2.3分频器部分的设计
libraryieee。
useieee.std_logic_1164.all。
usework.p_alarm.all。
entitydivideris
port(clk_in:
std_logic。
reset:
instd_logic。
clk:
outstd_logic)。
enddivider。
architectureartofdivideris
constantdivide_period:
t_short:
=1000。
begin
process(clk_in,reset)is
variablecnt:
t_short。
begin
if(reset='1')then
cnt:
=0。
clk<='0'。
elsifrising_edge(clk_in)then
if(cnt<=(divide_period/2))then
clk<='1'。
cnt:
=cnt+1。
elsif(cnt<(divide_period-1))then
clk<='0'。
cnt:
=cnt+1。
else
cnt:
=0。
endif。
endif。
endprocess。
endart。
p_alarm程序包
libraryieee。
useieee.std_logic_1164.all。
packagep_alarmis
subtypet_digitalisintegerrange0to9。
subtypet_shortisintegerrange0to65535。
typet_clock_timeisarray(5downto0)oft_digital。
typet_displayisarray(5downto0)oft_digital。
endpackagep_alarm。
3.3交通灯控制系统的仿真
3.3.1对交通灯控制部分进行仿真
在QuartusII软件中导入交通灯控制程序,对此程序编译无错误后,建立Vectorwaveformfile文件保存时仿真文件名要与设计文件名一致。
在其中设计始终开始时间为0,结束时间为5us,周期为50ns。
仿真结果如下:
当reset='1'state<="00"count<="0000000"。
当reset='0'在上升沿到来时执行当count=0则state<="00"。
set1<='1'。
set2<='1'。
count=25state<="01"。
set1<='1'。
count=30thenstate<="10"。
set1<='1'。
set2<='1'。
count=45thenstate<="11"。
set2<='1'。
count=50thencount<="0000000",否则set1<='0'。
set2<='0'
仿真的结果正确。
3.3.2对交通灯显示部分模块进行仿真
在QuartusII软件中导入交通灯显示程序,对此程序编译无错误后,建立Vectorwaveformfile文件保存时仿真文件名要与设计文件名一致。
将控制仿真的结果贴到显示仿真中,两次在其中设计的开始时间为0,结束时间为5us,周期为50ns。
仿真结果如下:
仿真结果与程序所要的结果一样。
当state=”00”时g1<=1;当state
(1)<=’0’时r2<=’1’.
当urgen=‘1’时r1<=’1’,r2<=’1’。
仿真结果与程序设计符合。
3.3.3对交通灯系统进行仿真
在QuartusII软件中导入交通灯系统程序,对此程序编译无错误后,建立Vectorwaveformfile文件保存时仿真文件名要与设计文件名一致。
在其中设计开始时间为0,结束时间为5us,周期为50ns。
仿真结果如下:
系统仿真的结果符合设计要求。
与前面仿真的结果也一致。
3.4程序下载
3.4.1引脚配置
在实验箱上选择管脚与程序中的输入输出信号对应,其管脚配置如下:
输入
芯片脚号
输出
芯片脚号
输出
芯片脚号
Clk
Pin_93
led2[7]
Pin_121
led1[4]
Pin_126
reset
pin_41
led2[6]
Pin_120
led1[3]
Pin_125
urgen
Pin_42
led2[5]
Pin_114
led1[2]
Pin_124
led2[4]
Pin_113
led1[1]
Pin_123
led2[3]
Pin_112
led1[0]
Pin_122
led2[2]
Pin_111
g1
Pin_142
led2[1]
Pin_110
g2
Pin_132
led2[0]
Pin_109
r1
Pin_140
led1[7]
Pin_129
r2
Pin_139
led1[6]
Pin_128
y1
Pin_141
led1[5]
Pin_127
y2
Pin_133
3.4.2编程下载
适配后生成的下载或配置文件通过编程器,对CPLD的下载称为编程(Program)。
点击QuartusII软件中的Program就实行了本次实验的下载。
最后对载入了设计的FPGA或CPLD的硬件系统进行统一测试,以便最终验证设计工
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 交通灯 控制系统 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)