基于EDA技术的交通灯设计_第1页
基于EDA技术的交通灯设计_第2页
基于EDA技术的交通灯设计_第3页
基于EDA技术的交通灯设计_第4页
基于EDA技术的交通灯设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、1 EDA技术及VHDL语言介绍1.1 概述EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台

2、上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。 适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。硬件描述语言HDL是相对于

3、一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。11.2 EDA技术1.2.1 EDA技术的发展与应用电子设计技术的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术

4、、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。EDA技术已有30年的发展历程,大致可分为三个阶段。70年代为计算机辅助设计(CAD)阶段,人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作。80年代为计算机辅助工程(CAE)阶段。与CAD相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。CAE的主要功能是:原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。90年代为电子系统设计自动化(EDA)阶段。1.2.2 ED

5、A技术的基本特征EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。下面介绍与EDA基本特征有关的几个概念。第一,“自顶向下”的设计方法10年前,电子设计的基本思路还是选用标准集成电路“自底向上”地构造出一个新的系统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高而且容易出错。高层次设计是一种“自顶向下”的全新设计方法

6、,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避免设计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。第二,ASIC设计现代电子产品的复杂度日益提高,一个电子系统可能由数万个中小规模集成电路构成,这就带来了体积大、功耗大、可靠性差的问题。解决这一问题的有效方法就是采用ASIC芯片进行设

7、计。ASIC按照设计方法的不同可分为全定制ASIC、半定制ASIC和可编程ASIC(也称为可编程逻辑器件)。设计全定制ASIC芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最后将设计结果交由IC厂家去进行掩模制造,做出产品。这种设计方法的优点是芯片可以获得最优的性能,即面积利用率高、速度快、功耗低,而缺点是开发周期长,费用高,只适合大批量产品开发。半定制ASIC芯片的版图设计方法分为门阵列设计法和标准单元设计法,这两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间。可编程逻辑芯片与上述掩模ASIC的不同之处在于:设计人员完成版图设计后,在实验室

8、内就可以烧制出自己的芯片,无须IC厂家的参与,大大缩短了开发周期。可编程逻辑器件自70年代以来,经历了PAL、GAL、CPLD、FPGA几个发展阶段,其中CPLD/FPGA属高密度可编程逻辑器件,目前集成度已高达200万门/片,它将掩模ASIC集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以很容易地转由掩模ASIC实现,因此开发风险也大为降低。上述ASIC芯片,尤其是CPLD/FPGA器件,已成为现代高层次电子设计方法的实现载体。 第三,EDA系统框架结构EDA系统框架结构(Framework)是一

9、套配置和使用EDA软件包的规范。目前主要的EDA系统都建立了框架结构,如Cadence公司的DesignFramework,Mentor公司的FalconFramework,而且这些框架结构都遵守国际CFI组织制定的统一技术标准。框架结构能将来自不同EDA厂商的工具软件进行优化组合,集成在一个易于管理的统一的环境之下,而且还支持任务之间、设计师之间以及整个产品开发过程中的信息传输与共享,是并行工程和自顶向下设计方法的实现基础。1.2.3 EDA技术的基本设计方法EDA技术的每一次进步,都引起了设计层次上的一次飞跃,物理级设计主要指IC版图设计,一般由半导体厂家完成,对电子工程师没有太大的意义,

10、因此本文重点介绍电路级设计和系统级设计。第一,电路级设计电路级设计工作流程:电子工程师接受系统设计任务,首先确定设计方案,并选择能实现该方案的合适元器件,然后根据具体的元器件设计电路原理图。接着进行第一次仿真,其中包括数字电路的逻辑模拟、故障分析,模拟电路的交直流分析、瞬态分析。在进行系统仿真时,必须要有元件模型库的支持,计算机上模拟的输入输出波形代替了实际电路调试中的信号源和示波器。这一次仿真主要是检验设计方案在功能方面的正确性。仿真通过后,根据原理图产生的电气连接网络表进行PCB板的自动布局布线。在制作PCB板之前还可以进行PCB后分析,其中包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性

