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

下载本文档

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

文档简介

1、 PAGE 67 PAGE 51论文题目:基于FPGA的出租车计费器设计专 业:微电子学本 科 生: (签名)_指导教师:岳改丽 (签名)_ 摘 要论文阐述了EDA的概念和发展、VHDL语言的优点和语法结构,并分析了出租车计费器的各模块的功能要求、基本原理以及实现方法。本系统的设计采用VHDL硬件描述语言编程,基于Quartus II平台进行编译和仿真。论文介绍了一种采用FPGA芯片设计出租车计费器的方法,阐述了该计费器的主要组成单元车轮大小选择模块、计程模块、计时模块及计费模块、数据分配模块、分频模块、译码模块的设计方法,同时给出了详细的仿真波形,实现了出租车按行驶里程自主收费,还能模拟汽车

2、启动,停止,暂停等状态,同时提高了计费系统的可靠性、通用性。本设计在FPGA试验箱上运行良好,实现了计费器的各项功能。关键字 FPGA,VHDL,Quartus II,出租车计费器 Subject: The taxi meter based on FPGA designSpecialty: MicroeletronicsName: Yuan Wang (Signature) _Instructor: Gaili Yue (Signature) _ ABSTRACTThis article elaborates the concept and development of EDA ,explai

3、ns the advantages and grammar structure of VHDL ,meanwhile, analysed the function request, the basic principle as well as the method of accomplishment of each parts. This systems design programmes in the VHDL, compiled and emulated basing on Quartus II platform of Altera consists of four modules,tha

4、t 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 billing module,and then, describe the design of each module and give out the simulation. This taxi meter can

5、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 design FPGA test box on running well, realize the different functions of the message accounting device. KEY WORDS

6、 FPGA ,VHDL ,Quartus II ,The taxi meter 目 录 HYPERLINK l _Toc18166 第1章 绪 论 PAGEREF _Toc18166 1TOC o 1-3 h u HYPERLINK l _Toc15439 1.1课题研究背景及目的 PAGEREF _Toc15439 1 HYPERLINK l _Toc9516 1.2 课题的研究现状 PAGEREF _Toc9516 2 HYPERLINK l _Toc16267 1.3 课题研究方法 PAGEREF _Toc16267 2 HYPERLINK l _Toc8824 1.4 论文的构成及研究

7、内容 PAGEREF _Toc8824 3 HYPERLINK l _Toc4293 第2章 EDA及设计相关工具介绍 PAGEREF _Toc4293 4 HYPERLINK l _Toc14610 2.1 EDA技术的发展及优势 PAGEREF _Toc14610 4 HYPERLINK l _Toc32057 2.1.1 EDA技术的发展 PAGEREF _Toc32057 4 HYPERLINK l _Toc30090 2.1.2 EDA技术的设计优势 PAGEREF _Toc30090 4 HYPERLINK l _Toc2681 2.2 FPGA介绍 PAGEREF _Toc268

8、1 5 HYPERLINK l _Toc11643 2.2.1 FPGA发展状况 PAGEREF _Toc11643 5 HYPERLINK l _Toc19636 2.2.2、FPGA结构与特点 PAGEREF _Toc19636 5 HYPERLINK l _Toc3383 2.3 VHDL介绍 PAGEREF _Toc3383 6 HYPERLINK l _Toc3159 2.3.1 VHDL简介 PAGEREF _Toc3159 6 HYPERLINK l _Toc15213 2.3.2 VHDL设计优点 PAGEREF _Toc15213 7 HYPERLINK l _Toc7547

9、 2.4 QuartusII概述 PAGEREF _Toc7547 7 HYPERLINK l _Toc2896 2.4.1 Quartus介绍 PAGEREF _Toc2896 7 HYPERLINK l _Toc8191 2.4.2 Quartus II设计流程及注意事项 PAGEREF _Toc8191 8 HYPERLINK l _Toc21825 2.4.3 Quartus II的设计优势应用举例 PAGEREF _Toc21825 9 HYPERLINK l _Toc18447 2.5实验开发系统及芯片简述 PAGEREF _Toc18447 9 HYPERLINK l _Toc2

10、4787 第3章 出租车计费系统的设计 PAGEREF _Toc24787 11 HYPERLINK l _Toc10094 3.1 总体设计 PAGEREF _Toc10094 11 HYPERLINK l _Toc13213 3.1.1 出租车计费器的设计要求 PAGEREF _Toc13213 11 HYPERLINK l _Toc30459 3.1.2 总体框架设计 PAGEREF _Toc30459 12 HYPERLINK l _Toc7501 3.1.3程序流程图 PAGEREF _Toc7501 13 HYPERLINK l _Toc8325 3.2 出租车计费器主要模块设计

