基于FPGA技术的交通灯控制系统设计.docx
- 文档编号:5344453
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:11
- 大小:398.14KB
基于FPGA技术的交通灯控制系统设计.docx
《基于FPGA技术的交通灯控制系统设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA技术的交通灯控制系统设计.docx(11页珍藏版)》请在冰豆网上搜索。
基于FPGA技术的交通灯控制系统设计
基于FPGA技术的交通灯控制系统设计
交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用。
目前很多城市交叉路口的交通灯实行的是定时控制,灯亮的时间是预先设定好的,在时间和空间方面的应变性能较差,一定程度上造成了交通资源的浪费,加重了道路交通压力。
本文在EDA技术的基础上,利用FPGA的相关知识设计了交通灯控制系统,可以根据实际情况对灯亮时间进行自由调整,整个设计系统通过Max+PlusⅡ软件进行了模拟仿真,并下载到FPGA器件中进行硬件的调试,验证了设计的交通信号灯控制电路完全可以实现预定的功能,具有一定的实用性。
1系统设计要求
所设计的交通信号灯控制电路,主要适用于在两条干道汇合点形成的十字交叉路口,路口设计两组红绿灯分别对两个方向上的交通运行状态进行管理。
交通灯的持续闪亮时间由键盘输入控制。
灯亮时序如图1所示,当B方向的红灯亮时,A方向对应绿灯亮,由绿灯转换成红灯的过渡阶段黄灯亮,即B方向红灯亮的时间等于A方向绿灯和黄灯亮的时间之和。
同理,当A方向的红灯变亮时,B方向的交通灯也遵循此规则。
各干道上安装有数码管,以倒计时的形式显示本道各信号灯闪亮的时间。
当出现特殊情况时,各方向上均亮红灯,倒计时停止。
特殊运行状态结束后,控制器恢复原来的状态,继续运行。
2系统整体设计
整个系统设计如图2所示,该系统主要由计数模块、控制模块、分频模块、分位模块以及显示电路构成。
其中分频模块主要将系统输入的基准时钟信号转换为1Hz的激励信号,驱动计数模块和控制模块工作。
控制模块根据计数器的计数情况对交通灯的亮灭及持续时间进行控制,并通过分位电路将灯亮时间以倒计时的形式通过数码管显示出来。
图中Reset是复位信号,高电平有效,可以实现对计数器的异步清零。
Hold为保持信号,当Hold为“1”,计数器暂停计数,表示出现特殊情况,各方向车辆都处于禁行状态。
3主要功能模块设计及仿真
3.1计数模块设计
计数模块主要实现累加循环计数,计数的最大值由键盘输入控制,输出的计数值为控制模块的灯控提供参考,计数器的主程序设计如下:
计数模块的仿真如图3所示,从图中可以看出,在时钟的驱动下,计数值不断自加,当计数值countnum等于键盘输入值32(key=32)时,计数返回到0,开始下一轮计数。
当Hold检测到特殊情况时置‘1’,使计数器暂停计数。
3.2控制器模块的仿真设计
在控制器模块中,红、绿、黄三盏灯工作的总时间由键盘输入,各交通灯时间分配规则如下:
红灯时间占总时间的1/2,绿灯时间占3/8,黄灯时间占1/8,本设计中键盘输入值为32(key=32),正常情况下红灯亮16s,绿灯亮12s,黄灯亮4s。
控制器仿真情况如图4所示,当hold为低电平,计数值countnum<12时,greenA输出高电平,A东西方向绿灯亮起车辆通行,此时与之相对应的redB输出高电平,B方向红灯亮起车辆禁行。
A方向显示交通灯闪烁持续时间的数码管numA从12开始递减,同时B方向显示交通灯闪烁持续时间的数码管numB从16开始递减。
当12 当countnum>16,redA输出高电平,A方向红灯亮起车辆禁行,numA从数值16开始倒计时,此时greenB输出高电平,B方向绿灯亮起车辆通行,numB从数值12开始递减。 当16 当hold为‘1’时,表示进入紧急状态,FLASH置‘1’,各方向的红灯均亮起,所有机动车禁行。 3.3分位模块设计 分位模块的设计主要是将灯亮时间分为十位和个位,通过两个相应的数码管分别显示出来。 本设计中灯亮时间最长不超过40s(numin<40),numA,numB分别表示十位、个位上的数字,分位模块程序设计的流程图如图5所示。 分位模块的仿真如图6所示,numin的数值大小可以通过numA,numB的组合以十进制数值显示,从而实现了分位功能。 4系统的硬件设计及调试 本系统的主要逻辑设计由一片EPlK30TC144-3芯片完成,编写的VHDL源程序在Altera公司的逻辑综合工具Max+PlusⅡ下经过编译和功能仿真测试后,针对下载芯片进行管脚配置,下载到EPlK30TC144-3芯片中,进行相应的硬件调试,调试结果与软件仿真的结果相吻合,验证了设计完成了预定功能。 5结语 本文利用硬件描述语言VHDL编程,借助Altera公司的Max+PlusⅡ软件环境下进行了编译及仿真测试,通过FPGA芯片实现了一个实用的交通信号灯控制系统,设计由于采用了EDA技术,不但大大缩短了开发研制周期,提高了设计效率,而且使系统具有设计灵活,实现简单,性能稳定的特点。 基于FPGA的交通灯系统控制设计 时间: 2011-08-1914: 53: 43来源: 东华大学电气工程系作者: 付铭骥 摘要: 为了对交通灯系统进行精确控制,采用FPGA实验板,在QuartusⅡ软件环境下,分别实现脉冲发生模块、状态定时模块、交通灯显示模块、时间显示模块,进行仿真实验和硬件下载,获得的测试结果满足设计要求。 由于采用了EDA技术,使数字系统设计的效率显著提高。 关键词: FPGA;QuartusⅡ;交通灯;数字系统设计 目前交通灯广泛应用于道路交通建设中。 本文设计一个十字路口交通灯控制电路,要求东西、南北两条干道的红、绿、黄交通灯按要求循环变化,并以倒计时方式指示干道通行或禁止的维持时间。 在QuartusⅡ软件环境中设计、仿真,并在FPGA实验板上实现所设计电路的功能。 1系统概述 1.1设计思想 基于FPGA的交通灯系统控制设计包括4大模块,分别为脉冲发生、状态定时、交通灯闪烁的控制、闪烁时间的控制,基本原理如图1所示。 1.2总体工作情况 交通灯控制要求如表1所示。 该设计的交通灯控制分为6个状态。 由于各状态持续时间不同,所以电路的核心控制部分是状态机和定时器,状态机在定时器触发下周期性循环,状态码控制6个灯以一定的规律变化。 变化情况如图2所示。 系统脉冲由FPGA开发板晶振经过分频电路实现。 状态定时由74190可逆十进制计数器和T’触发器实现,只要置数合理,翻转信号到位,就可以使电路在东西(I)、南北(J)两个控制状态间翻转。 红、黄、绿灯的闪烁由7485数字比较器和组合逻辑控制,其中7485数字比较器用于比较计数器当前持续状态和所需要的状态全部时间,并做出相应的变化。 组合逻辑控制由AHDL文件编写真值表实现。 时间显示由AHDL文件编写真值表实现,输入正确的逻辑,七段译码电路即能得到正确的时间显示。 1.3各功能的组成 整个电路可以分为4大部分,包括脉冲发生、状态定时、时间显示和数字比较一组合逻辑控制。 1.3.1脉冲发生 脉冲发生器为整个系统提供驱动,将输入端分配给FPGA实验板的PIN55引脚,则会由实验板上产生频率为10MHz的输入脉冲,用7片7490,每一级都构成10分频电路,使频率从10MHz降低为1Hz。 1.3.2状态定时 状态定时可由预置BCD码初值的74190级联实现,构成减计数器。 级联原则是: 低位计数器从全0状态变为最大码值状态时可使高位计数器减1。 级联方式分为异步和同步两种,本文采取的是异步级联方式,即低位计数器溢出信号控制高位计数器的记数脉冲输入端。 可根据计数器的时钟触发方式,在低位计数器状态码从全“0”变为最大码值的瞬间,为高位计数器提供有效的计数脉冲边沿。 具体做法是将低片位的溢出信号RCON端口接到高片位的计数脉冲CLK,实现两位BCD码的置数、翻转和借位,使系统表示的数字能在22~16之间循环。 74190功能说明: (1)GN为计数器使能控制端,低电平有效。 当GN为高电平时,禁止计数。 (2)DNUP为计数方式控制,接高电平为减计数,接低电平为加计数。 (3)LDN为异步预置数控制。 当LDN为低电平时,计数器状态QD,QC,QB,QA分别等于D,C,B,A。 (4)计数器位序由高至低顺序为QD,QC,QB,QA。 QD为最高位MSB,QA为最低位LSB。 (5)计数脉冲CLK上升沿有效。 (6)当计数器输出QDQCQBQA为十进制加计数的最大状态码“1001”或为减计数的最小状态码全“0”时,极值状态码指示MAX/MIN输出为高电平。 (7)当极值状态码指示MAX/MIN为高电平且CLK为低电平时,溢出信号RCON为低电平,即RCON与计数脉冲同步。 系统记数脉冲为1Hz时,如表2所示,当I状态(东西控制状态)的定时时间为22s,计数器应该先预置22的BCD码;同理,J状态(南北控制状态)之前应该预置16的BCD码。 状态计时电路由两片74190级联而成,构成22和16自翻转的电路。 其要解决的核心问题包括置数,翻转和借位。 根据74190芯片的特点,可分析其实现原理如图4所示,通过溢出信号RCON的上升沿实现借位,使得数字能够从20到19,个位向十位借位,顺利过渡。 置数和翻转之间有先后关系,即须先置数后翻转。 如表3所示,分析两个BCD码各位特点,可知两者D7D6D3D0位均为1,D1位均为0,而D5D4D2位不同,如图5,D5D4D2位由状态电平S来控制,当为I状态时,计数器的预置的数为D5=0,D4=D2=1,而为J状态时,计数器的预置的数为D5=1,D4=D2=0,根据74190的功能,将2片74190的MAX/MIN引出,通过与非门,分别连在高位和低位的LDN置数端,通过分析可知,当计数器从01减到00时候,高低位的MAX/MIN均为高电平,经过与非门以后为低电平,74190被置数,其置数值由状态S来决定,S是由LDN端信号经 过一个T’触发器决定的,即LDN信号每置数一次,S翻转1次,从而区分16和22状态。 按这个结构,可分别置数16和22,使其实现自翻转。 图5为状态定时模块的实际连接图。 1.3.3时间显示 时间显示要用到7段显示译码电路,由于是两位BCD码,故用二选一数据选择器。 选择端S接一个频率很高的方波(如1kHz);数据比较器的输出和1Hz脉冲作为AHDL模块的输入,即可正确显示时间。 为正确显示时间,用AHDL文件自编译码真值表如下: 1.3.4数字比较一组合逻辑控制 该模块将状态定时模块输出的时间与时间节点进行比较,从而确定电路处于22s或者16s的具体的某个状态。 由表1可知,东西(I)或南北(J)的控制状态都有3个阶段的控制逻辑,分别对应3个时间段: 1~3s,4~6s和大于6s,因此,采用数字比较器进行比较,确定定时值小于4s或大于6s,方法如图7所示,采用4片7485数字比较器,两两级联,其中一个由状态定时模块的输出与4即二进制0100比较;另一个由状态定时模块的输出与6即二进制0110比较。 编写组合逻辑真值表,将状态信号S,两个数字比较器的输出Y1,Y2和1Hz脉冲作为输入,各个灯的状态作为输出。 从而根据逻辑关系得出对应时间电路的状态,控制红、黄、绿灯处于不同的状态。 S判断电路处于22s状态还是16s状态,Y1,Y2区分东西、南北六个阶段状态,1Hz脉冲实现绿灯闪烁。 2电路的组构与调试 来用QuartusⅡ软件设计各个模块,并进行仿真。 确认结果后,下载至FPGA实验板中,进行相应的硬件调试,调试结果与仿真结果相一致。 图8为仿真波形,系统上电需要调整的过程,因此电路正常工作前重复了22s的状态。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 技术 交通灯 控制系统 设计