基于VHDL的交通控制灯的设计.docx
- 文档编号:11302406
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:28
- 大小:112.16KB
基于VHDL的交通控制灯的设计.docx
《基于VHDL的交通控制灯的设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL的交通控制灯的设计.docx(28页珍藏版)》请在冰豆网上搜索。
基于VHDL的交通控制灯的设计
EEEEEEEE
毕业设计论文
作者@学号@@@@
系部@
专业E术
题目基于VHDL的交通控制灯的设计
指导教师XX
评阅教师@
完成时间:
2010年3月28日
毕业设计(论文)中文摘要
基于VHDL的交通控制灯的设计
摘要:
随着社会经济的发展,城市交通问题越来越引起人们的关注。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
随着城市机动车量的不断增加,许多大城市如北京、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速道路,在高速道路建设完成的初期,它们也曾有效地改善了交通状况,可最终也没有充分发挥预期的作用。
而我应用所学知识就交通控制系统中的一部分做了一个设计,即十字路口交通灯的设计。
其中涉及主要的硬件有CPLD编程器件、发光二极管、和数码管等等,再者自己将所编程序(用VHDL编的)进行编译、仿真,然后下载到编程器件中进行运行。
关键词:
CPLD交通灯数码管VHDL
毕业设计(论文)外文摘要
Title:
DesignoftrafficcontrollightbasedonVHDL
Abstract:
Alongwiththesocialeconomydevelopment,themunicipaltransportationquestionmoreandmorearousespeople'sinterest.Themunicipaltransportationcontrolsystemisthecomputerintegratedmanagementsystemwhichisusedinthemunicipaltransportationdatamonitor,thestreet-trafficlightscontrolandthetransportationunblocks,itisthemostimportantconstituentinthemodernmunicipaltransportationmonitoringcommandsystem.Alongwiththecityvehiclequantityunceasingincrease,manybigcitieslikeBeijing,Shanghai,Nanjingandsoonhadthetransportationexcessloadmovementsituation,therefore,fromthe80'slaterperiods,thesecitiesconstructsthecityspeed-wayinabundance,completestheinitialperiodinthespeed-wayconstruction,theyalsoonceeffectivelyimprovedthetransportationcondition.Butitcannotrealizeexpectedgoals.Then,forapartoftrafficcontrolsystems,ImakeadesignbyapplyingtheknowledgewhichIstudied.ThemainhardwaresthatisCPLD,LEDandDigitaldisplayareusedinthisdesign.Besidesthat,IeditprogramwithVHDLandmakeittobecompiledandsimulated,IdownloadittoCPLDatlast.
keywords:
CPLDTrafficlightDigitaldisplayVHDL
目录
1引言1
2CPLD简介1
2.1发展历史及应用领域1
2.2器件特点及其使用2
2.3VHDL的概述3
2.4VHDL的特点3
3系统设计过程5
3.1总体设计概要5
3.2交通灯原理分析5
4系统模块设计及仿真6
4.1顶层文件的设计6
4.2紧急状态模块(Emergency)的设计7
4.3消抖模块(Debounce)的设计8
4.4分频模块(Frequency1)的设计9
4.5状态选择模块(StatusSelect)的设计10
4.6时间选择模块(TimeSelect)的设计12
4.7译码显示模块(Display)的设计13
4.8信号灯控制模块的设计14
4.9系统程序仿真图20
结论20
致谢21
参考文献21
1引言
当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师(纳伊特)在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由两个红绿旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。
红灯亮,表示“停止”,绿灯亮,表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,车辆一旦接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下喇叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
2CPLD/VHDL简介
2.1CPLD发展历史及应用领域
CPLD(ComplexProgrammableLogicDevice)是ComplexPLD的简称,一种较PLD为复杂的逻辑元件。
CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。
其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆将代码传送到目标芯片中,实现设计的数字系统。
20世纪70年代,最早的可编程逻辑器件--PLD诞生了。
其输出结构是可编程的逻辑宏单元,因为它的硬件结构设计可由软件完成(相当于房子盖好后人工设计局部室内结构),因而它的设计比纯硬件的数字电路具有很强的灵活性,但其过于简单的结构也使它们只能实现规模较小的电路。
为弥补PLD只能设计小规模电路这一缺陷,20世纪80年代中期,推出了复杂可编程逻辑器件--CPLD。
目前应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等方面。
2.2可编程逻辑器件特点及其使用
它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中。
几乎所有应用中小规模通用数字集成电路的场合均可应用CPLD器件。
CPLD器件已成为电子产品不可缺少的组成部分,它的设计和应用成为电子工程师必备的一种技能。
CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。
其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。
这里以抢答器为例讲一下它的设计(装修)过程,即芯片的设计流程。
CPLD的工作大部分是在电脑上完成的。
打开集成开发软件(Altera公司Max+pluxII)→画原理图、写硬件描述语言(VHDL,Verilog)→编译→给出逻辑电路的输入激励信号,进行仿真,查看逻辑输出结果是否正确→进行管脚输入、输出锁定(7128的64个输入、输出管脚可根据需要设定)→生成代码→通过下载电缆将代码传送并存储在CPLD芯片中。
7128这块芯片各管脚已引出,将数码管、抢答开关、指示灯、蜂鸣器通过导线分别接到芯片板上,通电测试,当抢答开关按下,对应位的指示灯应当亮,答对以后,裁判给加分后,看此时数码显示加分结果是否正确,如发现有问题,可重新修改原理图或硬件描述语言,完善设计。
设计好后,如批量生产,可直接复制其他CPLD芯片,即写入代码即可。
如果要对芯片进行其它设计,比如进行交通灯设计,要重新画原理图、或写硬件描述语言,重复以上工作过程,完成设计。
这种修改设计相当于将房屋进行了重新装修,这种装修对CPLD来说可进行上万次。
2.3VHDL概述
自1987年VHDL(VeryHighIntegratedCircuitHardwareDescriptionLanguage即超高速集成电路硬件描述语言),被定为IEEE标准IEEE-STD-1076以来,VHDL已被工业界广泛认可,并取得了巨大成功,成为数字系统设计和存档的重要工具,极大的提高了数字系统的设计水平和效率。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
2.4VHDL的特点
VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。
归纳起来,VHDL语言主要具有以下优点:
(1)VHDL语言功能强大,设计方式多样
VHDL语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。
同时,它还具有多层次的电路设计描述功能。
此外,VHDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。
VHDL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。
(2)VHDL语言具有强大的硬件描述能力
VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。
同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。
VHDL语言的强大描述能力还体现在它具有丰富的数据类型。
VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。
(3)VHDL语言具有很强的移植能力
VHDL语言很强的移植能力主要体现在:
对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。
(4)VHDL语言的设计描述与器件无关
采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。
这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。
当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。
(5)VHDL语言程序易于共享和复用
VHDL语言采用基于库(library)的设计方法。
在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。
这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。
由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。
3系统设计过程
3.1总体设计概要
根据交通控制器的功能与要求,将其总体电路分为Frequency1模块,Emergency模块,Debounce模块,StatusSelect模块,TimeSelect模块,Display模块,信号灯控制模块,总体设计图1如下:
1MHZ
CLK
1HZ
图1系统整体设计框图
东西方向和南北方向各使用4个LED显示,红黄绿各代表红黄绿灯,绿灯和另一个红灯同时亮时为左转时间。
东西方向和南北方向计时均为2位数,共需要4个LED七段数码管显示。
由于为共阴极控制,输出一个catn信号控制选择数码管显示,num_out信号输出显示的内容。
增加一个voice输出,控制紧急状态下的蜂鸣器。
3.2交通灯原理分析
东西方向各有一组红,黄,绿灯用于指挥交通,红,黄,绿的持续时间分别为25s,5s,20s。
当有紧急情况(如消防车)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,正常工作。
两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。
当BTN=’1’时,进入紧急状态,LED输出为“100100”,即南北、东西向均为红灯亮。
当BTN=’0’时,交通灯即开始了正常工作。
BTN=’0’时,经过20秒,LED由B“100010”变为“100001”,再经过5秒,LED变为B“010100”,再经过20秒,LED变为B“001100”,再经过5秒,LED变为B“100010”…….如此循环下去。
当BTN=’1’时跳变到BTN=’0’时,数码管继续计时,恢复正常工作状态。
南北、东西方向的红绿灯按表一、表二变化。
表一交通灯状态转换表
东西(A)方向
红灯
红灯
绿灯
黄灯
25秒
20秒
5秒
南北(B)方向
绿灯
黄灯
红灯
红灯
20秒
5秒
25秒
表二交通灯状态转换表
BTN
LED
备注
1
100100
长时间亮红灯
0
状态1:
100010
持续20秒,转到状态2
状态2:
100001
持续5秒,转到状态3
状态3:
010100
持续20秒,转到状态4
状态4:
001100
持续5秒,转到状态1
注:
LED的六位分别对应东西方向(A方向)的红绿黄和南北方向(B方向)的红绿黄。
‘1’表示亮,‘0’表示灭。
4系统模块设计及仿真
4.1顶层文件的设计
顶层原理图设计可以依据系统框图进行,由Frequency1模块,Emergency模块,Debounce模块,StatusSelect模块,TimeSelect模块,Display模块,信号灯控制模块七部分组成。
在VHDL设计中,采用自顶向下的设计思路。
顶层模块中,根据硬件设计,设置如下端口:
外部时钟信号:
Clk
紧急状态按键:
Key
东西方向状态灯:
r1,y1,g1,t1
南北方向状态灯:
r2,y2,g2,t2
蜂鸣器控制:
voice
数码管显示信号:
num_out
数码管共阴极控制:
catn
其顶层原理图如图2所示:
图2顶层原理图
4.2紧急状态模块(Emergency)的设计
Emergency模块:
紧急情况控制信号是采用按键的输入方式,当按键按下时候,由Emergency模块接收按键信息并输出信号给其它模块。
输入端口:
BTN_in接收按键信息
输出端口:
BTN_out输出紧急信号
libraryieee;
useieee.std_logic_1164.all;
entityEmergencyis
port(
BTN_in:
instd_logic;--定义接收按键信息,输出紧急信号端口
BTN_out:
outstd_logic
);
endEmergency;
architectureEmergency_arcofEmergencyis
begin
process(BTN_in)
variabletemp:
std_logic;--定义变量temp
begin
ifBTN_in'eventandBTN_in='1'then--如有紧急信号时,temp进行取非
temp:
=nottemp;
endif;
BTN_out<=temp;--把temp赋给BTN_out
endprocess;
end;
4.3消抖模块(Debounce)的设计
Debounce模块,由于紧急控制采用BTN按键,其产生时刻和持续时间的长短是随机不定的,且存在因开关簧片反弹引起的电平抖动现象,因此必须安排一个消抖和同步化电路模块,以保证系统能捕捉到输入脉冲。
输入端口:
key按键信息,clk时钟信号
输出端口:
key_out消抖后信号
libraryieee;
useieee.std_logic_1164.all;
entityDebounceis
port(
key,clk:
instd_logic;--定义输入,输出端口及时钟信号
key_out:
outstd_logic
);
endDebounce;
architectureDebounce_arcofDebounceis
signaltemp1,temp2:
std_logic;
begin
process(key,clk)
begin
ifclk'eventandclk='0'then--时钟下降沿后,把temp1赋给temp2
temp2<=temp1;把key赋给temp1
temp1<=key;
endif;
endprocess;
key_out<=temp1and(nottemp2)andclk;--消抖输出
end;
4.4分频模块(Frequency1)的设计
Frequency1模块,由于外部时钟信号clk的频率为1MHz,而实际需要的内部计时时钟频率为1Hz,需要一个分频电路。
输入端口:
clk外部时钟信号
输出端口:
clk_out分频后信号
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityFrequency1is
port(
clk:
instd_logic;--定义外部时钟信号和分频后信号
clk_out:
outstd_logic
);
endFrequency1;
architectureFrequency1_arcofFrequency1is
begin
process(clk)
variabletemp:
integerrange0to999999;--定义变量temp的范围0到999999
begin
if(clk'eventandclk='1')then
if(temp=999999)then--分频计数
temp:
=0;
clk_out<='0';
else
temp:
=temp+1;
clk_out<='1';
endif;
endif;
endprocess;
end;
4.5状态选择模块(StatusSelect)的设计
StatusSelect模块,由于共需要显示4个数字,需要循环点亮7位数码管,该模块通过输入的时钟信号,循环输出4个选择信号。
当紧急状态信号到来,改变显示状态,通过计数部分,实现闪烁,并输出蜂鸣信号。
输入端口:
clk时钟信号,show紧急显示
输出端口:
sel选择信号,voice蜂鸣信号
libraryieee;
useieee.std_logic_1164.all;
entityStatusSelectis
port(
clk,show:
instd_logic;--时钟信号,紧急显示
sel:
outstd_logic_vector(2downto0);--选择信号
voice:
outstd_logic--蜂鸣信号
);
endStatusSelect;
architectureStatusSelect_arcofStatusSelectis
signaltemp:
std_logic_vector(2downto0);
begin
process(clk,show)
variablet:
integerrange0to499999;
variablea:
std_logic;
begin
if(clk'eventandclk='1')then
caseshowis
when'0'=>--非紧急状态
voice<='0';
casetempis
when"000"=>temp<="001";
when"001"=>temp<="010";
when"010"=>temp<="011";
when"011"=>temp<="000";
whenothers=>temp<="000";
endcase;
whenothers=>--紧急状态
voice<=a;
if(t=499999)then--闪烁计数
t:
=0;
a:
=nota;
else
t:
=t+1;
endif;
if(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 交通 控制 设计