11、PAGEREF _Toc8325 14 HYPERLINK l _Toc7683 3.2.1 出租车总体模块设计 PAGEREF _Toc7683 14 HYPERLINK l _Toc4875 3.2.2 车轮大小选择模块设计 PAGEREF _Toc4875 14 HYPERLINK l _Toc8855 3.2.3 计程模块设计 PAGEREF _Toc8855 15 HYPERLINK l _Toc17018 3.2.4 计时模块设计 PAGEREF _Toc17018 18 HYPERLINK l _Toc26611 3.2.5 计费模块设计 PAGEREF _Toc26611 19

12、 HYPERLINK l _Toc22030 3.2.6 数据分配模块设计 PAGEREF _Toc22030 20 HYPERLINK l _Toc26197 3.2.7 译码模块设计 PAGEREF _Toc26197 21 HYPERLINK l _Toc807 3.2.8 分频模块设计 PAGEREF _Toc807 21 HYPERLINK l _Toc27504 3.3 主要模块的波形仿真 PAGEREF _Toc27504 23 HYPERLINK l _Toc16202 3.3.1 出租车总体模块仿真波形 PAGEREF _Toc16202 23 HYPERLINK l _To

13、c709 3.3.2 车轮大小选择模块仿真波形 PAGEREF _Toc709 23 HYPERLINK l _Toc2984 3.3.3 计程模块仿真波形 PAGEREF _Toc2984 24 HYPERLINK l _Toc1460 3.3.4 计时模块仿真波形 PAGEREF _Toc1460 24 HYPERLINK l _Toc28004 3.3.5 计费模块仿真波形 PAGEREF _Toc28004 25 HYPERLINK l _Toc14603 3.3.6 数据分配模块仿真波形 PAGEREF _Toc14603 25 HYPERLINK l _Toc355 3.3.7 译

14、码模块仿真波形 PAGEREF _Toc355 26 HYPERLINK l _Toc19490 3.3.8 分频模块仿真波形 PAGEREF _Toc19490 26 HYPERLINK l _Toc20352 3.4 管脚分配及说明 PAGEREF _Toc20352 27 HYPERLINK l _Toc28102 3.5硬件调试结果及分析 PAGEREF _Toc28102 28 HYPERLINK l _Toc24646 第4章 总 结 PAGEREF _Toc24646 31 HYPERLINK l _Toc3452 致 谢 PAGEREF _Toc3452 34 HYPERLIN

15、K l _Toc29096 参考文献 PAGEREF _Toc29096 35 HYPERLINK l _Toc21479 附录: PAGEREF _Toc21479 37第1章 绪 论1.1课题研究背景及目的伴随中国经济的腾飞,城市化的进程也随之加快。虽然人们出行的选择趋于多样化,但是出租车作为一种重要的交通工具,也为很多人作为出行的选择。大城市里出租车已经相当普及,但是在中小城市出租车依然处于快速发展的阶段。出租车的计费方式也在发生变化,由只能显示里程的方式变为现在的自主计费和打印发票及语音提示的智能化方式;根据出租车行业的发展需求,国内许多生产厂商也制造出不同类型的计价器,传统的出租车计

16、费器经过十几年的使用,在稳定性,成本等方面都具有一定的优势。我们可以采用单片机对计费器进行设计,很多的功能也可以用单片机去实现。但是由于不同系列的单片机有着不同的指令集,程序也不能够通用,这样给设计就带来很大麻烦,设计研发难,开发周期长。倘若系统设计不好,会造成系统不稳定,灵活性差,难以实现复杂系统的设计。在经济迅速发展的今天,许多因素都影响着出租车行业的成本,传统的基于单片机的出租车计费系统已经很难满足发展需要,新的计费系统就应运而生,FPGA等数字逻辑器件就担起重任,去解决出现的问题。对于不同的逻辑,FPGA可以并行执行,可以同时去处理多个任务,这样,FPGA就展示出更高的效率。针对不同的

17、需求设计不同的模块,可移植性好,可以很快的去实现系统需求的各种功能。利用FPGA设计出满足出租车不同计费需求的计费器,去满足当地出租车的计费需求。这个课题在实现计费功能的同时,也解决了传统出租车计费器系统的不足。出租车的需求不断的增大,因此,出租车计费器的需求也将不断增大,计程车的服务也显得越来越重要,因此出租车计费器也就应运而生了。考虑到目前出租车行业迅猛发展的趋势以及对计费器更高的灵活性要求,本设计希望尝试一些新的方法来予以解决以上问题。 1)利用FPGA取代MCU FPGA等数字可编程器件的出现,使得传统电子设计不能完成的任务得以解决,采用FPGA实现出租车计费器,具有可行性高,电路简单

