为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

汽车尾灯控制电路的PLD实现课程设计

2018-09-23 38页 doc 825KB 19阅读

用户头像 个人认证

北溟愚鱼

暂无简介

举报
汽车尾灯控制电路的PLD实现课程设计 桂忱 汽车尾灯控制电路的PLD实现 第28页 共38页 目 录 11 引 言 11.1课程设计背景 41.2可编程逻辑器件的应用 51.3可编程逻辑器件的发展方向 61.4 EL-ARM-820型教学实验系统介绍 92 理论基础 92.1 FPGA/CPLD概述 112.2 VHDL语言概述 132.3 Max Plus II概述 163 汽车尾灯控制器详细设计 163.1设计方案 183.2设计思路 183....
汽车尾灯控制电路的PLD实现课程设计
桂忱 汽车尾灯控制电路的PLD实现 第28页 共38页 目 录 11 引 言 11.1课程设计背景 41.2可编程逻辑器件的应用 51.3可编程逻辑器件的发展方向 61.4 EL-ARM-820型教学实验系统介绍 92 理论基础 92.1 FPGA/CPLD概述 112.2 VHDL语言概述 132.3 Max Plus II概述 163 汽车尾灯控制器详细设计 163.1设计方案 183.2设计思路 183.3模块设计 244汽车尾灯控制器的仿真 244.1控制模块的仿真 244.2检查模块的仿真 254.3刹车模块的仿真 254.4左转模块的仿真 264.5右转模块的仿真 275 小 结 28参考文献 29附录:设计源程序清单 汽车尾灯控制电路的PLD实现 摘 要 本课题主要是基于可编程逻辑器件,使用硬件描述语言VHDL,采用“自顶向下”的设计方法,编写一个汽车尾灯控制器的芯片,并使用Max Plus II软件仿真结果。本文首先介绍了可编程逻辑器件的发展过程,然后对于编写汽车尾灯控制器相关的理论知识作了说明,接着主要讲解了汽车尾灯控制器的设计思路与模块划分。把汽车尾灯控制器划分为五大模块,组合起来实现了汽车尾灯的检查功能,刹车功能,左转功能,右转功能,总体控制等五项基本功能。最后,使用Max Plus II仿真软件对每个模块和主程序分别进行了结果仿真,并对仿真出来的结果作了,实验中采用EL-ARM-820型教学实验系统。 关键词 可编程逻辑器件;数字逻辑系统;硬件描述语言;汽车尾灯 The Accomplishment of Automobile Taillight PLD Control Circuit Abstract: This topic mainly is according to Programmable Logic Device, the usage hardware description language VHDL, the design method of the adoption "from top to bottom", write a chip of auto taillight controlled, and use the Max Plus II software to imitate a true result. This text introduced the development process of the programmable logic device first, then for related theories knowledge of the auto taillight controller to make elucidation, mainly explained in detail the design way of thinking and the mold piece of the auto taillight controller to divide the line. Divide the line the auto taillight controller as the five greatest molds piece, set the examine that put together to carry out a auto taillight, brake function, left move function, right move function, collectivity control function. At last, used the Max Plus II software to be respectively carry on imitate to each mold piece and the main procedure really, and made analysis towards imitate truly result, experiments with EL-ARM-820 type teaching system. Key words: PLD; Digital Logic System; VHDL; Automobile Taillight 1 引 言 当今社会是数字化的社会,也是数字集成电路广泛应用的社会,数字电路本身在不断地进行更新换代。它由早期的电子管、晶体管、小中规模集成电路发展到超大规模集成电路(VLSIC)以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能的短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。比较典型的就是Xilinx公司的FPGA器件系列和Altera公司的CPLD器件系列,它们开发较早,占用较大的PLD市场。目前,Altera系列产品在我国使用较多。 VHDL的全名是Very High Speed IC Hardware Description Language (极高速集成电路硬件描述语言)。它是一种应用较为广泛的HDL语言,能对范围广泛的各种复杂的网络(如电路系统、印刷电路板、芯片、逻辑门等)在不同的抽象级加以描述,而且在整个设计过程中可使用同一种语言。采用VHDL作为HDL综合设计的优点有:语言,即设计者可在不同的环境(例如MAX PLUS II)下进行设计;仿真和综合均可采用同一种语言进行;VHDL中提供的大量的模块资源,简化了设计者的开发工作;由VHDL描述的源文件既是程序软件又可作为设计的文档。 目前可编程逻辑器件(PLD)已有含单片高达100000等效门的器件出现,可实现复杂的数字系统。当系统规模不太大时,原理图输入方式描述还较适宜,但系统比较复杂时,它将难以快速有效地建立描述文件。VHDL语言能方便地进行数字系统描述,且能使逻辑综合产生更大的设计密度。正是高效VHDL技术与高密度PLD的结合使用,大大降低了复杂数字系统的设计难度,提高了工作效率。 本文介绍了CPLD与FPGA逻辑器件的基本知识和相关的软件——MAX PLUS II及硬件编程语言——VHDL。主要论述了一个汽车尾灯控制器从设计思路到系统仿真的整个设计过程。 1.1课程设计背景 随着科技时代的进一步发展,人们的生活也在飞速改变,各种家用电器和设备正以极快的速度进入寻常百姓家。汽车作为一种很重要的生活工具也没有例外地深入到人们生活的方方面面。 人们正以极大的热情努力的工作并享受由此而带来的种种便利,汽车作为高消费的生活和生产资料,在满足了人们的出行方便的同时,人们更加注重汽车本身的舒适性、可控性、便捷性和安全性。而作为汽车行车很重要的一部分——车灯控制方式很是重要。而作为汽车控制的各种操作,几乎都反映在灯的明亮和熄灭上,也是可以起到警告的作用。而作为尾灯,它有着很大的作用,无论是行车之中还是车辆在驻留的时候,都是必须有各种不同的反映的,于是,汽车尾灯的设计是很重要的。而基于传统的机械和纯电路的控制方式,由于它完全取决于尾灯系统所采用的硬件来保证它的正常工作,而一旦电路老化或者因为机械振动而引起的接触问题以及机械元件变形而不能及时触发电路电源开关,这类问题是经常发生,而除了选用更好的硬件系统元件几乎没有别的可靠的方法来进行避免这类故障的发生,于是,选用智能型的元件来进行系统的设计,增加系统的稳定性和可控制性是非常必须的。而随着集成电路和计算机技术的飞速发展,电子设计自动化已经发展成为可以代替设计者完成电子系统设计的重要工具。电子设计自动化系统包含专用集成电路、数字信号处理和单片机等方向,其中数字专用集成电路的一个重要分支就是可编程逻辑器件(PLD)。基于PLD的电路控制方式是可靠的和可以预测的控制方式,其安全性很高,属于智能控制的范畴。于是,在汽车上实行这种车灯控制方式是一种变化和进步,增加了汽车行车安全性,降低了汽车的故障率。 PLD(Programmable Logic Device)是可编程逻辑器件的总称,PLD基本上可以完成任何数字器件的功能,从高性能CPI到简单集成电路,均可以用PLD实现。通过传统的原理图输入,或是硬件语言的描述就可以自由地设计具备某种功能的数字系统:利用软件仿真功能,可以检验设计的正确性;利用PLD的在线修改能力,可以在不必改动硬件电路的基础上进行修改设计。具备设计时间短,PCB面积小,系统的可靠性强等特点。目前,在通信、自动控制、信息处理等诸多领域发挥着重要的作用。 简单介绍可编程逻辑器件的发展历程。 自上世纪60年代以来,数字集成电路经历了从小规模集成电路(SSI)、中规模集成电路(MSI)、大规模集成电路(LSI)到超大集成电路(VLSI)的发展过程。期间,微电子技术迅猛发展,集成电路的集成规模几乎以平均每 1~2 年翻一番的速度快速增长。集成电路技术的发展也带来了设计方法的进步,先进的 EDA(电子线路设计自动化)技术将传统的“自下而上”的设计方法改变为“自上而下”的设计方法,利用计算机技术,设计者在实验室里就可以设计出合适的 ASIC(专用集成电路)芯片以满足特定电路的需要。作为ASIC的重要分支,可编程逻辑器件即PLD因其成本低、使用灵活、设计周期短、可靠性高且风险小而得到普遍应用,发展非常迅速。 PLD始于上世纪 70 年代,目前已形成了许多类型的产品,其结构、工艺、集成度、速度和性能等都在不断提高和改进。一般情况下,我们可按集成度对其分类,详见图 1.1所示: 图 1.1可编程逻辑器件集成度分类 最早的PLD是1970年制成的PROM(可编程只读存储器),它由固定的与阵列和可编程的或阵列组成。它采用熔丝工艺编程,只能写一次,不能擦除和重写,图1.2 为用PROM完成的半加器逻辑阵列,其中“·”为固定连接,“*”为可编程连接。其逻辑表达式为: F0=A0A1+A0A1 F=A0A1 图1.2用PROM完成的半加器 20世纪70年代中期,出现了可编程逻辑阵列(PLA),它由可编程的与阵列和可编程的或阵列组成。PLA解决了PROM当输入变量增加时会引起存储容量迅速增加的问题,但价格较贵,编程复杂,支持PLA的开发软件有一定难度,因而没有得到广泛应用。 20世纪70年代末期美国MMI公司率先推出可编程阵列逻辑(PAL),它由可编程的与阵列和固定的或阵列组成,采用熔丝编程方式,双极工艺制造,器件的工作速度很高,PAL的输出结构种类很多,设计灵活,成为第一个得到广泛应用的PLD。 20世纪80年代初,Lattice公司发明了通用阵列逻辑(GAL),这是一种可电擦写、可重复编程并且可设置加密的PLD。它采用了输出逻辑宏单元(OLMC)的形式和 E2CMOS工艺,比PAL使用更加灵活,可取代大部分SSI和MSI数字集成电路。由于GAL是在PAL基础上设计的,能与许多种PAL器件保持兼容,可直接替代,所以目前在很多产品上仍有广泛应用。 上述几种可编程逻辑器件由于阵列规模较小,片内寄存器资源不足,不够灵活,编程不便,目前只有GAL在中小规模数字逻辑方面还在应用。而现在的可编程逻辑器件以大规模、超大规模集成电路工艺制造的CPLD和FPGA为主。 CPLD即复杂可编程逻辑器件,目前主要的半导体公司如Xilinx,Altera,Lattice和AMD等都有各自的CPLD产品。作为CPLD器件,至少应包含三种结构:可编程逻辑宏单元,可编程I/O单元,可编程内部连线。 1.2可编程逻辑器件的应用 随着电子技术的高速发展,今天的CPLD和FPGA器件在集成度、功能和性能(速度及可靠性)方面已经能够满足大多数场合的使用要求用CPLD,FPGA等大规模可编程逻辑器件取代传统的标准集成电路、接口电路和专用集成电路已成为技术发展的必然趋势。 PLD在电子技术领域中的应用主要有以下三个方面。 1.在微机系统中的应用 CPLD/FPGA可以取代现有的全部微机接口芯片,实现微机系统中的地址译码、总线控制、中断及DMA控制、DRAM管理和I/O接口电路等功能。利用CPLD/FPGA可以把多个微机系统的功能集成在同一块芯片中,即进行所谓的“功能集成”。 2.在通信领域中的应用 现代通信系统的发展方向是功能更强、体积更小、速度更快、功耗更低。CPLD/FPGA在集成度、功能和速度上的优势正好满足通信系统的这些要求。所以现在无论是民用的转弯动电话、程控交换机、集群电台、广播发射机和调制解调器,还是军用的雷达设备、图像处理设计、遥控遥测设备、加密通信机都已广泛地使用大规模可编程逻辑器件。 3.在数字信号处理技术(DSP)领域中的应用 DSP在很多领域内具有广泛的用途,如雷达、图像处理、数据压缩、数字电视和数字通信机等。随着DSP系统复杂程度和功能要求的提高,用DSP解决方案愈现出其缺陷性:实时性不强、灵活性太差,不适合在实验室或技术开发等场合使用等。现在,CPLD/FPGA为DS提供了解决问题的方案,CPLD/FPGA和DSP的技术结合,能够在集成度、速度(实时性)和系统功能方面满足DSP的需要。应用CPLD/FPGA设计DSP系统可以减少系统体积,提高系统的工作速度。例如,用FPGA可以将一块PC机长卡大小的图像处理板缩小到一块FPGA芯片和几片外围电路上。 可编程逻辑器件是逻辑器件家族中发展最快的一类器件,可编程逻辑器件的出现使得其产品开发周期缩短、现场灵活性好、开发风险变小,随着工艺、技术及市场的不断发展,PLD产品的价格将越来越便宜、集成度越来越高、速度越来越快,再加上其设计开发采用符合国际标准的、功能强大的通用性EDA工具,可编程逻辑器件的应用前景将愈来愈广阔,CPLD/FPGA以其不可替代的地位,将越来越受到业内人士的关注。 PLD在ASIC设计中也存在着广泛的应用。 可编程逻辑器件是在ASIC(专用型集成电路application specific integrated circuit)设计的基础上发展起来的,在ASIC设计方法中,通常采用全定制和半定制电路设计方法,设计完成后如果不能满足要求,就得重新设计再进行验证这样就使得设计开发周期变长,产品上市时间难以保证,大大增加了产品的开发费用。CPLD/FPGA芯片是特殊的ASIC芯片,它们除具有ASIC的特点之外,还具有自身的优势。 目前,ASIC的容量越来越大,密度已达到平均每平方英寸1 百万个门电路。但随着密度的不断提高,芯片则受到引脚的限制,片上芯片虽然很多,但接入内核的引脚数目却是有限的。而选用CPLD/FPGA则不存在这样的限制,因为现在可达到的金属层数目增强了产品的优势,CPLD/FPGA芯片的规模越来越大,其单片逻辑门数已达到上百万门,实现的功能也越来越强,同时可以实现系统集成。另外,与ASIC相比,可编程逻辑器件研制周期较短,先期开发费用较低,也没有最少订购数量的限制,所有这一切简化了库存管理。随着每个门电路成本的降低和每个器件中门电路数量的增加,可编程逻辑器件正在大举打入传统的门阵列领域,并已有少量的打入了标准单元ASIC的领域。 1.3可编程逻辑器件的发展方向 Altera以MAX CPLD确定了全新的发展方向"最大的复杂可编程逻辑器件(CPLD)供应商。Altera公司日前发布了新款MAX 器件系列,这是业界最低的CPLD,MAX系列的核心是新的体系结构,它大大地降低了成本和功耗Altera在近十五年PLD的领导地位和创新的基础上,推出了业界成本最低的CPLD。MAX器件的成本是CPLD的一半,它采用了新的查找表(LUT)体系,因此每个I/O管脚的成本是市面上最低的,而且开创了CPLD 体系的新纪元Altera摒弃了传统的宏单元体系采用了查找表(LUT)结构满足CPLD设计者的需求“基于LUT 的体系采用TSMC的0.18Lm嵌入Flash工艺,使其裸片尺寸是同样工艺下竞争器件的四分之一,大大减小的裸片尺寸使得成本比上一代MAX降低了50%。新的体系采用了为其优化的交错环形I/O管脚,进一步降低了成本,这样公司的产品将具有更大的成本优势MAX系列和上一代MAX产品相比,成本降低了一半,功耗只有其十分之一,同时保持MAX系列原有的即用性、单芯片、非易失性和易用性,MAX器件系列采用TSM成本优化的1.8V,0.18Lm以及六层金属Flash 工艺,而且新的系列容量翻了两番,性能是上一代MAXCPLD的两倍多采用MAX 器件,大批量消费类、通信、工业和计算设计的工程师能够用MAX器件替代更昂贵和不够灵活的小型ASIC和ASSP。” 1.4 EL-ARM-820型教学实验系统介绍 EL-ARM-820型嵌入式实验开发系统适合高等院校《嵌入式系统原理开发与设计》课程的实验教学,可以移植linux、uclinux、VxWorks、pSOS、QNX、ucosII、Windows CE等嵌入式操作系统,适合嵌入式系统的实验教学、课题开发、毕业设计及电子设计竞赛等,同时该系统也是电子工程师们理想的开发工具。实验箱如图1.3所示。 图1.2EL-ARM-820型教学实验箱 EL-ARM- 820型教学实验系统属于一种综合的教学实验系统。系统采用实验箱底板加活动CPU板的形式。实验箱底板资源丰富。CPU板可选择ARM7和ARM9。同时,实验系统上的Tech-V总线和E-lab总线能够扩展Tech-V系列和E-lab系列功能模块,极大增强系统的功能,用户也可以基于Tech-V总线和E-LAB总线开发自己的应用模块,完成自己的课题。除此之外,实验系统提供丰富的样例实验,并且提供操作系统移植的源代码,所有的实验程序都有丰富详尽的注释说明,极大的方便了教学。 CPU板可以更换,支持五种CPU。该型号实验箱的一些基本技术参数如下: S3C44B0X(ARM7内核):主处理器:S3C44B0X(ARM7TDMI内核),16bit数据总线,工作频率最高66MHz;外部存储器扩展:线性存储器:2MB,芯片SST39VF160;动态存储器:16MB,芯片HY57V641620;海量存储器:16MB,芯片K9F2808;10M Hz以太网接口,芯片RTL8019AS,支持plug and play功能; USB接口,符合USB 1.1规范口能够配置为Host或peripheral两种模式;标准的RS232接口;实时时钟(RTC) 单元;扩展总线接口,连接所有信号线,可进行应用背板扩展;标准20针JTAG调试接口;复位电路,电源、运行状态指示灯;直流5V单电源供电,含电源转换电路。 S3C2410(ARM9内核):主处理器:S3C2410(200 MIPS ARM920T内核);外部存储器扩展:64MB  SDRAM、32MB的NANDFlash;10/100M自适应以太网接口;USB 1.1接口(Host或peripheral)两种模式;标准的RS232接口;实时时钟(RTC)单元;扩展总线接口,连接所有信号线,可进行应用背板扩展;标准20针JTAG调试接口;复位电路,电源、运行状态指示灯;直流5V单电源供电,含电源转换电路。 XSCALE PXA255/270(ARM10内核):主处理器:INTEL公司 XSCALEPXA255 内核,400M主频,32Bit RISC处理器,具有32K指令缓冲,32K数据缓冲,MMU单元,2k字节MiniCache,扩展多媒体DSP指令;存储器:SDRAM(64MB)可以定制扩展到256MB;FLASH:32MB,Intel Strata快速页面读取模式Flash,可以定制扩展到128MB;NANDFLASH:可扩展8MB~64MB;10/100M以太网接口;USB 1.1接口(Host或peripheral)两种模式;标准的RS232接口;实时时钟(RTC)单元;扩展总线接口,连接所有信号线,可进行应用背板扩展;准20针JTAG调试接口;复位电路,电源、运行状态指示灯;直流5V单电源供电,含电源转换电路。 实验箱底板:主要包括以下模块: CPU板接口单元:可接ARM7,ARM9,ARM10等CPU板;数字量输入输出单元:输入:8位自锁按键开关;输出:8位数码管及8为发光二极管;PS/2扩展接口,可扩展PS/2扩展板,连接键盘鼠标;液晶显示单元:5.7寸彩色液晶屏,最大分辨率为320×240、256色,采用彩色STN制式、CCFL背光;键盘接口单元为4×4键盘,带8位LED数码管,芯片HD7279A,用户可自定义键值;音频及接口模块:IIS格式芯片UDA1341TS,采样率最高48KHz,通过IIS总线和系统连接,一个立体声耳机输出(2.5mm外接耳机接口),一个立体声麦克输入(2.5mm外接耳机接口),一个音频信号输入(2.5mm外接耳机接口); USB接口:1个主接口,两个设备接口,芯片SL811H/S、PDIUSBD12,支持 USB1.1协议);RS232通讯模块:标准RS232接口,完成与PC机的串行数据的转换;IIC总线接口;IDE接口:可外挂硬盘;SD卡接口:通信频率最高25MHz,芯片W86L388D,兼容MMC卡;A/D转换模块:芯片自带的8路10位A/D,满量程2.5V;步进电机控制模块:两相四拍式,步距角1.8°,0.1A,用IO口线加隔离驱动电路直接控制;直流电机控制模块:直流电机可以利用PWM定时器输出进行隔离后驱动,中断反馈闭环控制;信号源单元:两路频率、幅值可调三角波、方波和正弦波。输出频率范围0~120KHz,幅值范围0~+5V(最大);CPLD单元: 完成各资源所需的地址译码,片选信号,以及一些高低电平的模拟;电源模块单元:为系统提供+5V、+12V、-12V、+3.3V电源模块单元;信号扩展单元:达盛公司标准扩展总线,外扩所有信号接口,用户可进行功能扩展。 在此实验箱上可开设的实验项目主要有以下几类:基于ARM系统资源的实验;基于uCOSII操作系统的ARM系统实验;基于uClinux操作系统的ARM系统实验;基于linux操作系统的ARM系统实验。 EL-ARM- 820型教学实验系统有以下几个特点: 1.移植了目前最为流行的时时开放源码的双操作系统UC/OS-II及UCLINX,LINUX。 2.CPU板可以更换为不同厂家的ARM7、ARM9的CPU板,并且CPU板可以单独使用。 3.硬件资源丰富:包括模拟信号发生器、数字量IO扩展、 RS232接口、USB接口、以太网接口、LCD显示单元、触摸屏单元、键盘接口等单元、PS/2接口单元、IDE接口、SD卡接口、直流电机、步进电机和温度控制单元。 4.通过Techv接口,可以进行系统功能扩展,方便用户进行二次开发。 5.提供源代码,并且实验程序都有详尽的注释说明,特别方便实验教学。 在本课程设计中,主要仿真将在Max Plus II平台上进行模拟仿真,对仿真波形进行分析和判别。 2 理论基础 2.1 FPGA/CPLD概述 随着数字集成电路的不断更新和换代,特别是可编程逻辑器件的出现,使得传统的数字系统设计方法发生了根本的改变。可编程逻辑器件的灵活性使得硬件系统设计师在实验室里用一台计算机、一套相应的EDA软件和可编程逻辑芯片就可以完成数字系统设计与生产,而其中应用最广泛的可编程逻辑器件当属FPGA和CPLD。 FPGA和CPLD都是可编程逻辑器件,它们是在PAL、CAL等逻辑器件的基础上发展起来的。同以往的PAL、CAL等比较,FPGA/CPLD的规模更大,它可以替代几十甚至几千块通用IC芯片。这样的FPGA/CPLD实际上就是一个子系统部件,因此它受到了世界范围内电子工程设计人员的广泛关注和普遍欢迎。 FPGA是新一代面向用户的可编程逻辑器件它的功能密度远远超过其他 PLD 器件,一块FPGA可以替代(100-200)片标准器件或者(20-40)片GAL器件,其I/O引脚数多达100 余条。所以一片 FPGA 芯片可以替代多个逻辑功能复杂的逻辑部件,或者一个小型数字系统。自FPGA问世以来,它已在许多领域获得了广泛的应用。 逻辑单元型结构(LCA,Logic Cell Array)的FPGA由三部分组成,即逻辑单元阵列CLB(configurable logic block)、I/O单元、互联资源。这种类型结构的特点是通过对CLB编程实现逻辑功能;通过对I/O单元编程确定输入或输出结构;通过对互联资源编程实现 CLB之间、CLB与I/O单元之间、I/O单元之间的互联关系,从而实现用户所需要的逻辑功能。PAL结构扩展型FPGA则是在PLA基础上加以改进和扩展,大幅度增加了寄存器数量和I/O引脚数,增设了可编程互联资源,改善了互联模式,改进了阵列结构使得芯片的利用率大大提高。 CPLD器件的结构是一种与阵列可编程、或阵列固定的与或阵列形式。PAL、GAL都采用这种形式,但CPLD同它们相比,增加了内部连线对逻辑宏单元和I/O单元也有重大改进。一般情况下,CPLD器件中包含三种结构:可编程逻辑宏单元、可编程I/O单元、可编程内部连线。部分CPLD器件内还集成了RAM、FIFO或双口RAM等存储器,以适应 DSP应用设计的要求。 CPLD器件具有同FPGA器件相似的集成度和易用性,在速度上还有一定的优势,因此,在可编程逻辑器件技术的竞争中它与 FPGA并驾齐驱,成为两支领导可编程器件技术发展的力量之一。 FPGA/CPLD之间存在一些区别,主要有如下几方面。 CPLD与FPGA在价格、性能、逻辑规模和封装(包括EDA软件性能)等方面各有千秋,面对不同的开发项目,使用者应该作出最佳的选择,表2-1是对CPLD/FPGA在各个方面的比较。 表2-1 CPLD与FPGA的区别 器件 比较点 FPGA CPLD 结构工艺 SRAM EPROM 或FLASH 基本结构 LUT 查找表 乘积项 Pin—Pin 时延 不定 确定 配算存储器 需外挂ROM 不需 保密注论 无保密性 可加密 工作电压 3.3V 或2.5V 5V 编程工艺 通过PC 机并行口或专用编程器或单片机进行配置 ISP 在线编程 应用 主要针对要求不是很高,设计逻辑较复杂的系统,适合于完成时序较多的逻辑电路 主要针对速度要求高,但设计逻辑又不是很复杂的系统,适合于完成算术和组合逻辑 FPGA/CPLD的特点主要有如下几方面: 1.CPLD/FPGA具有用户可编程的特性。利用CPLD/FPGA,电子系统设计工程师可以在实验室中设计出专用集成芯片,实现系统集成。缩短了产品的开发、上市时间,降低了开发成本。 2.CPLD/FPGA.具有静态可重复编程或在线动态重构特性,使硬件的功能可象软件一样通过编程来修改。不仅使设计修改和产品升级变得十分方便,而且极大地提高了电子系统的灵活性和通用能力。 3.固定长度的金属线进行各逻辑块的互连使得设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全的预测。 4.FPGA/CPLD.芯片在出厂之前都做过百分之百的测试,不需要设计人员承担风险和费用,只需在自己的实验室里通过在相关的软、硬件环境下完成芯片的最终功能。其投资小,并可以节省许多潜在的花费。 5.FPGA/CPLD.能以最快的速度占领市场。设计人员可以反复编程、擦除、使用,或者在外围电路不动的情况下用不同软件实现不同的功能。 6.设计师不可或缺的重要手段——IP核。它将一些在数字电路中常用,但比较复杂的功能块,如FIR滤波器,SDRAM控制器、PCI接口等设计成可以修改参数的模块,让其他用户能够直接调用这些模块,从而大大减轻了工程师的负担,避免了重复劳动。 2.2 VHDL语言概述 电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统的硬件电路。VHDL 硬件描述语言在电子设计自动化中扮演着重要的角色,他是EDA 技术研究的重点之一。 硬件描述语言是EDA 技术的重要组成部分,VHDL 是作为电子设计主流硬件描述语言,VHDL(Very High Speed Integrated Circuit Hardware Description Language)于1983 年由美国国防部发起创建,由IEEE进一步发展并在1987年作为IEEE标准10760发布。因此,VHDL成为硬件描述语言的业界标准之一。VHDL作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,使用VHDL语言,可以就系统的总体要求出发,自上而下地将设计细化,最后完成系统硬件的整体设计。一个完整的VHDL程序包括以下几个基本组成部分:实体(Entity),结构体(Architecture),程序包(Package),库(Library)。其中,实体是一个VHDL程序的基本单元,由实体说明和结构体两部分组成,实体说明用于描述设计系统的外部接口信号;结构体用于描述系统的行为,系统数据的流程或系统组织结构形式。程序包存放各设计模块能共享的数据类型,常数,子程序等。库用于存放已编译的实体,机构体,程序包及配置。 VHDL 语言的编译环境有不同的版本,我们应用的是Altera 公司的Maxplus 软件,它的操作顺序如下:使用TEXTEDITOR 编写VHDL 程序使用COMPILER 编译VHDL 程序;使用WAVE2FORMEDITOR,SIMULAROT 仿真实验;使用TIMINGANALTZER 进行芯片的时序分析;用FLOORPLANEDITOR 锁定芯片管脚位置;使用PROGRAMMER 将编译好的VHDL 程序下载到芯片中。 VHDL 进行工程设计的优点是显而易见的。 1.与其他的硬件描述语言相比,VHDL 具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。 2.VHDL 丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 3.VHDL 语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效、高速地完成必须有多人甚至多个代发组共同并行工作才能实现。 4.对于用VHDL 完成的一个确定的设计,可以利用EDA 工具进行逻辑综合和优化,并自动的将VHDL 描述设计转变成门级网表。 5.VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。 6.用VHDL 语言编写的源程序便于文档管理,用源代码描述来进行复杂控制逻辑的设计,既灵活方便,又便于设计结果的交流、保存和重用。 在VHDL 语言中,状态机有两种:莫尔型和米勒型。 莫尔型状态机的输出仅是状态向量的函数,输出信号只和状态机所处的状态有关。图2.1 如下: 图2.1莫尔型状态机模型 米勒型状态机的输出变化要领先一个时钟周期,它的输出既和当前状态有关,又和所有输入信号有关。换句话说,在米勒型状态机中一旦输入信号发生变化或者状态发生变化,输出新好多将随之发生变化。图2.2 如下: 图2.2米勒型状态机模型 由于本设计的状态变化与输入信号有关,所以采用米勒型状态机。较好的解决了五种状态(复位状态,测试状态,设置状态,烹调状态,完成状态)之间的转化。程序中,首先使控制器处于复位状态,此时把所有信号清零,再根据输入信号转换状态。 综上所述,VHDL 语言的极强的行为描述能力和丰富的仿真语句及库函数,决定了它具有支持大规模设计的分析和已有设计的再利用功能5和功能6,用VHDL完成一个确定的设计,可以利用EDA 工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表。这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。 2.3 Max Plus II概述 Max Plus II是美国Altera公司开发的软件,它具有操作系统的程序界面,采用全菜单操作和鼠标操作方式,是一个完全集成化,易学易用的可编程逻辑设计环境。它提供了功能强大,直观便捷和操作灵活的原理图输入设计功能,同时还配备了适用于各种需要的元件库,其中包含基本逻辑元件库(如与非门、反向器、触发器等),宏功能元件(包含了几乎所有74 系列的器件)以及功能强大、性能良好的类似于核的兆功能块库,但更为重要的是它提供了使用方便,精度良好的时序仿真器,能够对系统中任一元件的功能进行精确的时序仿真,精度达0.1ns,非常准确。 Max Plus II开发系统是一个完全集成化、易学易用的可编程逻辑器件设计和开发系统,它提供了一种真正与结构无关的可编程逻辑设计环境。它所提供的灵活性和高效性是无可比拟的,其丰富的图形界面,辅之以完整的、可即时访问的在线文档,使设计人员能够轻松、愉快地掌握和使用Max Plus II软件。Max Plus II支持灵活多样的输入方式:原理图输入、硬件描述语言输入、波形输入,以及层次设计输入。 Max Plus II的设计输入、处理和校验功能全部集成在统一的开发环境下,这样可以加快动态调试进程。它提供丰富的库单元供设计者使用,包括74系列的全部器件、多种特殊的逻辑宏功能(macro-function)和参数化功能模块(LPM: Library of Parameterized Modules),但更为重要的是Max Plus II还提供了原理图输入多层次设计功能,使得用户能设计更大规模的电路系统,以及使用方便、精度良好的时序仿真器。与传统的数字电路实验相比,Max Plus II提供灵活多样的层次化输入设计功能,具有显著的优势: 1.能进行任意层次的数字系统设计。传统的数字电路实验只能完成单一层次的设计,使设计者无法了解和实现多层次的硬件数字系统设计; 2.对系统中的任一层次或任一元件的功能进行精确的时序仿真,精度达0.1ns,因此能发现对系统可能产生不良影响的竞争冒险现象; 3.通过时序仿真,能迅速定位电路系统的错误所在,并随时纠正; 4.能对设计方案进行随时更改,并储存设计过程中所有的电路和测试文件入档; 5.通过编译和下载,能在FPGA或CPLD上对设计项目随时进行硬件测试验证; 6.如果使用FPGA和配置编程方式,将不会有器件损坏和损耗问题; 7.符合现代电子设计技术规范。传统的数字电路实验利用手工连线的方法完成元件连接,容易对学习者产生误导,以为只要将元件间的引脚用引线按电路图连上即可,而不必顾及引线长短,粗细弯曲方式,可能产生的分布电感和电容效应,以及电磁兼容性等等十分重要的问题。 Max Plus II还提供设计校验的仿真器,其中包括功能仿真和时序仿真。仿真器的灵活性很强电路设计完成后,需要验证电路设计的逻辑功能是否正确。这是一项简单的逻辑检查,可采用功能仿真,这对于初步的逻辑功能检测非常方便。功能检查完成后,可进行时序仿真。Max Plus II的时序分析程序可以计算点到点的器件延时,确定器件引脚上的建立时间和保持时间要求,还可计算最高时钟频率。 用Max Plus II软件进行逻辑设计的步骤包括: 1.根据所选课题的任务和设计指标要求,确定总体设计方案,画出总体方案的系统框图(亦称预设计阶段) 2.进行底层单元电路分析及输入设计、编译、仿真; 3.利用已编译正确的底层单元电路模块,画出顶层电路的原理图 ,进行编译调试和仿真测试; 4.撰写设计报告。 Max Plus II的设计流程可以用如下图2.3给出。 图2.3Max Plus II 设计流程 从图2.3可清晰了解到Max Plus II提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。他包括设计输入编辑、编译网表提取、数据库建立、逻辑综合、逻辑分割、适配、延时网表提取、编辑文件汇编以及编程下载9个步骤。 3 汽车尾灯控制器详细设计 在21 世纪的今天,汽车已经逐渐为越来越多的人们所拥有,在家庭中的普及率不断提高,大大的方便了我们的生活。汽车尾灯由六支只LED 灯组成,它是汽车电子电路系统的重要组成部分。.本文采用EDA 技术,利用Max Plus II 工作平台和VHDL 设计语言,设计了一种汽车尾灯芯片,该芯片具有车辆检查,刹车,左转弯,右转弯和完成显示的功能。 3.1设计方案 应用VHDL进行自顶向下的设计,是采用可完全独立于目标器件芯片物理结构的硬件描述语言。就是使用VHDL模型在所有综合级别上对硬件设计进行说明、建模和仿真测试。其设计流程如图3.1所示: 图3.1 VHDL自顶向下设计流程 基于可编程逻辑器件CPLD/FPGA 的芯片,使用硬件描述语言(VHDL)设计一个汽车尾灯控制器芯片,并进行计算机仿真和编程下载。要求该汽车尾灯控制芯片能够实现如下功能: 1.自动检查功能:在汽车尾灯整个工作的过程中,在任一状态的任一时刻,检查汽车自身是否处于正常状态,各电路系统和车身安全是否良好。 2.刹车功能:当驾驶人员遇险需要刹车踩下刹车时,尾灯有规律闪烁,提示后面驾驶人员和车辆注意。 3.左转功能:当驾驶人员需要转弯按下左转弯键时,尾灯有规律闪烁,提示后面驾驶人员和车辆注意。 4.右转功能:当驾驶人员需要转弯按下右转弯键时,尾灯有规律闪烁,提示后面驾驶人员和车辆注意。 根据以上设计要求,绘制出汽车尾灯控制器外部框图如下图 3.2所示: 图3.2汽车尾灯控制器外部框图 该框图的实现功能如下: CLK 是任意频率的脉冲, 经过分频电路后变成秒脉冲输入,作为时钟信号使用。 JIACHA 为检查控制信号,高电平有效,用于检查汽车自身是否处于正常状态,各电路系统和车身安全是否良好。 SHACHE 为刹车控制信号,高电平有效,用于提示后面驾驶人员和车辆注意。 ZUOYI 是左转控制信号,高电平有效。用于汽车左转时提醒后方车辆和人员。 YOUYI 是右转控制信号,高电平有效。用于汽车左转时提醒后方车辆和人员。 LIGHT 是输出显示信号,高电平有效,用于显示不同控制情况下汽车尾灯的显示状态。 该汽车尾灯控制器的具体工作过程是: 1.初始状态时,各系统处于低电平状态,CLK 信号作为时钟信号起到频率间隔作用,当汽车启动时若是某处未能处于安全状态,比如车门未关好或是某处电路出现问题时,检查灯CH将会有规律的闪烁; 2.当汽车行驶途中,前方出现紧急情况需要采取紧急制动时,驾驶员踩下刹车,汽车尾灯L和R出现规律性闪烁; 3.当汽车行驶途中,需要进行左拐弯时,驾驶员按下左转弯控制键,汽车尾灯L出现规律性闪烁; 4.当汽车行驶途中,需要进行右拐弯时,驾驶员按下右转弯控制键,汽车尾灯R出现规律性闪烁。 电瓶高低状态在波形仿真中用于验证程序是否正常运行,尾灯有无正常工作。 3.2设计思路 根据该汽车尾灯控制器的功能要求,现划分为以下5个模块: 1.控制模块 2.检查模块 3.刹车模块 4.左转模块 5.右转模块 每个模块各自控制相应尾灯的亮灭,控制模块进行总体控制,尾灯的运行状态表如下表3-1所示。 表3-1汽车尾灯和汽车运行状态表 汽车运行状态 右转尾灯 左转尾灯 R L 正常运行 灯灭 灯灭 左转弯 灯灭 L亮 右转弯 R亮 灯灭 刹车 尾灯L、R同时亮 行车异常状态 CH检查灯亮 在每个模块中,程序中的控制信号表示如下: TOP_CLK 是脉冲控制输入信号。 TOP_JIANCHA 是检查控制输入信号,高电平有效。 TOP_SHACHE 是刹车控制输入信号,高电平有效。 TOP_ZUOYI 是左转弯数控制输入信号 ,高电平有效。 TOP_YOUYI 是右转弯控制输入信号,高电平有效。 TOP_LIGHT[5…0]是汽车尾灯显示输出信号,高电平有效。 3.3模块设计 控制模块的主要作用在于协调以上四个模块的正确调度与工作。控制模块的主要作用如下图3.3所示 图3.3控制模块作用图 控制模块的主要代码如下: begin if top_youyi='1' then t<=l1; elsif top_zuoyi='1' then t<=l2; elsif top_jiache='1' then t<=l3; elsif top_shche='1' then t<=l4; else t<="000000"; end if; end process; u1: youyi port map(top_clk,top_youyi,l1); u2: zuoyi port map(top_clk,top_zuoyi,l2); u3: jiancha port map(top_jiache,top_clk,l3); u4: shache port map(top_shche,top_clk,l4); top_light<=t; 检查模块的设计思路如下图3.4所示。 图3.4检查模块设计图 其中 JIANCHA 是检查控制输入信号,高电平有效,CLK 是脉冲控制输入信号。 LIGHT[5..0]是汽车尾灯显示输出信号,高电平有效,状态图如上表在高电平有效情况下进入循环(111111—000000—111111—000000)。状态循环如下3.5图所示。 图3.5检查模块状态循环图 检查模块的VHDL程序代码如下: library ieee; use ieee.std_logic_1164.all; entity jiancha is port(jiache,clk: in std_logic; light: out std_logic_vector(5 downto 0)); end; architecture shift_1 of jiancha is signal q: std_logic_vector(5 downto 0); begin process(clk,jiache) begin if (jiache='0') then q<="000000"; //状态开始状态 elsif(clk event and clk='1') then q(5)<=not q(5); q(4)<=not q(4); q(3)<=not q(3); q(2)<= not q(2); q(1)<= not q(1); q(0)<= not q(0); //状态循环如图3.4中设计 end if; end process; light<=q; end; 刹车模块的设计思路如下图3.6所示。 图3.6刹车模块设计图 其中 SHACHE是刹车控制输入信号,高电平有效。CLK 是脉冲控制输入信号。 LIGHT[5…0]是汽车尾灯显示输出信号,高电平有效,状态图如上表在高电平有效情况下进入高电平(000000—111111)。状态循环如下3.7图所示。 图3.7刹车模块状态循环图 刹车模块的VHDL程序代码如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity shache is port(shche,clk: in std_logic; light: out std_logic_vector(5 downto 0)); end; architecture shift_1 of shache is signal q:std_logic_vector(5 downto 0); begin process(clk,shche) begin if clk'event and clk='1' then if (shche='1') then q<="111111"; elsif(shche='0')then q<="000000"; end if; end if; light<=q; end process; end; 左转模块的设计思路如下图3.8所示。 图3.8左转模块设计图 其中,ZY 是左转弯数控制输入信号,高电平有效。CLK是脉冲控制输入信号。 LIGHT[5…0]是汽车尾灯显示输出信号,高电平有效,状态图如上表在高电平有效情况下进入循环(001—010—100—001—010—100)。状态循环如下3.9图所示。 图3.9左转模块状态循环图 右转模块的设计思路如下图3.10所示。 图3.10右转模块设计图 其中,YY 是左转弯数控制输入信号,高电平有效。CLK是脉冲控制输入信号。 LIGHT[5…0]是汽车尾灯显示输出信号,高电平有效,状态图如上表在高电平有效情况下进入循环(100—010—001—100—010—001)。状态循环如下3.11图所示。 图3.11右转模块状态循环图 4汽车尾灯控制器的仿真 4.1控制模块的仿真 将程序使用Max Plus II进行运行并仿真,得到控制模块仿真图像如4.1所示。 图4.1控制模块仿真图 上图仿真结果显示: top_zuoyi是左转弯数控制输入信号,高电平有效。 top_youyi是右转弯控制输入信号,高电平有效。 top_shache是刹车控制输入信号,高电平有效。 top_jiancha是检查控制输入信号,高电平有效。 top_clk是脉冲控制输入信号。 top_light5至top_light0是汽车尾灯显示输出信号,高电平有效。 由仿真图像可知,控制模块运行正常。 4.2检查模块的仿真 将程序使用Max Plus II进行运行并仿真,得到检查模块仿真图像如4.2所示。 图4.2检查模块仿真图 上图仿真结果显示: jiancha是检查控制输入信号,高电平有效,clk是脉冲周期信号。 light是汽车尾灯显示输出信号,高电平有效。尾灯显示闪烁由全亮到全暗再到全亮循环,(000000---111111—000000—111111—000000) 又仿真图像可知,检查模块运行正常。 4.3刹车模块的仿真 将程序使用Max Plus II进行运行并仿真,得到刹车模块仿真图像如4.3所示。 图4.3刹车模块仿真图 上图仿真结果显示: shache是刹车控制输入信号,高电平有效。clk是脉冲周期信号。 light是汽车尾灯显示输出信号,高电平有效。尾灯显示由暗到长时间全亮直到控制信号变为低电平是变暗。(000000—111111—000000) 由仿真图像可知,刹车模块运行正常。 4.4左转模块的仿真 将程序使用Max Plus II进行运行并仿真,得到左转模块仿真图像如4.4所示。 图4.4左转模块仿真图 上图仿真结果显示: zy是左转弯数控制输入信号,高电平有效。lk是脉冲周期信号。 light是汽车尾灯显示输出信号,高电平有效。尾灯显示由左边三个灯依次向左循环闪烁,右边三个灯保持暗状态。(000—001—010—100—001—010—100) 由仿真图像可知,左转模块运行正常。 4.5右转模块的仿真 将程序使用Max Plus II进行运行并仿真,得到右转模块仿真图像如4.5所示。 图4.5右转模块仿真图 上图仿真结果显示: yy是左转弯数控制输入信号,高电平有效。lk是脉冲周期信号。 light是汽车尾灯显示输出信号,高电平有效。尾灯显示由右边三个灯依次向右循环闪烁,左边三个灯保持暗状态。(000—100—010—001—100—010—001) 由仿真图像可知,右转模块运行正常。 5 小 结 本课题要求基于可编程逻辑器件,使用硬件描述语言VHDL编写一个汽车尾灯控制器芯片,并用Max Plus II软件进行仿真。根据自己对汽车尾灯的理解我设计了四大功能:一是检查功能,二是刹车功能,三是左转功能,四是右转功能。由此必需设计出五个大的模块:一是控制模块,此模块是总的控制系统,将其它模块的功能融合在一起,便于进行集中的控制和操作;二是检查模块,此模块是一个分模块,主要功能是对在汽车尾灯整个工作的过程中,在任一状态的任一时刻,检查汽车自身是否处于正常状态,各电路系统和车身安全是否良好。三是刹车模块,此模块也是一分模块,主要功能是当驾驶人员遇险需要刹车踩下刹车键时,尾灯有规律闪烁,提示后面驾驶人员和车辆注意。四是左转模块,主要功能是当驾驶人员需要转弯按下左转弯键时,尾灯有规律闪烁,提示后面驾驶人员和车辆注意。五是右转模块,此模块也是一分模块,主要功能是当驾驶人员需要转弯按下右转弯键时,尾灯有规律闪烁,提示后面驾驶人员和车辆注意。在整个电路设计完毕并仿真成功后发现,其实整个电路设计实现的功能还是比较实用和易于操作的,而自己也为此付出了许多:从根据课题要求查找相关资料,学习硬件语言,到自己能够独立编写小程序;从对Max Plus II软件的摸索,一次次修改程序,到仿真得到较满意的结果;从对截图工具的搜索下载,论文资料的搜集,到文字排版的学习。在设计过程中遇到了很多困难,在指导老师的指引和同学的帮助下,通过不断探索学习,使问题得到了一定的解决。终于使汽车尾灯控制器的控制,检查,刹车,右转等基本功能都实现了,美中不足的是汽车尾灯的各个仿真结果都有一定的延时。 通过本学期课程设计的学习,我从中学习到了很多东西,对可编程逻辑器件,VHDL语言,Max Plus II软件有了一定的了解,尤其是用VHDL语言编程和仿真。在本次设计中最大的收获是在不断地发现问题,分析问题,解决问题的过程中培养了自己的科研能力,为今后的学习工作做了一个良好的铺垫。 参考文献 [1]王道宪.VHDL电路设计技术[M]. 北京:国防工业出版社 2004.1. [2]刘瑞.VHDL语言与FPGA设计[M]. 北京:机械工业出版社 2004.4. [3]王振红.VHDL数字电路设计与应用实践教程[M]. 北京:机械工业出版社2004. [4]潘松,王国栋.VHDL实用教程[M]. 西安:电子科技大学出版社 2000.3. [5]王毓银.数字电路逻辑设计[M].北京:高等教育出版社,1999.9. [6]王道宪.CPLD/FPGA可编程逻辑器件应用与开发[M].北京:国防工业出版社,2004.1. [7]王道宪,贺名臣,刘伟.VHDL电路设计技术[M].北京:国防工业出版社,2004.1. [8]赵鑫,蒋亮.VHDL与数字电路设计[M].北京:机械工业出版社,2005.4. 附录:设计源程序清单 // 程序名称:汽车尾灯控制电路的PLD实现 // 程序作者:桂忱 // 最后修改日期:2010-12-10 检查模块程序 library ieee; use ieee.std_logic_1164.all; entity jiancha is port(jiache,clk: in std_logic; light: out std_logic_vector(5 downto 0)); end; architecture shift_1 of jiancha is signal q: std_logic_vector(5 downto 0); begin process(clk,jiache) begin if (jiache='0') then q<="000000"; elsif(clk event and clk='1') then q(5)<=not q(5); q(4)<=not q(4); q(3)<=not q(3); q(2)<= not q(2); q(1)<= not q(1); q(0)<= not q(0); end if; end process; light<=q; end; 刹车模块的程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity shache is port(shche,clk: in std_logic; light: out std_logic_vector(5 downto 0)); end; architecture shift_1 of shache is signal q:std_logic_vector(5 downto 0); begin process(clk,shche) begin if clk'event and clk='1' then if (shche='1') then q<="111111"; elsif(shche='0')then q<="000000"; end if; end if; light<=q; end process; end; 左转弯模块的程序 library ieee; use ieee.std_logic_1164.all; entity zuoyi is port( clk,zy : in std_logic; light : out std_logic_vector(5 downto 0)); end zuoyi; architecture behave of zuoyi is type states is (s0,s1,s2); signal current_state,next_state : states; signal light1 : std_logic_vector(2 downto 0); begin com : process(current_state,zy) begin case current_state is when s0=> if zy='1' then light1<="001";next_state<=s1; else light1<="000"; next_state<=s0; end if; when s1=> if zy='1' then light1<="010";next_state<=s2 ; else light1<="000"; next_state<=s0 ; end if; when s2=>light1<="100";next_state<=s0 ; end case; end process; light(5)<=light1(2); light(4)<=light1(1); light(3)<=light1(0); light(2)<='0'; light(1)<='0'; light(0)<='0'; synch: process(clk) begin if(clk'event and clk='1') then current_state<=next_state; end if; end process; end behave; 右转弯模块的程序 library ieee; use ieee.std_logic_1164.all; entity youyi is port( clk,yy : in std_logic; light : out std_logic_vector(5 downto 0)); end youyi; architecture behave of youyi is type states is (s0,s1,s2); signal current_state,next_state : states; signal light1 : std_logic_vector(2 downto 0); begin com : process(current_state,yy) begin case current_state is when s0=> if yy='1' then light1<="100";next_state<=s1; else light1<="000"; next_state<=s0; end if; when s1=> if yy='1' then light1<="010";next_state<=s2 ; else light1<="000"; next_state<=s0 ; end if; when s2=>light1<="001";next_state<=s0 ; end case; end process; light(5)<='0'; light(4)<='0'; light(3)<='0'; light(2)<=light1(2); light(1)<=light1(1); light(0)<=light1(0); synch: process(clk) begin if(clk'event and clk='1') then current_state<=next_state; end if; end process; end behave; 控制模块的程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_signed.all; entity contro is port( top_clk : in std_logic; top_jiache : in std_logic; top_shche : in std_logic; top_zuoyi : in std_logic; top_youyi : in std_logic; top_light : out std_logic_vector(5 downto 0)); end contro; architecture behave of contro is component youyi port( clk,yy : in std_logic; light : out std_logic_vector(5 downto 0)); end component; component zuoyi port( clk,zy : in std_logic; light : out std_logic_vector(5 downto 0)); end component; component jiancha port(jiache,clk: in std_logic; light: out std_logic_vector(5 downto 0)); end component; component shache port(shche,clk: in std_logic; light: out std_logic_vector(5 downto 0)); end component; signal l1,l2,l3,l4 : std_logic_vector(5 downto 0); signal t: std_logic_vector(5 downto 0); begin process begin if top_youyi='1' then t<=l1; elsif top_zuoyi='1' then t<=l2; elsif top_jiache='1' then t<=l3; elsif top_shche='1' then t<=l4; else t<="000000"; end if; end process; u1: youyi port map(top_clk,top_youyi,l1); u2: zuoyi port map(top_clk,top_zuoyi,l2); u3: jiancha port map(top_jiache,top_clk,l3); u4: shache port map(top_shche,top_clk,l4); top_light<=t; end behave; 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈 芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈 编辑器 GAL 编辑文件汇编 CPLD PAL PLA PROM 复杂PLD 简单PLD 组合逻辑1 INPUTS CLK 寄存器 RES RES CLK 组合逻辑2 组合逻辑1 OUTPUTS 延时网表提取 匹配 寄存器 逻辑分割 逻辑综合 数据库建立 编译网表提取 FPGA INPUTS 可编程逻辑器件(PLD) 图形成VHDL编辑器 OUTPUTS 10门级时序仿真 9结构综合 11硬件测试 设计完成 5前端功能仿真 4 VHDL-RTL级建模 8功能仿真 3 VHDL行为仿真 7测试向量生成 2建立VHDL行为模块型 6逻辑综合 1设计说明书 L 检查控制信号 刹车控制信号 R CH 检查模块 右侧灯选择控制模块 左侧灯选择控制模块 主控选择模块 右转弯控制信号 左转弯控制信号 PAGE
/
本文档为【汽车尾灯控制电路的PLD实现课程设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索