基于FPGA的出租车计价器的设计论文_第1页
基于FPGA的出租车计价器的设计论文_第2页
基于FPGA的出租车计价器的设计论文_第3页
基于FPGA的出租车计价器的设计论文_第4页
基于FPGA的出租车计价器的设计论文_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、论文题目:基于 FPGA 的出租车计价器的设计专 业:微电子科学与工程摘 要出租车计价器是乘客与司机双方的交易准则。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。现在各大中城市出租车行业都已普与自动计价器,而部分小城市尚未普与,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,所以计价器的普与也是毫无疑问的。 本论文阐述了 EDA 的发展与其优势、FPGA 的发展趋势与结构特点和 VHDL 语言的优点与语法结构,并分析了出租车计价器各模块的功能要求、基本原理以与实现方法。本论文的设计采用 VHDL 硬件描述语言进行编程,基于 Quartus II 软件平

2、台进行编译和仿真。论文介绍了采用 FPGA 芯片设计出租车计价器的方法,阐述了该计价器的主要组成单元:车轮大小选择模块、计程模块、计时模块与计费模块、数据分配模块、分频模块、译码模块的设计方法,同时给出了详细的仿真波形,实现了出租车基本计费功能,还能模拟汽车启动,停止,暂停等状态,同时提高了计费系统的可靠性、通用性。本设计在FPGA 试验箱上运行良好,实现了计费器的各项功能。关键字关键字 FPGA,VHDL,Quartus II,出租车计价器Subject:Subject:TheThe designdesign ofof thethe taxitaxi metermeter basedbase

3、d onon FPGAFPGASpecialty:Specialty: MicroeletronicsMicroeletronics ScienceScience andand EngineeringEngineeringName:DanName:Dan Shen(Signature)Shen(Signature) _Instructor:Instructor: GailiGaili Yue(Signature)Yue(Signature) _ABSTRACTABSTRACTTaxi meter is the rule of passenger and driver. Have a good

4、performance of the meter for our taxi driver or passenger is very necessary. Now the automatic taxi meter has popularized, and some small city has not been popular, but with the quickening of city construction, the symbol of the city will accelerate development of the taxi industry.This article elab

5、orates the concept and development of EDA , the development trend and structureofthe FPGA, andexplains the advantages and grammar structure of VHDL ,meanwhile, analysed the function request, the basic principle as well as the method ofaccomplishment of each parts. This systems design programmes in t

6、he VHDL, compiled and emulated basing on Quartus II platform of Altera consists of four modules, that is speed, mileage, timing and billing module. This paper introduce one method that can use a chip of FPGA to design taxi meter, which consists of four modules, that is speed, mileage, timing and bil

7、ling module, and then, describe the design of each module and give out the simulation. This taxi meter can be self-charging according to mileage, which also can simulate the state of speed,such as start, stop, and pause, at the same time, its reliability and commonality also can be improved. This de

8、sign FPGA test box on running well, realize the different functions of the message accounting device.2 / 53KEYKEY WORDSWORDSFPGA , VHDL , Quartus II ,The taxi meter1 / 53目 录第 1 章绪论 11.1 课题研究背景与目的 11.2 课题研究现状 21.3 课题研究方法 3第 2 章设计相关工具介绍 42.1 EDA 介绍 42.1.1 EDA 的发展 42.1.2 EDA 的优势 52.2 FPGA 介绍 52.2.1 FPG

9、A 的发展趋势 62.2.2 FPGA 结构与其特点 72.3 VHDL 介绍 72.3.1 VHDL 简介 72.3.2 VHDL 代码结构 82.3.3 VHDL 语言设计硬件电路的优点 92.4 QUARTUS II102.4.1 Quartus简介 102.4.2 Quartus设计流程 102.5 实验箱简述 11第 3 章系统的设计 133.1 总体设计 133.1.1 出租车计价器的设计要求 133.1.2 总体框架设计 133.1.3 流程图 143.2 主要模块设计 163.2.1 出租车总体模块设计 163.2.2 车轮大小选择模块设计 173.2.3 计程模块设计 183

10、.2.4 计时模块设计 183.2.5 计费模块设计 193.2.6 数据分配模块设计 213.2.7 译码模块设计 213.2.8 分频模块设计 222 / 53第 4 章仿真与调试结果 234.1 仿真结果 234.1.1 出租车总体模块仿真波形 234.1.2 车轮大小选择模块仿真波形 234.1.3 计程模块仿真波形 244.1.4 计时模块仿真波形 244.1.5 计费模块仿真波形 254.1.6 数据分配模块仿真波形 254.1.7 译码模块仿真波形 264.1.8 分频模块仿真波形 264.2 管脚分配与说明 274.3 调试结果与分析 27第 5 章总结 31致 34参考文献

11、35附录 36源代码 361 / 53第 1 章 绪论1.1 课题研究背景与目的出租车计价器是乘客与司机之间用于公平贸易的工具,同时它也是出租车行业发展的重要标志。所以具有良好性能的出租车计价器无论是对司机还是乘客来说都是很重要的。因此,设计出租车计价器是很有价值的。在 70 年代开始时我国出现了第一辆出租车,但是那时的出租车计价器几乎都是进口的,不但不够准确,而且价格还十分贵。随着经济的快速发展,出租车行业的发展趋势已十分突出,直接导致国各机械厂纷纷研发计价器。同时经济的发展也意味着城市旅游业的迅猛发展,使得出租车已经成为看一个城市的窗口,也是象征这个城市的文明程度。现在各大中城市的出租车计

