1、 基于 FPGA 的交通灯控制器设计 学生姓名:学生学号:院(系):电气信息工程学院 年级专业:指导教师:助理指导教师:二一五年五月 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名:日 期:指导教师签名:日 期:使用授权说明 本人完全了解 大学关于收集
2、、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:日 期:学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期
3、:年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年 月 日 导师签名:日期:年 月 日 注 意 事 项 1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明 3)中文摘要(300 字左右)、关键词 4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或
4、绪论)、正文、结论 7)参考文献 8)致谢 9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于 1 万字(不包括图纸、程序清单等),文科类论文正文字数不少于 1.2 万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写 2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画 3)毕业论文须用 A4 单面打印,论文 50 页以上的双面打印 4)图表
5、应绘制于无格子的页面上 5)软件工程类课题应有程序清单,并提供电子文档 5.装订顺序 1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订 指导教师评阅书 指导教师评价:一、撰写(设计)过程 1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格 2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格 3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格 4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格 5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格 二、
6、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范?优 良 中 及格 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)?优 良 中 及格 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格 2、论文的观念是否有新意?设计是否有创意?优 良 中 及格 不及格 3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格 建议成绩:优 良 中 及格 不及格(在所选等级前的内画“”)指导教师:(签名)单位:(盖章)年 月 日 评阅教师评阅书 评阅教师评价:一、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规
7、范?优 良 中 及格 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)?优 良 中 及格 不及格 二、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格 2、论文的观念是否有新意?设计是否有创意?优 良 中 及格 不及格 3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格 建议成绩:优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师:(签名)单位:(盖章)年 月 日 摘要 I 教研室(或答辩小组)及教学系意见 教研室(或答辩小组)评价:一、答辩过程 1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格
8、不及格 2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格 3、学生答辩过程中的精神状态 优 良 中 及格 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范?优 良 中 及格 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)?优 良 中 及格 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格 2、论文的观念是否有新意?设计是否有创意?优 良 中 及格 不及格 3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格 评定成绩:优 良 中 及格 不及格 教研室主任(或答辩小组组长)
9、:(签名)年 月 日 教学系意见:系主任:(签名)年 月 日 摘要 II 摘 要 随着国民经济的不断提高,汽车数量不断增加,交通问题越来越引起重视,对交通灯控制器的要求也越来越高。设计一个性能可靠的交通灯控制器,对维持交通秩序和保证交通安全起着至关重要的作用,也是经济与社会发展的需要,极具实际意义。本文介绍基于FPGA的交通灯控制器设计。交通灯控制器可分为四个部分:信号灯显示部分、分频部分、倒计时部分和计时器部分,采用 Verilog HDL语言进行系统描述,并结合 Quartus 软件进行系统设计与调试。此设计的功能是控制在十字路口的主干道和支干道信号灯在每天的 0点到6点之间不循环切换信号
10、且无倒计时,而其他时间则按设置的顺序切换信号,并有倒计时显示。在主支干道设有重力传感器,检测该方向是否有车辆,如该方向无车辆而另一方向有车辆,则可以提前放行另一方向。关键词 交通灯控制器,FPGA,Verilog HDL,Quartus ABSTRACT III ABSTRACT With the constant improvement of the national economy and the car number increasing,the traffic problems become more and more attention,the requirement of traf
11、fic 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
12、 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 fu
13、nction 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
14、 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 目录 1 目 录 摘 要.1 ABSTRACT.III 1 绪论.1 1.1交通灯控制器的研究背景.1 1.2 交通灯控制器的发展现状.1 1.3 交通灯控制器的发展趋势.2 1.4 本课题的研究内
15、容.2 2 交通灯控制器系统设计方案论证.3 2.1 交通灯控制器设计方案.3 2.2 交通灯控制器设计方案选择.3 2.3 交通灯控制器的设计要求.3 2.4 交通灯控制器的设计思路.4 3 控制器硬件设计.6 3.1 Cyclone IV 性能介绍.6 3.1.1 FPGA概述.6 3.1.2 FPGA的设计流程.6 3.1.3 Cyclone IV E主要特性.7 3.2 七段数码管简介.8 3.2.1 七段数码管概述.8 3.2.2 七段数码管动态显示原理.9 3.3 交通灯控制器各模块性能分析.9 3.3.1 信号灯显示模块的性能分析.9 3.3.2 分频模块的性能分析.10 3.3
16、.3 倒计时显示模块的性能分析.10 3.3.4 计时器模块的性能分析.11 4 控制器软件设计.12 4.1 Verilog HDL 简介.12 4.1.1 Verilog HDL 概述.12 4.1.2 Verilog HDL模块设计.12 4.2 交通灯控制器系统程序设计.13 目录 2 4.2.1 信号灯显示模块程序.13 4.2.2 分频模块程序.14 4.2.3 倒计时模块程序.14 4.2.4 计时器模块程序.15 5 软件仿真17 5.1 Quartus软件简介.17 5.1.1 Quartus软件概述.17 5.1.2 Quartus软件的设计流程.17 5.2 程序调试过程
17、.18 5.3 软件仿真结果.21 6 硬件测试与结果.23 6.1 硬件下载测试.23 6.1.1 引脚分配.23 6.1.2 硬件下载.23 6.2 硬件测试结果.24 结 论.26 参 考 文 献.27 附录 A:硬件实物图.29 附录 B:硬件测试结果.30 附录 C:交通灯控制器源程序.1 致 谢.错误!未定义书签。1 绪论 1 1 绪论 1.1 交通灯控制器的研究背景 假如路口没有交通信号灯,来往的车辆该什么时候通行,行人该什么时候穿越公路,没有明确的指示,交通将会变得一团糟,同时也一定会有许多交通事故产生。因此,交通信号灯是道路交通不可缺少的部分,维护交通秩序,保证交通安全。世界
18、上最早的交通信号灯是1858 年在英国伦敦出现的已然煤气为光源的红、蓝两色的机械扳手式信号灯。20 世纪初,一种由红绿黄三种色的圆形投光器组成的电气启动红绿灯出现在美国的大街。不久后,又出现了带控制的红外红绿灯和红绿灯。20 世纪中期,联合国对道路交通和道路标志信号协定的制定,使各信号灯的含义变得规范明确,绿灯信号代表通行,红灯信号代表禁行,黄灯信号代表警告。如今交通信号灯灯已经随处可见,人尽皆知,几乎在每个城市的每个路口都有其存在。起初,我国普遍使用的交通灯控制器基于单片机或 PLC 来设计的,功能比较简单,信号灯按照设置的顺序不断切换,有的还有计时显示。1.2 交通灯控制器的发展现状 正如
19、我们所见,现在的交通信号灯一般是设在路口比较醒目的位置,用红、绿、黄三种颜色的信号灯来指挥交通,这些信号灯是按照事先设定的顺序不断重复切换,有的还有一个倒计时的倒计时显示部分,提醒车辆还剩余的通行时间和还需要等待的时间。支干道 图 1-1 十字路口交通示意图 绿 主干道 黄 红 红 黄 绿 1 绪论 2 我国传统交通灯控制器普遍是使基于中、小规模集成电路,采用单片机和 PLC 控制芯片进行设计,功能比较简单。基于这些芯片的设计,其系统外围电路十分复杂,需要的电路元件很多,接线相应变得很复杂,并且程序修改也不灵活,控制上也不够精确,故障率比较高1。因此,交通灯控制器的设计需要改进,需要采用高密度
20、和性能强的器件和更好更优良的设计方法。1.3 交通灯控制器的发展趋势 随着经济的发展,人们生活水平的不断提高,汽车的数量是在不断地增加。车辆的不断增加,对道路交通的考验也越来越大,一定会面对更多的交通问题。作为维护交通秩序和交通灯来说,这样将对它们性能和效率提出更高的要求。随着FPGA器件不断向着更高速、更密集以及性能更强更灵活的方向发展,使其不仅与标准逻辑器件的成了旗鼓相当的竞争对手,也同掩模式专用集成电路产生竞争关系,同时也将逐渐将专用集成电路(ASIC)取而代之2。因此,交通灯控制器设计将广泛采用现场可编程逻辑器件 FPGA及硬件描述语言进行研究与设计,采用 Quartus 软件进行了电
21、路仿真和调试,对设计每个阶段进行仿真从而及时发现设计错误,并反复修改、编程,直到完全满足要求。采用这种方法设计的交通灯控制器,不仅可靠性强,而且具有实用性、实时性、易操作、人性化、造价低等特点3。同时,在交通灯控制器的设计过程中还可以加入电子信息技术、数据通信通讯技术、传感器技术、控制技术和计算机处理技术等有效应用于交通灯系统中,使交通灯控制器的功能更完善,性能更好。1.4 本课题的研究内容 通过对交通灯控制器的研究背景,发展现状以及发展趋势的了解,可见,交通灯控制器的性能和可靠性需要进一步提升,设计方法需要改进。因此,本课题是基于 FPGA的交通灯控制器设计,降低设计的成本和功耗,增强设计的
22、灵活性和可靠性。本课题的主要研究内容是在 FPGA基础上设计控制器控制交通信号灯在车流量不同的时间段内实现不同的作用,具体包括:在十字路口设置绿、黄、红三个信号灯分别控制主干道和支干道的通行;控制器控制交通信号灯按设定的顺序循环切换,并倒计时;当主干道某一方向有车辆等待而另一方向无车辆等待,该方向可以提前放行;在早上 0 点,控制器暂停交通信号灯切换;在早上6 点,控制器恢复交通信号灯正常切换。2 交通灯控制器系统设计方案论证 3 2 交通灯控制器系统设计方案论证 2.1 交通灯控制器设计方案 交通灯控制器是一个典型的数字系统设计,其设计方法也特别多,以前传统的交通灯控制器设计基本上采用单片机
23、或 PLC 等来进行设计实现,然而其外围电路的复杂和芯片本身控制不精等缺点,是的这些设计越来越不能满足设计需要。所以,在本次设计就基于性能可靠的现场可编程逻辑器件FPGA和采用硬件描述语言来进行设计,并拟定了以下两种设计方案。方案一:基于 FPGA器件,采用 VHDL语言进行设计。VHDL语言是常用的硬件描述语言之一,在数字电路设计中十分常用,深受设计者的欢迎。但是 VHDL语言素来以严谨著称,其语法要求比较严格,书写相当规范。VHDL语言进行设计比较难,主要用于在门级开关电路描述方面,其程序化的接口也不可以无限扩展。VHDL语言在国内不被大多数集成电路设计的公司使用,而在国外学术界比较流行,
24、特别是在欧洲发展得比较好。方案二:基于 FPGA器件,采用 Verilog HDL语言进行设计。Verilog HDL语言是另一种常用的硬件描述语言,定义了许多易于仿真的语法,其程序化的接口可以无限扩展,是一种功能强大的硬件描述设计语言。Verilog HDL语言与 C 语言的语法结构及其相似,简单易懂,以其精简,格式自由以及易于学习等特点在集成电路设计中深受欢迎,在产业界非常流行。2.2 交通灯控制器设计方案选择 对于初学者来说,理解 VHDL语言确实有一定的难度,要用它来进行完成一个数字电路的系统设计更是困难。做为电子专业的学生,学习过 C 语言,对 C 语言比较熟悉了解,所以理解 Ver
25、ilog HDL语言比较容易,而且其自由的书写格式,可以将思维放在电路设计本身,可以很方便完成整个系统的设计。所以,本次设计就采用方案二,基于 FPGA器件,采用 Verilog HDL语言来完成交通灯控制器设计。2.3 交通灯控制器的设计要求 设计一个由主干道和支干道汇合形成的十字路口的交通灯控制器,其设计要求包括:2 交通灯控制器系统设计方案论证 4(1)主干道和支干道各设有一个绿、黄、红三个信号显示灯,用七段数码管实现倒计时显示;(2)在每天早上 6 点至晚上 12 点之间,主干道和支干道的通行状态相互交替,主干道通行时间为 35 秒,支干道通行时间为 25 秒,在每次主干道和支干道通行
26、状态相互转换的过程中会有 5 秒的等待过渡时间,并且所有的计时都采用倒计时方式显示;(3)主支干道设有检测传感器来检测有无车辆等待,当该干道有有车量等待而另一干道无车辆,可以提前放行该干道;(4)在每天早上的 0 点到 6 点,此时间段内路上的车流量较少,主干道和支干道可以同时处于通行的状态,来往的车辆可以随时通行而不需要等待过渡。2.4 交通灯控制器的设计思路 通过对交通灯控制器的设计要求进行分析,可以发现采用 Verilog HDL语言的有限状态机的设计思路,可以很好地实现其功能。交通信号灯共具有 5 个状态:主干道通行状态 S0,主干道通行向支干道通行切换的过渡状态 S1,支干道通行状态
27、 S2,支干道通行向主干道通行切换的过渡状态 S3,主干道和支干道都通行的状态 S4。S0、S1、S2、S3 这 4 个状态是往复循环顺序切换的,S4 状态则是在 0 点到早上 6 点才会出现的状态。S0 状态时,主干道亮绿灯而支干道亮红灯,倒计时为 35 秒;S1 状态时,主干道和支干道都亮黄灯,倒计时为 5 秒;S2 状态时,支干道亮绿灯而主干道亮红灯,倒计时为 25 秒;S3 状态时,主干道和支干道都亮黄灯,倒计时为 5 秒;S4 状态时,主干道和支干道都亮黄灯,此时无倒计时。要在设定时间段内保证交通信号灯的按照设定的顺序循环切换,只需要在系统程序中增加一个 24 小时的时钟计时,即可实
28、现要求。当到达一个设定时间点时,S0 S0 S0 S0 S0 图 2-1 状态转换图 2 交通灯控制器系统设计方案论证 5 产生一个信号让交通灯灯暂停切换,直到到达另一个时间点,产生一个信号让交通灯恢复正常工作。根据设计要求,可以将交通灯控制器系统的分成四个模块:信号灯显示模块、分频模块、倒计时显示模块和计时器模块,可采用自上而下的设计方法设计。0 点 6 点 计时器 倒计时 信号灯 FPGA 图 2-2 系统原理框图 分频器 3 控制器硬件设计 6 3 控制器硬件设计 3.1 Cyclone IV 性能介绍 3.1.1 FPGA 概述 从 PAL 到 PLD 到复杂可编程逻辑器件 CPLD,
29、可编程逻辑器件取得了巨大的进步,但是仍然存在不足,例如 CPLD能够在单个器件中容纳大量的逻辑,但是不断增加逻辑数量,需要在 CPLD中不断加入 LAB(逻辑阵列模块),又需要有额外的 PI(可编程互连阵列)布线来实现所有 LAB 的连接,其连接数量会呈指数增长,直到芯片管芯的连接数量超过逻辑数量,这限制了容量的扩展4。解决方法是把 LAB 排列在网格中,从而产生了现场可编程门阵列 FPGA的概念。FPGA是在 CPLD基础上发展而来的一种现场可编程逻辑器件,对于 CPLD器件布线与容量之间的矛盾进行了改进。CPLD实现逻辑函数是采用可编程阵列来,而 FPGA则是采用查找表(LUT)来实现的,
30、相比 CPLD宏单元,它能够灵活建立函数和 LE 链,从而提高性能,减少资源浪费,进位逻辑和寄存器链布线的通用性也进一步提高了性能,增强了对资源的管理。FPGA中可以包含的查找表和触发器数量极多,从而可以实现规模更大且更加复杂的逻辑电路设计,可以避免了 CPLD的阵列结构、触发器以及 I/O端口数量上的限制。FPGA的芯片内部包含多种可编程资源:可编程逻辑单元(LE)、可编程布线、可编程 I/O口、嵌入式存储器 RAM、嵌入式乘法器、时钟以及锁相环(PLL)。对于复杂逻辑功能设计,FPGA的速率相对较高,由于 LAB 网格阵列,具有更丰富的逻辑资源。特别是对于高速通信应用,使用某些 FPGAZ
31、中的收发器成为唯一的选择。一般来说,CPLD的功耗是比较低的。近几年来,随着生产工艺的进步,FPGA的生产成本大大降低,也具有许多低功耗特性,其功耗几乎与 CPLD差不多,尤其在功能以及性能方面的优越性越来越突出,使其成为现在数字电路或系统设计的首选器件5。总之,FPGA比 CPLD等更高端,是高密度、高速度、高可靠性和低功耗的逻辑可编程器件,提供丰富的 I/O端口和触发器,结构十分灵活几乎可以满足用户的各种需求。3.1.2 FPGA 的设计流程 将 FPGA的设计方法归纳为一个简单的设计流成,Altera的全集成开发工具Quartus 软件就完全支持这一流程。FPGA的设计流程具体如下。(1
32、)源文件的编辑和编译。首先把需要输入的设计思路以文本或图形的形式表达出来,再进行排错编译,同时为进一步的逻辑综合做准备。一般常用的源程序输入方式有原理图输入方式和文本输入方式两种。(2)逻辑综合和优化。经过一列操作把源文件分解成一系列逻辑电路和对应 3 控制器硬件设计 7 关系,最后得到门级电路或更底层的电路描述文件,即生成网表文件,该网表文件与 FPGA基本结构是相对应的。(3)目标器件的布线/适配。在所选用的目标器件中建立与前面生成的网表文件相符合的基本逻辑电路的对应关系。(4)目标器件的编程下载。当前面的步骤,编译、综合、布线/适配等过程都没有出现问题,也就是说完全满足设计要求时,就可以
33、将布线/适配器所产生的配置/下载文件通过下载电缆下载到目标器件中。(5)硬件仿真与测试。在已经下载好程序的 FPGA开发板上进行测试,验证理想设计思想与实际电路之间的偏差。3.1.3 Cyclone IV E 主要特性 Cyclone IV是传承了 Cyclone系列低成本、低功耗的特性,建是立在优化的低功耗工艺基础上的设计,集成了一个可选择的低成本收发器,在降低成本的同时又能完全满足不断增长的带宽要求,是在广播、有线、无线、工业以及通信等行业领域中的低成本的小型应用的理想选择6。Cyclone IV 器件系列主要提供Cyclone IV E 及Cyclone IV GX两种型号的器件。具有最
34、低的功耗的特性的Cyclone IV E 器件,能在核电压为 1.2V 和 1.0V 的情况下使用,并且以最低的成本去实现较高的功能7。本设计所使用的 EP4CE6E22C8N芯片正是 Cyclone IV E 系列中的一种。Cyclone IV E 器件系列的体系结构包括 FPGA核心架构、I/O特性、时钟管理、外部存储器结构以及配置等内容。Cyclone IV E 器件系列采用的 FPGA核心架构与Cyclone 系列是相同,包括四输入查找表组成的 LE、存储器模块和嵌入式乘法器模块,其中存储器模块具有 9Kbit的嵌入式 SRAM存储器,可以配置成单端口、简单双端口、真双端口等,实现需要
35、的数据带宽,嵌入式乘法器模块可实现 18*18或者两个 9*9 的乘法器8。Cyclone IV E 系列器件的 I/O口支持可编程总线的保持,可编程迟延以及可编程上拉电阻等,从而实现信号完整性和热插拔的优化,还支持符合单端 I/O标准校准后的片上川航匹配或驱动阻抗匹配。Cyclone IV E 系列器件中包含高达 30 个全局时钟网络和高达 8 个 PLL,可以提供可靠的时钟管理和综合,且可以在用户模式中对 PLL 进行动态重新配置以此改变时钟频率或相位。Cyclone IV E 系列器件的外部存储器接口包括 SDR、DDR、DDDR2 SDRAM和QDRIT SRAM接口,这些接口可能分布
36、在器件的两侧或多侧,主要是为了更灵活地实现电路板设计9。Cyclone IV E 系列器件的配置是使用 SRAM单元来存储配置数据,每次上电后,配置数据就会被下载到器件中。Cyclone IV E 器件所支持的配置方案有 AS、AP、FPP 和 JTAG,其中,常用的配置方式是 JTAG。3 控制器硬件设计 8 表格 3-1 Cyclone IV E 部分器件资源 资源 型号 逻辑 单元 嵌入式 存储器Kbits 嵌入式 18*18乘法器 通用时钟(PLL)全局时钟网络 用户I/O块 最大用户I/O EP4CE6 6272 270 15 2 10 8 179 EP4CE10 10320 414
37、 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 Cyclone IV E 系列器件具有的特性,包括(1)低成本和低功耗的 FPGA核心架构;(2)逻辑单元由 6K 至 150K;(3)嵌入式存储器容量高达 6.3Mb;(4)高达 360 个 18*18 乘法器,从而使 DSP 处理密集型应用得以实现;(5)协议桥接应用,实现了小于 1.5W 的总功耗。3.
38、2 七段数码管简介 3.2.1 七段数码管概述 七段数码管是电子元件中十分常用的数字显示元件,内部共有八个发光二极管,包括小数点,主要是由代表数字笔划的七个发光二极管按照一定的组合方式实现对不同的数字的显示10。七段数码管的用途很广,特别是在电器方面得到极为广泛的应用,比如家用电器领域,电子时钟、空调、热水器等等。七段数码管除了可以显示0 到 9 的十进制数外,还可以显示十六进制等中的大写英文字母 A、B、C、D、E、F。七段数码管内部的所有二极管都由本体下的对应的接脚控制其发光。七段数码管又分为共阴极和共阳极,两者的发光原理是一样的,只是结的电源极性不同而已。共阳极的七段数码管内部所有二极管
39、的阳极是接在一起的,共用一个电源正极,在二极管的阴极接入低电平或者“0”电平,就可以点亮。根据需要显示的数据,对七段数码管中需要用的二极管的接脚接低电平,其他二极管接脚接高电平,即可显示该数字,例如abcdefg分别为 1001111,数码管显示结果为“1”。共阴极的七段数码管与共阳极的七段数码管相反,内部所有二极管的阴极是接在一起的,共用一个电源负极,在二极管的阳极接入高电平或者“1”电平,就可以点亮。同样,根据需要现实的数据,对七段数码管中需要用到的二极管的接脚接高电平,其他二极管接脚接低电平,即可显示该数字,例如 abcdefg分 3 控制器硬件设计 9 别为 0110000,数码管显示
40、的结果为“1”。在本次设计中倒计时显示所采用七段数码管就是共阳极的七段数码管,所以根据需要对七段数码管的接脚接分别接入低电平和高电平,就能控制二极管的亮灭,从而使其显示数字。3.2.2 七段数码管动态显示原理 七段数码管动态显示介面虽然在单片机中应用最为广泛,但是对于 FPGA来说依然以相同的方式来实现动态显示。动态驱动基本原理是是将所有七段数码管内部代表七个笔划“a,b,c,d,e,f,g”的二极管的同名端连在一起,再为每个七段数码管的公共极增加位选通控制信号,位选通由各自独立的输入口控制,当 FPGA有字形码输出时,所有七段数码管都同时接收到相同的字形码,但是到底需要哪一个七段数码管来显示
41、出字形,就要取决于 FPGA 对位选通控制信号的输入,所以只要把需要用于显示的七段数码管的位选通信号设置为选通,则该位的数码管就能够显示出由字形码所代表的字形,同时没有被选通的七段数码管就不会进行显示。通过分时段来轮流控制一个个七段数码管的公共极,就能够使各个七段数码管通过轮流受到的控制而进行显示,这就是动态驱动。在轮流受控显示的过程中,每个七段数码管点亮的时间是极短暂的,再加上发光二极体余辉效应和人的视觉暂留现象,尽管各位七段数码管实际上不是同时点亮的,但是通过快速的扫描,还是给人带来是一组稳定的数字显示的视觉效果,并没有闪烁的感觉,这样就使得动态显示和静态显示产生一样的结果。3.3 交通灯
42、控制器各模块性能分析 3.3.1 信号灯显示模块的性能分析 信号灯显示模块是交通灯控制器系统中最简单的部分,在主干道和支干道分别设有红、黄、绿三个颜色的信号灯,红灯表示禁止通行,黄灯表示过渡,绿灯表示允许通行。信号灯在控制器的控制作用下工作,指挥交通。一般工作情况是,主干道绿灯,同时支干道红灯,表示主干道通行而支干道禁行;主干道红灯,同.f g e d c b a 图 3-1七段数码管引脚定义 dp 3 控制器硬件设计 10 时支干道绿灯,表示主干道禁行而支干道通行;主干道和支干道都亮黄灯,表示主干道和支干道的通行转换的过渡。当主支干道其中一个方向有车辆等待时,可以提前放行,即切换到该方向通行
43、状态。另外,在深夜零点到凌晨六点之间信号灯则在时钟控制作用下,停止按顺序切换状态的工作情况,主、支干道同时黄灯,且无倒计时显示,则表示在特殊时段主支干道都可以通行。3.3.2 分频模块的性能分析 分频模块的作用是为整个交通灯控制器系统提供时钟脉冲,根据所选择的器件提供的内部时钟频率,进行分频得到需要的时钟信号。本次设计所使用的 FPGA器件为 Cyclone IV系列的 EP4CE6E22C8N开发板,其内部的时钟频率为48MHz,此时就需要利用分频模块将其分频产生倒计时模块和时钟模块需要的 1Hz 时钟信号。方法一,48MHz 频率的一个时钟周期约为 20.8ns,计数 48000000 次
44、就是 1s,利用一个计数器计数到24000000就反转一次,即可得到时钟周期为1s的时钟信号。方法二,将 48MHz频率经过 48000 分频得到 1KHz 时钟信号,1KHz 再经过 1000分频,即可得到 1Hz 时钟信号。不同器件提供内部时钟频率是不一样的,但是分频原理是相同的,所以不管是怎样的时钟频率,或是想得到什么样的时钟信号,只要稍作改变就能满足需要。3.3.3 倒计时显示模块的性能分析 倒计时显示模块是交通信号灯处于正常工作时对各种信号的计时,采用减计时的方法计时,并利用七段数码管来对其进行显示。主干道处于通行状态且时间为35 秒,则主干道亮绿灯,同时支干道亮红灯,倒计时显示从
45、35 秒开始减计数,直到减到零,计时结束切换下一状态。主干道通行向支干道通行转换的过渡的时间为 5 秒,则主干道和支干道都亮黄灯,倒计时从5 秒开始减计数,直到减到零,计时结束切换到下一状态。支干道处于通行状态且时间为 25 秒,则支干道亮绿灯,48000 分频 图 3-2 分频模块原理方1KHz 时钟频率 48MHz 计数器 48000000 次 1Hz 时钟频率 48MHz 1000 分频 1Hz 3 控制器硬件设计 11 同时主干道亮红灯,倒计时显示从 25 秒开始减计时,直到减到零,计时结束又切换下一状态。支干道通行向主干道通行转换的过渡时间为 5 秒,则支干道和主干道都亮黄灯,倒计时
46、从 5 秒开始减计时,直到减到零,计时结束切换下一状态。交通信号灯工作状态不断切换,倒计时也相应切换。支干道的交通信号灯与主干道干道交通信号灯的工作状态是相对应的,若主干道绿灯则支干道红灯,若主干道红灯则支干道绿灯,若主干道黄灯则支干道也黄灯,并且为了节约资源,主干道和支干道可以共用一个倒计时器进行显示。当交通信号灯停止切换时,倒计时部分停止工作,直到交通信号灯恢复切换,它也相应开始工作。3.3.4 计时器模块的性能分析 计时器模块是交通灯控制器系统中控制交通信号灯灯工作情况的部分,是一个24 小时的计时器。此部分就是对 1Hz 时钟信号的一个加计数器,从秒部分开始加,加到 60 秒就向分部分
47、进位,分部分加到 60 分就向时部分进位,时部分加到 24 小时就清零,从新开始计时。从功能上来说,计时两个模 60 的计数器和一个模 24的计数器。每当计时器计时到 24 点时,就发出一个信号去停止交通信号灯正常切换工作状态;每当当计时器计时到 6 点时,就发出一个信号去恢复交通信号灯正常切换的工作状态。时钟信号 继 续 计 数 继 续 计 数 否 是 是 继续计数 否 否 是 秒计时 分计时 时计时 是否满 60 是否满 60 是否满 24 清零重新计数 图 3-3 计时器工作原理图 4 控制器软件设计 12 4 控制器软件设计 4.1 Verilog HDL简介 4.1.1 Verilo
48、g HDL概述 Verilog HDL 是常用硬件描述语言的一种,是对数字系统硬件的结构和行为通过文本形式来进行描述。它主要用于多种抽象设计层次的数字系统建模,可按层次来描述数字系统,从算法级、RTL级、门级到开关级。该语言最初是作为一种专用的语言,由 Gateway Design Automation 公司于 1983 年为其模拟器产品而开发的硬件建模语言。由于其便于使用且实用的特点逐渐被众多设计者接受,于 1990年被推向公众领域,于 1995 年正式成为 IEEE 标准。Verilog HDL 具有以下描述能力:(1)设计的行为特性;(2)设计的数据流特性;(3)设计的结构组成;(4)包
49、含响应监测、设计验证的时延与方波产生机制。这些全都使用同一种建模语言。另外,Verilog HDL语言还提供了编程语言接口,通过此接口可在模拟和验证期间从设计的外部访问设计,包括模拟时的具体控制与运行。Verilog HDL语言不但定义了语法,还对每个语法结构也都定义了清晰的模拟与仿真语义。所以,用该语言编写的模型可用 Verilog仿真器来验证。Verilog HDL 句法根源出自 C 语言,从 C 语言中继承了很多种操作符合结构,易学易懂。当然,为了对数字电路建模,Verilog HDL也规定了一套自己的完整地语法结构,还提供了扩展的建模能力。Verilog HDL的建模实质是使用硬件描述
50、语言对数字电路行为描述,描述数字电路的基本要素的特性以及相互之间的关系。4.1.2 Verilog HDL模块设计 Verilog HDL的建模重点是模块,可以使用一个或者多个模块对数字电路建模。模块是 Verilog HDL的基本描述单位,用于描述某一设计的功能或者结构以及和其他模块间通信的外部端口。一个模块的设计如下:(1)模块的内容是嵌在 module 与 endmodule这两个语句之间的。每个模块可以实现特定的功能,模块之间可以进行层次嵌套,所以可以将大型的复杂的数字电路的设计划分成一个个小模块来实现特定的功能,再通过顶层模块来调用子模块以实现整体的功能。(2)模块内容包括接口描述及