11、分析等,并可将分析后的结果参数反标回电路图,进行第二次仿真,也称为后仿真。后仿真主要是检验PCB板在实际工作环境中的可行性。由此可见,电路级的EDA技术使电子工程师在实际的电子系统产生前,就可以全面地了解系统的功能特性和物理特性,从而将开发风险消灭在设计阶段,缩短了开发时间,降低了开发成本。第二,系统级设计进入90年代以来,电子信息类产品的开发明显呈现两个特点:一是产品复杂程度提高;二是产品上市时限紧迫。然而,电路级设计本质上是基于门级描述的单层次设计,设计的所有工作(包括设计输入、仿真和分析、设计修改等)都是在基本逻辑门这一层次上进行的,显然这种设计方法不能适应新的形势,一种高层次的电子设计

12、方法,也即系统级设计方法,应运而生。高层次设计是一种“概念驱动式”设计,设计人员无须通过门级原理图描述电路,而是针对设计目标进行功能描述。由于摆脱了电路细节的束缚,设计人员可以把精力集中于创造性的方案与概念的构思上,一旦这些概念构思以高层次描述的形式输入计算机,EDA系统就能以规则驱动的方式自动完成整个设计。这样,新的概念就能迅速有效地成为产品,大大缩短了产品的研制周期。不仅如此,高层次设计只是定义系统的行为特性,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。首先,工程师按照“自顶向下”的设计方法进行系统

13、划分。其次,输入VHDL代码,这是高层次设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图,状态图等),这种输入方式具有直观、容易理解的优点。第三步是,将以上的设计输入编译成标准的VHDL文件。第四步是进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。第五步是,利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的

14、厂家综合库支持下才能完成。第六步是,利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。一般的设计,也可略去这一仿真步骤。第七步是利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化、布局布线。第八步是在适配完成后,产生多项设计结果:(1)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(2)适配后的仿真模型;(3)器件编程文件。根据适配后的仿真模型,可以进行适配后的时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确地预期未来芯片的实际性能。如果仿真结果达不到设

15、计要求,就需要修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求;最后一步是将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片FPGA或CPLD中。如果是大批量产品开发,则通过更换相应的厂家综合库,轻易地转由ASIC形式实现。综上所述,EDA技术是电子设计领域的一场革命,目前正处于高速发展阶段,每年都有新的EDA工具问世。广大电子工程人员掌握这一先进技术,这不仅是提高设计效率的需要,更是我国电子工业在世界市场上生存、竞争与否的关键。21.2.4 EDA的发展趋势第一,.从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大。中国EDA市场

16、已渐趋成熟,不过大部分设计工程师面向的是PCB制板和小型ASIC领域,仅有小部分(约11%)的设计人员开发复杂的片上系统器件。为了与台湾和美国的设计工程师形成更有力的竞争,中国的设计队伍有必要引进和学习一些最新的EDA技术。 在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。要大力推进制造业信息化,积极开展计算机辅助设计(CAD)、计算机辅助工程(CAE)、计算机辅助工艺(CAPP)、计算机机辅助制造(CAM)、产品数据管理(

17、PDM)、制造资源计划(MRPII)及企业资源管理(ERP)等。有条件的企业可开展“网络制造”,便于合作设计、合作制造,参与国内和国际竞争。开展“数控化”工程和“数字化”工程。自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合,形成测量、控制、通信与计算机(M3C)结构。在ASIC和PLD设计方面,向超高速、高密度、低功耗、低电压方面发展。 第二,外设技术与EDA工程相结合的市场前景看好,如组合超大屏幕的相关连接,多屏幕技术也有所发展。中国自1995年以来加速开发半导体产业,先后建立了几所设计中心,推动系列设计活动以应对亚太地区其它EDA市场的竞争。在EDA软件开发方

