1、论文题目:基于FPGA的出租车计价器的设计专 业:微电子科学与工程摘 要出租车计价器是乘客与司机双方的交易准则。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。现在各大中城市出租车行业都已普及自动计价器,而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,所以计价器的普及也是毫无疑问的。 本论文阐述了EDA的发展及其优势、FPGA的发展趋势及结构特点和VHDL语言的优点及语法结构,并分析了出租车计价器各模块的功能要求、基本原理以及实现方法。本论文的设计采用VHDL硬件描述语言进行编程,基于Quartus II软件平台进行编译和仿真。论文
2、介绍了采用FPGA芯片设计出租车计价器的方法,阐述了该计价器的主要组成单元:车轮大小选择模块、计程模块、计时模块及计费模块、数据分配模块、分频模块、译码模块的设计方法,同时给出了详细的仿真波形,实现了出租车基本计费功能,还能模拟汽车启动,停止,暂停等状态,同时提高了计费系统的可靠性、通用性。本设计在FPGA试验箱上运行良好,实现了计费器的各项功能。关键字 FPGA,VHDL,Quartus II,出租车计价器15Subject: The design of the taxi meter based on FPGASpecialty: Microeletronics Science and En
3、gineeringName:Dan Shen (Signature) _Instructor: Gaili Yue (Signature) _ABSTRACTTaxi meter is the rule of passenger and driver. Have a good 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 popul
4、ar, but with the quickening of city construction, the symbol of the city will accelerate development of the taxi industry.This article elaborates the concept and development of EDA , the development trend and structure of the FPGA, andexplains the advantages and grammar structure of VHDL ,meanwhile,
5、 analysed the function request, the basic principle as well as the method ofaccomplishment of each parts. This systems design programmes in the 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
6、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 billing 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 ca
7、n simulate the state of speed,such as start, stop, and pause, at the same time, its reliability and commonality also can be improved. This design FPGA test box on running well, realize the different functions of the message accounting device. KEY WORDS FPGA , VHDL , Quartus II ,The taxi meter47目 录第1
8、章 绪论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 FPGA的发展趋势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.
9、1.2 总体框架设计133.1.3流程图143.2主要模块设计163.2.1 出租车总体模块设计163.2.2 车轮大小选择模块设计173.2.3 计程模块设计183.2.4 计时模块设计183.2.5 计费模块设计193.2.6 数据分配模块设计213.2.7 译码模块设计213.2.8 分频模块设计22第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.
10、1.8 分频模块仿真波形264.2 管脚分配及说明274.3 调试结果及分析27第5章 总结31致 谢34参考文献35附 录36源代码36第1章 绪论1.1 课题研究背景及目的出租车计价器是乘客与司机之间用于公平贸易的工具,同时它也是出租车行业发展的重要标志。所以具有良好性能的出租车计价器无论是对司机还是乘客来说都是很重要的。因此,设计出租车计价器是很有价值的。在70年代开始时我国出现了第一辆出租车,但是那时的出租车计价器几乎都是进口的,不但不够准确,而且价格还十分贵。随着经济的快速发展,出租车行业的发展趋势已十分突出,直接导致国内各机械厂纷纷研发计价器。同时经济的发展也意味着城市旅游业的迅猛
11、发展,使得出租车已经成为看一个城市的窗口,也是象征这个城市的文明程度。现在各大中城市的出租车计价器已经普及,部分小城市虽尚未普及,但随着城市建设的日益加快,实现计价器的全面普及是毫无疑问的,所以未来出租车计价器的市场是难以想象的。现在我国普遍使用的出租车计价器主要是利用单片机来实现计价功能。出租车计价器的功能由刚开始时只能显示路程,而价钱却需要司机自己通过路程来计算,计算后进行四舍五入得到,到现在能实现显示总价并且语音提示和打印发票。但是近年来,由于国际油价的大幅度变动,所以出租车的价格也随着油价的变动而进行调整,但由于计价器是采用单片机来实现的,而单片机程序并是不通用的,且不同的芯片有不同的
12、指令集,因此价格的改动都需要将芯片从新烧录,使得每次调价都需要耗费大量的人力物力,所以很难达到目前油价变动的需求。并且出租车计价器采用硬件模块化设计,分别为:主控模块,电源模块和按键显示模块。所以其硬件电路很复杂,并且由于分立元器件太多,造成电源功耗大,使得芯片不易散热,影响计价器的使用寿命。而基于FPGA的出租车计价器不仅可以解决由单片机设计引起的诸多问题,而且现场可编程门阵列FPGA具有开发简单,静态可重复编程和动态系统编程等优点。随着微电子技术的迅猛发展,使得FPGA在电子电路设计中可以实现速度更快、集成度更高的显著优势,即可实现的功能也越来越多。所以基于FPGA的出租车计价器已成为未来
13、计价方式的首选。所以这次的毕业设计在实现计价功能的同时,考虑到现在出租车行业的发展趋势以及对计价器灵活性的高要求,希望利用现场可编程门阵列FPGA来解决现在出租车计价器存在的问题。1.利用FPGA代替MCU 现场可编程门阵列FPGA的出现,解决了传统电子设计不能完成的任务。基于FPGA的出租车计价器电路简单,可采用软件进行编译与仿真,同时可设计相对复杂的功能,而且已经编好的程序在不同的FPGA芯片上是通用的。还可以利用FPGA实现任何数字器件的功能,基于FPGA的数字电路,可以缩短设计周期,减少PCB面积,提高系统的可靠性。又因为FPGA的功能只取决于利用VHDL语言或Verilog-HDL语
14、言编写的程序,而不受具体芯片的特殊控制,所以基于FPGA的出租车计价器具有更好的更新换代能力。 2计价标准设定 增加该模块,主要考虑在不改变硬件电路的前提下,可以使计价标准设计显得更加灵活,即根据各地区的需求可以在VHDL程序中设置参数,就可以适应各地区出租车不同计价标准的需要,还可实现根据各地区的需求增加其他所需功能。同时还体现目前出租车行业的发展,使因油价变动而方便改变运价成为可能。3等待时间计价 该模块的增加是为了响应了出租车行业的发展需求,使出租车计价更加合理,让乘客与出租车司机之间的一个平衡点更容易达到。1.2 课题研究现状对于出租车计价器,目前市面上已经出现了许多采用不同方式的设计
15、,譬如有可编程的门器件FPGA,单片机以及ARM等,但其中以单片机为主流。下来就以单片机为例讲述一下现在市面上的出租车计价器存在的弊端。采用单片机实现的出租车计价器因为而单片机程序不是通用的,且不同的芯片有不同的指令集,因此价格的改动都需要将芯片从新烧录,使得每次调价都需要耗费大量的人力物力并且所需时间长,所以很难达到目前油价高频率变动的需求。而且采用了硬件模块化设计,分别为:主控模块,电源模块和按键显示模块。所以其硬件电路很复杂,并且由于分立元器件太多,造成电源功耗大,使得芯片不易散热,影响计价器的使用寿命。在我的这次设计中就利用FPGA来设计出租车计价器,因为基于FPGA的出租车计价器可以
16、解决由单片机设计引起的诸多问题。与利用单片机设计的出租车计价器相比,采用FPGA设计的出租车计费功能在很大程度上凸显了EDA的优势。因为利用EDA,不仅可以实现在线仿真和测试,还可以将所有的设计都集中在统一的文件中,即根据系统需求,设计所需要的各个模块,最后对各个模块进行系统综合,从而得到我们所需的整个系统设计。1.3 课题研究方法根据系统的总体功能,采用分层次、分模块、自顶向下的设计方式,首先实现系统框图中的各个子模块,然后由顶层模块调用各子模块实现整个系统。编程完成后就利用Quartus软件进行各模块的仿真,实现后,分别创建原件符号,新建一个电路图,在图中添加各模块原件符号并进行端口定义和
17、功能划分,通过合理连接和协调各相关的各个不同端口,得到整个电路系统。然后连接电路,检查电路是否连接正确,最后将程序下载到实验装置中,进行引脚分配及编译,检验电路是否能实现所设计的功能和要求。本次设计硬件部分采用EP2C5Q208芯片作为主控芯片,8个共阴极数码管,以及6个拨码开关,软件部分的仿真在Quartus7.2环境中进行。首先,对系统时钟分频以得到各个模块所需的时钟频率,并将所得到的频率送至主控芯片,同时对等待时间脉冲数,里程脉冲数,计费方式信号,复位信号和等待时间信号等信息经过控制器的处理,得到总价钱和路程,并最终将所行驶的路程和所需支付的金额通过LED 8段数码管显示出来。第2章 设
18、计相关工具介绍2.1 EDA介绍 2.1.1 EDA的发展随着科学技术的飞速发展,电子设计的规模越来越大,复杂度也越来越高,集成电路的制作工艺达到90nm甚至更小的尺寸。以计算机为工作平台,融合了电子技术和智能化技术的EDA(Electronic Design Automation,电子设计自动化)工具已经在高速,复杂的数字系统设计中得到了广泛的应运。EDA是指利用计算机完成电子系统的设计。EDA技术是以计算机和微电子技术为先导,汇集了计算机图形学,拓扑学,逻辑学,微电子工艺与结构学和计算数学等多种计算机应运学科最新成果先进技术。EDA技术以计算机为工具,代替人完成数字系统的逻辑综合,布局布线
19、和设计仿真等工作。设计人员只需要完成对系统功能的描述,就可以由计算机软件进行处理,得到设计结果,而且修改设计如同修改软件一样方便,可极大地提高设计效率。从20世纪60年代中期开始,人们就不断开发各种计算机辅助设计工具来帮助设计人员进行电子系统的设计。电路理论和半导体工艺水平的提高,对EDA技术的发展起了巨大的推动作用,使EDA作用范围从PCB版设计延伸到电子线路和集成电路设计,甚至整个系统的设计,也使IC芯片系统应用,电路制作和整个电子系统生产过程都集成在一个环境之中。根据电子设计技术的发展特诊,EDA技术发展可大体分为三个阶段。CAD阶段:CAD(Computer Aided Design,
20、计算机辅助设计)阶段是从20世纪60年代中期到20世纪80年代初期,该阶段的特点是一些单独的工具软件,主要有PCB(Printed Circuit Board)布线设计,电路模拟,逻辑模拟及版图的绘制等,通过计算机的使用,从而将设计人员从大量繁锁重复的计算和绘图工作中解脱出来。 CAE阶段:CAE(Computer Aided Engineering,计算机辅助工程)阶段是从20世纪80年代初期到20世纪90年代初期,这个阶段在集成电路与电子设计方法学以及设计工具集成化方面取得了许多成果。各种设计工具,如原理图输入,编译与连接,逻辑模拟,测试码生成,版图自动布局以及各种单元库已齐全。这个阶段主
21、要采用基于单元库的半定制的设计方法,采用门阵列和标准单元设计的各种ASIC(Application Specific Integrated Circuit,专用集成电路)得到了极大的发展,将集成电路工业推入ASIC时代。EDA阶段:20世纪90年代以来,电子设计技术发展到EDA阶段。此阶段主要出现了高级语言描述,系统仿真和综合技术为特诊的第三代EDA技术,不仅极大地提高了系统的设计效率,而且使设计人员摆脱了大量的辅助性及基础性工作,将精力集中于创造性的方案与概念的构思上。2.1.2 EDA的优势电子产品的设计生产,从选题大,方案论证,性能指标确定,装修电路,修改,定型参数直到批量生产,是一个复
22、杂而又费时的过程。传统的电路装配,调试过程,一般均采用专门的焊接板,通过手工连线装配,检查无误后,进行电路测量,最后评估电路性能。若性能与设计值不符时,需调换参数并重新调试测量,直至电路符合设计要求为止,但是,当电路非常复杂时,采用焊接板组装电路时所产生的连接错误,器件损坏等人为错误,常会造成人力,财力,时间的浪费及错误的性能评估。尤其是集成电路的设计,器件在焊接班上就无法组成向集成电路内部那样机密复杂的电子电路,装配版上的寄生参数与集成环境中的完全不同。因此,在装配班测试的特性将无法准确的描述集成电路的真实特性。所以,电子电路的传统设计发法已经不适应当前电子技术发展的要求,这就要借助计算机完
23、成电子电路的辅助设计,即电子电路EDA技术。EDA包括电子工程设计的全过程,如系统结构模拟,电路特性分析,绘电路图和制作PCB等。EDA还可进行电路仿真,就是把电子器件或电路模块以数学模型表示,并配合数值分析的方法,实现电路的功能模拟及特性分析。如果采用的电路模型足够精确,则模拟结果将真实的反映电路特性,甚至可以方便地实现电路结构及性能的优化设计,并提供相当完整而详细的数据库资料。较之传统的电路设计方法,EDA的优点是显而易见的。2.2 FPGA介绍现场可编程门阵列FPGA器件是Xilinx公司于1985年首家推出的,它是一种新型的高密度PLD,采用CMOS-SRAM工艺制作。FPGA是一种基
24、于查找表(LUT, Look Up Table)的可编程逻辑器件,主要由逻辑单元(LE,Logic Element)构成的可配置逻辑块,可编程I/O和可编程内部互联模块组成。用户也可以根据需要对它进行编程,使之生成特定的电路结构,完成一定的功能。FPGA内部阵列块之间采用分段式进行互连,因此结构比较灵活,但是延时不可预测。2.2.1 FPGA的发展趋势 FPGA器件在过去的几十年里已经取得了巨大成就,在功能、成本、功耗、容量和编程能力方面的性能不断提高,在未来的发展中,将呈现以下几个方面的趋势。1.向大规模、高集成度方向进一步发展由于微电子制作工艺的超高速发展,FPGA在性能、容量方面取得的进
25、步非常显著,有人认为:目前多数系统的瓶颈是处理器、音频及数据的系统引起的I/O带宽问题。I/O带宽的关键在于收发器性能,这正是FPGA优于其他解决方案之处,Altera的Strative IV GT产品中提供了可达11.3Gb/s的高性能收发器,并将40nm工艺、高密度与高性能收发器完美结合,从而使FPGA能更完善地用于视频、音频、图像处理领域。2.向低电压、低功耗的方向发展目前,电子设计的一个显著趋势是功耗特性变得日益重要,功耗已经成为电子系统开发中的最重要考虑因素之一,并影响着最终产品的体积、重量和效率。FPGA器件的内核电压呈不断降低的趋势,经历了5V-3.3V-2.5V-1.8V-1.
26、2V的演变,未来将会更低。工作电压的降低使得芯片的功耗也显著减少,这样使FPGA器件可适用于便携、低功耗应用场合,如移动通信设备、个人数字助理等。3.向高速可预测延时的方向发展时间特性也是FPGA器件的一个重要标志。由于在一些高速处理系统中,为了保证系统的稳定性,FPGA器件的延时可预测性变得十分重要。用户在进行系统重构的同时,担心的是延时特性会不会因重新布线而改变,是否将导致系统性能的不稳定性,因此,为了适合未来复杂高速电子系统的要求,FPGA的高速可预测延时也是一个发展趋势。4.在FPGA器件内嵌入更多功能模块现在,FPGA器件中已经广泛嵌入RAM/ROM等存储模块,嵌入了DSP模块、硬件
27、乘法器等,可实现快速的乘法累加操作,比DSP芯片快很多倍。将来的FPGA器件还将嵌入更多功能模块,实现更多复杂运算,5.向模数混合可编程方向发迄今为止,FPGA的开发和应用的大部分工作都集中在数字逻辑上,模拟电路及数模混合电路的可编程技术在未来将得到进一步发展。2.2.2 FPGA结构及其特点FPGA结构一般分为三部分,可编程逻辑块,可编程I/O模块和可编程内部连线。FPGA的发展非常迅速,形成了各种不同的结构。按逻辑功能模块的大小分类,FPGA可以分为细粒度FPGA和粗粒度FPGA。细粒度FPGA的逻辑功能块比较小,资源可以充分利用,但是随着设计密度的增加,信号不得不通过许多开关,路由延迟也
28、快速增加,从而削弱了整体性能,导致速度降低;粗粒度FPGA的逻辑功能块规模大,功能强,可以用较少的功能块和内部连线就能完成较复杂的逻辑功能,易于获得较好的性能,但其缺点是资源不能充分利用。从逻辑功能的结构上分类,可分为查找表结构、多路开关结构和多级与非门结构。根据FPGA内部连线的结构不同,可分为分段互联型FPGA和连续互连性、型FPGA两种。分段互连型FPGA中具有多种不同长度的金属线,各金属线段之间通过开关矩阵或反熔丝编程链接,走线灵活方便,但走线延时无法预测;连续互连型FPGA是利用相同长度的金属线,连接与距离远近无关,布局走线是固定的和可预测的。根据编程方式,FPGA可分为一次编程型和
29、可重复编程型两类。一次编程型采用反熔丝开关元件,具有体积小、集成密度高、互连线特性阻抗低、寄生电容小和高速度的特点,此外还具有加密位、防拷贝、抗辐射、抗干扰、不需外接PROM或EPROM的特点,但只能一次编程。可重复编程型FPGA采用SRAM开关元件或快闪EPROM控制的开关元件,配置数据存储在SRAM或快闪EPROM中。SRAM型FPGA的突出优点是可反复编程,系统上电时,给FPGA加载不同的配置数据就可以完成不同的硬件功能,甚至在系统运行中改变配置,实现系统功能的动态重构。快闪EPROM型FPGA具有非易失性和可重复编程的双重优点,但不能动态重构,功耗也较SRAM型高。2.3 VHDL介绍
30、2.3.1 VHDL简介VHDL是一种硬件描述语言,它可以对电子电路系统和系统的行为进行描述。基于这种描述,结合相关的软件工具,可以得到所期望的实际电路系统。VHDL是VHSIC Hardwar Description Language(VHSIC硬件描述语言)。VHSIC是Very High Speed Integrated Circuit HDL(超高速集成电路硬件描述语言)的缩写,是在ADA语言基础上发展起来的硬件描述语言。是20世纪80年代在美国国防部资助下始创的,并最终导致了VHDL语言的出现。它的第一个规范版本为VHDL 87,VHDL 93是其后续的升级版本。使用VHDL语言描述
31、的电路,可以进行综合与仿真。然而,值得注意的是,尽管所有VHDL代码都是可仿真的,但并不是所有代码都是可综合的。VHDL语言被广泛使用的基本原因在于它是一种标准语言,是与工具和工艺无关的,从而可以方便的进行移植和重用。VHDL语言的两个最直接的应用领域是可编程逻辑器件和专用集成的电路,其中可编程逻辑器件包括复杂可编程逻辑器件和现场可编程门阵列。一段VHDL代码编写完成后,用户可以使用可编程逻辑器件来实现整个电路。VHDL语言与常规的顺序执行的计算机程序不同,VHDL从根本上将是并发执行的。因此,我们通常称之为代码,而不是程序。在VHDL中,只有在进程(PROCESS),函数(FUNCTION)
32、和过程(PROCEDURE)内部的语句才是顺序执行的。2.3.2 VHDL代码结构1代码基本单元一段独立的VHDL代码至少包含3个组成部分:库(LIBRARY)声明:列出了当前设计中需要用到的所有库文件,如ieee,std和work等。实体(ENTITY):定义了电路的输入/输出引脚。构造体(ARCHITECTURE):所包含的代码描述了电路要实现的功能。2.代码语法结构库声明:使用一个库之前,需要首先对库进行声明。经过声明之后,在设计中就可以调用库中的代码了。库的声明方式如下:LIBRARY libray_name;USE libray_name.package_name.package_p
33、arts;其中LIBRARY和USE是VHDL保留的关键字。实体:是用来描述电路的所有输入/输出引脚,其语法结构如下:ENTITY entity_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 a
34、rchitecture_name OF entity_name ISdeclarations BEGIN (code) END architecture_name;从语法结构中可以看到,一个ARCHITECTURE包含两部分:声明部分(可选),用于对信号和常量等进行声明;代码部分(BEGIN和END之间的部分),用来描述电路的行为或工功能。与ENTITY一样,可以采用除VHDL关键字以外的任何名称为ARCHITECTURE命名,并且允许和ENTITY具有相同的名称。2.3.3 VHDL语言设计硬件电路的优点1.VHDL支持结构化和自顶向下的设计方法,这样非常便与设计的模块化。设计者从系统整体要
35、求出发,自上而下将系统内容细化,最后将模块组合成完整的整体设计。2.VHDL具有多层次描述和仿真系统硬件功能的能力,可以从系统到门级电路不同层次对数字进行建模和描述,不同的描述还可以混合使用,大大简化了硬件设计任务,提高了设计效率和可靠性,缩短了产品开发周期。3.VHDL是一种工业语言,设计者,EDA开发工具的供应商和IC芯片生产商都要遵循这一标准,因此它具有设计和开发环境,具有电路实现工艺以及采用的实现芯片无关的特点,设计成果便于移植,交流和二次开发。另外由于其语法严格,是强类型语言,因此涉及安全性好,也便于阅读。4.VHDL即支持传输延时也支持惯性延迟,不仅可以很好地描述系统和电路的逻辑功
36、能,也可以真实地反映系统和电路的时间特性。5.VHDL可以支持各种不同类型的数字电路和系统的设计。既支持同步电路也支持异步电路;既支持TTL电路,也支持CMOS电路;即可以采用CPLD芯片实现,也可以采用FPGA芯片实现。2.4 Quartus II2.4.1 Quartus简介Quartus是Altera公司在21世纪初推出的可编程逻辑器件的集成开发软件,这个软件是该公司前一代可编程逻辑器件集成开发软件MAX+PLUS的更新换代产品。Quartus集成开发软件支持可编程逻辑器件开发的整个过程,它提供一种与器件结构五官的设计环境。软件界面友好,使设计者能够方便的进行设计输入、设计处理和器件编程
37、。Quartus集成开发软件不仅支持利用硬件描述语言通过文本编辑的方法完成电路设计,而且该软件也提供类似传统电子设计中绘制电路图的输入方式。当使用原理图输入方式时,设计者可以很方便地使用开发软件提供的各种元件来提高设计及速度和设计质量。2.4.2 Quartus设计流程Quartus集成开发软件的核心是模块化的编译器。编译器包括的功能模块有分析/综合器、适配器、装配器、时序分析器、设计辅助模块和EDA网表文件生成器。利用Quartus集成开发软件进行可编程逻辑器件开发的全部过程包括以下步骤:设计输入、综合、布局布线、验证和仿真,以及可编程逻辑器件的编程和配置。Quartus集成开发软件的功能模
38、块与可编程逻辑器件开发过程之间的关系如图2-2所示。设计输入是将设计者所需要的电路构思已开发软件要求的形式表达出来。Quartus软件支持模块/原理图输入方式、文本输入方式、Core输入方式和第三方EDA工具输入方式等。Quartus软件同时允许用户在需要对器件的编译或变成进行必要的条件约束的环境下,使用分配编辑器设定初始设计的约束条件。综合是将HDL语言、原理图等设计输入依据给定的硬件结构组件和约束控制条件进行编译、优化、转换和综合,生成门级电路,或更底层电路的描述网表文件,以供适配器实现。适配也称为布局布线,这个步骤利用适配器将逻辑综合生成的网表文件映射到某一具体的器件。该过程包括将设计的
39、逻辑和时序要求与器件的可用资源相匹配;将每个逻辑功能分配到最好的逻辑单元位置,进行布局和时序分析;选择相应的互联路径和引脚分配。适配完成后,生成可用于时序仿真的仿真文件和可用于编程的编程文件。仿真包括功能仿真和时序仿真。功能仿真实在不考虑期间延时的理想情况下仿真设计项目,以验证其逻辑功能的正确性,功能仿真又称前仿真。时序仿真是在考虑具体适配器的各种延时的情况下仿真设计项目,它是接近真实器件运行特性的仿真,时序仿真又称后仿真。器件编程与配置是指设计输入编译成功后,设计者试用器件编译器将编程文件下载到实际器件的过程。Quartus集成开发软件允许用户在开发过程中使用Quartus图形用户界面、ED
40、A工具界面和命令执行界面。用户可以在整个开发过程中使用这些界面中的任意一个,也可以在开发过程中的不同步骤中使用不同的界面。上述任何一步出错,均需要回到设计输入阶段纠正错误,并重新按设计流程进行设计。2.5 实验箱简述本设计采用的实验箱为LTE_EDA_02F型EDA/SOC实验开发系统,选用的芯片为EP2C5Q208C8。关于FPGA/CPLD器件的配置:当在Quartus中完成设计后,就应当将所设计的电路下载到CPLD芯片中,结合用户系统进行统一的调试。针对CPLD器件不同的内部结构,Altera公司提供了不同的器件配置方式。Altera可编程逻辑器件的配置可通过编程器、JATG接口在线编程
41、及Altera在线配置三种方式进行。Altera器件编程的连接硬件包括ByteBlaster并口下载电缆,ByteBlasterMV并口下载电缆,MasterBlaster串行/USB 通信电缆,BitBlaster串口下载电缆。Altera公司提供的EPC1、EPC2、EPC16和EPC144等PROM配置芯片。本设计采用的是ByteBlaster并口下载电缆。ByteBlaster并口下载电缆提供两种下载模式:1.标准串行模式(AS模式)用来产品定型后,完成对FPGA代码的固化,在下次上电后,能够自动对FPGA进行配置,使产品独立工作;2.JTAG模式具有工业标准的JTAG边界扫描测试电路
42、(符合IEEE 1149.1:1990标准),用来调试FPGA或NiosCPU,多在产品开发初期使用。第3章 系统的设计3.1 总体设计3.1.1 出租车计价器的设计要求按照计价标准能实现计价功能;实现预置功能:能预置起步价、每公里收价、行车加价里程;实现模拟功能:能模拟汽车启动、停止、暂停等状态。该计价系统可靠性高、成本低、通用性强;该系统在不改变硬件电路的前提下,要具有可以重构系统的功能,采用完全相同电路结构,只要根据各地区的需求在VHDL程序中设置各参数,就可以适应各地区出租车不同计价标准的需要,还可实现根据各地区需求增加其他功能。具体计费方式如下:1.车起步开始计价。首先显示起步价(本
43、次设计起步价分为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后,车费变成按每公里5元开始计价。3.车暂时停止(行驶中遇红灯或中途暂时停车)等待累计时间超过5分钟时,按1元/分钟累计费用。3.1.2 总体框架设计图3.1系统设计总框图分频模块用来将实验系统所
44、提供的时钟进行分频,得到所需要的时钟频率。行驶路程计数模块来统计路程。当出租车启动并行驶的过程中,当时钟的上升沿检测到公里信号(输入端clkout)为1时,对路程计数器的个位和十位进行加法计数,并在累计路程超过3km是,让标志位enable为高电平,该信号将传给控制模块。等待时间计数模块来统计等待时间。在出租车启动并停止等待的过程中(即复位reset为0 时,停止信号stop为0),计数器在时钟的上升沿进行加法计数,每60进制产生进位脉冲使分钟计数器个位和十位进行加法计数,并在累计等待时间超过5分钟时,让标志位timecount为高电平,该信号将传给控制模块。计费模块用于出租车启动后,根据行驶
45、路程和停止等待时间计算费用。该模块的时钟使用控制模块输出的信号。当出租车停车复位时,时钟控制模块为clk信号,用于将费用计数器复位为起步价10元;当出租车处于行驶状态时,时钟控制模块为满3km信号时enable,路程每满1km,费用计数器加2元,时钟控制模块为满20km信号时,路程每满1km,费用计数器加3.3元,;当出租车处于停止等待状态时,时钟控制模块为满5分钟信号timecount,时间每满1分钟,费用计数器加1元。控制模块为计数模块提供时钟信号。停止复位状态输出时钟信号clk;停止等待状态时输出时间计数模块产生的满5分钟脉冲timecount;行驶状态是输出模拟满公里数的信号clkou
46、t。数码管显示模块用来显示所行驶的路程和所花费的价钱。3.1.3流程图系统工作流程图如图3.2所示。系统工作流程为:出租车载客后,启动计价器即start为1,整个系统开始运行,进入初始化状态,即计程和计时从0开始,计价从起步价开始,白天起步价为6.0元,晚上起步价为7.0元。再根据pause信号判断行驶或是停止等待。若pause为0,表示行驶状态,则计程器开始计数,当路程超过3km后,如果是白天,计价器按每公里1.4元的单价进行累加,如果是晚上,计价器按每公里2.0元累加,否则计程器保持不变;当路程超过20km后,如果是白天,计价器按每公里2.0元的单价进行累加,如果是晚上,计价器按每公里3.
47、0元累加,否则继续按3km后的计价方式计价;若pause为1,便是停止等待状态,则计时器开始加数,当每超过5min后计价器加1元,否则计价器保持不变;出租车停止后,按下stop键,停止计程和计时;然后按下reset键,将所有计数器复位。图3.2 程序流程图3.2主要模块设计3.2.1 出租车总体模块设计图3.3 出租车计价器设计的顶层原理图构建原理图的方法:首先建立相应的原理图文件。点击New - Block Diagram/Schematic File,生成一个后缀名为.bdf的文件。第二步,打开将要生成元件的主代码页面,然后选择File- Create/_Update - Create Symbol Files for Current File.在.bdf文件的空白处左键双击一下,弹出一个Symbol的窗口,在左边窗口处选择需要的器件,在Project下是自己的代码生成的元件。然后将所添加的元件按逻辑关系连接起来,最后加上output和input的管脚。然后对管脚命名。上图就是按上述方法所得到的。其中计价,计程,计时,数据分配和尺寸大小选择模块都使用相同的时钟脉冲,均由分频模块将系统时钟经过分频后传送给各个模块。译码模块用于显示路程和价钱。Choose输入端口用于