12、价器已经普与,部分小城市虽尚未普与,但随着城市建设的日益加快,实现计价器的全面普与是毫无疑问的,所以未来出租车计价器的市场是难以想象的。现在我国普遍使用的出租车计价器主要是利用单片机来实现计价功能。出租车计价器的功能由刚开始时只能显示路程,而价钱却需要司机自己通过路程来计算,计算后进行四舍五入得到,到现在能实现显示总价并且语音提示和打印发票。但是近年来,由于国际油价的大幅度变动,所以出租车的价格也随着油价的变动而进行调整,但由于计价器是采用单片机来实现的,而单片机程序并是不通用的,且不同的芯片有不同的指令集,因此价格的改动都需要将芯片从新烧录,使得每次调价都需要耗费大量的人力物力,所以很难达到

13、目前油价变动的需求。并且出租车计价器采用硬件模块化设计,分别为:主控模块,电源模块和按键显示模块。所以其硬件电路很复杂,并且由于分立元器件太多,造成电源功耗大,使得芯片不易散热,影响计价器的使用寿命。而基于 FPGA 的出租车计价器不仅可以解决由单片机设计引起的诸多问题,而且现场可编程门阵列 FPGA 具有开发简单,静态可重复编程和动态系统编程等优点。随着微电子技术的迅猛发展,使得FPGA 在电子电路设计中可以实现速度更快、集成度更高的显著优势,即可实现的功能也越来越多。所以基于 FPGA 的出租车计价器已成为未来计价方式的首选。所以这次的毕业设计在实现计价功能的同时,考虑到现在出租车行业的发

14、展趋势以与对计价器灵活性的高要求,希望利用现场可编程门阵列 FPGA 来解决现在出租车计价2 / 53器存在的问题。1.利用 FPGA 代替 MCU 现场可编程门阵列 FPGA 的出现,解决了传统电子设计不能完成的任务。基于 FPGA 的出租车计价器电路简单,可采用软件进行编译与仿真,同时可设计相对复杂的功能,而且已经编好的程序在不同的 FPGA 芯片上是通用的。还可以利用 FPGA 实现任何数字器件的功能,基于 FPGA 的数字电路,可以缩短设计周期,减少 PCB 面积,提高系统的可靠性。又因为 FPGA 的功能只取决于利用 VHDL 语言或 Verilog-HDL 语言编写的程序,而不受具

15、体芯片的特殊控制,所以基于 FPGA 的出租车计价器具有更好的更新换代能力。2计价标准设定 增加该模块,主要考虑在不改变硬件电路的前提下,可以使计价标准设计显得更加灵活,即根据各地区的需求可以在 VHDL 程序中设置参数,就可以适应各地区出租车不同计价标准的需要,还可实现根据各地区的需求增加其他所需功能。同时还体现目前出租车行业的发展,使因油价变动而方便改变运价成为可能。3等待时间计价 该模块的增加是为了响应了出租车行业的发展需求,使出租车计价更加合理,让乘客与出租车司机之间的一个平衡点更容易达到。1.2 课题研究现状对于出租车计价器,目前市面上已经出现了许多采用不同方式的设计,譬如有可编程的

16、门器件 FPGA,单片机以与 ARM 等,但其中以单片机为主流。下来就以单片机为例讲述一下现在市面上的出租车计价器存在的弊端。采用单片机实现的出租车计价器因为而单片机程序不是通用的,且不同的芯片有不同的指令集,因此价格的改动都需要将芯片从新烧录,使得每次调价都需要耗费大量的人力物力并且所需时间长,所以很难达到目前油价高频率变动的需求。而且采用了硬件模块化设计,分别为:主控模块,电源模块和按键显示模块。所以其硬件电路很复杂,并且由于分立元器件太多,造成电源功耗大,使得芯片不易散热,影响计价器的使用寿命。在我的这次设计中就利用 FPGA 来设计出租车计价器,因为基于 FPGA 的出租车计价器可以解

17、决由单片机设计引起的诸多问题。与利用单片机设计的出租车计价器相比,采3 / 53用 FPGA 设计的出租车计费功能在很大程度上凸显了 EDA 的优势。因为利用 EDA,不仅可以实现在线仿真和测试,还可以将所有的设计都集中在统一的文件中,即根据系统需求,设计所需要的各个模块,最后对各个模块进行系统综合,从而得到我们所需的整个系统设计。1.3 课题研究方法根据系统的总体功能,采用分层次、分模块、自顶向下的设计方式,首先实现系统框图中的各个子模块,然后由顶层模块调用各子模块实现整个系统。编程完成后就利用Quartus软件进行各模块的仿真,实现后,分别创建原件符号,新建一个电路图,在图中添加各模块原件