18、面,目前主要集中在美国。但各国也正在努力开发相应的工具。日本、韩国都有ASIC设计工具,但不对外开放。中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。相信在不久的将来会有更多更好的设计工具在各地开花并结果。据最新统计显示,中国和印度正在成为电子设计自动化领域发展最快的两个市场,年夏合增长率分别达到了50%和30%。3 EDA技术发展迅猛,完全可以用日新月异来描述。EDA技术的应用广泛,现在已涉及到各行各业。EDA水平不断提高,设计工具趋于完美的地步。EDA市场日趋成熟,但我国的研发水平仍很有限,尚需迎头赶上。1.3 硬件描述语言 VHDL1.3.1 VHDL的简介硬件描述语言(H

19、DL)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个32位的加法器,利用图形输入软件需要输人500至1000个门,而利用VHDL语言只需要书写一行“ABC”即可。而且 VHDL语言可读性强,易于修改和发现错误。早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上不足,1985年美国国防部正式推出了高速集成电路硬件描述语言VHDL,1987年IEEE采纳VHDL为硬件描述语言标准(IEE

20、E STD1076)。 VHDL是一种全方位的硬件描述语言,包括系统行为级。寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件俄语言的功能,整个自顶向下或由底向上的电路设计过程都可以用VHDL来完成。VHDL还具有以下优点:(1)VHDL的宽范围描述能力使它成为高层进设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑艄设计,灵活且方便,而且也便于设计结果的交流、保存和重用。(3)VHDL的设计不依赖于特定的器件,方便了工艺的转换。(4)

21、VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。用VHDL语言编程实现数字电子系统硬件设计容易做到技术共享。他人用VHDL语言实现了IP模块和软核(soft core),程序包(package)和设计库(library)很容易移植到自己的系统设计中。许多设计不用从头开始,少花钱办快事,缩短产品设计周期,加速产品更新,提高设计效益,这也是VHDL语言得到广泛应用的重要原因。值得指出的是:VerilogHDL等硬件描述语言获得较为广泛的应用。但最适合于用CPLDVHDL等器件实现数字电子系统设计的硬件描述语言当属于VHDL。1.3.2 VHDL的设计方法传统的硬件电路设计方法是采用自

22、下而上的设计方法,即根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;然后根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着就进行各功能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。采用传统方法设计数字系统,特别是当电路系统非常庞大时,设计者必须具备较好的设计经验,而且繁杂多样的原理图的阅读和修改也给设计者带来诸多的不便。当电路系统采用VHDL语言设计其硬件时,与传统的电路设计方法相比较,具有如下的特点:第一,采用自上而下的设计方法。即从系统总体要求出

23、发,自上而下地逐步将设计的内容细化,最后完成系统硬件的整体设计。在设计的过程中,对系统自上而下分成三个层次进行设计:第一层次是行为描述。所谓行为描述,实质上就是对整个系统的数学模型的描述。一般来说,对系统进行行为描述的目的是试图在系统设计的初始阶段,通过对系统行为描述的仿真来发现设计中存在的问题。在行为描述阶段,并不真正考虑其实际的操作和算法用何种方法来实现,而是考虑系统的结构及其工作的过程是否能到达系统设计的要求。第二层次是RTL方式描述。这一层次称为寄存器传输描述(又称数据流描述)。如前所述,用行为方式描述的系统结构的程序,其抽象程度高,是很难直接映射到具体逻辑元件结构的。要想得到硬件的具

24、体实现,必须将行为方式描述的VHDL语言程序改写为RTL方式描述的VHDL语言程序。也就是说,系统采用RTL方式描述,才能导出系统的逻辑表达式,才能进行逻辑综合。第三层次是逻辑综合。即利用逻辑综合工具,将RTL方式描述的程序转换成用基本逻辑元件表示的文件(门级网络表)。此时,如果需要,可将逻辑综合的结果以逻辑原理图的方式输出。此后可对综合的结果在门电路级上进行仿真,并检查其时序关系。第二,应用逻辑综合工具产生的门级网络表,将其转换成PLD的编程码点,即可利用PLD实现硬件电路的设计。由自上而下的设计过程可知,从总体行为设计开始到最终的逻辑综合,每一步都要进行仿真检查,这样有利于尽早发现设计中存

