1、陕西理工学院毕业设计 基于VHDL交通灯控制电路设计Pride【kwg】( 电信工程系 电子信息工程专业,2007级4)指导教师: 摘要传统的交通灯控制系统多数由单片机或PLC实现,本文介绍的是基于EDA技术设计交通灯系统的一种方案。通过对系统进行结构分析,采用了层次化的设计方法,给出了各个模块的VHDL程序,利用Max+Plus对应用程序进行了仿真,并给出了相应的仿真结果。在用系统硬件描述语言进行电路设计时,应充分认识到VHDL语言的特点,从设计思想、语句运用及描述方法上等多方面对电路进行优化设计,并使用规模更小的可编程逻辑芯片,可以降低系统的成本。关键词交通信号灯; 系统硬件描述语言; 仿
2、真Design of traffic lights control circuit based on VHDLKang WeiGang(Grade 07,Class 4,Major electronics and information engineering,Electronics and information engineering Dept.,Shaanxi University of Technology,Hanzhong 723000,Shaanxi)Tutor: He WeiAbstract:Traditional traffic light control system is
3、mostly achieved by a single chip or PLC,this paper introducts a scheme of the design of traffic signal systems based on EDA technology. Each module is given VHDL program by ananlyzing the structure of the system and using a hierarchical design method,and it applies Max+Plus on the simulation of appl
4、ications,and the corresponding simulation results are gained. When design the circuit with VHDL, we should be fully aware of the characteristics of VHDL language and optimize the circuit design from the design, the use of statements and methodsof description,etc.Through optimizing circuit design,we
5、can use smaller programmable logic chip,thereby reducing system cost.Key words:traffic light ; VHDL ;simulation目录引言11 概述21.1 交通灯的背景21.2 交通灯的研究目的32 EDA技术的介绍42.1 EDA技术42.1.1 EDA技术的发展.42.1.2 EDA技术与传统电子设计方法的比较.42.2 VHDL52.3 MAX+PLUS.62.4 CPLD.73 交通灯控制系统工作原理83.1 设计方案及论证83.2 具体设计及模块划分93.3 工作原理103.4 交通灯工作示
6、意图94 系统设计114.1 顶层电路设计.114.2交通灯主要控制模块. .114.3定时单元以及显示控制、译码电路 .34.4各模块及整体仿真结果. 35 硬件验证.18总结.19致谢.20参考文献21附录A 英文文献22附录B 各模块源程序29附录C 硬件实物图38引言 城市交通是城市活动的重要组成部分,犹如人体的动脉,维系着整个城市的正常运转。随着人口的增多、科技的进步和城市规模的扩大,交通方式由原来简单的车马舟船,演变为现在的火车、汽车、地铁、飞机等各种综合型的运输方式。交通作为现代城市的重要体现和标志,见证着每一个城市的历史与文明、发展与兴衰。随着城市经济的飞速发展、城市化进程的加
7、快,大量的人口涌入城市,造成市区人口稠密,社会经济发展、城市化和机动化进程的加快,使许多中心城市的交通在飞速发展的同时也对交通设施的建设提出了更高的要求。以前普通的交通控制器能根据事先给定的时间进行通道的通禁控制,以达到自动控制的目的,但由于如今车辆的迅速增多,给城市交通增加了严重的负担,而交通灯在其中正扮演着越来越重要的角色。因此,要求寻找一种可以随时针对通道上车辆的密集程度来控制和调节主支干道的通禁时间,从而减少不合理的堵车现象的发生。目前EDA技术发展迅速,是由于EDA技术主要是依靠功能强大的电子计算机,在EDA工具软件平台上,对以硬件描述语HDL(Hardware Descriptio
8、nLanguage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编辑、化简、分割、综合、优化和仿真、直至下载到可编程逻辑器件CPLD/FPGA或专用集成电路ASIC(Application Specific IntegratedCircuit)芯片中,实现既定的电子电路设计功能1。EDA技术使得电子电路设计者的工作仅限于利用硬件描述语言和EDA软件平台来完成对系统硬件功能的实现,极大地提高了设计效率,缩短了设计周期,节省了设计成本2。实现路口交通灯系统的控制方法很多,可以用标准逻辑器件,可编程控制器PLC,单片机等方案来实现。但是这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度
9、上增加了功能修改及系统调试的困难。因此,在设计中采用EDA技术,应用目前广泛应用的VHDL硬件电路描述语言,实现交通灯系统控制器的设计,利用MAX+PLUS集成开发环境进行综合、仿真,并下载到CPLD复杂可编程逻辑器件中,完成系统的控制作用。1 概述1.1交通灯的背景早在1850年,城市交叉口处不断增长的交通就引发了人们对安全和拥堵的关注。世界上第一台交通自动信号灯的诞生,拉开了城市交通控制的序幕,1868年,英国工程师纳伊特在伦敦威斯特敏斯特街口安装了一台红绿两色的煤气照明灯,用来控制交叉路口马车的通行,但一次煤气爆炸事故致使这种交通信号灯几乎销声匿迹了近半个世纪。1914年及稍晚一些时候,
10、美国的克利夫兰、纽约和芝加哥才重新出现了交通信号灯,它们采用电力驱动,与现在意义上的信号灯已经相差无几。1926年英国人第一次安装和使用自动化的控制器来控制交通信号灯,这是城市交通自动控制的起点。早期的交通信号灯使用“固定配时”方式实行自动控制,这种方式对于早期交通流量不大的情况曾起过一定的作用。但随着汽车工业的发展、交通流量增加、随机变化增强,采用以往那种单一模式的“固定配时”方式已不能满足客观需要,于是一种多时段多方案的信号控制器开始出现并逐步取代了传统的只有一种控制方案的控制器。除了多时段多方案定时控制的使用,为了避免各交叉路口之间“各自为政”的孤立控制方式对交通流造成的频繁停车,还必须
11、把相邻的交叉路口作为一个系统来统一地加以控制。1928年,上述系统经过改进,形成“灵活步进式”定时系统;由于它简单、可靠、价格便宜,很快在美国推广普及。这种系统以后不断改进、完善,成为当今的协调控制系统。20世纪30年代初,美国最早开始用车辆感应式信号控制器,之后是英国,当时使用的车辆检测器是气动橡皮管检测器。车辆感应控制器的特点是它能根据检测器测量的交通流量来调整绿灯时间的长短,使绿灯时间更有效地被利用,减少车辆在交叉口的时间延误,比定时控制方式有更大的灵活性。车辆感应控制的这一特点刺激了车辆检测器技术的发展。继气动橡皮管式检测器之后,雷达、超声波、光电、地磁、电磁、微波、红外以及环形线圈等
12、检测器相继问世。当今在城市道路交通自动控制、交通监测和交通数据采集系统中,应用最广的是环形线圈车辆检测器。超声波检测器主要在日本等少数国家得到广泛应用。计算机技术的出现为交通控制技术的发展注入了新的活力,1952年,美国科罗拉多州丹佛市首次利用模拟计算机和交通检测器实现了对交通信号机网的配时方案自动选择式信号灯控制,而加拿大多伦多市于1964年完成了计算机控制信号灯的实用化,建立了一套由IBM650型计算机控制的交通信号协调控制系统,成为世界上第一个具有电子数字计算机城市交通控制系统的城市。这是道路交通控制技术发展的里程碑。伴随着城市交通信号控制系统的迅速发展。人们认识到,要更好地提高城市管理
13、水平,不仅仅依靠硬件设备的更新和改进,还必须同时在控制逻辑和方法上有所突破,即城市交通的区域协调控制。传统的城市道路交通控制指的是区域交叉口信号灯控制,而城市交通的区域协调控制,是在整个城市范围内对交通进行控制,这无论是从理论角度还是实践角度,都是一个极其复杂的大系统控制问题。国外对城市区域交通控制的研究,开始于20世纪60年代初。1967年,英国运输与道路实验室(TRRL)成功开发出TRANsYT(TraffioNetworkStudyTools)交通控制系统,后来又在TRANsYT的基础上开发了SEOOT(Split Cyele and Offset OPtimization Techni
14、que)系统。澳大利亚在70年代末也开发了基于配时方案实时选择方法来实现路网协调控制的SCAT(Sydney Coordinated Adaptive Traffic Method)系统。这些系统己经在西方国家的城市网络交通中取得了成功的应用。进入20世纪80年代后期,随着城市化进程的加快和汽车的普及,城市交通拥挤、阻塞现象日趋恶化,由此引发的事故、噪声和环境污染己成为日益严重的社会问题,交通问题成为困扰世界各国的普遍性难题。人们对交通系统的规模复杂性和开放性特征有了更深一层的认识,并开始意识到单独考虑车辆或道路方面很难从根本上解决交通拥挤现象,只有把路口交通流运行与信号控制的藕合作用综合考虑
15、,且赋以现代的各种高新技术方可彻底消除有关问题。于是,智能交通系统(ITS)应运而生,并得到迅猛发展。除在技术和功能上得到增强和完善的SCOOT和SCATS以外,STREAM、ITACA、MOTION、RT-TRACS、SURFZ000、PRODYN和UTOPIA等新一代城市交通控制系统相继推出并投入应用。 目前城市交通控制研究的新发展主要体现在城市交通网络的各个方面:区域交通信号灯和城市快速公路匝道口的新的控制方法上;实现区域和快速公路的集成控制;采用动态路由导航与交通网络控制结合以实现先进车辆控制系统AvcS为主的智能交通系统(ITS);以实现先进交通管理系统ATMS和先进驾驶员信息系统A
16、TIS为主的城市多智能体交通控制系统;以及一些辅助的交通策略如道路自动计费、公共交通优先等。可以说,在近百年的发展中,道路交通信号控制系统经历了无感应控制到有感应控制、手动控制到自动控制再到智能控制、单点控制(点控)到干线控制(线控)再到区域控制和网络控制(面控)的过程。 1.2 交通灯的研究目的不同的城市存在着不同的城市问题,但其中有一个共同的问题就是城市交通。在交叉路口如何解决混合交通流中的相互影响,就是解决问题的关键所在。随着我国经济的稳步发展,人民生活水平的日渐提高,越来越多的汽车进入寻常百姓的家庭,再加上政府大力地发展公交、出租车行业,道路上的车辆越来越多,使得城市的交通成为了一个主
17、要的问题。严重的拥堵现象,逐渐恶化的城市环境,都给广大市民带来了许多困扰。可想而知,一个没有交通灯的社会将是何种样子,那必将是交通秩序混乱,人们的出行安全没有了任何保障,社会秩序也必将混乱不堪。但是以前的交通灯系统根本无法满足现在社会的需求,所以需要运用更新的技术来设计。本次设计是通过设计交通灯控制器,了解EDA技术,掌握VHDL硬件描述语言的设计方法和思想,巩固和综合运用所学过的计算机组成原理知识,提高分析、解决计算机技术实际问题的独立工作能力。2 EDA技术的介绍2.1 EDA技术2.1.1 EDA技术的发展现代电子设计技术的核心是EDA(Electronic Design Automat
18、ion)技术。EDA技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现3。EDA(电子系统设计自动化)技术是20世纪90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造),CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。现代EDA技术就是以让算机为工具,在EDA软件平台上,根据硬件描述语言HDL完成的设计文件,能自动地完成用软件方式描述的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。设计者的工作仅限于利用软件的方式来完
19、成对系统硬件功能的描述,在EDA工具的帮助下和应用相应的FPGA/CPLD器件,就可以得到最后的设计结果。尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。可见利用EDA技术进行电子系统的设计,具有以下几个特点:(1)用软件的方式设计硬件;(2)用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的; (3)采用自顶向下(top-down)的设计方法;(4)设计过程中可用有关软件进行各种仿真;(5)系统可现场编程,在线升级;(6)整个系统可集成在一个芯片上,体积小、功耗低、可靠性高 4。EDA技术涉及面很广,内容丰富,主要应掌握如下四个方面的内容:(1)大规模可
20、编程逻辑器件; (2)硬件描述语言;(3)软件开发工具;(4)实验开发系统。其中大规模可编程逻辑器件是利用EDA技术进行电子系统设计的载体,硬件描述语言是利用EDA技术进行电子系统设计的主要表达手段,软件开发工具是利用EDA技术进行电子系统设计的智能化的自动设计工具,实验开发系统则是利用EDA技术进行电子系统设计的下载工具及硬件验证工具5。 硬件描述语言(HDL)是相对于一般的计算机软件语言如C、Pascal而言的。HDL是用于设计硬件电子系统的计算机语言,它描述电子系统的逻辑功能、电路结构和连接方式6。HDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的
21、能力,并在语言易读性和层次化结构化设计方面,表现了强大的生命力和应用潜力7。用HDL进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。2.1.2 EDA技术与传统电子设计方法的比较与传统的电子设计方法相比,EDA技术对于复杂电路的设计和调试都比较简单,如果某一过程存在错误,查找和修改起来比较方便,而且EDA技术的可移植性很强。由于可编程逻辑器件性能价格比的不断提高,开发软件功能的不断完善,而且由于用EDA技术设计电子系统具有用软件的方式设计硬件,设计过程中可用有关软件进行各种仿真,系统可现场编程,在线升级,整个系统可
22、集成在一个芯片上等特点,比起传统的设计方法可编程逻辑器件更符合现在数字电路设计的需求。传统机电设备的电器控制系统,如果利用EDA技术进行重新设计或进行技术改造,不但设计周期短、设计成本低,而且将提高产品或设备的性能,缩小产品体积,提高产品的技术含量,提高产品的附加值8。2.2 VHDL(1) VHDL简介VHDL是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。 VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类
23、似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分)设计9。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。(2) VHDL的特点 功能强大、设计灵活VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。V
24、HDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。 支持广泛、易于修改由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。 强大的系统硬件描述能力VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以
25、准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。 独立于器件的设计、与工艺无关 设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。 很强的移植能力VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。 易于共享和复用 VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,
26、就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。(3) VHDL的优势 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟10。 VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能,符合市场大规模系统、高效、高速的完成且必须有多人甚至多个代发组共同并行工作才
27、能实现的需求。 对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。 VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必知道最终设计实现的目标器件是什么,而进行独立的设计。2.3 MAX+PLUS(1) 软件简介 Max+plus是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的
28、设计环境,是设计者能方便地进行设计输入、快速处理和器件编程11。(2) 软件开发系统的特点 开放的界面 Max+plus支持与Cadence,Exemplarlogic,Mentor Graphics,Synplicty,Viewlogic和其它公司所提供的EDA工具接口。 与结构无关 Max+plus系统的核心Complier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。 完全集成化 Max+plus的设计输入、处理与较验功能全部集成在
29、统一的开发环境下,这样可以加快动态调试、缩短开发周期12。 丰富的设计库 Max+plus提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function)。 硬件描述语言(HDL) Max+plus软件支持各种HDL设计输入选项,包括VHDL、Verilog HDL和Altera自己的硬件描述语言AHDL。 2.4 CPLD(1)CPLD简介CPLD主要是由可编程逻辑宏单元(MC,Macro Cell)围绕中心的可编程互连矩阵单元组成。其中MC结构较复杂,并具有复杂的I/O单元互连结构,可由用户根
30、据需要生成特定的电路结构,完成一定的功能。由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。(2)CPLD的发展历史及应用领域20世纪70年代,最早的可编程逻辑器件-PLD诞生了。其输出结构是可编程的逻辑宏单元,因为它的硬件结构设计可由软件完成(相当于房子盖好后人工设计局部室内结构),因而它的设计比纯硬件的数字电路具有很强的灵活性,但其过于简单的结构也使它们只能实现规模较小的电路。为弥补PLD只能设计小规模电路这一缺陷,20世纪80年代中期,推出了复杂可编程逻辑器件-CPLD。目前应用已深入网络、仪器仪表、汽车
31、电子、数控机床、航天测控设备等方面。(3)CPLD器件的特点它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中。几乎所有应用中小规模通用数字集成电路的场合均可应用CPLD器件。CPLD器件已成为电子产品不可缺少的组成部分,它的设计和应用成为电子工程师必备的一种技能。3 交通灯控制系统方案论证3.1 设计方案及论证(1)设计方案方案一:采用小规模集成电路,用纯硬件电路搭建。整个交通灯控制系统主要
32、由时钟产生电路、主控制电路、计时控制电路和交通信号显示电路组成。时钟产生电路是该系统中定时器和控制器的标准时钟信号源。译码器输出两组信号灯的控制信号,经驱动电路驱动信号灯工作。时钟脉冲产生电路利用晶振,它可以发出连续脉冲从而控制两片74LS161组成的计时电路的CLK端。它的周期T=0.7(R1+R2)C,其周期约为1秒。主控制器是系统的主要部分,由它控制其他电路之间的协调工作。系统的原理框图如图3.1所示:A车道信号灯B车道信号灯倒计时显示器逻辑控制电路主控制器计时控制电路预置数产生电路时钟产生电路图3.1 方案一原理框图方案二:采用单片机来实现。在整个系统设计当中,以AT89C52单片机为
33、核心,为使各模块稳定工作,采用单片机控制模块提供电源,节约成本,但输出功率不高。复位电路部分,考虑到程序的简洁,避免冗长,采用按键复位,在芯片的复位端口外接复位电路,通过按键对单片机输入一个高电平脉冲,达到复位目的。输入信号部分,直接在I/O口接上按键开关,精简和优化电路,该系统对于交通灯及数码管的控制只用单片机本身的I/O口就可以实现,显示电路采用共阳数码管。整个系统组成框图如图3.2所示:AT89C52单片机数码管倒计时显示晶振电路复位电路各车道信号灯图3.2 方案二系统组成框图方案三:采用可编程逻辑器件来实现该设计方案以CPLD器件为核心,用VHDL编程实现各计时单元以及控制电路的功能,
34、在Max+Plus 软件上仿真调试,显示电路采用7段得共阴数码管。系统组成框图如图3.3所示:标准信号各定时电路显示控制电路译码显示电路信号灯控制电路信号灯图3.3 系统组成框图(2)方案论证方案一采用的是集成硬件电路的搭建,各个模块之间的接口很难保证,而且用到大量芯片来搭建各个模块,整个电路系统体积相对较大,增加了系统的调试难度,不满足现代社会发展的需求。方案二采用的以单片机为核心,电路整体简单,扩展性良好,很大程度上降低了调试难度,但是不满足本次课题基于VHDL语言的要求,所以不采用。方案三以CPLD器件为核心,以VHDL语言为基础,编程具有很大的灵活性,而且这种语言也易于掌握和理解,调试
35、和修改都比较容易,满足课题的要求,所以最终选择方案三。3.2 具体设计以及模块划分设计方案:该设计分为6个基本模块:标准信号电路、信号灯控制电路、信号灯、各定时单元电路、显示控制电路、译码显示电路,组成框图如上图3.3。标准信号为整个电路提供1Hz信号,信号灯控制电路控制8路灯的亮灭,定时电路分为45s、10s、5s、60s定时单元,分别控制8路灯的亮灭时间,显示控制电路控制每一路灯的倒计时显示时间,译码后通过数码管显示。 3.3 工作原理交通灯的亮灭规律为:甲车道的绿灯亮,乙车道的红灯亮,甲车道通车,经45s后,甲车道绿灯灭,甲车道左拐灯亮,经10s后,甲车道黄灯开始闪烁,同时乙车道黄灯开始
36、闪烁,闪烁5s后,甲车道红灯亮,而同时乙车道的绿灯亮,乙车道开始通车,经45s后,乙车道绿灯灭,乙车道的左拐灯亮,经10s后,甲乙车道黄灯同时开始闪烁。闪烁5s后,再切换到甲车道,重复上述过程。在试验箱开始表示甲路的绿色发光二极管亮45s,然后依次是表示左拐的蓝色二极管亮10s和黄色二极管亮5s,此过程乙路的红色二极管亮60s;此后乙路的绿色发光二极管,蓝色发光二极管和黄色发光二极管依次亮45s、10s、5s,此过程甲路红色发光二极管亮60s。重复以上过程。在试验过程中的四个数码管,分两个为一组,前一组表示甲路的倒计时时间,后一组表示乙路的倒计时时间。 3.4 交通灯工作示意图十字路口的东西方
37、向和南北方向分别安装红、绿、黄、蓝交通信号灯,设置示意图如图3.4所示。 南北方向和东西方向各设四路信号灯,分别代表红灯、黄灯、绿灯、左拐灯。交通规则明确显示必须按照交通指示灯来执行,尤其是左拐,只有在左拐灯亮的时候才可以左拐。图3.4只是模拟的交通示意图,但是结合上述原理很容易理解。甲路乙路图3.4交通灯工作示意图4 系统设计4.1顶层电路设计 交通灯控制器的顶层电路图是采用硬件描述语言设计的一个复杂电路系统,而且采用自顶向下的设计思想,将系统按功能逐层分割的层次化设计方法。在顶层设计中,要对内部各功能模块的连接关系和对外的接口关系进行描述,而功能模块实际的逻辑功能和具体的实现形式则由下一层
38、模块来描述。 系统的顶层电路如图4.1,CLK为整个电路提供1Hz的标准信号,用四个定时单元60s 、45s、10s、5s分别控制四盏交通指示灯的倒计时显示时间,交通灯控制部分JTDKZ控制交通灯的每一种状态,显示控制部分XSKZ部分主要控制交通灯的亮灭时间,图中译码器是47译码器,译码后数据输出到共阴数码管。图4.1 顶层电路图4.2 交通灯主制模块主要控制部分分别列出四种颜色灯的亮灭状态,分为六种状态A、B、C、D、E、F,每种状态的持续时间也即是对应控制每一路的四种灯亮的时间。如图4.2交通灯控制模块生成的器件,CLK是输入标准时钟信号,AR、AY、AG、AL为输出信号控制甲车道的四盏指
39、示灯,BR、BY、BG、BL为输出信号控制乙车道的四盏指示灯,部分程序如下: entity jtdkz is port(clk:in std_logic; ar,ay,ag,al,br,by,bg,bl:out std_logic); -定义各路信号灯 end entity jtdkz; architecture art of jtdkz is type state_type is(A,B,C,D,E,F); -信号灯的亮灭状态分为六种 signal state:state_type; begin cnt:process(clk)is variable s:integer range 0 to
40、 60; -整形变量s范围0到60 when A=ar=0;ay=0;ag=1;al=0; -A状态各路灯的亮灭 br=1;by=0;bg=0;bl=0; if s=45 then -a路绿灯亮状态持续45s state=B;clr:=0;en:=0; else state=A;clr:=1;en:=1;4.3 定时单元以及显示控制、译码电路(1)45s定时单元控制两路绿灯的显示时间,从DOUT45端口输出到显示控制模块的AIN45 端口,45s定时单元模块生成器件如图4.3所示,EN45A、EN45B分别甲路和乙路绿灯的使能信号控制应该哪一路的绿灯亮。45s定时单元主要的VHDL程序段如下:
41、entity cnt45s is port (clk,en45a,en45b:in std_logic; 输入的标准时钟和使能信号 dout45:out std_logic_vector(7 downto 0);-输出8位二进制数end entity cnt45s;architecture art of cnt45s is signal cnt6b:std_logic_vector(5 downto 0);beginprocess(clk, en45a,en45b) is begin if(clkevent and clk=1) then if en45a=1or en45b=1 then c
42、nt6b=cnt6b+1;-控制输出数据 else cnt6b=000000;(2)60s定时单元控制两路红灯的显示时间,从DOUT60端口输出到显示控制模块的AIN60 端口,60s定时单元模块生成器件如图4.4所示,EN60A、EN60B分别甲路和乙路红灯的使能信号控制应该那一路红灯亮。60s定时单元的主要程序段如下:entity cnt60s is port (clk,en60a,en60b:in std_logic; -输入的标准时钟和使能信号 dout60:out std_logic_vector(7 downto 0);-输出8位二进制数end entity cnt60s;arch
43、itecture art of cnt60s is signal cnt6b:std_logic_vector(5 downto 0); begin process(clk, en60a,en60b) is begin if(clkevent and clk=1) then if en60a=1or en60b=1 then cnt6b=cnt6b+1; -使能信号控制 else cnt6b=000000;(3)10s定时单元控制两路左拐灯的显示时间,从DOUT10端口输出到显示控制模块的AIN10 端口,10s定时单元模块生成器件如图4.5所示,EN10A、EN10B分别甲路和乙路红灯的使能
44、信号控制应该那一路红灯亮。10s定时单元的主要程序段如下:entity cnt10s is port (clk,en10a,en10b:in std_logic; -输入的标准时钟和使能信号 dout10:out std_logic_vector(7 downto 0); -输出8位二进制数end entity cnt10s;architecture art of cnt10s is signal cnt4b:std_logic_vector(3 downto 0); begin process(clk, en10a,en10b) is begin if(clkevent and clk=1)
45、 then if en10a=1or en10b=1 then cnt4b=cnt4b+1;-使能信号的控制 else cnt4b=0000;(4)5s定时单元控制两路黄灯的显示时间,从DOUT5端口输出到显示控制模块的AIN5 端口,5s定时单元模块生成器件如图4.6所示,EN5A、EN5B分别甲路和乙路红灯的使能信号控制应该那一路红灯亮。5s定时单元的主要程序段如下:entity cnt5s is port (clk,en5a,en5b:in std_logic; -输入的标准时钟和使能信号 dout5:out std_logic_vector(7 downto 0); -输出的8位二进制数end entity cnt5s;architecture art of cnt5s is signal cnt3b:std_logic_vector(2 downto 0); begin process(clk, en5a,en5b) is begin if(clkevent and clk=1) then if en5a=1or en5b=1 then cnt3b=cnt3b+1;-使能信号的控制