18、符号并进行端口定义和功能划分,通过合理连接和协调各相关的各个不同端口,得到整个电路系统。然后连接电路,检查电路是否连接正确,最后将程序下载到实验装置中,进行引脚分配与编译,检验电路是否能实现所设计的功能和要求。本次设计硬件部分采用 EP2C5Q208 芯片作为主控芯片,8 个共阴极数码管,以与 6个拨码开关,软件部分的仿真在 Quartus7.2 环境中进行。首先,对系统时钟分频以得到各个模块所需的时钟频率,并将所得到的频率送至主控芯片,同时对等待时间脉冲数,里程脉冲数,计费方式信号,复位信号和等待时间信号等信息经过控制器的处理,得到总价钱和路程,并最终将所行驶的路程和所需支付的金额通过 LE

19、D 8 段数码管显示出来。4 / 53第 2 章设计相关工具介绍2.1 EDA 介绍2.1.1 EDA 的发展随着科学技术的飞速发展,电子设计的规模越来越大,复杂度也越来越高,集成电路的制作工艺达到 90nm 甚至更小的尺寸。以计算机为工作平台,融合了电子技术和智能化技术的 EDA(Electronic Design Automation,电子设计自动化)工具已经在高速,复杂的数字系统设计中得到了广泛的应运。EDA 是指利用计算机完成电子系统的设计。EDA 技术是以计算机和微电子技术为先导,汇集了计算机图形学,拓扑学,逻辑学,微电子工艺与结构学和计算数学等多种计算机应运学科最新成果先进技术。E

20、DA 技术以计算机为工具,代替人完成数字系统的逻辑综合,布局布线和设计仿真等工作。设计人员只需要完成对系统功能的描述,就可以由计算机软件进行处理,得到设计结果,而且修改设计如同修改软件一样方便,可极提高设计效率。从 20 世纪 60 年代中期开始,人们就不断开发各种计算机辅助设计工具来帮助设计人员进行电子系统的设计。电路理论和半导体工艺水平的提高,对 EDA 技术的发展起了巨大的推动作用,使 EDA 作用围从 PCB 版设计延伸到电子线路和集成电路设计,甚至整个系统的设计,也使 IC 芯片系统应用,电路制作和整个电子系统生产过程都集成在一个环境之中。根据电子设计技术的发展特诊,EDA 技术发展

21、可大体分为三个阶段。CAD 阶段:CAD(Computer Aided Design,计算机辅助设计)阶段是从 20 世纪 60年代中期到 20 世纪 80 年代初期,该阶段的特点是一些单独的工具软件,主要有PCB(Printed Circuit Board)布线设计,电路模拟,逻辑模拟与版图的绘制等,通过计算机的使用,从而将设计人员从大量繁锁重复的计算和绘图工作中解脱出来。CAE 阶段:CAE(Computer Aided Engineering,计算机辅助工程)阶段是从 20 世纪 80 年代初期到 20 世纪 90 年代初期,这个阶段在集成电路与电子设计方法学以与设计工具集成化方面取得了

22、许多成果。各种设计工具,如原理图输入,编译与连接,逻辑模拟,测试码生成,版图自动布局以与各种单元库已齐全。这个阶段主要采用基于单元5 / 53库的半定制的设计方法,采用门阵列和标准单元设计的各种 ASIC(Application Specific Integrated Circuit,专用集成电路)得到了极大的发展,将集成电路工业推入 ASIC 时代。EDA 阶段:20 世纪 90 年代以来,电子设计技术发展到 EDA 阶段。此阶段主要出现了高级语言描述,系统仿真和综合技术为特诊的第三代 EDA 技术,不仅极提高了系统的设计效率,而且使设计人员摆脱了大量的辅助性与基础性工作,将精力集中于创造性

23、的方案与概念的构思上。2.1.2 EDA 的优势电子产品的设计生产,从选题大,方案论证,性能指标确定,装修电路,修改,定型参数直到批量生产,是一个复杂而又费时的过程。传统的电路装配,调试过程,一般均采用专门的焊接板,通过手工连线装配,检查无误后,进行电路测量,最后评估电路性能。若性能与设计值不符时,需调换参数并重新调试测量,直至电路符合设计要求为止,但是,当电路非常复杂时,采用焊接板组装电路时所产生的连接错误,器件损坏等人为错误,常会造成人力,财力,时间的浪费与错误的性能评估。尤其是集成电路的设计,器件在焊接班上就无法组成向集成电路部那样复杂的电子电路,装配版上的寄生参数与集成环境中的完全不同

24、。因此,在装配班测试的特性将无法准确的描述集成电路的真实特性。所以,电子电路的传统设计发法已经不适应当前电子技术发展的要求,这就要借助计算机完成电子电路的辅助设计,即电子电路 EDA 技术。EDA 包括电子工程设计的全过程,如系统结构模拟,电路特性分析,绘电路图和制作 PCB 等。EDA 还可进行电路仿真,就是把电子器件或电路模块以数学模型表示,并配合数值分析的方法,实现电路的功能模拟与特性分析。如果采用的电路模型足够精确,则模拟结果将真实的反映电路特性,甚至可以方便地实现电路结构与性能的优化设计,并提供相当完整而详细的数据库资料。较之传统的电路设计方法,EDA 的优点是显而易见的。2.2 F