25、在的问题,从而可以大大缩短系统的设计周期。第三,系统可大量采用PLD芯片。由于目前众多制造PLD芯片的厂家,其工具软件均支持VHDL语言的编程。所以利用VHDL语言设计数字系统时,可以根据硬件电路的设计需要,自行利用PLD设计自用的ASIC芯片,而无须受通用元器件的限制。第四,采用系统早期仿真。从自上而下的设计过程中可以看到,在系统设计过程中要进行三级仿真,即行为层次仿真、RTL层次仿真和门级层次仿真。这三级仿真贯穿系统设计的全过程,从而可以在系统设计的早期发现设计中存在的问题,大大缩短系统设计的周期,节约大量的人力和物力。自顶而下的设计方法使系统被分解为各个模块的集合之后,可以对设计的每个独

26、立模块指派不同的工作小组,这些工作小组可以工作在不同地点,甚至可以分属于不同的单位,最后将不同的模块集成为最终的系统模型,并对其进行综合测试和评价。4其自顶而下的设计流程如图1-1所示:设计说明书建立VHDL行为模型模型门级时序VHDL行为仿真模型VHDLRTL级建模模型前端功能仿真逻辑综合测试向量生成硬件测试功能仿真结构综合设计完成图1-1 自顶而下的设计流程1.4 Max+Pull II开发平台系统1.4.1 MaxPull II简介MaxPull II的全称是Multiple Array and Programmable Logic Use System2(多阵列矩阵及可编程逻辑用户系统

27、2),是Altera公司的全集成化可编程逻辑设计环境。从最初的第一代APLUS,第二代MAX+PLUS,发展到第三代MAX+PLUS II,Altera公司的开发工具软件在发展中不断完善。MAX+PLUS II的版本不升级,功能也越来越强大,目前发行的MAX+PLUS II已经到了10。1版。MaxPull II的界面友好,在线帮助完备,初学者也可以很快学习掌握。完成高性能的设计。其次,在进行原理图输入时,可以直接放置74系列逻辑芯片,所以对于普通爱好者来说,即使不使用Altera的可编程器件,也可以把MAX+PLUS II作为逻辑仿真工具,另外,不用搭建硬件电路,即可对自己的设计进行调试,支

28、持Altera公司不同结构的可编程逻辑器件,能满足用户各种各样的设计需要。MAX+plus II具有突出的灵活性与高效性,为设计者提供了多种可自由选择的设计方法和工具。1.4.2 MaxPull II的特点1.MAX+PLUS II的编译核心支持Altera的FLEX 10K、FLEX 8K、MAX9000、MAX7000、FLASHlogic、MAX5000、Classic系列可编程逻辑器件; 2.MAX+PLUS II的设计输入、处理与校验功能一起提供了全集成化的一套可编程逻辑开发工具,可加快动态调试,缩短开发周期; 3.MAX+PLUS II支持各种HDL设计输入,包括VHDL、Veri

29、log和Altera的AHDL; 4.MAX+PLUS II可与其他工业标准设计输入、综合与校验工具链接。与CAE工具的接口符合EDIF200和209、参数化模块库(LPM)、Verilog、VHDL及其它标准。设计者可使用Altera或标准CAE设计输入工具去建立逻辑设计,使用MAX+PLUS II编译器对Altera器件设计进行编译,并使用Altera或其它CAE校验工具进行器件或板级仿真。MAX+PLUS II支持与Synopsys、Viewlogic、Mentor Graphics、Cadence、Exemplar、Data I/O、Intergraph、Minc、OrCAD等公司提供

30、的工具接口。 利用MAX+PLUSII软件平台进行设统设计。5具体的设计流程图如图1-2所示: 设计要求系统产品设计输入设计编译设计修改设计校验器件编程在线校验图1-2 MAX+PLUSII软件的设计流程图2 交通灯系统设计2.1 交通灯设计背景及方案随着城市汽车保有量的越来越多,城市的交通拥挤问题正逐渐引起人们的注意。交通灯是交管部门管理城市交通的重要工具。提高十字路口的通行效率,对缓解交通阻塞具有十分重要的现实意义。实现路口交通灯系统控制的方法很多,可以用标准逻辑器件、可编程序控制器PLC、单片机等方案来实现。但是这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了设计难度

