基于FPGA的交通灯控制器设计.docx
- 文档编号:9019228
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:42
- 大小:1.11MB
基于FPGA的交通灯控制器设计.docx
《基于FPGA的交通灯控制器设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的交通灯控制器设计.docx(42页珍藏版)》请在冰豆网上搜索。
基于FPGA的交通灯控制器设计
基于FPGA的交通灯控制器设计
学生姓名:
学生学号:
院(系):
电气信息工程学院
年级专业:
指导教师:
助理指导教师:
二〇一五年五月
摘要
随着国民经济的不断提高,汽车数量不断增加,交通问题越来越引起重视,对交通灯控制器的要求也越来越高。
设计一个性能可靠的交通灯控制器,对维持交通秩序和保证交通安全起着至关重要的作用,也是经济与社会发展的需要,极具实际意义。
本文介绍基于FPGA的交通灯控制器设计。
交通灯控制器可分为四个部分:
信号灯显示部分、分频部分、倒计时部分和计时器部分,采用VerilogHDL语言进行系统描述,并结合QuartusⅡ软件进行系统设计与调试。
此设计的功能是控制在十字路口的主干道和支干道信号灯在每天的0点到6点之间不循环切换信号且无倒计时,而其他时间则按设置的顺序切换信号,并有倒计时显示。
在主支干道设有重力传感器,检测该方向是否有车辆,如该方向无车辆而另一方向有车辆,则可以提前放行另一方向。
关键词交通灯控制器,FPGA,VerilogHDL,QuartusⅡ
ABSTRACT
Withtheconstantimprovementofthenationaleconomyandthecarnumberincreasing,thetrafficproblemsbecomemoreandmoreattention,therequirementoftrafficcontrollerishigherandhigher.Designareliableperformanceoftrafficlightcontrollertomaintaintrafficorderandguaranteethetrafficsafetyplaysanimportantrole,isalsotheneedsofeconomicandsocialdevelopmentandextremelypracticalsignificance.
ThispaperintroducesthetrafficlightcontrollerdesignisbasedonFPGA.Thetrafficlightcontrollercanbedividedintofourparts:
lightdisplaypart,frequencydivisionpart,thecountdownpartandthetimerpart,usingVerilogHDLlanguageforsystemdescription,andcombingQuartusⅡsoftwarefoesystemdesignanddebugging.
Thefunctionofthisdesignistocontrolthemainbranchroadlightsatthecrossroadsbetween0to6AMeverydaynotswitchingsignalwithoutthecountdown,whileothertimesaccordingtosettheorderoftheswitchingsignal,andthecountdowndisplay.Inthemaintrunkroadwithgravitysensor,detectingthedirectionofvehicles,suchasthedirection,novehicleandanotherdirectionwithvehicles,canreleaseaheadoftheotherdirection.
Keywordsthetrafficlightcontroller,FPGA,QuartusⅡ,VerilogHDL
5软件仿真………………………………………………………………………………………17
1绪论
1.1交通灯控制器的研究背景
假如路口没有交通信号灯,来往的车辆该什么时候通行,行人该什么时候穿越公路,没有明确的指示,交通将会变得一团糟,同时也一定会有许多交通事故产生。
因此,交通信号灯是道路交通不可缺少的部分,维护交通秩序,保证交通安全。
世界上最早的交通信号灯是1858年在英国伦敦出现的已然煤气为光源的红、蓝两色的机械扳手式信号灯。
20世纪初,一种由红绿黄三种色的圆形投光器组成的电气启动红绿灯出现在美国的大街。
不久后,又出现了带控制的红外红绿灯和红绿灯。
20世纪中期,联合国对《道路交通和道路标志信号协定》的制定,使各信号灯的含义变得规范明确,绿灯信号代表通行,红灯信号代表禁行,黄灯信号代表警告。
如今交通信号灯灯已经随处可见,人尽皆知,几乎在每个城市的每个路口都有其存在。
起初,我国普遍使用的交通灯控制器基于单片机或PLC来设计的,功能比较简单,信号灯按照设置的顺序不断切换,有的还有计时显示。
1.2交通灯控制器的发展现状
正如我们所见,现在的交通信号灯一般是设在路口比较醒目的位置,用红、绿、黄三种颜色的信号灯来指挥交通,这些信号灯是按照事先设定的顺序不断重复切换,有的还有一个倒计时的倒计时显示部分,提醒车辆还剩余的通行时间和还需要等待的时间。
我国传统交通灯控制器普遍是使基于中、小规模集成电路,采用单片机和PLC控制芯片进行设计,功能比较简单。
基于这些芯片的设计,其系统外围电路十分复杂,需要的电路元件很多,接线相应变得很复杂,并且程序修改也不灵活,控制上也不够精确,故障率比较高
。
因此,交通灯控制器的设计需要改进,需要采用高密度和性能强的器件和更好更优良的设计方法。
1.3交通灯控制器的发展趋势
随着经济的发展,人们生活水平的不断提高,汽车的数量是在不断地增加。
车辆的不断增加,对道路交通的考验也越来越大,一定会面对更多的交通问题。
作为维护交通秩序和交通灯来说,这样将对它们性能和效率提出更高的要求。
随着FPGA器件不断向着更高速、更密集以及性能更强更灵活的方向发展,使其不仅与标准逻辑器件的成了旗鼓相当的竞争对手,也同掩模式专用集成电路产生竞争关系,同时也将逐渐将专用集成电路(ASIC)取而代之
。
因此,交通灯控制器设计将广泛采用现场可编程逻辑器件FPGA及硬件描述语言进行研究与设计,采用QuartusⅡ软件进行了电路仿真和调试,对设计每个阶段进行仿真从而及时发现设计错误,并反复修改、编程,直到完全满足要求。
采用这种方法设计的交通灯控制器,不仅可靠性强,而且具有实用性、实时性、易操作、人性化、造价低等特点
。
同时,在交通灯控制器的设计过程中还可以加入电子信息技术、数据通信通讯技术、传感器技术、控制技术和计算机处理技术等有效应用于交通灯系统中,使交通灯控制器的功能更完善,性能更好。
1.4本课题的研究内容
通过对交通灯控制器的研究背景,发展现状以及发展趋势的了解,可见,交通灯控制器的性能和可靠性需要进一步提升,设计方法需要改进。
因此,本课题是基于FPGA的交通灯控制器设计,降低设计的成本和功耗,增强设计的灵活性和可靠性。
本课题的主要研究内容是在FPGA基础上设计控制器控制交通信号灯在车流量不同的时间段内实现不同的作用,具体包括:
在十字路口设置绿、黄、红三个信号灯分别控制主干道和支干道的通行;控制器控制交通信号灯按设定的顺序循环切换,并倒计时;当主干道某一方向有车辆等待而另一方向无车辆等待,该方向可以提前放行;在早上0点,控制器暂停交通信号灯切换;在早上6点,控制器恢复交通信号灯正常切换。
2交通灯控制器系统设计方案论证
2.1交通灯控制器设计方案
交通灯控制器是一个典型的数字系统设计,其设计方法也特别多,以前传统的交通灯控制器设计基本上采用单片机或PLC等来进行设计实现,然而其外围电路的复杂和芯片本身控制不精等缺点,是的这些设计越来越不能满足设计需要。
所以,在本次设计就基于性能可靠的现场可编程逻辑器件FPGA和采用硬件描述语言来进行设计,并拟定了以下两种设计方案。
方案一:
基于FPGA器件,采用VHDL语言进行设计。
VHDL语言是常用的硬件描述语言之一,在数字电路设计中十分常用,深受设计者的欢迎。
但是VHDL语言素来以严谨著称,其语法要求比较严格,书写相当规范。
VHDL语言进行设计比较难,主要用于在门级开关电路描述方面,其程序化的接口也不可以无限扩展。
VHDL语言在国内不被大多数集成电路设计的公司使用,而在国外学术界比较流行,特别是在欧洲发展得比较好。
方案二:
基于FPGA器件,采用VerilogHDL语言进行设计。
VerilogHDL语言是另一种常用的硬件描述语言,定义了许多易于仿真的语法,其程序化的接口可以无限扩展,是一种功能强大的硬件描述设计语言。
VerilogHDL语言与C语言的语法结构及其相似,简单易懂,以其精简,格式自由以及易于学习等特点在集成电路设计中深受欢迎,在产业界非常流行。
2.2交通灯控制器设计方案选择
对于初学者来说,理解VHDL语言确实有一定的难度,要用它来进行完成一个数字电路的系统设计更是困难。
做为电子专业的学生,学习过C语言,对C语言比较熟悉了解,所以理解VerilogHDL语言比较容易,而且其自由的书写格式,可以将思维放在电路设计本身,可以很方便完成整个系统的设计。
所以,本次设计就采用方案二,基于FPGA器件,采用VerilogHDL语言来完成交通灯控制器设计。
2.3交通灯控制器的设计要求
设计一个由主干道和支干道汇合形成的十字路口的交通灯控制器,其设计要求包括:
(1)主干道和支干道各设有一个绿、黄、红三个信号显示灯,用七段数码管实现倒计时显示;
(2)在每天早上6点至晚上12点之间,主干道和支干道的通行状态相互交替,主干道通行时间为35秒,支干道通行时间为25秒,在每次主干道和支干道通行状态相互转换的过程中会有5秒的等待过渡时间,并且所有的计时都采用倒计时方式显示;
(3)主支干道设有检测传感器来检测有无车辆等待,当该干道有有车量等待而另一干道无车辆,可以提前放行该干道;
(4)在每天早上的0点到6点,此时间段内路上的车流量较少,主干道和支干道可以同时处于通行的状态,来往的车辆可以随时通行而不需要等待过渡。
2.4交通灯控制器的设计思路
通过对交通灯控制器的设计要求进行分析,可以发现采用VerilogHDL语言的有限状态机的设计思路,可以很好地实现其功能。
交通信号灯共具有5个状态:
主干道通行状态S0,主干道通行向支干道通行切换的过渡状态S1,支干道通行状态S2,支干道通行向主干道通行切换的过渡状态S3,主干道和支干道都通行的状态S4。
S0、S1、S2、S3这4个状态是往复循环顺序切换的,S4状态则是在0点到早上6点才会出现的状态。
S0状态时,主干道亮绿灯而支干道亮红灯,倒计时为35秒;S1状态时,主干道和支干道都亮黄灯,倒计时为5秒;S2状态时,支干道亮绿灯而主干道亮红灯,倒计时为25秒;S3状态时,主干道和支干道都亮黄灯,倒计时为5秒;S4状态时,主干道和支干道都亮黄灯,此时无倒计时。
要在设定时间段内保证交通信号灯的按照设定的顺序循环切换,只需要在系统程序中增加一个24小时的时钟计时,即可实现要求。
当到达一个设定时间点时,产生一个信号让交通灯灯暂停切换,直到到达另一个时间点,产生一个信号让交通灯恢复正常工作。
根据设计要求,可以将交通灯控制器系统的分成四个模块:
信号灯显示模块、分频模块、倒计时显示模块和计时器模块,可采用自上而下的设计方法设计。
3控制器硬件设计
3.1CycloneIV性能介绍
3.1.1FPGA概述
从PAL到PLD到复杂可编程逻辑器件CPLD,可编程逻辑器件取得了巨大的进步,但是仍然存在不足,例如CPLD能够在单个器件中容纳大量的逻辑,但是不断增加逻辑数量,需要在CPLD中不断加入LAB(逻辑阵列模块),又需要有额外的PI(可编程互连阵列)布线来实现所有LAB的连接,其连接数量会呈指数增长,直到芯片管芯的连接数量超过逻辑数量,这限制了容量的扩展
。
解决方法是把LAB排列在网格中,从而产生了现场可编程门阵列FPGA的概念。
FPGA是在CPLD基础上发展而来的一种现场可编程逻辑器件,对于CPLD器件布线与容量之间的矛盾进行了改进。
CPLD实现逻辑函数是采用可编程阵列来,而FPGA则是采用查找表(LUT)来实现的,相比CPLD宏单元,它能够灵活建立函数和LE链,从而提高性能,减少资源浪费,进位逻辑和寄存器链布线的通用性也进一步提高了性能,增强了对资源的管理。
FPGA中可以包含的查找表和触发器数量极多,从而可以实现规模更大且更加复杂的逻辑电路设计,可以避免了CPLD的阵列结构、触发器以及I/O端口数量上的限制。
FPGA的芯片内部包含多种可编程资源:
可编程逻辑单元(LE)、可编程布线、可编程I/O口、嵌入式存储器RAM、嵌入式乘法器、时钟以及锁相环(PLL)。
对于复杂逻辑功能设计,FPGA的速率相对较高,由于LAB网格阵列,具有更丰富的逻辑资源。
特别是对于高速通信应用,使用某些FPGAZ中的收发器成为唯一的选择。
一般来说,CPLD的功耗是比较低的。
近几年来,随着生产工艺的进步,FPGA的生产成本大大降低,也具有许多低功耗特性,其功耗几乎与CPLD差不多,尤其在功能以及性能方面的优越性越来越突出,使其成为现在数字电路或系统设计的首选器件
。
总之,FPGA比CPLD等更高端,是高密度、高速度、高可靠性和低功耗的逻辑可编程器件,提供丰富的I/O端口和触发器,结构十分灵活几乎可以满足用户的各种需求。
3.1.2FPGA的设计流程
将FPGA的设计方法归纳为一个简单的设计流成,Altera的全集成开发工具QuartusⅡ软件就完全支持这一流程。
FPGA的设计流程具体如下。
(1)源文件的编辑和编译。
首先把需要输入的设计思路以文本或图形的形式表达出来,再进行排错编译,同时为进一步的逻辑综合做准备。
一般常用的源程序输入方式有原理图输入方式和文本输入方式两种。
(2)逻辑综合和优化。
经过一列操作把源文件分解成一系列逻辑电路和对应关系,最后得到门级电路或更底层的电路描述文件,即生成网表文件,该网表文件与FPGA基本结构是相对应的。
(3)目标器件的布线/适配。
在所选用的目标器件中建立与前面生成的网表文件相符合的基本逻辑电路的对应关系。
(4)目标器件的编程下载。
当前面的步骤,编译、综合、布线/适配等过程都没有出现问题,也就是说完全满足设计要求时,就可以将布线/适配器所产生的配置/下载文件通过下载电缆下载到目标器件中。
(5)硬件仿真与测试。
在已经下载好程序的FPGA开发板上进行测试,验证理想设计思想与实际电路之间的偏差。
3.1.3CycloneIVE主要特性
CycloneIV是传承了Cyclone系列低成本、低功耗的特性,建是立在优化的低功耗工艺基础上的设计,集成了一个可选择的低成本收发器,在降低成本的同时又能完全满足不断增长的带宽要求,是在广播、有线、无线、工业以及通信等行业领域中的低成本的小型应用的理想选择
。
CycloneIV器件系列主要提供CycloneIVE及CycloneIVGX两种型号的器件。
具有最低的功耗的特性的CycloneIVE器件,能在核电压为1.2V和1.0V的情况下使用,并且以最低的成本去实现较高的功能
。
本设计所使用的EP4CE6E22C8N芯片正是CycloneIVE系列中的一种。
CycloneIVE器件系列的体系结构包括FPGA核心架构、I/O特性、时钟管理、外部存储器结构以及配置等内容。
CycloneIVE器件系列采用的FPGA核心架构与Cyclone系列是相同,包括四输入查找表组成的LE、存储器模块和嵌入式乘法器模块,其中存储器模块具有9Kbit的嵌入式SRAM存储器,可以配置成单端口、简单双端口、真双端口等,实现需要的数据带宽,嵌入式乘法器模块可实现18*18或者两个9*9的乘法器
。
CycloneIVE系列器件的I/O口支持可编程总线的保持,可编程迟延以及可编程上拉电阻等,从而实现信号完整性和热插拔的优化,还支持符合单端I/O标准校准后的片上川航匹配或驱动阻抗匹配。
CycloneIVE系列器件中包含高达30个全局时钟网络和高达8个PLL,可以提供可靠的时钟管理和综合,且可以在用户模式中对PLL进行动态重新配置以此改变时钟频率或相位。
CycloneIVE系列器件的外部存储器接口包括SDR、DDR、DDDR2SDRAM和QDRITSRAM接口,这些接口可能分布在器件的两侧或多侧,主要是为了更灵活地实现电路板设计
。
CycloneIVE系列器件的配置是使用SRAM单元来存储配置数据,每次上电后,配置数据就会被下载到器件中。
CycloneIVE器件所支持的配置方案有AS、AP、FPP和JTAG,其中,常用的配置方式是JTAG。
表格3-1CycloneIVE部分器件资源
资源
型号
逻辑
单元
嵌入式
存储器Kbits
嵌入式
18*18乘法器
通用时钟(PLL)
全局时钟网络
用户I/O块
最大用户I/O
EP4CE6
6272
270
15
2
10
8
179
EP4CE10
10320
414
23
2
10
8
179
EP4CE15
15408
504
56
4
20
8
343
EP4CE22
22320
594
66
4
20
8
153
EP4CE30
28848
594
66
4
20
8
532
EP4CE40
39600
1134
116
4
20
8
532
CycloneIVE系列器件具有的特性,包括
(1)低成本和低功耗的FPGA核心架构;
(2)逻辑单元由6K至150K;(3)嵌入式存储器容量高达6.3Mb;(4)高达360个18*18乘法器,从而使DSP处理密集型应用得以实现;(5)协议桥接应用,实现了小于1.5W的总功耗。
3.2七段数码管简介
3.2.1七段数码管概述
七段数码管是电子元件中十分常用的数字显示元件,内部共有八个发光二极管,包括小数点,主要是由代表数字笔划的七个发光二极管按照一定的组合方式实现对不同的数字的显示
。
七段数码管的用途很广,特别是在电器方面得到极为广泛的应用,比如家用电器领域,电子时钟、空调、热水器等等。
七段数码管除了可以显示0到9的十进制数外,还可以显示十六进制等中的大写英文字母A、B、C、D、E、F。
七段数码管内部的所有二极管都由本体下的对应的接脚控制其发光。
七段数码管又分为共阴极和共阳极,两者的发光原理是一样的,只是结的电源极性不同而已。
共阳极的七段数码管内部所有二极管的阳极是接在一起的,共用一个电源正极,在二极管的阴极接入低电平或者“0”电平,就可以点亮。
根据需要显示的数据,对七段数码管中需要用的二极管的接脚接低电平,其他二极管接脚接高电平,即可显示该数字,例如abcdefg分别为1001111,数码管显示结果为“1”。
共阴极的七段数码管与共阳极的七段数码管相反,内部所有二极管的阴极是接在一起的,共用一个电源负极,在二极管的阳极接入高电平或者“1”电平,就可以点亮。
同样,根据需要现实的数据,对七段数码管中需要用到的二极管的接脚接高电平,其他二极管接脚接低电平,即可显示该数字,例如abcdefg分别为0110000,数码管显示的结果为“1”。
在本次设计中倒计时显示所采用七段数码管就是共阳极的七段数码管,所以根据需要对七段数码管的接脚接分别接入低电平和高电平,就能控制二极管的亮灭,从而使其显示数字。
3.2.2七段数码管动态显示原理
七段数码管动态显示介面虽然在单片机中应用最为广泛,但是对于FPGA来说依然以相同的方式来实现动态显示。
动态驱动基本原理是是将所有七段数码管内部代表七个笔划“a,b,c,d,e,f,g”的二极管的同名端连在一起,再为每个七段数码管的公共极增加位选通控制信号,位选通由各自独立的输入口控制,当FPGA有字形码输出时,所有七段数码管都同时接收到相同的字形码,但是到底需要哪一个七段数码管来显示出字形,就要取决于FPGA对位选通控制信号的输入,所以只要把需要用于显示的七段数码管的位选通信号设置为选通,则该位的数码管就能够显示出由字形码所代表的字形,同时没有被选通的七段数码管就不会进行显示。
通过分时段来轮流控制一个个七段数码管的公共极,就能够使各个七段数码管通过轮流受到的控制而进行显示,这就是动态驱动。
在轮流受控显示的过程中,每个七段数码管点亮的时间是极短暂的,再加上发光二极体余辉效应和人的视觉暂留现象,尽管各位七段数码管实际上不是同时点亮的,但是通过快速的扫描,还是给人带来是一组稳定的数字显示的视觉效果,并没有闪烁的感觉,这样就使得动态显示和静态显示产生一样的结果。
3.3交通灯控制器各模块性能分析
3.3.1信号灯显示模块的性能分析
信号灯显示模块是交通灯控制器系统中最简单的部分,在主干道和支干道分别设有红、黄、绿三个颜色的信号灯,红灯表示禁止通行,黄灯表示过渡,绿灯表示允许通行。
信号灯在控制器的控制作用下工作,指挥交通。
一般工作情况是,主干道绿灯,同时支干道红灯,表示主干道通行而支干道禁行;主干道红灯,同时支干道绿灯,表示主干道禁行而支干道通行;主干道和支干道都亮黄灯,表示主干道和支干道的通行转换的过渡。
当主支干道其中一个方向有车辆等待时,可以提前放行,即切换到该方向通行状态。
另外,在深夜零点到凌晨六点之间信号灯则在时钟控制作用下,停止按顺序切换状态的工作情况,主、支干道同时黄灯,且无倒计时显示,则表示在特殊时段主支干道都可以通行。
3.3.2分频模块的性能分析
分频模块的作用是为整个交通灯控制器系统提供时钟脉冲,根据所选择的器件提供的内部时钟频率,进行分频得到需要的时钟信号。
本次设计所使用的FPGA器件为CycloneIV系列的EP4CE6E22C8N开发板,其内部的时钟频率为48MHz,此时就需要利用分频模块将其分频产生倒计时模块和时钟模块需要的1Hz时钟信号。
方法一,48MHz频率的一个时钟周期约为20.8ns,计数48000000次就是1s,利用一个计数器计数到24000000就反转一次,即可得到时钟周期为1s的时钟信号。
方法二,将48MHz频率经过48000分频得到1KHz时钟信号,1KHz再经过1000分频,即可得到1Hz时钟信号。
不同器件提供内部时钟频率是不一样的,但是分频原理是相同的,所以不管是怎样的时钟频率,或是想得到什么样的时钟信号,只要稍作改变就能满足需要。
3.3.3倒计时显示模块的性能分析
倒计时显示模块是交通信号灯处于正常工作时对各种信号的计时,采用减计时的方法计时,并利用七段数码管来对其进行显示。
主干道处于通行状态且时间为35秒,则主干道亮绿灯,同时支干道亮红灯,倒计时显示从35秒开始减计数,直到减到零,计时结束切换下一状态。
主干道通行向支干道通行转换的过渡的时间为5秒,则主干道和支干道都亮黄灯,倒计时从5秒开始减计数,直到减到零,计时结束切换到下一状态。
支干道处于通行状态且时间为25秒,则支干道亮绿灯,同时主干道亮红灯,倒计时显示从25秒开始减计时,直到减到零,计时结束又切换下一状态。
支干道通行向主干道通行转换的过渡时间为5秒,则支干道和主干道都亮黄灯,倒计时从5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 交通灯 控制器 设计