25、PGA 介绍现场可编程门阵列 FPGA 器件是 Xilinx 公司于 1985 年首家推出的,它是一种新型6 / 53的高密度 PLD,采用 CMOS-SRAM 工艺制作。FPGA 是一种基于查找表(LUT,Look UpTable)的可编程逻辑器件,主要由逻辑单元(LE,Logic Element)构成的可配置逻辑块,可编程 I/O 和可编程部互联模块组成。用户也可以根据需要对它进行编程,使之生成特定的电路结构,完成一定的功能。FPGA 部阵列块之间采用分段式进行互连,因此结构比较灵活,但是延时不可预测。2.2.1 FPGA 的发展趋势FPGA 器件在过去的几十年里已经取得了巨大成就,在功能

26、、成本、功耗、容量和编程能力方面的性能不断提高,在未来的发展中,将呈现以下几个方面的趋势。1.向大规模、高集成度方向进一步发展由于微电子制作工艺的超高速发展,FPGA 在性能、容量方面取得的进步非常显著,有人认为:目前多数系统的瓶颈是处理器、音频与数据的系统引起的 I/O 带宽问题。I/O 带宽的关键在于收发器性能,这正是 FPGA 优于其他解决方案之处,Altera 的Strative IV GT 产品中提供了可达 11.3Gb/s 的高性能收发器,并将 40nm 工艺、高密度与高性能收发器完美结合,从而使 FPGA 能更完善地用于视频、音频、图像处理领域。2.向低电压、低功耗的方向发展目前

27、,电子设计的一个显著趋势是功耗特性变得日益重要,功耗已经成为电子系统开发中的最重要考虑因素之一,并影响着最终产品的体积、重量和效率。FPGA 器件的核电压呈不断降低的趋势,经历了 5V-3.3V-2.5V-1.8V-1.2V 的演变,未来将会更低。工作电压的降低使得芯片的功耗也显著减少,这样使 FPGA 器件可适用于便携、低功耗应用场合,如移动通信设备、个人数字助理等。3.向高速可预测延时的方向发展时间特性也是 FPGA 器件的一个重要标志。由于在一些高速处理系统中,为了保证系统的稳定性,FPGA 器件的延时可预测性变得十分重要。用户在进行系统重构的同时,担心的是延时特性会不会因重新布线而改变

28、,是否将导致系统性能的不稳定性,因此,为了适合未来复杂高速电子系统的要求,FPGA 的高速可预测延时也是一个发展趋势。4.在 FPGA 器件嵌入更多功能模块现在,FPGA 器件中已经广泛嵌入 RAM/ROM 等存储模块,嵌入了 DSP 模块、硬件乘法7 / 53器等,可实现快速的乘法累加操作,比 DSP 芯片快很多倍。将来的 FPGA 器件还将嵌入更多功能模块,实现更多复杂运算,5.向模数混合可编程方向发迄今为止,FPGA 的开发和应用的大部分工作都集中在数字逻辑上,模拟电路与数模混合电路的可编程技术在未来将得到进一步发展。2.2.2 FPGA 结构与其特点FPGA 结构一般分为三部分,可编程

29、逻辑块,可编程 I/O 模块和可编程部连线。FPGA 的发展非常迅速,形成了各种不同的结构。按逻辑功能模块的大小分类,FPGA可以分为细粒度 FPGA 和粗粒度 FPGA。细粒度 FPGA 的逻辑功能块比较小,资源可以充分利用,但是随着设计密度的增加,信号不得不通过许多开关,路由延迟也快速增加,从而削弱了整体性能,导致速度降低;粗粒度 FPGA 的逻辑功能块规模大,功能强,可以用较少的功能块和部连线就能完成较复杂的逻辑功能,易于获得较好的性能,但其缺点是资源不能充分利用。从逻辑功能的结构上分类,可分为查找表结构、多路开关结构和多级与非门结构。根据 FPGA 部连线的结构不同,可分为分段互联型

30、FPGA 和连续互连性、型 FPGA 两种。分段互连型 FPGA 中具有多种不同长度的金属线,各金属线段之间通过开关矩阵或反熔丝编程,走线灵活方便,但走线延时无法预测;连续互连型 FPGA 是利用一样长度的金属线,连接与距离远近无关,布局走线是固定的和可预测的。根据编程方式,FPGA 可分为一次编程型和可重复编程型两类。一次编程型采用反熔丝开关元件,具有体积小、集成密度高、互连线特性阻抗低、寄生电容小和高速度的特点,此外还具有加密位、防拷贝、抗辐射、抗干扰、不需外接 PROM 或 EPROM 的特点,但只能一次编程。可重复编程型 FPGA 采用 SRAM 开关元件或快闪 EPROM 控制的开关

31、元件,配置数据存储在SRAM 或快闪 EPROM 中。SRAM 型 FPGA 的突出优点是可反复编程,系统上电时,给 FPGA加载不同的配置数据就可以完成不同的硬件功能,甚至在系统运行中改变配置,实现系统功能的动态重构。快闪 EPROM 型 FPGA 具有非易失性和可重复编程的双重优点,但不能动态重构,功耗也较 SRAM 型高。8 / 532.3 VHDL 介绍2.3.1 VHDL 简介VHDL 是一种硬件描述语言,它可以对电子电路系统和系统的行为进行描述。基于这种描述,结合相关的软件工具,可以得到所期望的实际电路系统。VHDL 是 VHSIC Hardwar Description Lang