31、。采用EDA技术。应用VHDL硬件电路描述语言实现变通灯系统控制器的设计,利用MAXPLUS集成开发环境进行综合、仿真,并下载到CPLD可编程逻辑器件中,完成系统的控制作用。该灯控制逻辑可实现3种颜色灯的交替点亮、时间的倒计时、转向问题,指挥车辆和行人安全通行。2.2 交通灯设计要求按照路口交通运行的实际情况,在本系统中,设定系统的工作情况如下: A 方向和B 方向各设红(R) 、黄( Y) 、绿( G) 和左拐(L) 四盏灯按合理的顺序亮灭,并能将灯亮的时间以倒计时的形式显示出来。两个方向各种灯亮的时间应该能够非常方便地进行设计和修改,此外假设A 方向是主干道,车流量大,因此A方向通行的时间

32、应比B 方向长一些。其示意图如图2-1所示。 G2 Y2 R2 L2 A方向 G1 Y1 R1 L1 B方向图2-1 交通路口指示灯示意图交通灯控制器的状态转换如表1 所示。表中1 表示灯亮,0 表示灯灭。A 方向和B 方向的红、黄、绿和左拐灯分别用R1 、Y1、G1 、L1 和R2 、Y2 、G2 、L2 来表示。从状态转换表中可以看出,每个方向四种灯依次按如下绿灯黄灯左拐灯黄灯红灯。并且每个方向红灯亮的时间应该与另一方向绿、拐、黄灯亮的时间相等。黄灯所起的作用是用来在绿灯和左拐灯后进行缓冲,以提醒行人该方向马上要禁行了。例如A 方向的控制程序描述如表2-1所示:表2-1 交通灯控制器状态转

33、换A方向B方向绿灯G1黄灯Y1左拐灯L1红灯R1绿灯G2黄灯Y2左拐灯L2红灯R210000001010000010010000101000001000110000001010000010010000101002.3 交通灯控制器的VHDL设计使用MAX+PLUS II进行设计包括四个阶段:设计输入、设计处理、设计验证和器件编程。根据程序要求完成VHDL语言设计后,可形成顶层文件。在MAX+PLUS环境下进行编译与仿真,直至各个模块全部完成仿真,实现各自的功能。在本设计中交通灯控制器由七个模块构成:消振模块,分频器模块、交通灯控制器模块、计数器块、计数器控制模块、闪烁模块、译码器模块。 用VH

34、DL语言对各个模块进行编程,最后形成顶层文件,在MAX+PLUS环境下进行编译与仿真,检查所编程序是否运行正确。如果出现错误,需要进行修改,直到完全通过为止。需要说明的是,在进行程序编译时,要先从底层程序开始,所有底层程序都正确后,才能开始顶层程序的编译。这是因为顶层程序是对底层程序的概括,它是把底层程序各个模块连接起来,相当于把每个模块的功能汇聚到一起,实现整个系统的控制功能,所以底层程序的正确与否关系到顶层程序的运行。62.3.1 分频器模块2.3.1.1 原理及功能分频器通常用来对某个给定的频率进行分频,以得到需要的频率。整数分频器非常简单,可采用标准的计数器,也可采用可编程逻辑器件设计

35、实现。分频器可为后续模块提供低频的时钟信号,分频器采用上升沿计数来实现分频。当输入端采集到了高频的时钟信号的上升沿时,计数加一,当到达设定值时,分频器输出一个脉冲。 本设计中用到的就是简单的分频器,即计数器,计算器控制器,交通灯控制器提供时钟信号,并且为闪烁模块提供闪烁时钟信号。该功能模块有两个输入,两个输出:reset是内部初始化信号输入端,clk1k是高频的时钟信号,clk是整个系统的时钟信号,clk_flash是闪烁模块闪烁时钟信号。2.3.1.2 时序仿真图2-2 分频器模块的时序仿真波形时序仿真说明:(1)reset1,则clk_cnt1、clk_cnt2、clk_s1、clk_s2

36、、clk_f清零。2. reset0,clk_1k为上升沿触发时,如果clk_cnt1大于或等于5时,清零clk_cnt1,并且clk_s1输出1。否则clk_cnt1加一,clk_s1等于0。3reset0,clk_1k为上升沿触发并且clk_s11时,如果clk_cnt2大于或等于200时,clk_cnt2清零,输出clk_s21,取反clk_f。否则clk_cnt2加一,clk_s2,clk_f保持不变。其中clkflash是clk频率的1/2倍,它是通过内部信号与运算的得来,即clk_flash=clk_s1 and clk_s2 and clk_f;2.3.2 计数器模块 2.3.2