18、,很大程度上减少外围器件的使用,可以采用软件进行完全仿真,灵活度高,可以设计相对复杂的数字系统,而且在不同的FPGA芯片上,这些已经编写好的系统程序都可以使用。任何数字器件的功能都可以用FPGA去实现,使用FPGA来开发数字电路,可以设计时间得到缩减,PCB面积也会相应减小,系统的可靠性也会得以提高。同时由于FPGA的功能完全取决于VHDL语言编写的程序,不受制于某种芯片的特殊指令,产品的更新换代能力自然提高。 2)增加计价标准设定功能 此功能模块的设计,计价标准设计也显得更加灵活,同时还体现目前出租车行业发展的需要,使运价、油价联动成为可能。 3)增加了等待计时费用功能 该模块的增加,使得计

19、费更加趋于合理,达到出租车死机与乘客之间的一个平衡。可以选择的范围也变得很广阔。顺应了出租车行业的发展需求,因而,必将得到快速发展。1.2 课题研究现状针对出租车计费器,在这方面,很多人已经做出了许多不同的设计,使用的方式也各式各样,有FPGA,单片机,ARM以及可编程的逻辑器件等。本次毕业设计的题目就是“基于FPGA的出租车计费器设计”,与采用单片机去实现相比,采用FPGA现场可编程逻辑器件来实现出租车的计费功能,同时也很大程度上凸显了EDA的技术优势。对于这类的设计,我们不仅可以做在线仿真和测试,还可以将所有的设计都集中在统一的自顶向下的设计方案下,根据系统需求,设计不同的模块,最后经过对

20、不同的模块进行系统性综合,从而我们就可以完成整个系统设计。很多人都将基于EDA技术的CPLD/FPGA的设计方案作为首选方案去完成相关课题的设计,很大程度是基于EDA的这些技术优势。1.3 课题研究方法 根据系统的总体功能,采取自顶向下模块化的设计方法,进行端口定义和功能划分,通过合理连接和协调各相关的各个不同端口,得到整个电路系统。本设计将采用EP2C5Q208芯片作为控制器芯片,8个共阴极数码管,以及若干拨码开关,以Quartus7.2作为仿真开发环境。首先,对系统时钟做分频处理,得到系统各模块所需的时钟频率,将采集到的信息送到EP2C5Q208芯片,以及对等待信号,里程脉冲,计费/复位等

21、信息进行综合处理,电机转动时间以及停止,低于一定转速时也按等待处理,电机的这些信息转化为相应的里程信息和等待时间,通过控制器的处理,得到总的费用信息,将时间,里程,等待时间等信息,通过LED数码管显示出来。1.4 论文的构成及研究内容 第1章 绪论部分介绍出租车计费器的研究背景,目的,现状以及所采用的研究方法; 第2章介绍EDA技术发展及优势,FPGA,VHDL语言,硬件平台Quartus,实验开发系统及芯片简述; 第3章具体介绍出租车计费器的设计; 第4章对设计做全面总结。第2章 EDA及设计相关工具介绍2.1 EDA技术的发展及优势2.1.1 EDA技术的发展人类已进入到高度发达的信息化社

22、会,电子产品的进步推动信息社会的发展。提高性能、增大复杂度,而价格却一直呈现下降的趋势,使得现代电子产品更新换代的速度也越来越快,生产制造技术和电子设计技术的发展是实现这种进步的主要原因。前者以微细加工技术为代表,目前已进展到纳米阶段,可以在几平方厘米的芯片上集成数亿个晶体管;后者的核心就是EDA技术。EDA技术主要能辅助进行三方面的设计工作:IC设计,电子电路设计以及PCB设计。想要完成上述超大规模集成电路的设计制造离不开EDA技术的大力支持,电子产品市场迎来飞速发展的,设计师需要更加实用、高效的EDA工具,使用统一的集体化设计理念,改变传统的设计方式,将精力集中到设计构想、方案比较和寻找优

23、化设计等方面,需要以最快的速度,开发出性能优良、质量一流的电子产品,为此,也就需要更高端的EDA技术去支撑。在功能仿真、时序分析、集成电路自动测试、高速印刷版设计及开发操作平台的扩展等方面取得新的突破,向着功能强大、简单易学、使用方便的方向发展是未来的EDA技术的发展趋势。2.1.2 EDA技术的设计优势自底向上的设计方法是传统的设计方法,一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块写出与之对应的真值表,通过人工使用卡诺图进行逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此确定相关的电子元器件,设计电路板,最后进行实测与调试,硬件系统功能仿真难以实现,因此其中的任何一个环

24、节出现错误,要想对其进行查找和修改就会显得十分的不便,传统设计方法的费时、费力缺点就暴漏无疑,而EDA技术则是采用自顶向下且先进高效的设计方法。在电子产品的设计理念、设计方式、系统硬件构成、设计的重用性、知识产权、设计周期等方面,EDA技术具有相当大的技术优势。所以本次设计的出租车计费器抛弃了传统的设计方法,选择采用主流的EDA技术进行系统设计。2.2 FPGA介绍2.2.1 FPGA发展状况 Field Programmable Gate Array是FPGA的英文全称,即现场可编程门阵列。它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为(ASIC)领域中的一种半

