交通灯毕业设计.docx
- 文档编号:24144093
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:56
- 大小:976.89KB
交通灯毕业设计.docx
《交通灯毕业设计.docx》由会员分享,可在线阅读,更多相关《交通灯毕业设计.docx(56页珍藏版)》请在冰豆网上搜索。
交通灯毕业设计
引言
随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋进步和完善,推动了数字系统设计的迅猛发展。
电子设计自动化(ElectronicDesignAutomatic,EDA)工具给电子设计带来了巨大的变革,尤其是硬件描述语言的出现和发展,解决了传统用电路原理图设计大系统工程时的诸多不便,成为电子电路设计人员的最得力的助手。
EDA技术是依靠功能强大的电子计算机,在EDA工具软件平台上,对以硬件描述语言HDL(HardwareDescriptionLanguage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编辑、化简、分割、综合、优化和仿真,直至下载到可编程逻辑器件CPLD/FPGA或专用集成电路ASIC(ApplicationSpecificIntegratedCircuit)芯片中,实现既定的电子电路设计功能。
EDA技术使得电子电路设计者的工作仅限于利用硬件描述语言和EDA软件平台来完成对系统硬件功能的实现,极大提高了设计效率,缩短了设计周期,节省了成本。
实现路口交通灯系统得控制方法很多,可以用标准逻辑器件,可编程控制器PLC,单片机等方案来实现。
但是这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难,因此,在设计中采用EDA技术,应用目前广泛应用的VHDL硬件描述语言,实现交通灯系统控制器的设计,利用Max+PlusII集成开发环境进行综合设计、仿真,完成系统的控制作用。
随着经济和社会的发展,汽车的数量近几年迅速增长,而道路的建设一时很难跟上,舍得交通拥塞现象在许多城市普遍存在。
因此,如何充分利用现有的交通资源,保证安全畅通成为迫切需要解决的问题。
目前,城市道路交叉路口的红绿灯基本上都是实行定时控制,即不管车流量情况如何,每个方向的亮灯的时间是不变(预先设定)的。
这样,就造成了道路资源的浪费,加重了道路交通的压力。
为了有效的利用现有的交通资源,针对道路车流量的不同,本文提出了根据车流量来决定亮灯时间,并采用VHDL硬件描述语言和有限状态机的设计方法,设计了交叉路口交通信号灯无人自动管理的控制系统。
该系统可充分利用现有交通资源,缓解城市交通压力。
1设计方案
1.1设计方案选择论证
方案一:
利用单片机实现交通灯控制系统,系统可采用MSC-51系列单片机Intel8031和可编程并行I/O接口芯片为中心器件来设计交通灯控制器,实现能根据实际车流量,通过8031芯片的P1口设置红、绿灯燃亮时间的功能;系统能根据实际车流量情况进行东西和南北方向的切换,通过数码管显示其对应的时间,采用点亮发光二极管模拟交通灯的实际情况。
方案二:
利用一种基于可编程技术的交通信号灯系统,在MAX+PlusⅡ开发环境下采用了VHDL语言来实现自动交通控制系统。
本设计采用自顶向下的设计方法,即从系统总体要求出发,从整体上规划整个系统的功能和性能,自顶向下地逐步将设计内容细化,然后对系统进行划分,以将其分解为规模较小、功能较为简单的局部模块,并确定他们之间的相互关系。
最后完成系统的整体设计.
1.2设计方案的确定
在单片机设计方法中,本系统的硬件控制电路图简单,可降低生产成本。
采用单片机可提高系统的可靠性和稳定性,缩小系统的体积,调试和维护方便。
但软件设计方面需采用汇编语言编程,位操作指令用得较多。
若要修改车辆通行的时间,就必须根据具体情况修改程序中的各种参数,。
本设计的开发环境采用Altera公司的MAX+PlusⅡ软件工具。
MAX+PLUSⅡ是一种集设计输入、编译、仿真、综合、器件编程等功能于一体的完全集成化、易学易用的可编程逻辑设计软件。
该软件允许设计人员自由选择设计输入的方法和工具,设计人员无需详细了解器件内部的复杂结构,只需选择自己熟悉的设计方法和工具就可进行设计输入。
该软件提供了一种真正与结构无关的可编程逻辑设计环境,它支持不同结构的器件,如FLEX、MAX及CLASSIC系列器件等。
这样,根据算法流程图就可很容易地设计出VHDL源文件,然后输入到MAX+PlusII软件中进行调试、仿真。
通过仿真波形和时序分析等功能可以验证设计的正确性,并能迅速地在不改变硬件电路的情况下修改设计,因而可大大缩短设计周期,提高效率。
通过对两种方案的对比,采用方案二进行对交通灯的整体设计。
2系统设计语言、软件简介
2.1硬件描述语言VHDL
VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
VHDL主要用于描述数字系统的结构、行为、功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,即端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
应用VHDL进行工程设计的优点是多方面的。
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
一个VHDL程序包含实体(Entity)、结构体(Architecture)、配置(Configuration)、包集合(Package)、库(Library)5个部分。
在VHDL语言中进行层次化设计,即将大型任务层层分解,在各个层次上分别设计的方法。
这种层次化设计方法有自顶向下的设计方法,也有至下向上的设计方法。
2.2Max+PlusII的使用简介
Max+PlusII是Altera公司推出的第三代PLD开发系统(Altera第四代PLD开发系统被称为:
Quartus,主要用于设计6万-100万门的大规模CPLD/FPGA).使用Max+PlusII的设计者不需精通器件内部的复杂结构。
设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,Max+PlusII把这些设计转自动换成最终所需的格式。
其设计速度非常快。
对于一般几千门的电路设计,使用Max+PlusII,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。
设计处理一般在数分钟内完成。
特别是在原理图输入等方面,Max+PlusII被公认为是最易使用,人机界面最友善的PLD开发软件。
Max+PlusII软件共有四种编辑方法,它们相互独立、自成体系。
(1)原理图编辑:
原理图编辑是最常用的一种输入方法。
一般情况下,一个设计方案总是用原理图来描述的,这种编辑方法适合于顶层原理图和低层原理图。
(2)文本编辑(ABEL):
Altera软件支持ABEL语言。
这种语言简单易学,接近于自然语言,适合于描述功能块和制作各种元件符号。
(3)文本编辑(VHDL):
Altera软件支持VHDL语言(子集)。
这种语言是国际标准的硬件描述语言,适合于描述功能模块和制作各种原件符号。
(4)波形编辑:
波形编辑适合于描述各种状态机,尤其对于那些难于用原理图和语言来描述的逻辑关系,更能发挥起独特的优越性。
利用Max+PlusII软件进行电路设计时的一般流程可分为四个步骤:
图2.1Max+PlusII设计流程图
(1)设计输入:
在传统设计中,设计人员是应用传统的原理图输入方法来开始设计的。
自90年代初,Verilog、VHDL、AHDL等硬件描述语言的输入方法在大规模设计中得到了广泛应用。
(2)设计编译:
设计输入之后就有一个从高层次系统行为设计向门级逻辑电路设转化翻译过程,即把设计输入的某种或某几种数据格式(网表)转化为软件可识别的某种数据格式(网表)。
(3)设计仿真:
利用在布局布线中获得的精确参数再次验证电路的时序。
(4)编程下载:
将仿真完的程序下载到实验平台上实现系统功能。
3VHDL的数字系统设计
3.1有限状态机的VHDL语言描述
状态机就是一组触发器的输出状态随着时钟和输入信号按照一定的规律变化的一种机制或过程。
任何时序电路都可以表示为有限状态机(FiniteMachineFSM),有限状态机是实现可靠逻辑控制的重要途径,是大型数字系统设计中的重要组成部分,尤其是进行复杂时序逻辑电路的实现。
本设计是在基本时序逻辑电路描述的基础上,采用VHDL进行有限状态机设计的方法完成交通灯控制系统。
数字系统一般分为控制单元和数据通道,数据通道通常由组合逻辑电路构成,而控制单元通常由时序逻辑电路构成。
控制单元的每一个控制态可以看作一种状态,而状态之间的转换条件指定了下一个状态和输出信号,因此采用有限状态机可以非常清楚地描述时序电路之间的状态转换模式和状态转换条件。
有限状态机根据输出信号与当前状态以及输入信号的关系来分,可以分为Moore型和Mealy型两种:
输出信号只和当前状态有关的状态机称为Moore型状态机如图1.1所示;输出信号不仅和当前状态有关,而且也和输入信号有关的状态机称为Mealy型状态机,如图1.2所示。
图3.1Moore型有限状态机示意图
图3.2Mealy型有限状态机示意图
根据状态机分类的依据可以看出,Moore型状态机和Mealy型状态机各有特点。
Moore型状态机的输出信号是在时钟脉冲有效后的无穷小延时内达到稳定值,也就是说,即使输入信号发生变化,在一个时钟周期之内状态机的输出都不会发生变化。
输入对输出的影响要到下一个时钟周期才能体现出来,即先通过输入信号对当前状态的影响才能体现出来。
所以Moore型状态机可以将输入和输出隔离开来,属于异步输出状态机。
Mealy型状态机的输出不仅与当前状态有关,而且与输入信号有关,因此当输入信号发生变化时,状态机的输出信号会随之发生变化,Mealy型状态机输出对输入的响应要提前一个时钟周期。
采用VHDL语言描述有限状态机必须遵循一些编码原则,一般可以归纳为以下几点。
(1)两个状态变量,分别指定有限状态机的现态和次态。
(2)系统至少有一个时钟信号。
(3)每个状态应该有状态转移指定,而且有相应的输出信号指定。
(4)系统有同步或者异步复位信号,或者有隐含的复位状态。
该设计采用VHDL语言描述有限状态机,将次态逻辑和输出逻辑用一个进程描述,与状态寄存器进程构成一个双进程的有限状态机。
3.2层次化结构设计
任何复杂的数字系统最终都可以分解基本门电路和寄存器电路单元,根据这个思路,在采用VHDL语言进行数字系统的设计过程中,也可以将设计目标进行层层分解,在各个层次上分别设计;或者将目标器件分解成一些模块,各个模块同时进行设计,最后进行组合联调,这就是层次化、结构化的设计方法。
层次化的设计方法能使复杂的电子系统简化,并且在不同的层次上都能够进行仿真验证,及时发现错误并加以纠正。
结构化的设计能够将复杂的系统划分为一些模块,各个模块同时进行设计,分别编译、仿真验证、最后组成一个系统,这样便于一些子模块资源的共享,如可以利用已经完成的工程项目中设计好的模块。
对于一个数字系统来说,设计层次可以从两个不同的角度来划分:
按照性能描述划分和按照结构描述划分。
(1)行为描述(Behavioraldescription)
如果VHDL程序的结构体只描述了所期望电路的功能或称行为,即电路输入与输出间转换的行为,而没有包含任何实现这些功能的硬件结构信息,包括硬件电路的连接结构、元件或其他功能单元的层次结构等,这种描述风格称为行为描述。
行为描述是一种高层次的描述方法,设计者只需要关注设计实体即功能单元正确的行为即可,无需在具体硬件结构或门级电路实现及具体实现芯片的性能结构上花费精力,即编程与硬件无关,它更类似于高级编程语言的编程方式。
具有很强的行为描述能力是VHDL语言的独特性和优越性之一,它非常适合于自顶向下设计流程的需要,是电子线路系统级仿真和设计的最佳选择。
因此在应用VHDL进行系统设计时,行为描述是最重要的逻辑描述方式。
(2)结构描述(Structuraldescription)
结构描述方式主要以元件或已完成的功能模块为基础,应用于采用元件例化的VHDL程序设计中。
通过描述元件及它们之间的相互连接关系,利用各种简单或复杂的功能模块,就像搭积木式的,将它们的层次相互连接起来以构成一个更为复杂的功能模块或系统,常用于层次式的设计。
在结构描述中,元件间的连接是通过定义的端口界面来实现的,主要描述端口及其互连关系,因此,结构描述最能提高设计效率,因为它可以将已有的设计成果方便的应用到新的设计中去,且结构清晰。
系统的性能描述主要关注系统的行为,即系统完成什么功能,它通常只表示系统的输出输入的关系,以系统的功能为设计目标,以系统的输入信号、内部状态和输出信号的要求为设计中心,至于具体的逻辑电路实现则并不关注。
系统的结构描述主要关注于实现某一功能的系统的具体结构以及各组成模块之间的连接关系,包括各个功能单元的具体的端口定义。
它不能直观地表示系统的逻辑功能,需要根据各个组成单元的功能及其相互驱动关系来确定,它是系统功能的具体实现电路。
数字系统一般可以分为以下6个层次:
系统级、芯片级、寄存器级、门级、电路级和版图级。
与之相对应,系统的性能描述和结构描述也可以分为6个层次。
表4.1是不同设计风格和设计层次的对应关系。
表3.1 数字系统设计的层次描述
系统层次
性能描述
结构描述
系统级
自然语言描述的系统指标
系统结构框图
芯片级
算法描述
微处理器、存储器、串并行接口、中断控制器
寄存器级
数据流描述
寄存器、ALU、计数器、多路选择器等
门级
布尔方程描述
逻辑门、触发器
电路级
电路的微分方程描述
晶体管、电阻、电容
版图级
电子、空穴运动方程
几何图形与工艺规则
采用有效的设计方法是一个数字系统设计成功的关键。
层次化、结构化的设计方法将一个复杂的系统设计划分成许多可操作的模块,并且允许不同设计者同时进行开发,每个设计者承担自己负责的一部分。
对应这样一种设计思想,可以采用VHDL语言设计一个数字系统的一般流程简单描述如下。
(1)首先用户用自然语言描述要设计的数字系统的性能和结构规范,它对应于系统级描述。
(2)采用VHDL语言编写行为级算法代码。
在这个步骤中一般应该对要设计的数字系统分解成不同模块,然后进行VHDL语言描述,它对应于芯片级描述。
(3)将行为级算法代码转换成寄存器级VHDL代码或者是寄存器级逻辑电路图。
这个步骤在开发中一般由计算机来完成,称为行为综合。
(4)将寄存器级描述转换成门级描述。
这个步骤在开发中一般也由计算机来完成,称为逻辑综合。
(5)从逻辑门描述转换到版图表示或者转换到FPGA的配置网表文件,称为结构综合。
有了版图信息就可以将完成某一特定功能的数字芯片生产出来。
转换成前者一般有第三方专用集成芯片公司完成,转换成后者则由计算机完成,然后下载配置到相应的CPLD/FPGA芯片中。
当然在设计过程中,行为仿真、功能和功能验证以及工艺厂家的设计规则导入等步骤都是必不可少的。
另外,在每一个设计层次上设计都有需要注意的事项,如在系统级主要考虑系统功能的问题,在算法级和寄存器级主要考虑设计中间的时序和同步问题,而在电路级则要考虑电路噪声及延时等问题。
另外,由于数字系统可以划分层次,因此在进行数字系统的设计过程中,可以对系统在不同层次上分解成多个模块,既可以在芯片级进行分解,也可以在寄存器级进行分解。
这样整个系统就是由不同层次上的各个模块相互连接组合而成的。
若在设计过程中,不是按照上面的设计流程,直接采用VHDL语言在算法级进行描述,有时也会先将系统或者部分系统进行结构分解,分解成寄存器级电路或门级电路,再采用VHDL语言来进行描述,这种方式的优点是设计者可以自己控制具体的实现电路,有利于资源的优化或满足设计中某些特殊指标的要求。
因此,对于一个数字系统的描述应该从两个方面进行,既有结构描述,也有性能描述。
结构描述用于表述模块之间的连接关系,性能描述用于表示模块本身的性能。
3.3自顶向下的设计方法
一般来说,数字系统的设计存在两种设计思想:
一种是自顶向下(Top-down)的设计方法,另一种是自底向下(Bottom-up)的设计方法。
随着半导体技术和计算机技术的迅速发展,数字系统的设计思想和设计方法都发生了根本的变化。
以前,数字系统都是由一些固定功能的器件或芯片和外围电路构成。
然后小系统之间可以再次组合作为大系统的一部分,从而构成更为复杂的数字系统。
这是一种自底向上的设计方法。
根据一些芯片公司提供的现有器件,从底层开始逐渐向上层进行设计。
但是,由于微电子和集成电路技术的发展,对于数字系统的规模与复杂度的要求都越来越高,对于设计的周期、成本和准确性也越来越高,传统的自底向上的设计方法已经不太适应。
而又由于计算机技术的迅速发展,自顶向下的设计方法越来越体现出其优越性。
所谓自顶向下的设计方法,是指在系统设计过程中,从数字系统的最高层次出发,进行仿真验证,再将系统划分成各个子模块,然后再对各个子模块进行仿真验证,合格之后经EDA开发平台由计算机自动综合成门级电路,进行门级仿真验证,合格后即可进行物理设计得到合格的集成芯片、印制电路板或者FPGA。
自顶向下的设计方法强调在每个层次进行仿真验证,以保证系统性能指标的实现,也便于在早期发现和纠正设计中出现的错误。
自顶向下的设计方法流程如图4.3所示。
图3.3 自顶向下的设计方法
可以看到,自顶向下的设计方法有一些突出的优点:
(1)适应于复杂和大规模的数字系统的开发,便于层次式、结构化的设计思想。
(2)各个子系统可以同时进行开发,缩短设计周期。
(3)对于设计的系统进行层层分解,且在每一层次进行仿真验证,设计错误可以在早期发现,提高了设计的正确性。
(4)逻辑综合之前的设计工作与具体的实现工艺、器件等无关,因此,设计的可移植性好。
自底向上的设计方法是一种传统的设计方法,是指在系统设计的过程中,将系统分解时,要选择一些已有的、可用的模块过逻辑功能器件。
这些模块或功能器件可以是由芯片公司提供的已有模块,如逻辑门、加法器及选通器等,也可以是其他工程设计中已经开发好的模块。
从底层开始,逐步向上组合,直到形成满足要求的系统。
这种设计方法的优点是设计的经济性,许多模块不用重新设计,设计成本可以降低。
但是这种方式的缺点是不能从整体上把握系统功能和性能,容易造成设计后期才发现系统结构设计的不合理等问题。
因此,自底向上的设计方法一般由于建库和IP模块设计中,只是作为自顶向下设计方法的一种补充。
4交通信号灯系统控制器的设计
本设计的交通信号灯系统是通过软件模拟实际的十字路口交通信号灯。
设计部分包括:
①电路模块合成的概念:
将交通信号灯系统划分为若干小电路模块,最后再编写一个VHDL程序代码,将各个小电路模块相连接。
这样可以增加程序的调试速度,同时也可以将设计工作细分,以提高编程速度。
②参数化(parametric)的概念:
针对不同的时段,交通警察可以根据路段的交通情况增加或减少电路的计数时间,以增加程序的灵活性。
在本设计系统当中暂将路口的黄灯闪烁定义时间为5s,绿灯闪烁定义时间为30s,红灯闪烁定义时间为50s,左拐灯闪烁定义时间为10s。
本章重要介绍该系统各子功能模块设计的过程。
重点在A、B方向主控制发生电路,计数秒数分位控制电路,倒计时译码显示控制电路。
4.1控制器的总体功能设计要求
按照路口交通运行的实际情况,在本系统中,设定系统得工作情况如下:
A方向和B方向各设红、黄、绿和左拐四盏灯按合理的顺序亮灭,并能将灯亮的时间以倒计时的形式显示出来。
两个方向各种灯亮的时间应该能够非常方便的进行设置和修改。
十字路口交通灯示意图如图4.1所示。
图4.1十字路口交通灯示意图
Fig4.1
交通灯控制器的状态转换如表1所示。
表中1表示灯亮,0表示灯灭。
A方向和B方向的红、黄、绿和左拐灯分别用R1、Y1、G1、L1和R2、Y2、G2、L2来表示。
表4.1交通灯控制状态表
A方向
B方向
绿灯(G1)
黄灯(Y1)
左拐灯(L1)
红灯(R1)
绿灯(G2)
黄灯(Y2)
左拐灯(L2)
红灯(R2)
1
0
0
0
0
0
0
1
0
1
0
0
0
0
0
1
0
0
1
0
0
0
0
1
0
1
0
0
0
0
0
1
0
0
0
1
1
0
0
0
0
0
0
1
0
1
0
0
0
0
0
1
0
0
1
0
0
0
0
1
0
1
1
0
图4.2交通灯状态转换图
从状态转换表中可以看出,每个方向四种灯依次按如下顺序点亮,并不断循环:
绿灯→黄灯→左拐灯→黄灯→红灯。
并且每个方向红灯亮的时间应该与另一方向绿、黄、左拐、黄灯亮的时间相等。
黄灯所起的作用是用来在绿灯和左拐灯后进行缓冲。
4.2总体设计思路
本设计系统包括三个基本模块。
即A、B方向主控制电路模块(control_a,control_b),计数秒数分位选择电路模块(bin_bcd)和倒计时译码显示控制电路模块(Display_num)。
计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。
其中,核心部分是主控制模块。
A、B方向主控制电路模块(control_a,control_b),在时钟信号clk的作用下,当reset=’0’(有时钟脉冲,且没有复位)时,进行增/减计数,
计数秒数分位选择电路模块(bin_bcd)负责将显示器需要的值(即倒数的秒数值)进行分位选择,作为倒计时译码显示控制电路模块(Displaynum)的计数秒数。
倒计时译码显示控制电路模块(Displaynum)负责接收由计数秒
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 毕业设计