37、.1 原理及功能计数器是对一个输入脉冲进行计数,如果输入脉冲的频率一定,则记录一定个数的脉冲,其所需的时间是一定的。计数器可分为加法和减法计数器两种,所以计数器可实现倒记时,因此可用在交通灯时间的控制。正常情况时,计数器采集到交通灯控制器的信号recount,输出倒计时间;紧急情况时,计数器采集到禁止信号,时钟停止计数,时间不再倒记时,只有采集到计数器控制器的下一个状态的计数值,计数器才会进行正常的减计数,并输出给译码器,显示在显示屏上。当计数器计数到3时,还要产生一个闪烁信号给闪烁模块,控制其交通指示灯闪烁,告诉给行人时间到了需要减速停止。当计数器计数到零时,会反馈给交通灯控制器一个计数到零

38、的信号next_state,告诉交通灯控制器需要进入下一个状态。本设计中主要程序段 elsif clkevent and clk=1 then 时钟信号if hold=1 then 禁止信号cnt1=cnt1;cnt2=cnt2;elsif recount=1 then 采集到的交通灯控制信号,采集下cnt1=din1; 一个计数值。cnt2=din2;else cnt1=cnt1-1; 减计数cnt2=cnt2-1;end if;2.3.2.2 时序仿真图2-3 计数器模块的时序仿真波形时序仿真说明:1reset1,清零cnt1、 cnt2、next_s、last_f。2reset0, cl

39、k为上升沿触发时,如果hold1时,计数器处于禁止状态,cnt1,cnt2保持不变,输出不变。3reset0, clk为上升沿触发时,且hold0,那么如果recount1时,则采集下一个计数数值。4reset0, clk为上升沿触发时,且hold0,recount0时,cnt1,cnt2进行减一运算,并doutcnt输出。5当cnt10或cnt20时,则next_sa=1。否则next_sa=0。6当cnt13或cnt23时,则last_f=1。否则last_f=0。2.3.3 计数器控制器模块2.3.3.1 原理及功能计数器控制器通过给计数器赋值,控制计数器实现减计数,从而达到倒记时的目的

40、,同时和计数器配合控制闪烁模块。计数器控制器是通过硬件描述语言case语句来实现不同状态的选择控制。计数器控制器模块有三个输入,端子recount是交通灯控制器控制计数器控制器是否进行计数状态转换的信号,reset是内部复位信号,用来复位内部信号。sign_s是状态选择控制端。输出端Load赋值给计数器计数值。flash_addr和计数器的flash共同作用控制闪烁模块的闪烁功能。72.3.3.2 时序仿真图2-4 计数器控制器模块时序仿真波形时序仿真说明:1reset1,则load1、load2清零。2reset0, clk为上升沿触发,且 recount1时:(1) 若sign_s1,则l

41、oad1=conv_std_logic_vector(27,8); load2=conv_std_logic_vector(27,8);flash_addr=00;(2) 若sign_s1,则load1=conv_std_logic_vector(23,8) load2=conv_std_logic_vector(23,8);flash_addr=00;(3) 若sign_s0 ,则load1=conv_std_logic_vector(18,8); load2=conv_std_logic_vector(18,8);flash_addr=00;(4) 若sign_s0,则load1=conv

42、_std_logic_vector(35,8);load2=conv_std_logic_vector(35,8)flash_addr if a_m=1 then 交通灯处于自动状态时 if next_state=1 then 采集到计数器计数到零时反馈信号recount=1;state=b; sign_state=1;else recount=0; state=a; end if;elsif a_m=0 then 交通灯处于手动状态时 if h_butt=1 then 手动状态转换控制信号 recount=1; state=b; sign_state=1; else recount=0; s