32、uage(VHSIC 硬件描述语言) 。VHSIC 是VeryHigh Speed Integrated Circuit HDL(超高速集成电路硬件描述语言)的缩写,是在 ADA 语言基础上发展起来的硬件描述语言。是 20 世纪 80 年代在美国国防部资助下始创的,并最终导致了 VHDL 语言的出现。它的第一个规版本为 VHDL 87,VHDL 93 是其后续的升级版本。使用 VHDL 语言描述的电路,可以进行综合与仿真。然而,值得注意的是,尽管所有 VHDL 代码都是可仿真的,但并不是所有代码都是可综合的。VHDL 语言被广泛使用的基本原因在于它是一种标准语言,是与工具和工艺无关的,从而可以

33、方便的进行移植和重用。VHDL 语言的两个最直接的应用领域是可编程逻辑器件和专用集成的电路,其中可编程逻辑器件包括复杂可编程逻辑器件和现场可编程门阵列。一段 VHDL 代码编写完成后,用户可以使用可编程逻辑器件来实现整个电路。VHDL 语言与常规的顺序执行的计算机程序不同,VHDL 从根本上将是并发执行的。因此,我们通常称之为代码,而不是程序。在 VHDL 中,只有在进程(PROCESS) ,函数(FUNCTION)和过程(PROCEDURE)部的语句才是顺序执行的。2.3.2 VHDL 代码结构1代码基本单元一段独立的 VHDL 代码至少包含 3 个组成部分:库(LIBRARY)声明:列出了

34、当前设计中需要用到的所有库文件,如 ieee,std 和work 等。实体(ENTITY):定义了电路的输入/输出引脚。构造体(ARCHITECTURE):所包含的代码描述了电路要实现的功能。2.代码语法结构库声明:使用一个库之前,需要首先对库进行声明。经过声明之后,在设计中就可9 / 53以调用库中的代码了。库的声明方式如下:LIBRARY libray_name;USE libray_name.package_name.package_parts;其中 LIBRARY 和 USE 是 VHDL 保留的关键字。实体:是用来描述电路的所有输入/输出引脚,其语法结构如下:ENTITY entit

35、y_name IS POQT (Pore_name:signal_model signal_type;Pore_name:signal_model signal_type;);END entity_name; 端口的信号模式是以下 4 中之一:IN,OUT,INOUT,BUFFER。ENTITY 名称的选取没有严格的规定,但须注意不要与 VHDL 保留的关键字发生冲突。构造体:构造体中的代码用来描述电路行为和实现的功能,其语法结构如下:ARCHITECTURE architecture_name OF entity_name ISdeclarations BEGIN(code)END arch

36、itecture_name;从语法结构中可以看到,一个 ARCHITECTURE 包含两部分:声明部分(可选) ,用于对信号和常量等进行声明;代码部分(BEGIN 和 END 之间的部分) ,用来描述电路的行为或工功能。与 ENTITY 一样,可以采用除 VHDL 关键字以外的任何名称为 ARCHITECTURE命名,并且允许和 ENTITY 具有一样的名称。2.3.3 VHDL 语言设计硬件电路的优点1.VHDL 支持结构化和自顶向下的设计方法,这样非常便与设计的模块化。设计者从系统整体要求出发,自上而下将系统容细化,最后将模块组合成完整的整体设计。2.VHDL 具有多层次描述和仿真系统硬件

37、功能的能力,可以从系统到门级电路不同层10 / 53次对数字进行建模和描述,不同的描述还可以混合使用,大大简化了硬件设计任务,提高了设计效率和可靠性,缩短了产品开发周期。3.VHDL 是一种工业语言,设计者,EDA 开发工具的供应商和 IC 芯片生产商都要遵循这一标准,因此它具有设计和开发环境,具有电路实现工艺以与采用的实现芯片无关的特点,设计成果便于移植,交流和二次开发。另外由于其语法严格,是强类型语言,因此涉与安全性好,也便于阅读。4.VHDL 即支持传输延时也支持惯性延迟,不仅可以很好地描述系统和电路的逻辑功能,也可以真实地反映系统和电路的时间特性。5.VHDL 可以支持各种不同类型的数

38、字电路和系统的设计。既支持同步电路也支持异步电路;既支持 TTL 电路,也支持 CMOS 电路;即可以采用 CPLD 芯片实现,也可以采用FPGA 芯片实现。2.4 QuartusII2.4.1 Quartus简介Quartus是 Altera 公司在 21 世纪初推出的可编程逻辑器件的集成开发软件,这个软件是该公司前一代可编程逻辑器件集成开发软件 MAX+PLUS的更新换代产品。Quartus集成开发软件支持可编程逻辑器件开发的整个过程,它提供一种与器件结构五官的设计环境。软件界面友好,使设计者能够方便的进行设计输入、设计处理和器件编程。Quartus集成开发软件不仅支持利用硬件描述语言通过

