基于FPGA的交通灯控制器设计.doc_第1页
基于FPGA的交通灯控制器设计.doc_第2页
基于FPGA的交通灯控制器设计.doc_第3页
基于FPGA的交通灯控制器设计.doc_第4页
基于FPGA的交通灯控制器设计.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于FPGA的交通灯控制器设计学生姓名:学生学号:院 (系): 电气信息工程学院 年级专业:指导教师:助理指导教师:二一五年五月 摘要摘 要随着国民经济的不断提高,汽车数量不断增加,交通问题越来越引起重视,对交通灯控制器的要求也越来越高。设计一个性能可靠的交通灯控制器,对维持交通秩序和保证交通安全起着至关重要的作用,也是经济与社会发展的需要,极具实际意义。本文介绍基于FPGA的交通灯控制器设计。交通灯控制器可分为四个部分:信号灯显示部分、分频部分、倒计时部分和计时器部分,采用Verilog HDL语言进行系统描述,并结合Quartus软件进行系统设计与调试。此设计的功能是控制在十字路口的主干道和支干道信号灯在每天的0点到6点之间不循环切换信号且无倒计时,而其他时间则按设置的顺序切换信号,并有倒计时显示。在主支干道设有重力传感器,检测该方向是否有车辆,如该方向无车辆而另一方向有车辆,则可以提前放行另一方向。关键词 交通灯控制器,FPGA,Verilog HDL,QuartusI ABSTRACTABSTRACTWith the constant improvement of the national economy and the car number increasing,the traffic problems become more and more attention, the requirement of traffic controller is higher and higher. Design a reliable performance of traffic light controller to maintain traffic order and guarantee the traffic safety plays an important role, is also the needs of economic and social development and extremely practical significance.This paper introduces the traffic light controller design is based on FPGA . The traffic light controller can be divided into four parts: light display part, frequency division part, the countdown part and the timer part, using Verilog HDL language for system description, and combing Quartus software foe system design and debugging. The function of this design is to control the main branch road lights at the crossroads between 0 to 6 AM every day not switching signal without the countdown, while other times according to set the order of the switching signal, and the countdown display. In the main trunk road with gravity sensor, detecting the direction of vehicles, such as the direction, no vehicle and another direction with vehicles, can release ahead of the other direction.Key words the traffic light controller, FPGA,Quartus, Verilog HDL 目录目 录摘 要IABSTRACTII1 绪论11.1交通灯控制器的研究背景11.2 交通灯控制器的发展现状11.3 交通灯控制器的发展趋势21.4 本课题的研究内容22 交通灯控制器系统设计方案论证32.1 交通灯控制器设计方案32.2 交通灯控制器设计方案选择32.3 交通灯控制器的设计要求32.4 交通灯控制器的设计思路43 控制器硬件设计63.1 Cyclone IV性能介绍63.1.1 FPGA概述63.1.2 FPGA的设计流程63.1.3 Cyclone IV E主要特性73.2 七段数码管简介83.2.1 七段数码管概述83.2.2 七段数码管动态显示原理93.3 交通灯控制器各模块性能分析93.3.1信号灯显示模块的性能分析93.3.2分频模块的性能分析103.3.3倒计时显示模块的性能分析103.3.4计时器模块的性能分析114 控制器软件设计124.1 Verilog HDL简介124.1.1 Verilog HDL概述124.1.2 Verilog HDL模块设计124.2 交通灯控制器系统程序设计134.2.1 信号灯显示模块程序134.2.2 分频模块程序144.2.3 倒计时模块程序144.2.4 计时器模块程序155 软件仿真175.1 Quartus软件简介175.1.1 Quartus软件概述175.1.2 Quartus软件的设计流程175.2 程序调试过程185.3 软件仿真结果206 硬件测试与结果236.1 硬件下载测试236.1.1 引脚分配236.1.2 硬件下载236.2 硬件测试结果24结 论26参 考 文 献27附录A:硬件实物图29附录B:硬件测试结果30附录C:交通灯控制器源程序31致 谢421 1 绪论1 绪论1.1交通灯控制器的研究背景假如路口没有交通信号灯,来往的车辆该什么时候通行,行人该什么时候穿越公路,没有明确的指示,交通将会变得一团糟,同时也一定会有许多交通事故产生。因此,交通信号灯是道路交通不可缺少的部分,维护交通秩序,保证交通安全。世界上最早的交通信号灯是1858年在英国伦敦出现的已然煤气为光源的红、蓝两色的机械扳手式信号灯。20世纪初,一种由红绿黄三种色的圆形投光器组成的电气启动红绿灯出现在美国的大街。不久后,又出现了带控制的红外红绿灯和红绿灯。20世纪中期,联合国对道路交通和道路标志信号协定的制定,使各信号灯的含义变得规范明确,绿灯信号代表通行,红灯信号代表禁行,黄灯信号代表警告。如今交通信号灯灯已经随处可见,人尽皆知,几乎在每个城市的每个路口都有其存在。起初,我国普遍使用的交通灯控制器基于单片机或 PLC 来设计的,功能比较简单,信号灯按照设置的顺序不断切换,有的还有计时显示。1.2 交通灯控制器的发展现状正如我们所见,现在的交通信号灯一般是设在路口比较醒目的位置,用红、绿、黄三种颜色的信号灯来指挥交通,这些信号灯是按照事先设定的顺序不断重复切换,有的还有一个倒计时的倒计时显示部分,提醒车辆还剩余的通行时间和还需要等待的时间。支干道图1-1 十字路口交通示意图绿主干道黄红红黄绿我国传统交通灯控制器普遍是使基于中、小规模集成电路,采用单片机和PLC 控制芯片进行设计,功能比较简单。基于这些芯片的设计,其系统外围电路十分复杂,需要的电路元件很多,接线相应变得很复杂,并且程序修改也不灵活,控制上也不够精确,故障率比较高。因此,交通灯控制器的设计需要改进,需要采用高密度和性能强的器件和更好更优良的设计方法。1.3 交通灯控制器的发展趋势随着经济的发展,人们生活水平的不断提高,汽车的数量是在不断地增加。车辆的不断增加,对道路交通的考验也越来越大,一定会面对更多的交通问题。作为维护交通秩序和交通灯来说,这样将对它们性能和效率提出更高的要求。随着FPGA器件不断向着更高速、更密集以及性能更强更灵活的方向发展,使其不仅与标准逻辑器件的成了旗鼓相当的竞争对手,也同掩模式专用集成电路产生竞争关系,同时也将逐渐将专用集成电路(ASIC)取而代之。因此,交通灯控制器设计将广泛采用现场可编程逻辑器件FPGA及硬件描述语言进行研究与设计,采用 Quartus软件进行了电路仿真和调试,对设计每个阶段进行仿真从而及时发现设计错误,并反复修改、编程,直到完全满足要求。采用这种方法设计的交通灯控制器,不仅可靠性强,而且具有实用性、实时性、易操作、人性化、造价低等特点。同时,在交通灯控制器的设计过程中还可以加入电子信息技术、数据通信通讯技术、传感器技术、控制技术和计算机处理技术等有效应用于交通灯系统中,使交通灯控制器的功能更完善,性能更好。1.4 本课题的研究内容通过对交通灯控制器的研究背景,发展现状以及发展趋势的了解,可见,交通灯控制器的性能和可靠性需要进一步提升,设计方法需要改进。因此,本课题是基于FPGA的交通灯控制器设计,降低设计的成本和功耗,增强设计的灵活性和可靠性。本课题的主要研究内容是在FPGA基础上设计控制器控制交通信号灯在车流量不同的时间段内实现不同的作用,具体包括:在十字路口设置绿、黄、红三个信号灯分别控制主干道和支干道的通行;控制器控制交通信号灯按设定的顺序循环切换,并倒计时;当主干道某一方向有车辆等待而另一方向无车辆等待,该方向可以提前放行;在早上0点,控制器暂停交通信号灯切换;在早上6点,控制器恢复交通信号灯正常切换。2 2 交通灯控制器系统设计方案论证2 交通灯控制器系统设计方案论证2.1 交通灯控制器设计方案交通灯控制器是一个典型的数字系统设计,其设计方法也特别多,以前传统的交通灯控制器设计基本上采用单片机或PLC等来进行设计实现,然而其外围电路的复杂和芯片本身控制不精等缺点,是的这些设计越来越不能满足设计需要。所以,在本次设计就基于性能可靠的现场可编程逻辑器件FPGA和采用硬件描述语言来进行设计,并拟定了以下两种设计方案。方案一:基于FPGA器件,采用VHDL语言进行设计。VHDL语言是常用的硬件描述语言之一,在数字电路设计中十分常用,深受设计者的欢迎。但是VHDL语言素来以严谨著称,其语法要求比较严格,书写相当规范。VHDL语言进行设计比较难,主要用于在门级开关电路描述方面,其程序化的接口也不可以无限扩展。VHDL语言在国内不被大多数集成电路设计的公司使用,而在国外学术界比较流行,特别是在欧洲发展得比较好。方案二:基于FPGA器件,采用Verilog HDL语言进行设计。Verilog HDL语言是另一种常用的硬件描述语言,定义了许多易于仿真的语法,其程序化的接口可以无限扩展,是一种功能强大的硬件描述设计语言。Verilog HDL语言与C语言的语法结构及其相似,简单易懂,以其精简,格式自由以及易于学习等特点在集成电路设计中深受欢迎,在产业界非常流行。 2.2 交通灯控制器设计方案选择对于初学者来说,理解VHDL语言确实有一定的难度,要用它来进行完成一个数字电路的系统设计更是困难。做为电子专业的学生,学习过C语言,对C语言比较熟悉了解,所以理解Verilog HDL语言比较容易,而且其自由的书写格式,可以将思维放在电路设计本身,可以很方便完成整个系统的设计。所以,本次设计就采用方案二,基于FPGA器件,采用Verilog HDL语言来完成交通灯控制器设计。2.3 交通灯控制器的设计要求设计一个由主干道和支干道汇合形成的十字路口的交通灯控制器,其设计要求包括:(1)主干道和支干道各设有一个绿、黄、红三个信号显示灯,用七段数码管实现倒计时显示;(2)在每天早上6点至晚上12点之间,主干道和支干道的通行状态相互交替,主干道通行时间为35秒,支干道通行时间为25秒,在每次主干道和支干道通行状态相互转换的过程中会有5秒的等待过渡时间,并且所有的计时都采用倒计时方式显示;(3)主支干道设有检测传感器来检测有无车辆等待,当该干道有有车量等待而另一干道无车辆,可以提前放行该干道;(4)在每天早上的0点到6点,此时间段内路上的车流量较少,主干道和支干道可以同时处于通行的状态,来往的车辆可以随时通行而不需要等待过渡。2.4 交通灯控制器的设计思路通过对交通灯控制器的设计要求进行分析,可以发现采用Verilog HDL语言的有限状态机的设计思路,可以很好地实现其功能。交通信号灯共具有5个状态:主干道通行状态S0,主干道通行向支干道通行切换的过渡状态S1,支干道通行状态S2,支干道通行向主干道通行切换的过渡状态S3,主干道和支干道都通行的状态S4。S0、S1、S2、S3这4个状态是往复循环顺序切换的,S4状态则是在0点到早上6点才会出现的状态。S0状态时,主干道亮绿灯而支干道亮红灯,倒计时为35秒;S1状态时,主干道和支干道都亮黄灯,倒计时为5秒;S2状态时,支干道亮绿灯而主干道亮红灯,倒计时为25秒;S3状态时,主干道和支干道都亮黄灯,倒计时为5秒;S4状态时,主干道和支干道都亮黄灯,此时无倒计时。S0S0S0S0S0图2-1 状态转换图要在设定时间段内保证交通信号灯的按照设定的顺序循环切换,只需要在系统程序中增加一个24小时的时钟计时,即可实现要求。当到达一个设定时间点时,产生一个信号让交通灯灯暂停切换,直到到达另一个时间点,产生一个信号让交通灯恢复正常工作。根据设计要求,可以将交通灯控制器系统的分成四个模块:信号灯显示模块、分频模块、倒计时显示模块和计时器模块,可采用自上而下的设计方法设计。0点6点计时器倒计时信号灯FPGA图2-2 系统原理框图分频器41 3 控制器硬件设计3 控制器硬件设计3.1 Cyclone IV性能介绍3.1.1 FPGA概述从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.2 FPGA的设计流程将FPGA的设计方法归纳为一个简单的设计流成,Altera的全集成开发工具Quartus软件就完全支持这一流程。FPGA的设计流程具体如下。(1)源文件的编辑和编译。首先把需要输入的设计思路以文本或图形的形式表达出来,再进行排错编译,同时为进一步的逻辑综合做准备。一般常用的源程序输入方式有原理图输入方式和文本输入方式两种。(2)逻辑综合和优化。经过一列操作把源文件分解成一系列逻辑电路和对应关系,最后得到门级电路或更底层的电路描述文件,即生成网表文件,该网表文件与FPGA基本结构是相对应的。(3)目标器件的布线/适配。在所选用的目标器件中建立与前面生成的网表文件相符合的基本逻辑电路的对应关系。(4)目标器件的编程下载。当前面的步骤,编译、综合、布线/适配等过程都没有出现问题,也就是说完全满足设计要求时,就可以将布线/适配器所产生的配置/下载文件通过下载电缆下载到目标器件中。(5)硬件仿真与测试。在已经下载好程序的FPGA开发板上进行测试,验证理想设计思想与实际电路之间的偏差。3.1.3 Cyclone IV E主要特性Cyclone IV是传承了Cyclone系列低成本、低功耗的特性,建是立在优化的低功耗工艺基础上的设计,集成了一个可选择的低成本收发器,在降低成本的同时又能完全满足不断增长的带宽要求,是在广播、有线、无线、工业以及通信等行业领域中的低成本的小型应用的理想选择。Cyclone IV器件系列主要提供Cyclone IV E及Cyclone IV GX两种型号的器件。具有最低的功耗的特性的Cyclone IV E器件,能在核电压为1.2V和1.0V的情况下使用,并且以最低的成本去实现较高的功能。本设计所使用的EP4CE6E22C8N芯片正是Cyclone IV E系列中的一种。Cyclone IV E器件系列的体系结构包括FPGA核心架构、I/O特性、时钟管理、外部存储器结构以及配置等内容。Cyclone IV E器件系列采用的FPGA核心架构与Cyclone系列是相同,包括四输入查找表组成的LE、存储器模块和嵌入式乘法器模块,其中存储器模块具有9Kbit的嵌入式SRAM存储器,可以配置成单端口、简单双端口、真双端口等,实现需要的数据带宽,嵌入式乘法器模块可实现18*18或者两个9*9的乘法器。Cyclone IV E系列器件的I/O口支持可编程总线的保持,可编程迟延以及可编程上拉电阻等,从而实现信号完整性和热插拔的优化,还支持符合单端I/O标准校准后的片上川航匹配或驱动阻抗匹配。Cyclone IV E系列器件中包含高达30个全局时钟网络和高达8个PLL,可以提供可靠的时钟管理和综合,且可以在用户模式中对PLL进行动态重新配置以此改变时钟频率或相位。Cyclone IV E系列器件的外部存储器接口包括SDR、DDR、DDDR2 SDRAM和QDRIT SRAM接口,这些接口可能分布在器件的两侧或多侧,主要是为了更灵活地实现电路板设计。Cyclone IV E系列器件的配置是使用SRAM单元来存储配置数据,每次上电后,配置数据就会被下载到器件中。Cyclone IV E器件所支持的配置方案有AS、AP、FPP和JTAG,其中,常用的配置方式是JTAG。表格 3-1 Cyclone IV E部分器件资源资源型号逻辑单元嵌入式存储器Kbits嵌入式18*18乘法器通用时钟(PLL)全局时钟网络用户I/O块最大用户I/OEP4CE66272270152108179EP4CE1010320414232108179EP4CE1515408504564208343EP4CE2222320594664208153EP4CE3028848594664208532EP4CE403960011341164208532Cyclone IV E系列器件具有的特性,包括(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”。在本次设计中倒计时显示所采用七段数码管就是共阳极的七段数码管,所以根据需要对七段数码管的接脚接分别接入低电平和高电平,就能控制二极管的亮灭,从而使其显示数字。.fgedcba图3-1七段数码管引脚定义dp3.2.2 七段数码管动态显示原理七段数码管动态显示介面虽然在单片机中应用最为广泛,但是对于FPGA来说依然以相同的方式来实现动态显示。动态驱动基本原理是是将所有七段数码管内部代表七个笔划“a,b,c,d,e,f,g”的二极管的同名端连在一起,再为每个七段数码管的公共极增加位选通控制信号,位选通由各自独立的输入口控制,当FPGA有字形码输出时,所有七段数码管都同时接收到相同的字形码,但是到底需要哪一个七段数码管来显示出字形,就要取决于FPGA对位选通控制信号的输入,所以只要把需要用于显示的七段数码管的位选通信号设置为选通,则该位的数码管就能够显示出由字形码所代表的字形,同时没有被选通的七段数码管就不会进行显示。通过分时段来轮流控制一个个七段数码管的公共极,就能够使各个七段数码管通过轮流受到的控制而进行显示,这就是动态驱动。在轮流受控显示的过程中,每个七段数码管点亮的时间是极短暂的,再加上发光二极体余辉效应和人的视觉暂留现象,尽管各位七段数码管实际上不是同时点亮的,但是通过快速的扫描,还是给人带来是一组稳定的数字显示的视觉效果,并没有闪烁的感觉,这样就使得动态显示和静态显示产生一样的结果。3.3 交通灯控制器各模块性能分析3.3.1信号灯显示模块的性能分析信号灯显示模块是交通灯控制器系统中最简单的部分,在主干道和支干道分别设有红、黄、绿三个颜色的信号灯,红灯表示禁止通行,黄灯表示过渡,绿灯表示允许通行。信号灯在控制器的控制作用下工作,指挥交通。一般工作情况是,主干道绿灯,同时支干道红灯,表示主干道通行而支干道禁行;主干道红灯,同时支干道绿灯,表示主干道禁行而支干道通行;主干道和支干道都亮黄灯,表示主干道和支干道的通行转换的过渡。当主支干道其中一个方向有车辆等待时,可以提前放行,即切换到该方向通行状态。另外,在深夜零点到凌晨六点之间信号灯则在时钟控制作用下,停止按顺序切换状态的工作情况,主、支干道同时黄灯,且无倒计时显示,则表示在特殊时段主支干道都可以通行。3.3.2分频模块的性能分析分频模块的作用是为整个交通灯控制器系统提供时钟脉冲,根据所选择的器件提供的内部时钟频率,进行分频得到需要的时钟信号。本次设计所使用的FPGA器件为Cyclone IV系列的EP4CE6E22C8N开发板,其内部的时钟频率为48MHz,此时就需要利用分频模块将其分频产生倒计时模块和时钟模块需要的1Hz时钟信号。方法一, 48MHz频率的一个时钟周期约为20.8ns,计数48000000次就是1s,利用一个计数器计数到24000000就反转一次,即可得到时钟周期为1s的时钟信号。方法二,将48MHz频率经过48000分频得到1KHz时钟信号,1KHz再经过1000分频,即可得到1Hz时钟信号。不同器件提供内部时钟频率是不一样的,但是分频原理是相同的,所以不管是怎样的时钟频率,或是想得到什么样的时钟信号,只要稍作改变就能满足需要。48000分频图3-2 分频模块原理方框图1KHz时钟频率48MHz计数器48000000次1Hz时钟频率48MHz1000分频1Hz3.3.3倒计时显示模块的性能分析倒计时显示模块是交通信号灯处于正常工作时对各种信号的计时,采用减计时的方法计时,并利用七段数码管来对其进行显示。主干道处于通行状态且时间为35秒,则主干道亮绿灯,同时支干道亮红灯,倒计时显示从35秒开始减计数,直到减到零,计时结束切换下一状态。主干道通行向支干道通行转换的过渡的时间为5秒,则主干道和支干道都亮黄灯,倒计时从5秒开始减计数,直到减到零,计时结束切换到下一状态。支干道处于通行状态且时间为25秒,则支干道亮绿灯,同时主干道亮红灯,倒计时显示从25秒开始减计时,直到减到零,计时结束又切换下一状态。支干道通行向主干道通行转换的过渡时间为5秒,则支干道和主干道都亮黄灯,倒计时从5秒开始减计时,直到减到零,计时结束切换下一状态。交通信号灯工作状态不断切换,倒计时也相应切换。支干道的交通信号灯与主干道干道交通信号灯的工作状态是相对应的,若主干道绿灯则支干道红灯,若主干道红灯则支干道绿灯,若主干道黄灯则支干道也黄灯,并且为了节约资源,主干道和支干道可以共用一个倒计时器进行显示。当交通信号灯停止切换时,倒计时部分停止工作,直到交通信号灯恢复切换,它也相应开始工作。3.3.4计时器模块的性能分析计时器模块是交通灯控制器系统中控制交通信号灯灯工作情况的部分,是一个24小时的计时器。此部分就是对1Hz时钟信号的一个加计数器,从秒部分开始加,加到60秒就向分部分进位,分部分加到60分就向时部分进位,时部分加到24小时就清零,从新开始计时。从功能上来说,计时两个模60的计数器和一个模24的计数器。每当计时器计时到24点时,就发出一个信号去停止交通信号灯正常切换工作状态;每当当计时器计时到6点时,就发出一个信号去恢复交通信号灯正常切换的工作状态。时钟信号继续计数继续计数否是是继续计数 否否是秒计时分计时时计时是否满60是否满60是否满24清零重新计数图3-3 计时器工作原理图 4 控制器软件设计4 控制器软件设计4.1 Verilog HDL简介4.1.1 Verilog HDL概述Verilog HDL是常用硬件描述语言的一种,是对数字系统硬件的结构和行为通过文本形式来进行描述。它主要用于多种抽象设计层次的数字系统建模,可按层次来描述数字系统,从算法级、RTL级、门级到开关级。该语言最初是作为一种专用的语言,由Gateway Design Automation公司于1983年为其模拟器产品而开发的硬件建模语言。由于其便于使用且实用的特点逐渐被众多设计者接受,于1990年被推向公众领域,于1995年正式成为IEEE标准。Verilog HDL具有以下描述能力:(1)设计的行为特性;(2)设计的数据流特性;(3)设计的结构组成;(4)包含响应监测、设计验证的时延与方波产生机制。这些全都使用同一种建模语言。另外,Verilog HDL语言还提供了编程语言接口,通过此接口可在模拟和验证期间从设计的外部访问设计,包括模拟时的具体控制与运行。Verilog HDL语言不但定义了语法,还对每个语法结构也都定义了清晰的模拟与仿真语义。所以,用该语言编写的模型可用Verilog仿真器来验证。Verilog HDL句法根源出自C语言,从C语言中继承了很多种操作符合结构,易学易懂。当然,为了对数字电路建模,Verilog HDL也规定了一套自己的完整地语法结构,还提供了扩展的建模能力。Verilog HDL的建模实质是使用硬件描述语言对数字电路行为描述,描述数字电路的基本要素的特性以及相互之间的关系。4.1.2 Verilog HDL模块设计Verilog HDL的建模重点是模块,可以使用一个或者多个模块对数字电路建模。模块是Verilog HDL的基本描述单位,用于描述某一设计的功能或者结构以及和其他模块间通信的外部端口。一个模块的设计如下:(1)模块的内容是嵌在module与endmodule这两个语句之间的。每个模块可以实现特定的功能,模块之间可以进行层次嵌套,所以可以将大型的复杂的数字电路的设计划分成一个个小模块来实现特定的功能,再通过顶层模块来调用子模块以实现整体的功能。(2)模块内容包括接口描述及逻辑功能描述两部分,具体就是I/O口的说明、内部信号的调用模块等声明语句和功能定义语句。I/O说明语句定义管脚信号流向,确定信号的位宽。逻辑功能描述不仅用来产生各种逻辑,还可以用来实例化一个器件。对模块的逻辑功能进行描述,通常可以采用三种不同风格的描述方式:一是结构描述方式,使用实例化低层模块;二是数据流方式,使用连续赋值语句;三是行为描述方式,使用过程块语句结构和较为抽象的高级程序语句。(3)对于任一模块都必须进行端口定义,并且说明其输入和输出口,紧接着是逻辑描述每个模块的功能。另外,对于测试模块是可以没有输入和输出口的。(4)Verilog HDL语言的书写格式很自由,一行可以写多个语句,也可将一个语句分成几行来写,具体格式由代码的书写规范来约束。(5)除了endmodule语句之外,每个语句结束都需要用分号来表示该语句的结束。4.2 交通灯控制器系统程序设计4.2.1 信号灯显示模块程序信号灯显示模块就是利用Verilog HDL的有限状态机实现交通信号灯按顺序切换状态的功能。前面已经对交通信号灯所有的工作状态做了明确描述,也画出了状态转换图,现在只需要根据状态转换图用Verilog HDL将其按照合理地语法规则表达出来即可。虽然,在Verilog HDL中能够用来描述有限状态机的方法很多,其中利用always语句和case语句则是最常用的方法。信号灯显示模块的部分程序为:always(posedge clk_1hz)begincase(state)A:beginDeng=3b100;if(m=1)beginstate=E;clear=4;endelse if(w=0) begin state=B;clear=1;endelse if(Timer=35) beginstate=B;clear=1; endelse begin state=A;clear=4ha)beginHour3:0=4h0;Hour7:4=Hour7:4+1b1;if(Hour7:4=4h6)beginHour7:4=4h0;Hour11:8= Hour11:8+1b1; if(Hour11:8=4ha) 5 软件仿真5 软件仿真5.1 Quartus软件简介5.1.1 Quartus软件概述Quartus软件是21世纪初推出的新一代FPGA/CPLD集成开发软件,提供了逻辑设计、综合、布局布线、仿真验证以及对器件编程等功能,是MAX+PLUS软件更新换代的替代产品。Quartus软件集成了FPGA/CPLD开发中每个阶段的所有工具,并且为第三方工具提供无缝接口,支持百万级以上逻辑门数的逻辑器件开发,支持与结构没有关联的设计。Quartus软件提供了完整的多平台的设计环境,包含FPGA设计的所有阶段的解决方案,具有许多优点。近年来,Quartus软件不断更新,其功能在不断增强,优点也越来越多,使其成为一款易用、人机界面友好的开发软件,也已经成为目前电子设计新宠。5.1.2 Quartus软件的设计流程对FPGA的开发设计分为不同的阶段,设计者可以使用Quartus软件通过一系列来建立、组织和管理设计。利用开发软件和编程工具对FPGA进行设计开发的设计流程一般包括设计输入、综合、布局布线、时序分析、仿真、编译与配置等步骤,其设计流程如图5-1所示。图5-1 Quartus设计流程设计输入综合布局布线时序分析编译与配置功耗分析时序逼近工程更改管理调试仿真5.2 程序调试过程(1)打开。Quartus软件,点击菜单栏目中“File”“New Project Wizard”打开工程向导,建立交通灯控制器设计的工程,包括指定工程工作目录、分配工程名称和指定顶层设计实体的名称,还可以在其中指定设计使用的源文件、用户库、EDA工具以及目标器件等。图5-2 打开工程向导图5-3 建立工程(2)在建立完成的工程中添加交通灯控制器系统程序文件,在菜单栏目中点击“File”“New”,弹出文件类型选择框,选择Verilog HDL,点击“OK”,在编辑窗口输入交通灯控制器的源程序,并点击保存。图5-4 程序输入窗口(3)输入保存程序后,点击菜单栏目中“Processing”“Start Compilation”进行编译,并得到编译报告。图5-5 编译报告使用分配编辑器对设计进行编译是为了分析和检查设计中是否有语法和语义上的错误。如果没有错就可以,下面的信息窗口中的语句是绿色的,不会提示有错,接下来就可以分配引脚进行下载到硬件测试;如果出现错误,下面信息窗口中的语句全是红色的,提示有错误存在,同时会给出错误数量,指明错误的出处和错误的原因,根据提示进行修改,修改完后再次编译,如果仍有错误就需要继续修改,继续编译,直到没有错误为止。(4)编译成功后,点击菜单栏的“File ”“Create(Update)”“Create Symbol Files for Current File”来生成图元符号,在图元符号上添加输入输出引脚就得到了该设计的顶层电路。图5-6 设计的顶层电路5.3 软件仿真结果同样利用Quartus软件对编译好的系统程序进行仿真,得出仿真结果。(1)建立仿真波形文件。在菜单栏点击File|New,在弹出的New对话框中选择Other File下面的Vector Waveform File项,点击OK就会弹出波形文件编辑窗口。(2)添加引脚。双击波形文件编辑窗口中Name下面的空白,会弹出Insert Node or Bus对话框,在框中点击Node Finder按钮,在弹出的对话框中Filter的下拉列表框中选择Pins:All选项,再点击List弹出设计文件的引脚列表窗口,其中的Nodes Founder栏里列出了设计文件的引脚,在列表中双击需要的引脚或点击按钮,选中的信号就会出现在右边的空白栏中,点击OK钮回到Insert Node or Bus对话框,再点击OK钮,选中的引脚就出现在波形文件编辑窗口中Name栏了,表示引脚已经添加成功。(3)编辑输入波形并保存。波形编辑窗口中波形观察窗左边是输入引脚,在其右边对应位置可以编辑波形。编辑波形时,先选中输入引脚名,然后用鼠标在其右边输入波形上选择需要改变的黑色区域,接着在左边工具栏中选择相关按钮进行设置。(4)波形仿真。在菜单栏中选择Assignments|Setting,接着选择Simulator Setting项,在Simulation mode的下拉列表中选择Timing命令,然后点击工具栏中的仿真命令按钮,开始仿真,并得到仿真结果。为了清楚主支干道通行状态,特将主支干道的三个信号灯分别列出来。图5-7 主支干道有车仿真图图5-8 支干道有车而主干道无车仿真图图5-9 主干道有车而支干道无车仿真图图5-10 主支干道无车仿真图 6 硬件测试与结果6 硬件测试与结果6.1 硬件下载测试6.1.1 引脚分配将交通灯控制器的编程文件下载到硬件进行测试验证之前,要进行引脚分配,将输入和输出信号锁定到目标器件的引脚上。点击菜单栏目中“Assignments”“Pin Planner”,在弹出的引脚规划器窗口根据输入和输出信号选择合适的引脚进行分配。引脚分配完成后,还需要进行一次编译

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论