25、定制电路而出现的,一方面,使得定制电路的不足支撑得以解决,另一方面,原有可编程器件门电路数有限的缺点也得到克服。FPGA起源于美国的Xilinx公司,世界上第一块FPGA芯片是该公司在1985年推出的。通过二十多年的发展,使得FPGA的硬件体系结构和软件开发工具得到完善,并且不断走向成熟。FPGA器件的集成度在目前Xilinx、Altera等世界顶级厂商的推动下,已经提高到一个前所未有的高度。融合了微电子技术、电路技术、EDA技术的FPGA,使设计者在进行所需逻辑功能的设计时更能集中精力,这样设计周期得以缩短,设计质量也相应的得到提高。 2.2.2、FPGA结构与特点Altera Xilinx

26、,Lattile和Actel是目前主要生产FPGA公司,生产的FPGA品种和型号繁多、尽管这些FPGA的集总结构和性能指标各有特色,但它们都由逻辑功能模块排成阵列,并通过可编程的互连资源将这些逻辑功能块相互连接,从而完成相应的设计。可编程逻辑功能块、可编程输入/输出块和可编程互连资源是典型的FPGA所包含三类基本资源。可编程逻辑功能块是实现用户功能的基本单元,多个逻辑功能块通常规则地进行排列,整个芯片中分布;可编程输入/输出块完成芯片内部逻辑与外部管脚之间的接口,围绕在逻辑单元周围,并且四周成列分布;可编程内部互连资源包括长连线,短连线,双长线和一些可编程连接开关,用于连接各个编程逻辑块或输入

27、/输出块,进而构成具有特定功能的系统或电路。每个单元的功能以及它们的互连关系可以由用户通过编程决定,从而实现所需的逻辑功能。不同厂家或不同型号的FPGA,通常在可编程逻辑块的内部结构、规模、内部互连的结构等方面存在较大的差异。可编程的查找表结构是FPGA所采用的一种结构。LUT是可编程的最小逻辑结构单元。基于SRAM的查找逻辑形成结构是很多FPGA所采用的结构,换句话说,就是用SRAM来构成逻辑函数发生器。N个输入变量的任何逻辑功能都可以由一个N输入查找表完成。SRAM、反熔丝、Flash是目前市场上的三种基于FPGA编程技术。速度快且具有可重编程能力使得SRAM成为迄今为止应用范围最广的结构

28、形式,而反熔丝只具有一次可编程能力。FPGA领域比较新的技术是基于Flash的FPGA,它也可以进行重编程。2.3 VHDL介绍2.3.1 VHDL简介VHDL的全名是Very-High-speed Integrated circuit Hardware Description Language ,即标准硬件描述语言。在新世纪中,数字系统设计任务大都是通过VHDL语言实现的,VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL语言形式和描述风格与句法十分类似于一般的计算机高级语言,如C+,VC+等。将一项工程设计或称设计实体分成外部和内部是VHDL的

29、程序结构的一大特点;即设计实体的内部功能和算法完成部分。在对一个设计实体进行外部界定后,一旦内部程序编写仿真无误后,其他的设计对该实体进行调用,体现其很强的可移植性。这种可以将设计实体分成内外部分的概念是VHDL系统设计的特点。EDA技术的高速发展,使得硬件描述语言设计FPGA成为一种主流。采用VHDL语言借助Quartus II等软件开发环境进行数字系统的完整设计流程如下:(1) 设计输入:可以在任何文本编辑器下进行输入VHDL源程序,也可以用专用HDL编辑环境。通常情况下将源程序文件保存为.vhd 文件。(2) 功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确也叫前功能

30、仿真,这一步不适用于简单的设计,对于简单的设计,只在分步仿真完成以后,进行时序仿真。(3) 逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简单的布尔表达式和信号的连接关系图。逻辑综合软件会生成.edf的EDA工业标准文件。(4) 布局布线:进行布局布线是将.edf文件调入PLD厂家提供的软件中操作,即把设计好的逻辑关系安放到PLD内。(5) 时序仿真:需要利用在布局布线中获得的精确数据,用仿真软件验证电路的时序,也叫后仿真。(6) 编程下载:仿真成功后,将仿真所生成的文件下载到目标芯片中。.sof文件用于直接下载到芯片;.pof文件用于rom芯片下载。 2.3.2 VHDL设计优