39、文本编辑的方法完成电路设计,而且该软件也提供类似传统电子设计中绘制电路图的输入方式。当使用原理图输入方式时,设计者可以很方便地使用开发软件提供的各种元件来提高设计与速度和设计质量。2.4.2 Quartus设计流程Quartus集成开发软件的核心是模块化的编译器。编译器包括的功能模块有分析/综合器、适配器、装配器、时序分析器、设计辅助模块和 EDA 网表文件生成器。利用 Quartus集成开发软件进行可编程逻辑器件开发的全部过程包括以下步骤:设计输入、综合、布局布线、验证和仿真,以与可编程逻辑器件的编程和配置。11 / 53Quartus集成开发软件的功能模块与可编程逻辑器件开发过程之间的关系

40、如图 2-2 所示。设计输入是将设计者所需要的电路构思已开发软件要求的形式表达出来。Quartus软件支持模块/原理图输入方式、文本输入方式、Core 输入方式和第三方 EDA工具输入方式等。Quartus软件同时允许用户在需要对器件的编译或变成进行必要的条件约束的环境下,使用分配编辑器设定初始设计的约束条件。综合是将 HDL 语言、原理图等设计输入依据给定的硬件结构组件和约束控制条件进行编译、优化、转换和综合,生成门级电路,或更底层电路的描述网表文件,以供适配器实现。适配也称为布局布线,这个步骤利用适配器将逻辑综合生成的网表文件映射到某一具体的器件。该过程包括将设计的逻辑和时序要求与器件的可

41、用资源相匹配;将每个逻辑功能分配到最好的逻辑单元位置,进行布局和时序分析;选择相应的互联路径和引脚分配。适配完成后,生成可用于时序仿真的仿真文件和可用于编程的编程文件。仿真包括功能仿真和时序仿真。功能仿真实在不考虑期间延时的理想情况下仿真设计项目,以验证其逻辑功能的正确性,功能仿真又称前仿真。时序仿真是在考虑具体适配器的各种延时的情况下仿真设计项目,它是接近真实器件运行特性的仿真,时序仿真又称后仿真。器件编程与配置是指设计输入编译成功后,设计者试用器件编译器将编程文件下载到实际器件的过程。Quartus集成开发软件允许用户在开发过程中使用 Quartus图形用户界面、EDA工具界面和命令执行界

42、面。用户可以在整个开发过程中使用这些界面中的任意一个,也可以在开发过程中的不同步骤中使用不同的界面。上述任何一步出错,均需要回到设计输入阶段纠正错误,并重新按设计流程进行设计。2.5 实验箱简述本设计采用的实验箱为 LTE_EDA_02F 型 EDA/SOC 实验开发系统,选用的芯片为EP2C5Q208C8。关于 FPGA/CPLD 器件的配置:12 / 53当在 Quartus中完成设计后,就应当将所设计的电路下载到 CPLD 芯片中,结合用户系统进行统一的调试。针对 CPLD 器件不同的部结构,Altera 公司提供了不同的器件配置方式。Altera 可编程逻辑器件的配置可通过编程器、JA

43、TG 接口在线编程与 Altera在线配置三种方式进行。Altera 器件编程的连接硬件包括 ByteBlaster 并口下载电缆,ByteBlasterMV 并口下载电缆,MasterBlaster 串行/USB 通信电缆,BitBlaster 串口下载电缆。Altera 公司提供的 EPC1、EPC2、EPC16 和 EPC144 等 PROM 配置芯片。本设计采用的是ByteBlaster 并口下载电缆。ByteBlaster 并口下载电缆提供两种下载模式:1.标准串行模式(AS 模式)用来产品定型后,完成对 FPGA 代码的固化,在下次上电后,能够自动对 FPGA 进行配置,使产品独立

44、工作;2.JTAG 模式具有工业标准的 JTAG 边界扫描测试电路(符合 IEEE 1149.1:1990标准),用来调试 FPGA 或 NiosCPU,多在产品开发初期使用。13 / 53第 3 章系统的设计3.1 总体设计3.1.1 出租车计价器的设计要求按照计价标准能实现计价功能;实现预置功能:能预置起步价、每公里收价、行车加价里程;实现模拟功能:能模拟汽车启动、停止、暂停等状态。该计价系统可靠性高、成本低、通用性强;该系统在不改变硬件电路的前提下,要具有可以重构系统的功能,采用完全一样电路结构,只要根据各地区的需求在 VHDL 程序中设置各参数,就可以适应各地区出租车不同计价标准的需要

45、,还可实现根据各地区需求增加其他功能。具体计费方式如下:1.车起步开始计价。首先显示起步价(本次设计起步价分为 7:00 至 22:00 为 10.00元,22:00 至 7:00 为 15 元),车在行驶 3 km 以,只收起步价。2.在 7:00 至 22:00 行驶时,超过 3 km 未达 20km 后在 10 元基础上每行驶 1km 车价加 2 元,行驶路程达到或超过 20 km 后,车费变成按每公里 3.3 元开始计价;在 22:00至 7:00 行驶时,超过 3 km 未达 20km 后在 15 元基础上每行驶 1km 车价加 4 元,行驶路程达到或超过 20 km 后,车费变成按

