基于FPGA交通灯控制器设计.docx
- 文档编号:8417237
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:20
- 大小:59.27KB
基于FPGA交通灯控制器设计.docx
《基于FPGA交通灯控制器设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA交通灯控制器设计.docx(20页珍藏版)》请在冰豆网上搜索。
基于FPGA交通灯控制器设计
ThismodelpaperwasrevisedbytheStandardizationOfficeonDecember10,2020
基于FPGA交通灯控制器设计
摘要
随着现代城市及交通工具的发展,交通事故也急剧增加,为了改善交通秩序及减少交通事故,交通灯起着越来越重要的作用。
在越来越多的城市的各个路口上安装了交通灯,来改善交通秩序。
现代城市在日常运行控制中,越来越多的使用红绿灯对交通进行指挥和管理。
而一套完整的交通灯控制系统通常要实现自动控制和手动控制去实现其红绿灯的转换。
基于FPGA设计的交通灯控制系统电路简单、可靠性好。
本设计利用VerilogHDL语言、采用层次化混合输入方式,可控制4个路口的红、黄、绿、左转四盏信号灯,让其按特定的规律进行变化。
在QuartusⅡ下对系统进行了综合与仿真。
仿真结果表明系统可实现十字路口红绿灯及左转弯控制和倒计时显示,并能够自动控制交通灯转变。
关键词:
FPGA,交通灯控制器,QuartusⅡ,VerilogHDL
Abstract
Withthedevelopmentofmoderncitiesandtransport,trafficaccidentsalsoincreaseddramatically,playsanincreasinglyimportantroleinordertoimprovetrafficorderandreducetrafficaccidentsandtrafficlights.Moreandmorealltheroadsofthecitytoinstalltrafficlightstoimprovetrafficcity,moreandmorecontroloftheday-to-dayrunningofthetrafficlighttrafficcommandandmanagement.Andacompletesetoftrafficlightcontrolsystemisusuallytoachieveautomaticcontrolandmanualcontroltoachievetheconversionofitstrafficlights.FPGAdesign-basedtrafficlightcontrolsystemcircuitissimpleandgoodreliability.ThedesignusingVerilogHDLlanguageusinghierarchicalmixedinput,andcancontrolthefourjunctionsofred,yellow,green,andturnleftatthefoursignallights,sothataparticularlawofchange.QUARTUSⅡsystemsynthesisandsimulation.Thesimulationresultsshowthatthesystemcanachievethecrossroadsoftrafficlightsandturnleftcontrolandcountdowndisplayandcanautomaticallycontrolthetrafficlightsinto.
KeyWords:
FPGA,trafficlightcontroller,QuartusII,TheVerilogHDL
第
第
4
第
1
2
3
6
7
8
9
第1章绪论
交通灯的简介
交通灯通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。
绿灯亮时,准许车辆通行,黄灯亮时,已越过停止线的车辆可以继续通行;红灯亮时,禁止车辆通行。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
为了实现交通道路的管理,力求交通管理先进性、科学化。
用可编程控制器实现交通灯管制的控制系统具有以下优点:
实验证明该系统实现简单、经济;
能够有效地疏导交通,提高交通路口的通行能力;
可编程控制器具有小型化、价格低、可靠性高;
FPGA概述及发展
目前以硬件描述语言(或)所完成的设计,可以经过简单的综合与布局,快速的至FPGA上进行测试,是现代IC的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如(Flip-flop)或者其他更加完整的记忆块。
可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用)的速度要慢,无法完成复杂的设计,但是较低。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(复杂备)。
随着微电子技术的快速发展,可编程逻辑器件应用技术得到了广泛的应用,而FPGA技术正处于高速发展时期,新型芯片的规模越来越大,成本也越来越低,低端的FPGA已逐步取代了传统的数字元件,高端的FPGA不断在争夺ASIC的市场份额。
未来可编程逻辑器件具有以下几个发展趋势:
1 大容量、低电压、低功耗FPGA大容量FPGA是市场发展的焦点。
2 系统级高密度FPGA。
随着生产规模的提高,产品应用成本的下降,FPGA的应用已经不是过去的仅仅适用于系统接口部件的现场集成,而是将它灵活地应用于系统级(包括其核心功能芯片)设计之中。
在这样的背景下,国际主要FPGA厂家在系统级高密度FPGA的技术发展上,主要强调了两个方面:
FPGA的IP(Intellec2tualProperty,知识产权)硬核和IP软核。
当前具有IP内核的系统级FPGA的开发主要体现在两个方面:
一方面是FPGA厂商将IP硬核(指完成版图设计的功能单元模块)嵌入到FPGA器件中,另一方面是大力扩充优化的IP软核(指利用HDL语言设计并经过综合验证的功能单元模块),用户可以直接利用这些预定义的、经过测试和验证的IP核资源,有效地完成复杂的片上系统设计。
3 FPGA和ASIC出现相互融合。
虽然标准逻辑ASIC芯片尺寸小、功能强、功耗低,但其设计复杂,并且有批量要求。
FPGA价格较低廉,能在现场进行编程,但它们体积大、能力有限,而且功耗比ASIC大。
正因如此,FPGA和ASIC正在互相融合,取长补短。
随着一些ASIC制造商提供具有可编程逻辑的标准单元,FPGA制造商重新对标准逻辑单元发生兴趣。
4 动态可重构FPGA动态可重构FPGA是指在一定条件下芯片不仅具有在系统重新配置电路功能的特性,而且还具有在系统动态重构电路逻辑的能力。
对于数字时序逻辑系统,动态可重构FPGA的意义在于其时序逻辑的发生不是通过调用芯片内不同区域、不同逻辑资源来组合而成,而是通过对FPGA进行局部的或全局的芯片逻辑的动态重构而实现的。
动态可重构FPGA在器件编程结构上具有专门的特征,其内部逻辑块和内部连线的改变,可以通过读取不同的SRAM中的数据来直接实现这样的逻辑重构,时间往往在纳秒级,有助于实现FPGA系统逻辑功能的动态重构。
本设计所要实现的目标
基于FPGA的VerilogHDL语言设计一个用于十字路口的交通灯控制器来达到一下几个目的:
1 要求南北方向车道和东西方向车道两条交叉道路上的车辆交替运行,东西和南北各有一组红、黄、绿灯用于指挥交通;
2 红、绿灯的持续时间为60s,黄灯在绿灯转为红灯之前亮3s;
3 东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行到几时显示;
4 有紧急情况车辆要求通过时,系统要能禁止普通车辆通行,两条道路均为红灯,计时器清零,当特殊情况结束后,南北方向信号灯变绿,东西方向信号灯变红,继续正常工作。
设计方案分析
基于FPGA设计的交通灯控制系统电路简单、可靠性好。
本设计利用VerilogHDL语言、采用层次化混合输入方式,可控制4个路口的红、黄、绿、左转四盏信号灯,让其按特定的规律进行变化。
交通灯的工作过程如下:
假设十字路口的交通干道为南北方向和东西方向。
初始状态为南北和东西干道上的灯均为红灯,然后南北方向上的绿灯先亮,允许车辆的行驶;东西干道的红灯亮,不不允许车辆的行驶,同时两个路口的数码显示器开始倒计时,南北方向的绿灯亮57s后,绿灯熄灭,黄灯开始亮3s;之后南北干道转为红灯,禁止车辆通行,同时东西方向的绿灯亮,允许东西方向车辆行驶,两个干道的数码显示器重新开始倒计时,57s后东西方向的绿灯熄灭,黄灯开始亮起,3s后转为红灯,禁止车辆通行,同时南北方向由红灯转为绿灯,允许车辆行驶。
之后不断重复以上过程。
当出现特殊情况时,东西和南北干道上的信号灯转为红灯,并停止倒计时,特殊情况结束后,南北方向的绿灯亮起,东西方向信号灯变红灯,重新开始计时,恢复正常工作。
第2章系统的设计及环境
系统结构图
交通灯控制器的系统结构框图如图所示。
图交通灯控制器的系统结构框图
系统接口信号描述
交通灯控制器接口信号定义如表所示。
表交通灯控制器接口信号定义
信号名
I/O
位宽
含义
clk
I
1bit
系统时钟输入
rst
I
1bit
复位信号(按键进入特殊工作状态)
light1
O
2bits
南北方向信号灯显示信号,00红灯亮,01黄灯亮,10绿灯亮
light2
O
2bits
东西方向信号灯输出显示信号
dis_drv1
O
7bits
南北方向倒计时显示驱动信号
dis_drv2
O
7bits
东西方向倒计时显示驱动信号
软件环境
1)QuartusII
QuartusII是的综合性PLD/FPGA开发,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、、可编程于一体,是一种综合性的开发平台。
QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
1 可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;
2 芯片(电路)平面布局连线编辑;
3 LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;
4 功能强大的逻辑综合工具;
5 完备的电路功能仿真与时序逻辑仿真工具;
6 定时/时序分析与关键路径延时分析;
7 可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;
8 支持的添加和创建,并将它们链接起来生成编程文件;
9 使用组合可一次完成整体设计流程;
10 自动定位编译错误;
11 高效的期间编程与验证工具;
12 可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;
13 能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
2)Modelsim仿真
公司的ModelSim是业界最优秀的HDL语言,它能提供友好的仿真环境,是业界唯一的支持VHDL和Verilog混合仿真的。
它采用直接优化的、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和,为用户加快调错提供强有力的手段,是FPGA/的首选仿真软件。
主要特点:
1 RTL和门级优化,结构,编译仿真速度快,跨平台跨版本仿真;
2 单内核VHDL和Verilog混合仿真;
3 模版和助手,项目管理;
4 集成了、波形比较、代码覆盖、数据流ChaseX、SignalSpy、虚拟对象VirtualObject、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件等众多调试功能;
5 C和Tcl/Tk接口,C调试;
6 对SystemC的直接支持,和HDL任意混合;
7 支持的设计功能;
8 对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;
9 ASICSignoff。
硬件环境
开发板运用了:
6个LED发光二极管,4个7段数码管,一个按键及时钟信号如图所示。
利用开发板上的6个LED发光二极管分别来模拟南北和东西方向两条道路的红、黄、绿灯,利用按键来控制交通灯处于正常工作状态或特殊工作状态。
4个7段数码显示器用来显示两条道路上亮灯的倒计时情况,每个路口使用2个,共需要4个。
在系统的输入信号中包括了一个按键开关,一个时钟信号,输出信号是由6个LED输出信号和4个7段数码显示器驱动信号完成的。
交通控制器的外部时钟信号是由晶振产生的,开发板系统采用的是晶振频率为50MHz的信号。
交通灯控制器的计时单位为秒,其时钟频率设定为1Hz,所以需要分频模块对外部时钟信号进行分频操作。
图交通灯示意图
第3章系统模块设计
在系统模块的设计中运用了5个模块:
分频器模块、计数器模块、控制器模块、显示译码模块及顶层连接模块来实现模拟交通灯控制器的设计。
分频器模块设计
1)分频器实现的是将高频时钟信号转换成低频时钟信号,用于触发控制器、计数器和扫描显示电路。
具体实物模块如图所示。
图分频器模块
2)模块原理分析。
在本次设计中开发板提供的时钟频率为50MHz,而秒计数器需要的时钟频率为1Hz,所以需要降低开发板提供的,以满足计时的需要,我们将这种频率的变换关系称为分频。
假设原始的时钟周期为T,分频后的时钟周期为t,则分频倍数的计算公式为:
在进行分频之前首先计算n,分频的基本原理是对原始时钟的周期进行计数,每计数满n/2个时钟周期,目标时钟就进行一次翻转。
原始时钟clk和目标时钟clk_1的关系如图所示。
图分频原理
本设计中,原始的未分频时钟是50MHz,周期是
秒,分频后的时钟周期t=1秒,代入公式得到n/2=25000000,也就是每次计数达到25000000个时钟周期以后就把输出的分频时钟信号翻转一次。
3)模块接口定义。
分频器模块接口定义如表所示。
表分频器模块接口定义
信号名
I/O
位宽
含义
clk
I
1bit
系统50MHz时钟输入
clk_1
O
1bit
分频后频率为1Hz的时钟输出
4)模块仿真波形图如图所示。
图分频器仿真结果
计数器模块设计
1)这里需要的计数器的计数范围为0-60。
计到0后,下一个时钟沿回复到60,开始下一轮计数。
此外,当检测到特殊情况(Y1=‘1’)发生时,计数器暂停计数,而系统复位信号rst则使计数器异步清零。
实物模块如图所示。
图计数器模块
2)模块原理设计。
计数器用于对交通灯亮灯时间进行计时,本设计中的计时显示采用倒计时方式,所以在进行计数模块设计的时候,要以60作为计时的起点,每进来一个时钟有效信号,计数器数字就减1。
由于绿灯转为红灯前3s要亮黄灯,所以计时器剩最后3s时要发出一个点亮黄灯的信号。
3)模块接口定义。
计时器模块接口定义如表所示。
表计时器模块接口信号定义
信号名
I/O
位宽
含义
clk_1
I
1bit
分频后周期为1s的时钟信号
rst
I
1bit
复位信号
count
O
6bits
计时输出信号
Y1
O
1bit
黄灯闪亮信号
4)模块仿真结果。
波形仿真结果如图所示。
图计数器仿真结果
控制器模块设计
1)控制器的作用是根据计数器的计数值控制各方向上的LED发光二极管的亮、灭,当计时时间到达,状态控制器就响应,自动跳转到下一个状态。
此外,当检测到特殊情况发生时,无条件点亮红灯的二极管。
2)模块原理分析。
根据交通灯的工作过程,交通灯的工作状况如下表所示。
正常工作时交通灯在前4个状态间运行,出现紧急情况进入状态s5,紧急情况结束后进入s1状态。
表交通灯状态转换表
当前状态
当前状态下交通灯工作情况描述
持续时间
下一个状态
S1
南北干道绿灯亮,东西干道红灯亮
57s
S2
S2
南北干道黄灯亮,东西干道红灯亮
3s
S3
S3
南北干道红灯亮,东西干道绿灯亮
57s
S4
S4
南北干道红灯亮,东西干道黄灯亮
3s
S1
S5
两个路口红灯同时亮(特殊情况)
不确定
恢复原始状态
3)模块接口定义。
控制器模块接口定义如表所示。
表交通灯控制器模块接口信号定义
信号名
I/O
位宽
含义
clk_1
I
1bit
分频后周期为1s的时钟信号
rst
I
1bit
复位信号
Y1
I
1bit
黄灯闪亮信号
count
I
6bits
计数输出信号,控制信号灯的转换
light1
O
2bits
南北方向信号灯输出显示信号
light2
O
2bits
东西方向信号灯输出显示信号
4)模块仿真结果。
模块仿真结果如图所示。
图控制器模块仿真结果
显示译码模块设计
1)模块原理的分析。
本次设计的信号灯带有倒计时显示,显示信号由计时器的输出信号驱动。
计时器的输出信号count为二进制输出信号,而7段数码显示器显示的是十进制数(分为十位和个位),所以在考虑设计此显示译码模块的时候首先要考虑的是将count输出的6为二进制转换为十进制数,然后令生成的十进制数的十位和个位分别转换成两个各自独立的二进制数,并驱动两个7段数码显示器。
显示译码模块的结构图如图所示。
图显示译码模块结构框图
2)模块接口定义。
显示译码模块的接口定义如表所示。
表显示译码模块接口信号定义
信号名
I/O
位宽
含义
count
I
6bits
计数器输出信号,作为显示译码器模块的输入
dis_drv1
O
7bits
南北方向倒计时显示驱动信号
dis_drv2
O
7bits
东西方向倒计时显示驱动信号
3)仿真波形图。
仿真波形图如图所示。
从仿真波形图的结果可以看出,该模块能将输入的count信号正确转换成BCD码输出信号,作为外部7段数码显示器的驱动信号。
图模块仿真结果
顶层连接模块设计
在前面设计的4个电路模块,包括:
分频器模块(clk_div)、计数器模块(time_cnt)、控制器模块(light_ctrl)和显示译码器模块(display_decode)。
在顶层连接模块中,这4个模块的关系如图所示。
由于两个方向的红灯和绿灯持续时间相同,任何时刻南北方向和东西方向的倒计时显示器显示时间相同,所以可以使用同一个显示译码器。
图顶层模块连接结构图
顶层模块功能仿真图所示。
图中:
96对应的dh为0110,对应的是6;而dl为0000,对应的是0;后面显示59…
图顶层连接模块仿真图
图RTL图
图实际效果图
结论
以上为在毕业前所作的毕业论文---基于FPGA的交通灯控制器设计,本任务的设计实现了一个交通灯控制系统,可以用来控制一个南北和东西方向交叉的十字路口的信号灯。
通过人物分析将交通灯控制系统分为四个模块:
分频模块、计时模块、控制模块和显示译码模块。
信号灯在计数器的计数信号的控制下各个工作状态之间的转换非常明确,所以可利用状态机来对控制模块进行设计。
计数器采用倒计时的方式,在设计计数模块时,要注意计时的起点是60s。
由于使用7段数码显示器来模拟时间显示,所以需要将计时模块的输出信号转化为数码显示器的驱动信号,中间涉及到十进制和二进制之间的转换。
在设计中采用VerilogHDL语言设计交通灯控制系统,借助其功能强大的语言结构,简明的代码描述复杂控制逻辑设计,与工艺无关特性,在提高工作效率的同时达到求解目的,并可以通过VerilogHDL语言的综合工具进行相应硬件电路生成,具有传统逻辑设计方法所无法比拟的优越性。
在设计过程中,觉得最难的部分是波形仿真部分,虽然程序编译通过但仿真却比较难实现正确的波形,不是计数器无法正常计数,就是控制输出无法进入到下一个状态,每次出现问题就必须返回重新修改程序。
实践证明,在编写一个较复杂的程序时,一开始一定要先把各个模块分析透彻,弄清楚各个功能及实现它们的逻辑算法,做到心中有数后在开始下笔写编写程序。
通过这次毕业设计,无论从选题到定稿,从理论到实践都使我学到了很多东西,它不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
同时也明白了理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
致谢
三年的大学生活像弹指一挥间很快就要结束了,在这段难忘的生活中,有许多美好的回忆,有在一起生活了三年的7位室友,有陪我一起学习一起成长了三年的计算机通信的同学们,有谆谆教导我们的老师指导专业知识……在毕业论文设计之中,我的老师和我的同学都细心的指导我,让我能更快的完成毕业设计。
在大学的生活里学到挺多的东西,让我领悟到诚实做人,踏实做事,扎实做学问的深刻道理,让我从一个懵懂得高中生变成一个成熟的大学生,让我幼稚的心在这慢慢的成长,不再有小孩子气。
在这里我要感谢我的指导老师,谢谢你能在繁多的工作量中抽出时间来指导我完成毕业设计,感谢大学中陪我一起做业务的几个学长及老乡,有你们的帮助让我对业务的发展更熟悉更得心应手,当然还要感谢寝室的兄弟们陪我度过美好的三年大学生活,感谢能有这段美好的记忆。
现在即将挥别我的学校、老师、同学,还有我三年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。
最后,感谢在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 交通灯 控制器 设计