31、点利用VHDL语言设计数字逻辑硬件系统具有多方面的优点。(1) 具有很广阔的覆盖面,行为描述能力也相当强大,是一个多层次的硬件描述语言。(2) 可读性强,一方面计算机容易接受,读者也容易理解。(3)可以长期使用,行为级描述不会随着工艺改变而过时。生产工艺与VHDL的硬件描述无关。当工艺发生变化时,只需对属性参数做相应的修改即可。(4) 可移植性强,可以将大规模设计进行分解,同时可以使用已有的设计模块。一个人不可能独立完成大规模的设计,必须由多人共同协同完成设计,设计的分解和设计的再利用在VHDL的支持下变得容易。2.4 QuartusII概述 2.4.1 Quartus介绍Quartus II

32、是Altera 公司单芯片可编程系统(SOPC) 设计的综合性环境,也是适合SOPC的最全面的设计环境。它拥有现场可编程门阵列(FPGA) 和复杂可编程逻辑器件(CPLD) 设计的所有阶段的解决方案。Quartus II 设计软件改进了性能、提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供FPGA与mask-programmed devices开发的统一工作流程。同时,Altera的Quartus II可编程逻辑软件还属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。同样,Qua

33、rtus II具备仿真功能,同时也支持第三方的仿真工具。Quartus II支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块进行调用,从而解决了原理图与HDL混合输入设计的问题,并且在设计输入之后,Quartus II的编译器将给出设计输入的错误报告。2.4.2 Quartus II设计流程及注意事项基于 Quartus II的VHDL文本输入设计流程如下图所示: 图2.1 Quartus II的VHDL文本输入设计流程图由上图可以看出,对于电子设计的各个阶段、各个层次的操作都在Altera公司提供的QuartusII平台上进行编译、仿真测试,然后通过仿真时序图可以

34、看出了此编程是否符合预想的设计功能,倘若不符,可以及早对各子模块及系统中的错误在硬件测试前发现,系统设计的效率得以提高。在设计实验过程中需要注意以下几点:首先,在进行编程操作时,时要注意区分信号与变量,同时对信号和变量的正确定义和应用也很重要;其次,在创建工程时,要保证文件名和实体名完全一致,否则,编译无法完成,工程名可以与之不一致;再次,注意结束时间的设置,最好将其设置为时间周期的15倍,否则可能会出现时序混乱的现象;最后,仿真中,灵活的进行进制的转换,观察者可以更明显地看出来时序图的功能。2.4.3 Quartus II的设计优势应用举例随着逻辑设计复杂性的不断增加,仅依赖于软件方式的仿真

35、测试来了解设计系统的硬件功能已经远远不够了,而需要重复进行硬件系统测试的测试也变得更为困难。嵌入式逻辑分析仪SignalTapII的使用就解决了这一问题。它可以随设计文件一并下载于目标芯片中,用以捕捉目标芯片内部系统信号节点处的信息或总线上的数据流,而又不影响原硬件系统的正常工作。嵌入式逻辑分析仪SignalTapII有很多的优点:(1) 允许对设计层次的模块的信号节点进行测试,可以使用多时钟驱动;(2) 利用Signal Tap II成功的采集了FPGA内部信号的波形,不占用额外的I/O引脚;(3) Signal Tap II为硬件板级调试工具,它采集的波形是工程下载后的实时波形,方便设计者

36、查找引起设计缺陷的原因;(4) 节约成本。Signal Tap II集成在Quartus II软件中,无需另外付费;(5) 能通过设置以确定前后触发捕捉信号信息的比例。除此之外,应用Signal Tap II还能解决各种各样的问题,如外部存储器的双向数据口的实时波形检测、驱动模块并串转换波形等。ALTERA公司的型号为EP2C5Q208C8的Cyclone系列芯片,该芯片是ALTERA推出的低价格、高容量的FPGA芯片,在实际应用中被广泛的采用的原因是其低廉的价格、优良的性能以及丰富的片上资源,这些都是其他同类产品无法相比的。这款芯片的资源利用率最佳为85%左右,系统的核心是Quartus软件

37、包的编程器,设计处理相当强大,芯片的利用率也可以通过设计者添加特定的约束条件来提高。 2.5实验开发系统及芯片简述本设计采用的实验箱为LTE_EDA_02F型EDA/SOC实验开发系统,选用的芯片为EP2C5Q208C8。关于FPGA/CPLD器件的配置: 当在Quartus中完成设计后,就应当将所设计的电路下载到CPLD芯片中,结合用户系统进行统一的调试。针对CPLD器件不同的内部结构,Altera公司提供了不同的器件配置方式。Altera可编程逻辑器件的配置可通过编程器、JATG接口在线编程及Altera在线配置三种方式进行。Altera器件编程的连接硬件包括ByteBlaster并口下载