46、每公里 5 元开始计价。3.车暂时停止(行驶中遇红灯或中途暂时停车)等待累计时间超过 5 分钟时,按 1元/分钟累计费用。3.1.2 总体框架设计等待时间计数模块计费模块数码管显示分频模块控制模块行驶路程计数模块时钟14 / 53图 3.1 系统设计总框图分频模块用来将实验系统所提供的时钟进行分频,得到所需要的时钟频率。行驶路程计数模块来统计路程。当出租车启动并行驶的过程中,当时钟的上升沿检测到公里信号(输入端 clkout)为 1 时,对路程计数器的个位和十位进行加法计数,并在累计路程超过 3km 是,让标志位 enable 为高电平,该信号将传给控制模块。等待时间计数模块来统计等待时间。在

47、出租车启动并停止等待的过程中(即复位reset 为 0 时,停止信号 stop 为 0) ,计数器在时钟的上升沿进行加法计数,每 60 进制产生进位脉冲使分钟计数器个位和十位进行加法计数,并在累计等待时间超过 5 分钟时,让标志位 timecount 为高电平,该信号将传给控制模块。计费模块用于出租车启动后,根据行驶路程和停止等待时间计算费用。该模块的时钟使用控制模块输出的信号。当出租车停车复位时,时钟控制模块为 clk 信号,用于将费用计数器复位为起步价 10 元;当出租车处于行驶状态时,时钟控制模块为满 3km 信号时 enable,路程每满 1km,费用计数器加 2 元,时钟控制模块为满

48、 20km 信号时,路程每满 1km,费用计数器加 3.3 元, ;当出租车处于停止等待状态时,时钟控制模块为满 5分钟信号 timecount,时间每满 1 分钟,费用计数器加 1 元。控制模块为计数模块提供时钟信号。停止复位状态输出时钟信号 clk;停止等待状态时输出时间计数模块产生的满 5 分钟脉冲 timecount;行驶状态是输出模拟满公里数的信号 clkout。数码管显示模块用来显示所行驶的路程和所花费的价钱。3.1.3 流程图系统工作流程图如图 3.2 所示。系统工作流程为:出租车载客后,启动计价器即start 为 1,整个系统开始运行,进入初始化状态,即计程和计时从 0 开始,

49、计价从起步价开始,白天起步价为 6.0 元,晚上起步价为 7.0 元。再根据 pause 信号判断行驶或是停止等待。若 pause 为 0,表示行驶状态,则计程器开始计数,当路程超过 3km 后,如果是白天,计价器按每公里 1.4 元的单价进行累加,如果是晚上,计价器按每公里2.0 元累加,否则计程器保持不变;当路程超过 20km 后,如果是白天,计价器按每公里2.0 元的单价进行累加,如果是晚上,计价器按每公里 3.0 元累加,否则继续按 3km 后15 / 53的计价方式计价;若 pause 为 1,便是停止等待状态,则计时器开始加数,当每超过5min 后计价器加 1 元,否则计价器保持不

50、变;出租车停止后,按下 stop 键,停止计程和计时;然后按下 reset 键,将所有计数器复位。Reset 信号Start 信号计费器以每公里2元累加等待时间累积,行驶路程不变计费器不变计费器以每公里3.3元累加计费器以每5分钟1元累加行驶路程累计,等待时间不变超过5分钟超过3km未至20km各计数器复位Pause 信号未至3km10NYNYY计费器只显示起步价N图 3.2 程序流程图16 / 533.2 主要模块设计3.2.1 出租车总体模块设计图 3.3 出租车计价器设计的顶层原理图构建原理图的方法:首先建立相应的原理图文件。点击 New - Block Diagram/Schemati

51、c File,生成一个后缀名为.bdf 的文件。第二步,打开将要生成元件的主代码页面,然后选择 File- Create/_Update - Create Symbol Files for Current File.在.bdf 文件的空白处左键双击一下,弹出一个 Symbol 的窗口,在左边窗17 / 53口处选择需要的器件,在 Project 下是自己的代码生成的元件。然后将所添加的元件按逻辑关系连接起来,最后加上 output 和 input 的管脚。然后对管脚命名。上图就是按上述方法所得到的。其中计价,计程,计时,数据分配和尺寸大小选择模块都使用一样的时钟脉冲,均由分频模块将系统时钟经过

52、分频后传送给各个模块。译码模块用于显示路程和价钱。Choose 输入端口用于选择白天模式和晚上模式。3.2.2 车轮大小选择模块设计不同型号的车轮,其所对应的直径不同,每行驶 100m,对应的圈数也不同,车轮直径与每公里需要转过圈数对照表由下表 3.1 给出。表 3.1 车轮直径与每千米所转圈数对应表车轮直径(mm)520540560580DIP 开关表示00011011对应计费圈数640610580550图 3.4 车轮大小选择模块原理框图开关 sp 控制不同车型所应该给出计程圈数,达到所给的圈数给出相应的计程脉冲,clk 为输入脉冲时钟信号,reset 为复位键,stop 为停止键,sta

53、rt 为开始计价键,所有信号均为高有效。18 / 533.2.3 计程模块设计图 3.5 计程模块原理框图管脚说明:reset 为复位信号,clkout 为里程计费脉冲,KM_CNT0KM_CNT3 为路程的十分位到百位输出。当复位信号为1时,里程的百,十,个,十分位均被复位为0 ;反之,clkout 开始循环计数。当十分位为 9 时,十分位清零,向个位进 1,个位为 9 时,向十位进 1,个位清零,同理,十位和百位的计数方式同前。当计程为 999.9 公里时,达到最大计程围,里程的各位被清零。3.2.4 计时模块设计图 3.6 计时模块原理框图管脚说明:CLK 为时钟信号,reset 为复位