43、tate=a; end if;end if;2.3.4.2 时序仿真图2-5 交通灯控制器模块时序仿真波形时序仿真说明1Reset1,则state=a;sign_state=1;recount=1;2Reset0,clk为上升沿触发,如果hold1,则交通灯控制器出与禁止状态,此时所有路口的红绿灯都为红灯。否则,交通灯处于正常的显示状态。3Reset0,clk为上升沿触发,且hold0,如果state为a状态时,如果a_m1且next_state=1则recount1,state=b;sign_state=1;否则recount=0;state=a;如果为手动状态a_m0且h_butt=1则r

44、ecount=1;state=b; sign_state=1;否则recount=0, state=a;4Reset0,clk为上升沿触发,且hold0,如果state为b状态时,如果a_m1且next_state=1则recount1,state=c;sign_state=0;否则recount=0;state=b;如果为手动状态a_m0且h_butt=1则recount=1;state=c; sign_state=0;否则recount=0, state=b5Reset0,clk为上升沿触发,且hold0,如果state为c状态时,如果a_m1且next_state=1则recount1,

45、state=d;sign_state=1;否则recount=0;state=c;如果为手动状态a_m0且h_butt=1则recount=1;state=d; sign_state=1;否则recount=0, state=c6Reset0,clk为上升沿触发,且hold0,如果state为d状态时,如果a_m1且next_state=1则recount1,state=e;sign_state=1;否则recount=0;state=d;如果为手动状态a_m0且h_butt=1则recount=1;state=d; sign_state=1;否则recount=0, state=d7Rese

46、t0,clk为上升沿触发,且hold0,如果state为e状态时,如果a_m1且next_state=1则recount1,state=e;sign_state=1;否则recount=0;state=d;如果为手动状态a_m0且h_butt=1则recount=1;state=f sign_state=1;否则recount=0, state=e8Reset0,clk为上升沿触发,且hold0,如果state为f状态时,如果a_m1且next_state=1则recount1,state=a;sign_state=1;否则recount=0;state=f;如果为手动状态a_m0且h_but

47、t=1则recount=1;state=a sign_state=1;否则recount=0, state=f。2.3.5 闪烁电路模块的设计2.3.5.1 原理及功能闪烁模块一般用来提醒或者引起致意,有时又希望能关断某一路的显示。本设计中采用关断某个一个LED 的方法,利用一个低频(2Hz左右)的时钟与全部的输入信号都做与运算,然后在送到LED的输入端口,这样就会实现该低频时钟的频率闪烁功能。闪烁模块控制交通灯闪烁通过与运算其实现功能主要程序为:elsif clk_flash=1 then 闪烁模块闪烁时钟if flash_addr=01and flash=1then 控制交通指示灯 cnt

48、=0; cnt_flash=dins xor cnt; 异或运算else cnt_flash=dins; end if;elsif flash_addr=11 and flash =1 then cnt=1; cnt_flash=dins xor cnt;else cnt_flash=dins;end if;其中clk_flash(2hz)是低频闪烁信号,clk是系统时钟信号,clk_flash是低频闪烁时钟信号, flash, flash_addr是交通灯控制器和计数器控制器产生的控制信号,它们共同作用判别是否关断、关开LED交通灯。2.3.5.2 时序仿真图2-6 闪烁电路模块时序仿真波形

49、时序仿真说明:1reset1,则cnt_flash清零。2reset0,clk为上升沿触发,如果hold1时,cnt_flashdins,即保持不变,输入等于输出。3 reset0,clk为上升沿触发,且hold0,如果clk_flash=1 且flash_addr=01and flash=1则cnt0,cnt_flash=dins xor cnt;。否则cnt_flash=dins;4reset0,clk为上升沿触发,且hold0,如果clk_flash=1且,flash_addr=11 and flash =1则cnt=1; cnt_flash=dins xor cnt。否则cnt_flash=0111 then 计数判断 cnt2=0000; hoq=1;else cnt2=cnt2+1; 加计数hoq=0;end if;end if;2.3.6.2 时序仿真图2-7 消震模块时序仿真波形时序仿真说明:1resetr1,则 cnt1,cnt2,cnt3清零。2resetr=0,clk为上升沿触发,当holdr1时,cnt1的值大于等于10时,则清零cnt1,令hoq1,否则cnt1

温馨提示

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

评论

0/150

提交评论