38、电缆,ByteBlasterMV并口下载电缆,MasterBlaster串行/USB 通信电缆,BitBlaster串口下载电缆。Altera公司提供的EPC1、EPC2、EPC16和EPC144等PROM配置芯片。ByteBlaster 并口下载电缆连接示意图如下图所示: 图2.2 ByteBlaster 并口下载电缆连接示意图ByteBlaster并口下载电缆提供两种下载模式:(1) 标准串行模式(AS模式)用来产品定型后,完成对FPGA代码的固化,在下次上电后,能够自动对FPGA进行配置,使产品独立工作;(2) JTAG模式具有工业标准的JTAG边界扫描测试电路(符合IEEE 1149.

39、1:1990标准),用来调试FPGA或NiosCPU,多在产品开发初期使用。第3章 出租车计费系统的设计3.1 总体设计3.1.1 出租车计费器的设计要求本设计要求设计日常生活所需要功能的基于CPLD/FPGA的出租车计费器,其设计要求:(1)汽车行驶里程用4位数字显示,显示方式为“XXX.X”,单位为km,精确到0.1km。(2)里程单价用2位数字表示,显示方式为“X.X”,单价为元/km,根据每天不同的时间段有两种情况:当时间段为06:0023:00时单价为1.4元/km,其他时间段内为2.0元/km。(3)出租车遇到红灯或是紧急情况需要等候时,也相应的付费,等候单价为每30秒1元;等候时

40、间越长,相应费用也越多。(4)费用的计算,若为白天,出租车的起步价为6.00元,若为晚上,出租车的起步价为8.00元,当里程小于2km时,按起价计算费用,当里程大于2km时,按公式计算:费用=里程里程单价+等候时间等候单价。(5)费用的显示,用4 位数字显示,显示方式为“XXX.X”,单价为元。 3.1.2 总体框架设计图3.1系统设计总框图它由外部输入模块、控制模块和显示模块三部分组成。控制模块是整个系统的核心,它由分频模块、控制模块、计量模块和译码显示模块构成。(1) 分频模块。分频模块是对系统时钟频率进行分频; (2) 控制模块。计价器控制模块主要完成对计价器状态的控制;(3) 计量模块

41、。计量模块完成计价、计时和计程功能;(4) 译码显示模块。译码显示模块完成计价、计时和计程数据显示。3.1.3程序流程图 图 3.2 程序流程图3.2 出租车计费器主要模块设计 3.2.1 出租车总体模块设计 图3.3 出租车计费器设计的顶层原理图3.2.2 车轮大小选择模块设计不同型号的车轮,其所对应的直径不同,每行驶100m,对应的圈数也不同,车轮直径与每公里需要转过圈数对照表由下表3.1给出。表3.1车轮直径与每千米所转圈数对应表车轮直径(mm)520540560580DIP开关表示00011011对应计费圈数640610580550 图3.4 车轮大小选择模块原理框图通过选择开关sp1

42、,sp0两位选择开关,可以选出不同车型所应该给出计程圈数,达到所给的圈数给出相应的计程脉冲,输入脉冲用时钟信号(clk)模拟,reset为复位键,stop为计费停止键,start为开始计费键,当reset为高电位时,此时处于复位状态,不进行计费,当start为高电平时,开始计费,给出对应的脉冲信号。3.2.3 计程模块设计 图3.5计程模块原理框图reset为复位信号,clkout为里程计费脉冲,KM_CNT0 KM_CNT3为里程的十分位到里程的百位输出。该模块是设计的一个重要方面,下面给出计程模块的部分程序。PROCESS(clkout,reset) -敏感信号发生变化时,启动进程 BEG

43、IN IF reset=1THEN -复位信号有效 CNT0=0000; -里程清零 CNT1=0000; CNT2=0000; CNT3=0000;ELSIF clkoutEVENT AND clkout=1 THEN -每100m信号上升沿到达IF CNT3=1001 AND CNT2=1001 AND CNT1=1001AND CNT0=1001 THEN CNT0=0000; -里程清零 CNT1=0000; CNT2=0000; CNT3=0000;ELSIF CNT3/=1001 AND CNT2=1001 AND CNT1=1001AND CNT0=1001 THEN CNT0=

44、0000; -里程十分位清零 CNT1=0000; -里程个位清零 CNT2=0000; -里程十位清零 CNT3=CNT3+0001; -里程百位加1 ELSIF CNT2/=1001 AND CNT1=1001AND CNT0=1001 THEN CNT0=0000; -里程十分位清零 CNT1=0000; -里程个位清零 CNT2=CNT2+0001;-里程十位加1 CNT3=CNT3; -里程百位不变 ELSIF CNT1/=1001AND CNT0=1001 THEN CNT0=0000; -里程十分位清零 CNT1=CNT1+0001;-里程个位加1 CNT2=CNT2;-里程十位