54、信号,start 为开始信号,stop 为停止19 / 53信号,pause 为暂停信号。当 start=1 ,stop=0且 pause=1时,开始记间,当计时达到 30 秒时,timecount 输出一个脉冲,然后重新开始计时。3.2.5 计费模块设计图 3.7 计费模块原理框图管脚说明: 时钟信号 CLK,里程计数脉冲 clkout,计时计数脉冲 timecount,复位信号 reset,chooose 为白天、晚上选择输入端,KM_CNT0KM_CNT3 为路程的十分位到百位,MONEY0MONEY3 是费用的角,元,十元,百元输出端。3km 以为起步价,大于 3km 以后,每行驶 1

55、km 费用按 price 进行变化,所以需要路程信号标志位 enable,当 enable 为 1 时,说明此时所行路程已经大于 3km,否则小于3km。为了更切合实际,采用白天和晚上起步价和计价单价不同的方式,其选择信号为choose,当 choose=1时,按白天所要求的计价方式计价,反之,为晚上。timecount 以 1 元基准进行累加,在时钟信号下对计时脉冲进行累加,当达到一定数值时,总价加 1 元,否则计时脉冲继续累加。代码如下:ELSIF timecount=1THEN -每来一次计时脉冲计费加 1 IF MONEY_CN3=1001AND MONEY_CN2=1001AND M

56、ONEY_CN1=1001 THEN-费用等于 99920 / 53 MONEY_CN3=0000; MONEY_CN2=0000; MONEY_CN1=0000; MONEY_CN0=MONEY_CN0; ELSIF MONEY_CN3/=1001 AND MONEY_CN2=1001AND MONEY_CN1=1001 THEN-费用大于 99 小于 999 MONEY_CN3=MONEY_CN3+0001; MONEY_CN2=0000; MONEY_CN1=0000; MONEY_CN0=MONEY_CN0; ELSIF MONEY_CN2/=1001AND MONEY_CN1=100

57、1 THEN MONEY_CN3=MONEY_CN3; MONEY_CN2=MONEY_CN2+0001; MONEY_CN1=0000; MONEY_CN0=MONEY_CN0; ELSE MONEY_CN3=MONEY_CN3; MONEY_CN2=MONEY_CN2; MONEY_CN1=MONEY_CN1+0001; MONEY_CN0=4 时,MONEY0 和 MONEY1 和计价单价(PRICE0 和PRICE1)相应进行相加,在相加的过程会产生进位,设计中考虑了如下进位情况:1.MONEY0 与 PRICE0 相加没有进位,MONEY1 与 PRICE1 相加没有进位;2.MON

58、EY0 与 PRICE0 相加没有进位,MONEY1 与 PRICE1 相加有进位;3.MONEY0 与 PRICE0 相加有进位,MONEY1 与 PRICE1 相加没有进位;4.MONEY0 与 PRICE0 相加有进位,MONEY1 与 PRICE1 相加有进位。代码见附录。21 / 533.2.6 数据分配模块设计图 3.8 数据分配模块原理框图在时钟信号 CLK 的控制下,将里程信号百位十位个位以与十分位,还有费用信号的值分时输出。其中,MONEYMONEY3 分别是费用的角,元,十元,百元信号输入端,KM_CNT0KM_CNT3 为里程的十分位到里程的百位输出,用到八位数码管,需要

59、用 3 位选择信号 SEL0SEL2,还有小数点信号 dp 和输出信号 d。最终利用人的视觉暂留,提高扫描频率,这样人眼就看到稳定的里程和费用信号的显示。3.2.7 译码模块设计图 3.9 译码模块原理框图译码模块的输入为4位的 BCD 码,输出的是共阴极七段数码管的7位,输入,输出一一对应,将输入的信号,正确的在数码管上显示出来,让人更为直观的看到我们所想要看到的结果。22 / 533.2.8 分频模块设计图 3.10 分频模块原理框图输入信号 clk1,输出信号 clk。计价器的各模块所需的时钟信号不同,这就需要对已有的信号进行分频。23 / 53第 4 章 仿真与调试结果4.1 仿真结果

60、4.1.1 出租车总体模块仿真波形图 4.1 出租车总体模块仿真波形图随着脉冲数的增加,八段数码管也在发生相应的变化,且显示结果与预期一样。4.1.2 车轮大小选择模块仿真波形图 4.2 车轮大小选择模块仿真波形图从波形图中可以看出随着 sp 的不同,clkout 输出脉冲所需的系统时钟脉冲数也会发生变化。当 sp 由 00 变为 10 是,clkout 输出脉冲所需的系统时钟脉冲数较之前减少。24 / 534.1.3 计程模块仿真波形图 4.3 计程模块仿真波形图KM_CNO 为路程输出的十分位,KM_CN1 为路程输出的个位,KM_CN2 为路程输出的十位,KM_CN3 为路程输出的百位。

温馨提示

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

评论

0/150

提交评论