基于FPGA的出租车计价系统设计毕业论文.doc_第1页
基于FPGA的出租车计价系统设计毕业论文.doc_第2页
基于FPGA的出租车计价系统设计毕业论文.doc_第3页
基于FPGA的出租车计价系统设计毕业论文.doc_第4页
基于FPGA的出租车计价系统设计毕业论文.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

南京师范大学中北学院毕 业 设 计(论 文)( 2013 届)题 目: 基于FPGA的出租车计价系统设计 专 业: 电子信息工程 姓 名: 顾媛媛 学 号: 18093218 指导教师: 倪小琦 职 称: 讲师 填写日期: 2013-05-01 南京师范大学中北学院教务处 制摘要本文提出了在Quartus 9.0软件平台上基于FPGA的出租车计费器的设计方案。通过VHDL描述出租车计费系统的操作流程及控制方案,模拟汽车的启动、停止、计费、预置等功能,并用数码管显示车费、里程、等待时间等信息。该系统配合车速传感器可应用在不同车型的出租车上,实现计费等所需功能。本设计的优点有:生产可靠、稳定且灵活性好、开发周期短、效率高、维护简单等。关键词:出租车计价器;VHDLAbstract What proposed in this paper is the design scheme of taxi meter based on FPGA on the Quartus9.0 software platform. The operation process and control scheme of the taxi billing system are all described with VHDL, simulating vehicles start, stop, pricing, provisioning, and other functions like using digital tube to display the fare, mileage, waiting time and other information. The system with speed sensor can be used in different models of taxis, and it also can reach the expected function.The advantages of this design are: reliable production, stable and good flexibility, short development cycle, high efficiency, simple maintenance and so on.Key words:taxi meter system;VHDL28目录摘要1Abstract21 绪论11.1 设计背景11.2 国内外研究现状11.3 课题研究的目的和意义22 开发工具和关键技术32.1 QuartusII的介绍32.2 VHDL语言的优点33 系统的设计53.1 设计基本要求53.2 分析及步骤53.3 实验方案及预计实现的功能53.4 方案设计与论证64 相关原理图及设计文件94.1 分频模块94.2 计量模块104.3 控制模块114.4 计费模块114.5 数码模块125 总体仿真156 设计总结176.1 设计结果176.2 不足之处17致谢18参考文献19附录201 绪论1.1 设计背景汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是具有一定意义的。随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。于是,出租车行业以低价高质的服务给人们带来了出行的享受。但是总存在着买卖纠纷困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器,用更加精良的计价器来为乘客提供更加方便快捷的服务。多年来国内普遍使用的计价器只具备单一的计量功能。最早的计价器全部使用机械齿轮结构,只能简单的计程功能,可以说,早期的计价器就是个里程表。随着科学技术的发展,产生了第二代计价器。它采用手摇计算机与机械结构相结合的方式实现了半机械半电子化。此时它在计程的同时还完成计价的工作。大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。它的功能也在不断完善。出租车计价器是一种专用的计量仪器,它安装在出租车上,能够连续累加,并只是出行中任意时刻乘客应付费用。随着电子技术的发展以及对计价器的不断改进和完善,便产生了能够自主计费,以及现在的能够打印发票和语音提示、按时间自主变动单价等功能9。1.2 国内外研究现状我国第一家生产计价器的是重庆市起重机厂,最早的计价器全部采用机械齿轮结构,只能完成简单的计程功能,可以说,早期的计价器就是个里程表。随着科学技术的发展,产生了第二代计价器。它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化,在计程的同时还可完成计价的工作。大规模集成电路的发展产生了第三代计价器,也就是全电子化的计价器,其功能在不断完善中。出租车计价器在最初使用时具备的主要功能是根据行驶里程计价,要求精度高,可靠性好。随着电子技术的发展以及对计价器的不断改进和完善,便产生了诸多的附加功能。例如:(1)LED显示功能,数码管的使用让计价器实现多屏显示的功能,可同时显示各项营运数据,使乘客一目了然;(2)永久时钟功能,在非营运状态下,日历时钟芯片的使用使计价器可以显示永久时钟;(3)存储功能,可存储多项营运数据,便于查询。新型数据存储器的应用使得计价器的营运数据在掉电情况下还可以保存10年。随着集成电路和计算机技术的飞速发展,提高系统的可靠性与通用性,生产体积小、重量轻、功耗低、速度快、成本低、保密性好的产品将成为未来行业的主流8。1.3 课题研究的目的和意义随着电子技术的不断发展与进步,集成电路的设计方法也在不断地更新。时至今日,传统的手工设计过程已经被先进的电子设计自动化(EDA)工具所代替。只有以硬件描述语言和逻辑综合为基础的子项下的电路设计方法才能满足日趋复杂的集成电路系统设计需求,才能缩短设计周期以满足设计对集成电路系统日益急迫的需求。在这种情形下,传统的出租车计费器设计方法已不能跟上现在的节奏,以往的出租车计费器在功能上也远不能满足现实的需求。以往的出租车计费器的不稳定性,功能稍等缺点是的大家开始寻求更新的,功能更强大,性能更稳定,价钱更低廉的新型出租车计费器。而大规模可编程逻辑器件的出现,VHDL硬件描述语言的出现,使得这一切成为可能。本设计的研究目标和意义也就是要使用价钱低廉、性能稳定、可扩性强、适应目前出租车市场需求的出租车计费器,以解决目前出租车计费器存在的一系列问题12。2 开发工具和关键技术2.1 QuartusII的介绍Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。 此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。 Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。 Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎1。2.2 VHDL语言的优点(1) VHDL 语言功能强大,设计方式多样VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。(2) VHDL 语言具有强大的硬件描述能力VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。(3) VHDL 语言具有很强的移植能力VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。(4) VHDL 语言的设计描述与器件无关采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结构来实现。(5) VHDL 语言程序易于共享和复用VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。由于 VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期3。3 系统的设计3.1 设计基本要求费用的计算,出租车起价为8.00元,当里程小于3km时,按起价费用计算;当里程大于3km时每公里按2.8元计算;等待累计时间超过2分钟,按每分钟1.5元计费;里程,即汽车行驶里程,用两位数字显示,显示方式为“XX”,单位为km;等候时间,用两位数字显示,显示方式为“XX”,等候时间的定义是:当汽车行驶速度小于或等于12km/h时为“等候”;费用=8+(里程-3)*2.8+(等候时间-2)*1.5,单位:元;费用显示,用四位数字显示,显示方式为“XXX.X”,单价为元。3.2 分析及步骤第一步,选好实验题目后,首先对实验要求做了逻辑上的理性分析,明确了实验目的。第二步,画出实验系统框图,将大实验分成小模块,明确各个小目标,以待各个击破。第三步,将各个小模块实验流程图画出来,便于各个模块程序编写。第四步,按顺序,编出各个模块的小程序,进行软件编译,纠错。第五步,将各个小模块生成的元件图连接成整体原理图。第六步,仿真,分析实验结果的实现效果。第七步,针对实验结果的不合理性,进行程序、原理图纠错;第八步,到实验室,利用电子综合设计实验箱,将软件与硬件相结合,看实际效果。3.3 实验方案及预计实现的功能通过可编程逻辑器件和VHDL硬件描述语言来实现出租车的计费系统的基本设计要求。对于本设计来说,设计的主体是外部输入模块、控制模块和显示模块,对输入的频率进行分频,得到超出公里数的单价对应的频率,按照车辆行驶公里数,对最终费用进行控制,再通过译码显示模块,最终在数码管上显示出计费数额。本设计采用的是共阴极七段数码管,根据十六进制数和七段显示段码表的对应关系,数码管控制及译码显示模块将十进制的输入信号用七段数码管显示,由七段发光二极管组成数码显示器,利用字段的不同组合,可分别显示09。本设计中,要求输出的段信号为高电平有效。根据课题要求,系统设计采用自顶向下的设计方法,设计流程图如下:设计输入编译仿真与分析编程系统测试制作原理图修改图3-1 出租车计费系统设计流程图出租车计费系统由外部输入模块、控制模块和显示模块三部分组成。控制模块是整个系统的核心,它由分频模块、控制模块、计量模块和译码显示模块构成。分频模块:它是对系统时钟频率进行分频。控制模块:主要完成对计价器状态的控制。计量模块:完成计价、计时和计程功能。译码模块:完成计价、计时和计程数据的显示。预计实现的功能: 出租车计费起价为8.00元,当里程小于3km时,按起价费用计算;当里程大于3km时每公里按2.8元计算;等待累计时间超过2分钟,按每分钟1.5元计费。(1)计价范围: 0999.9元;计价分辨率: 0.1元;(2)计程范围: 099元;(3)计时范围: 59分; 计时分辨率: 1分钟;3.4 方案设计与论证方案一:主要目的是为了实现:出租车起始计价为8.00元,当里程小于3km时,按起价费用计算;当里程大于3km时每公里按2.8元计算;等待累计时间超过2分钟,按每分钟1.5元计费; 费用=8+(里程-3)*2.8+(等候时间-2)*1.5,单位:元。系统有两个脉冲输入信号clk_420、fin,两个控制输入开关start、stop;控制过程为:start作为计费开始开关,当start为高电平时,系统开始根据输入的情况计费。系统的输出信号有:总费用数c0 c3,行驶距离k0 k1,等待时间m0 m1 等。系统有两个脉冲输入信号clk_420hz、fin,其中clk_420hz将根据设计要求分频成28hz、15hz和1hz分别作为公里计费和超时计费的脉冲。当有乘客上车并开始行驶时,fin脉冲到来,进行行驶计费,此时的stop需要置为0;如需停车等待,就把stop变为高电平,并去除fin输入脉冲,进行等待计费;当乘客下车且不等待时,直接将start置为0,系统停止工作。系统由分频模块、控制模块、计量模块和计费模块四部分组成。计量模块是整个系统实现里程计数和时间计数的重要部分;控制模块是实现不同计费方式的选择部分;设计通过分频模块产生不同频率的脉冲信号来实现系统的计费。计量模块采用1HZ的驱动信号,计费模块采用28HZ、15HZ的驱动信号;计量模块每计数一次,计费模块就实现28次或者15次计数,即为实现计时时的1.5 元/min、计程时的2.8元/km的收费。方案一、出租车计费系统组成框图3-2如下:时钟脉冲分频器控制器等待脉冲公里脉冲计费/复位 显 示计 费计 时图3-2 出租车计费系统组成框图图3-2可以很客观地看出计费器的大概工作流程,当出租车有乘客时,计费器开始工作,开始计费:控制器的核心部分,即FPGA的主控部分开始运行,确定行驶里程及等待时间,根据起步价,然后再加上每公里的价格,这些都是预设的,不需要手动输入,然后正式进入计费模块,读取设定初值,调用计费模块,通过显示模块,会把路程和费用同步显示给乘客,当乘客到达目的地时,结束计费,并且把最后结果显示给乘客了解,然后计费初始化,等待下一次的计费。方案二:主要目的是为了实现:出租车起始计价为8.00元,当里程小于3km时,按起价费用计算;当里程大于3km时每公里按2.8元计算;等待累计时间超过2分钟,按每分钟1.5元计费; 计费方式如下:费用=8+(等候时间-2 )*1.5 (路程3km)系统由分频模块、控制模块、计量模块和计费模块四部分组成。计量模块是整个系统实现里程计数和时间计数的重要部分;控制模块是实现不同计费方式的选择部分;但主要想用设计一定的函数关系来实现,而不是像方案一那样依赖分频来实现对里程和停止时间分别计费。(1)从设计目的来看,经过研究和实际情况考虑,觉得还是第一种方案的设计目的比较符合实际情况,且对乘客和司机都相对公平。因此决定采用方案一的设计目的,来作为设计目标。(2)从设计正确性和实现可能性出发,我发现要想用VHDL语言来设计一定的函数关系,来达到目的,比较困难,并且在编程时我也陷入了困难之中。此外,在以前实验课的基础上,我对分频器的设计和应用已经比较熟悉,所以决定利用自己所学来解决问题,故决定放弃方案二,选择方案一的设计思路。4 相关原理图及设计文件4.1 分频模块 分频模块是对系统时钟频率进行分频,如图4-1,得到co端输出420HZ频率的脉冲;然后再通过图4-2的模块对420HZ频率的脉冲进行分频,分别得到15HZ、28HZ、1HZ三种频率,本设计中通过15HZ、28HZ、1HZ三种不同频率的脉冲信号实现在计程车在行驶、等待两种情况下的不同计费;具体原理图如图4-3。clk为输入信号,分频后得到输出信号clk28,clk15,clk1。图4-1 420HZ的分频模块图4-2 15HZ、28HZ、1HZ三种不同频率的分频模块图4-3 分频模块总电路图图4-4 功能级仿真结果由图4-4可见,分频出的28、15、1HZ的时钟脉冲是正确的。clk_28表示实现28次计数,系统时钟周期为1/420s及28次计数所需要的时间为28*(1/420)s则对应频率为420/28=15HZ。clk_15表示实现15次计数,系统时钟周期为1/420s及15次计数所需要的时间为15*(1/420)s则对应频率为420/15=28HZ。4.2 计量模块 本模块实现对于出租车在行驶和等待过程中的计时和计程功能。如图4-5。 计时部分:计算乘客的等待累积时间,当等待时间大于2min时,本模块中en1使能信号变为1;当clk1每来一个上升沿,计时器就自增1,计时器的量程为59min,满量程后自动归零。 计程部分:计算乘客所行驶的公里数,当行驶里程大于3km时,本模块中en0使能信号变为1;当clk1每来一个上升沿,计程器就自增1,计程器的量程为99km,满量程后自动归零。如图4-6。图4-5 计量模块电路图图4-6 计量模块的仿真电路图图4-7 功能级仿真结果由图4-7可见,等待时间小于2min时,本模块中输出信号en1保持为0;clk50M和start都是输入,取start为1,表示中间没有停,一直在走,所以输出信号en0为1,即表示计路程,这里取的是一种极端做法,不考虑等待时间。4.3 控制模块本模块主要是通过两个不同的输入使能信号ent0,ent1,对两个输入脉冲clk_in1,clk_in2进行选择输出,即实现选择器功能;使能信号是计量模块中的输出,两个输入脉冲是分频模块输出的28HZ、15HZ的脉冲;本模块实现了双脉冲的二选一。如图4-8及图4-9。图4-8控制模块的原理电路图图4-9 控制模块仿真原理图图4-10 功能级仿真结果结合图4-9和图4-10可以看出,当ent0为高电平时,输出为out即这一时段的clk_in1(clk_28);当ent1为高电平时,输出为out即这一时段的clk_in2(clk_15)。 【时间超过输出out(clk_in1),由clk_28控制,420/28=15相当于计费模块加了15个一角;路程超过输出out(clk_in2),由clk_15控制,420/15=28相当于计费模块加了28个一角,计2.8元。】4.4 计费模块本模块根据输入的clk2信号变化,调节费用的计数,c0、c1、c2、c3表示费用输出部分的角、元、十元、百元的输出。如图4-11及图4-12。图4-11 计费模块的元件原理图图4-12 计费模块的仿真电路图图4-13 功能级仿真结果由图4-13中可以看出,c3c2c1c0的初始值为0080,即起步价为8元。随着clk的高电平的到来,c3、c2、c1、c0逐级进行加法计数,当c0计数到九时,产生进位,c1加一;当c1计数到九时,产生进位,c2加一;当c2计数到九时,产生进位,c3加一。4.5 数码模块数码模块由模八计数器模块如图4-14、片选模块如图4-15和数码显示模块如图4-16组成。本次设计采用的是共阴数码管来作为实验的显示模块,低电平有效,而且是利用动态显示的过程。数码管显示模块的功能是用来显示输入的行驶里程和总计费用。为了使七段数码管能够显示出所要表示的数值,需要采用译码器将所要表示的数值译码成数码管所需要的驱动信号。原理图如图4-18所示。图4-14 模八计数器模块元件原理图图4-15 片选模块理图图4-16数码显示模块元件原理图图4-17 测试写入固定值模块图4-18 数码模块测试仿真电路图图4-19 功能级仿真结果由图4-19可见,随着clk上升沿的到来,qcnt就会加1,scan,seg也会随着qcnt输入的值相应变化,即在车行驶过程中,根据所行驶的路程,所得的费用,经过译码分别在相应的数码管上显示相应的数值。以第一个周期为例:当qcnt为0时,scan输出为7F,即点亮左起第一个数码管,seg输出为70,即该数码管上显示7;随着clk第一个上升沿的到来,qcnt变为1,scan输出为BF,即点亮左起第二个数码管,seg输出为5F,即该数码管上显示6;随着clk第二个上升沿的到来,qcnt变为2,scan输出为DF,即点亮左起第三个数码管,seg输出为5B,即该数码管上显示5;随着clk第四个上升沿的到来,qcnt变为3,scan输出为EF,即点亮左起第三个数码管,seg输出为33,即该数码管上显示4;随着clk第五个上升沿的到来,qcnt变为4,scan输出为F7,即点亮左起第二个数码管,seg输出为30,即该数码管上显示1;随着clk第六个上升沿的到来,qcnt变为5,scan输出为FB,即点亮左起第六个数码管,seg输出为7E,即该数码管上显示0;随着clk第七个上升沿的到来,qcnt变为6,scan输出为FD,即点亮左起第七个数码管,seg输出为79,即该数码管上显示3;随着clk第八个上升沿的到来,qcnt变为7,scan输出为FE,即点亮左起第八个数码管,seg输出为6D,即该数码管上显示2。5 总体仿真 在QuartusII中基本完成所有底层设计文件的编辑后,就开始编辑设计顶层设计文件。上面的源程序产生了对应的模块框图,将上述各个模块框图组合成顶层原理图5-1:图5-1 顶层原理图图5-2 3KM以内的仿真结果 图5-3 3KM以外的仿真结果对顶层原理图仿真得到图5-2,图5-3,分析图5-2可知:位选scan:7F对应数码管段码seg:7E,说明数码管上显示0;即fei0是0;位选scan:BF对应数码管段码seg:7F,说明数码管上显示8;即fei1是8;位选scan:DF、EF、F7、FB、FD、FE对应数码管段码seg:7E,说明数码管上显示0;即fei2是0;fei3是0;t0、t1、mile0、mile1都是0,这便可得到起步价8元。图中scan从7F到下一个7F之间是一段,7F、BF、DF、EF、F7、FB、FD、FE分别是选中从左到右依次8片数码管来分别显示fei0,fei1,fei2,fei3,t0,t1,mile0,mile1,scan垂直对应下面一行seg,再根据seg段码来判断显示的是09里的哪个数。(具体对照表见附录一)由此可见,出租车计费器可以实现预计目标:(1)起价为8.00元,当里程小于3km时,按起步价费用8元计算;(如图5-2)(2)当里程大于3km时每公里按2.8元计算;等待累计时间超过2分钟,按每分钟1.5元计费。只是上面仿真等待(stop)时间设置较短,所以计费中没有对等待时间的计费。图5-3所示,当行驶了11公里时,费用=8+(11-3)*2.8=30.4,与图示的29.9元基本一致(存在一定的误差)。6 设计总结6.1 设计结果本设计采用硬件描述语言按自顶向下的方法,将一个大的系统分成几个相对独立的模块分别设计,仿真,最后再整体仿真。实现了出租车计费器的一般功能,如计里程,计费,以及费用,时间和里程的显示功能,基本上达到了这次毕业设计的基本要求。根据论文的要求进行设计工作,具体实现了如下功能:(1)里程的计算,通过传感器测出轮子是否有运动,如果在一定的时间内运动了,则记录轮子的转圈数,从而自动计算出轮子转动的圈数的长度,由此计算出出租车行驶的距离。(2)费用的计算,出租车起价为8.00元,当里程小于3km时,按起价费用计算;当里程大于3km时每公里按2.8元计算;等待累计时间超过2分钟,按每分钟1.5元计费;(3)里程,即汽车行驶里程,用两位数字显示,显示方式为“XX”,单位为km;等候时间,用两位数字显示,显示方式为“XX”。 费用=8+(里程-3)*2.8+(等候时间-2)*1.5,单位:元;费用显示用四位数字显示,显示方式为“XXX.X”,单价为元。6.2 不足之处没有实现对等候时间(定义是当汽车行驶速度小于或等于12km/h时为“等候”)控制。 致谢时光转眼即逝,为期一个学期的毕业论文也已接近尾声,我四年的大学生活也即将画上一个句号。回想这段求学路,时而喜悦,时而惆怅。在美丽的校园里,原本天真幼稚的我如今已蜕变成一个睿智、沉稳的青年,感谢命运的安排,让我有幸结识了许多良师益友。“饮其流时思其源,成吾学时念吾师”。至此论文完成之际,谨向我尊敬的指导老师倪小琦致以诚挚的谢意和崇高的敬意。从选题、定题、撰写开题报告,到论文至今的初步定稿,倪老师始终认真负责,督促指导,使我能够按时完成任务。倪老师给予我充分的时间支配权利,让我有充足的时间处理好工作和毕业设计的双重任务。再加上通过网络查询资料,我对出租车计费系统的研究有了深入的了解,不仅丰富了自己的专业知识,更重要的是大大提高了利用已有的知识分析、解决问题的能力,培养了对待科学研究的正确态度,这些都是走向社会的宝贵财富。其次要感谢我的班主任韩婷婷老师和大学四年给我们授课的所有老师,是他们的悉心教导和精心栽培,让我掌握了很多专业知识,为将来的工作打下了良好的基础。还要感谢我的父母,给予我生命并给与我接受教育的机会,他们给我生活的关怀和精神上的鼓励是我学习的动力。最后,感谢我的同学和朋友们,谢谢他们陪伴我成长,给我鼓励和帮助。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!参考文献1李洪伟等. 基于QuartusII的FPGA/CPLD设计.电子工业出版社,2006:1531。2 百度文库/view/1616088.htm3 姜立东. VHDL语言程序设计及应用. 第2版. 北京邮电大学出版社,2001:3338。4 刘凡. VHDL-标准化的硬件设计语言J. 计算机工程与应用,1998年01期:24。5 曹昕燕,周凤臣,聂春燕. EDA技术实验与课程设计M. 清华大学出版社,2006:5672。6刘欲晓,方强,黄宛宁. EDA技术与VHDL电路开发应用实践M. 电子工业出版社,2009:3478。7潘松,黄继业. EDA技术实用教程. 第3版.M. 科学出版社,2005:2560。8 赵岩岭,刘春等. 在MAX+PLUSII平台下用VHDL进行数字电路设计. 西安希典出版社,2005:123130。9 康华光主编. 电子技术基础模拟部分. 北京高等教育出版社,2006:1126。10 阎石主编. 数字电子技术基础. 北京高等教育出版社,2003:107186。11 王志明,吴冬峰. 浅谈VHDL语言在电子电路中的应用J. 黑龙江科技信息,2010年17期:1021。12 席砺莼,董丽梅,田梦周,闫宏伟. 基于VHDL语言的出租车计费系统设计J. 现代电子技术,2003年第3期:1232。13 张凌,范寒柏. VHDL语言中局部变量与局部信号的作用J. 电子工程师,1999年第12期:2324。14 牛振东,宋瀚涛,刘明业. VHDL语言行为描述划分的研究与实现J. 计算机学报, 1995年第11期:3444。15候伯亨,顾新. VHDL硬件描述语言与数字逻辑电路设计. 西安电子科技大学出版社,1999:201223。附录附录一:对照表模8计数器输出qout3.0接的是片选模块qo3.0,从片选模块VHDL程序即附录七来看,(1)当qo输出0000时,输出fei0,即费用的角位;(2)当qo输出0001时,输出fei1,即费用的元位;(3)当qo输出0010时,输出fei2,即费用的十元位;(4)当qo输出0011时,输出fei3,即费用的百元位;(5)当qo输出0100时,输出t0,即时间的个位;(6)当qo输出0101时,输出t1,即费用的十位;(7)当qo输出0110时,输出mile0,即时间的个位;(8)当qo输出0111时,输出mile1,即时间的十位。模8计数器输出qout3.0接的是数码模块qcnt3.0,从数码模块VHDL程序即附录八来看,(1)当qcnt输出(01111111)时,scan为7F,选中左起第一片数码管;(2)当qcnt输出(10111111)时,scan为BF,选中左起第二片数码管;(3)当qcnt输出(11011111)时,scan为DF,选中左起第三片数码管;(4)当qcnt输出(11101111)时,scan为EF,选中左起第四片数码管;(5)当qcnt输出(11110111)时,scan为F7,选中左起第五片数码管;(6)当qcnt输出(11111011)时,scan为FB,选中左起第六片数码管;(7)当qcnt输出(11111101)时,scan为FD,选中左起第七片数码管;(8)当qcnt输出(11111110)时,scan为FE,选中左起第八片数码管。片选seg3.0输出端接数码模块adr3.0,adr3.0控制数码管的段码,用来显示数码管上的数字;(1)当adr3.0输出0时,seg6.0输出7E,数码管上显示数字0;(2)当adr3.0输出1时,seg6.0输出30,数码管上显示数字1;(3)当adr3.0输出2时,seg6.0输出6D,数码管上显示数字2;(4)当adr3.0输出3时,seg6.0输出79,数码管上显示数字3;(5)当adr3.0输出4时,seg6.0输出33,数码管上显示数字4;(6)当adr3.0输出5时,seg6.0输出5B,数码管上显示数字5;(7)当adr3.0输出6时,seg6.0输出5F,数码管上显示数字6;(8)当adr3.0输出7时,seg6.0输出70,数码管上显示数字7;(9)当adr3.0输出8时,seg6.0输出7F,数码管上显示数字8;(10)当adr3.0输出其他数值时,seg6.0输出7B,数码管上显示数字9。附录二:420HZ的分频模块VHDL语言程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fp420 is port ( clk: in std_logic; co: buffer std_logic; qcnt: buffer std_logic_vector(15 downto 0) );end fp420;architecture behave of fp420 is begin process (clk) begin if(clkevent and clk=1) then if(qcnt=59523)then qcnt=0000000000000000; co= not co; else qcnt=qcnt+1; end if; end if; end process;end behave;附录三:28、15、1HZ的分频模块VHDL语言程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fenpin isport ( clk_420 :in std_logic; -系统时钟 clk_28: out std_logic; -28分频 clk_15: out std_logic; -15分频 clk_1: out std_logic); -1分频end fenpin;architecture rt1 of fenpin is signal p_28:integer range 0 to 27; - 定义中间信号量 signal p_15:integer range 0 to 14; signal p_1:integer range 0 to 419; begin process(clk_420) beginif (clk_420event and clk_420=1 )then if p_28=27 then p_28=0;clk_28=1; - 0到27都是0 ;等于27都是1 else p_28=p_28+1;clk_28=0; -得28hz频率信号 end if;if p_15=14 then p_15=0;clk_15=1; else p_15=p_15+1;clk_15=0; -得15hz频率信号end if;if p_1=419 then p_1=0;clk_1=1; else p_1=p_1+1;clk_1=0; -得1hz频率信号end if; end if; end process;end rt1;附录四:计量模块VHDL语言程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jiliang isport( s: in std_logic; -计费开始信号 fin: in std_logic; -里程脉冲信号 stop: in std_logic; - 行驶中,中途等待信号 clk1: in std_logic; -驱动脉冲 en1,en0:buffer std_logic; -计费单价使能信号 k1,k0: buffer std_logic_vector(3 downto 0); - 行驶公里计数m1,m0: buffer std_logic_vector(3 downto 0); - 待时间计数 end jiliang;architecture rt2 of jiliang is beginprocess(clk1)begin if clk1event and clk1=1 then if s=0 then - s表示starten1=0;en0=0;m1=0000;m0=0000;k1=0000;k0=0000; elsif stop=1 then if m0=1001 then m0=0000; if m1=0101 then m1=0000; -计时范围059 else m1=m1+1; end if; else m000000001then en1=1; -若等待时间大于2min则en1置1 el

温馨提示

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

评论

0/150

提交评论