45、不变 CNT3=CNT3; -里程百位不变 ELSIF CNT0/=1001 THEN CNT0=CNT0+0001;-里程十分位加1 CNT1=CNT1;-里程个位不变 CNT2=CNT2;-里程十位不变 CNT3=CNT3; -里程百位不变 END IF; END IF; KM_CNT0=CNT0;-取十分位里程输出 KM_CNT1=CNT1;-取个位里程输出 KM_CNT2=CNT2;-取十位里程 KM_CNT3=CNT3;-取百位里程 END PROCESS;END rtl;当复位信号有效时,里程的百位,十位,个位,十分位全部为0;复位信号无效时,通过对计程脉冲信号clkout进行计数

46、,当十分位为9时,十分位清零,向个位进位,个位为9 时,向十位进位,个位清零,同理,十位和百位的计数方式同前。由于计程最大到999.9公里,达到最大计程范围时,里程的百位,十位,个位以及十分位被清零。3.2.4 计时模块设计 图 3.6 计时模块原理框图CLK为时钟信号,reset,start,stop,pause分别为复位信号,开始信号,停止信号,暂停信号。通过先判断开始信号,再判断停止信号,最后判断暂停信号是否有效。当开始信号(start=1)为高电平,停止信号(stop=0) 且暂停信号(pause=1)时,开始记录时间,当计时到一定时间(设计中给出的计费时间单位为30秒)时,会产生一个

47、计时输出脉冲,然后重新进行计时。 3.2.5 计费模块设计 图 3.7 计费模块原理框图计费模块是设计的最核心部分,计费也是受控于时钟信号CLK,clkout为里程计数脉冲,timecount为计时计数脉冲,reset为复位信号输入端,chooose为白天和晚上计费器的选择输入端,同时信号输入端还用到KM_CNT0 KM_CNT3为里程的十分位到里程的百位,MONEY0MONEY3分别是费用的角,元,十元,百元信号输出端。用到两个进程里程计费进程,计时费用进程。两公里以内为起步价收费,大于2公里以后,每隔一公里费用按单价进行变化,所以给出一个标志enable信号,当为1时,说明此时大于2公里,

48、否则小于2公里。白天和晚上采用不同的起步价和计费单价,选择信号端为choose,当a选择信号(choose=1)为高电平时,对应给出白天的起步价和白天的计费单价,反之,给出晚上的起步价和晚上的计费单价。计时脉冲选择的是以1元为变化量,只要在时钟信号下,对计时脉冲进行累加,就可以转化为相应的费用。里程的计费就很复杂,计费的最低两位和两位计费单价在相加的过程会用进位,为了在各种单价下,计费器都能正确的计费,设计中考虑了各种临界情况下的进位,这样就更贴近实际计费器的控制部分。有几种情况:(1) 最低与计费单价的低位相加,没有进位。费用的次低位与计费单价的高位相加也没有进位;(2) 最低与计费单价的低

49、位相加,没有进位。费用的次低位与计费单价的高位相加有进位;(3) 最低与计费单价的低位相加,有进位。费用的次低位与计费单价的高位相加没有进位;(4) 最低与计费单价的低位相加,有进位。费用的次低位与计费单价的高位相加也有进位。3.2.6 数据分配模块设计 图 3.8 数据分配模块原理框图在时钟信号CLK的控制下,将里程信号百位十位个位以及十分位,还有费用信号的值分时输出。其中,MONEY0MONEY3分别是费用的角,元,十元,百元信号输入端,KM_CNT0 KM_CNT3为里程的十分位到里程的百位输出,用到八位数码管,需要用3位选择信号SEL0SEL2,还有小数点信号dp 和输出信号d。最终利

50、用人的视觉暂留,提高扫描频率,这样人眼就看到稳定的里程和费用信号的显示。 3.2.7 译码模块设计 图 3.9 译码模块原理框图译码模块的输入为4位的BCD码,输出的是共阴极七段数码管的7位,输入,输出一一对应,将输入的信号,正确的在数码管上显示出来,让人更为直观的看到我们所想要看到的结果。 3.2.8 分频模块设计 图3.10 分频模块原理框图输入信号clk1,输出信号CLK,计费器的各模块所需的时钟信号不同,这就需要对已有的信号进行分频。在这里采用的是一种常用的分频处理方式。process(clk1)variable temp:integer range 0 to 499;beginif(

51、clk1event and clk1=1)thenif(temp=499)then-分频计数temp:=0;y=not(y);elsetemp:=temp+1;end if;end if; CLKkinsidekinsidekinsidekinside=560; -车轮直径580mm END CASE; END PROCESS U1;U2:PROCESS(CLK,reset,stop,start,kinside,pause)-敏感信号发生变化时,启动进程 BEGIN IF reset=1 THEN -复位清零 state -出租车停止状态 cnt=0; -速度为0 clkout=0; -100

52、m输出信号为低电平 IF start=1 THEN state=s1;-出租车运行状态 ELSE -否则出租车未启动 state -出租车运行状态 clkout=0; -100m输出信号为低电平 (初始) IF stop=1 THEN -出租车停止,乘客已达目的地(不收费) state=s0; ELSIF pause=1 THEN -出租车暂停(需收费) state=s1; ELSIF cnt=kinside THEN -出租车在运行时,判断当前计数值 cnt=0; -100m已达到,计数值清零 clkout=1; -产生速度计数脉冲 state=s1; ELSE -100m未达到,计数值继续

53、加1 cnt=cnt+1; state=s1; END IF; END CASE; END IF; END PROCESS U2;END rtl; 计时模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY times ISPORT( -定义输入输出端口 CLK:IN STD_LOGIC; -系统时钟,500hz,计数30000次即1分钟 reset,start:IN STD_LOGIC;-复位,启动 stop:IN STD_LOGIC; pause:IN STD_LOGIC; time

54、count:OUT STD_LOGIC -计时收费脉冲 );END times;ARCHITECTURE rtl OF times IS TYPE states IS(s0,s1,s2); -s0表示车未启动,s1表示车已启动,S2车暂停 signal state:states; signal time_cnt:integer RANGE 0 TO 30000; BEGIN PROCESS(CLK,reset,start,stop,pause) BEGIN IF reset=1 THEN -系统复位 state -出租车未启动,不需计时(不需计时收费) time_cnt=0; -速度为0 ti

55、mecount=0; -100m输出信号为低电平 IF start=1 THEN state=s1;-出租车启动,不需计时(不需计时收费) ELSE state -出租车启动 IF pause=1 THEN -出租车启动,处于停止状态(需收费) state=s2; ELSE time_cnt=0; state -计时收费 time_cnt=time_cnt+1; -计时器加1 timecount=0;-不产生计时收费信号 IF time_cnt=30000 THEN-计时达到一分钟 time_cnt=0; -计时清零 timecount=1;-产生收费脉冲 ELSIF stop=1THEN -

56、未达到30000个CLK,出租车停止时 state=s0; -不计时收费 ELSIF pause=1THEN -出租车空挡等待时,进行计时收费 state=s2; ELSE state=s1; timecount=0010 THEN ENABLE=1; IF choose=1THEN -如果为白天 PRICE1=0001;-超过2KM时,按1.4元/KM计费 PRICE0=0100; ELSE PRICE1=0010;-如果为晚上 PRICE0=0000;-超过2KM时,按2.0元/KM计费 END IF; ELSE -没有超过2KM ENABLE=0; IF choose=1THEN -如果

57、为白天 PRICE1=0110; -起步价为6元 PRICE0=0000; ELSE PRICE1=1000;-如果为晚上 PRICE0=0000;-起步价为7元 END IF; END IF;END PROCESS U1;U2:PROCESS(reset,clkout,CLK,choose,PRICE1,PRICE0,ENABLE)VARIABLE clkout_cnt:INTEGER RANGE 0 TO 10:=0;BEGIN IF reset=1THEN -系统复位,只按起步价收费 MONEY_CN0=PRICE0;MONEY_CN1=PRICE1; MONEY_CN2=0000;MO

58、NEY_CN3=0000; ELSIF CLKEVENT AND CLK=1THEN -每来一次系统时钟 IF timecount=1THEN -每来一次计时脉冲计费加1 IFMONEY_CN3=1001ANDMONEY_CN2=1001AND MONEY_CN1=1001 THEN-费用等于999 MONEY_CN3=0000;MONEY_CN2=0000; MONEY_CN1=0000;MONEY_CN0=MONEY_CN0; ELSIFMONEY_CN3/=1001ANDMONEY_CN2=1001AND MONEY_CN1=1001 THEN-费用大于99小于999 MONEY_CN3

59、=MONEY_CN3+0001;MONEY_CN2=0000; MONEY_CN1=0000;MONEY_CN0=MONEY_CN0; ELSIF MONEY_CN2/=1001AND MONEY_CN1=1001 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_CN01001THEN MONEY_CN3=0000

60、; ELSE MONEY_CN31001THEN MONEY_CN21001)THEN IF (MONEY_CN0+PRICE01001)THEN MONEY_CN0=MONEY_CN0+PRICE0-1010; MONEY_CN1=MONEY_CN1+PRICE1-1001; MONEY_CN2=0000; MONEY_CN3=MONEY_CN3+0001; ELSE MONEY_CN0=MONEY_CN0+PRICE0; MONEY_CN1=MONEY_CN1+PRICE1-1010; MONEY_CN2=0000; MONEY_CN31001)THEN MONEY_CN0=MONEY_C

温馨提示

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

评论

0/150

提交评论