完整版基于FPGA的出租车计价系统设计毕业设计Word格式文档下载.docx

上传人:b****5 文档编号:21277531 上传时间:2023-01-29 格式:DOCX 页数:25 大小:159.39KB
下载 相关 举报
完整版基于FPGA的出租车计价系统设计毕业设计Word格式文档下载.docx_第1页
第1页 / 共25页
完整版基于FPGA的出租车计价系统设计毕业设计Word格式文档下载.docx_第2页
第2页 / 共25页
完整版基于FPGA的出租车计价系统设计毕业设计Word格式文档下载.docx_第3页
第3页 / 共25页
完整版基于FPGA的出租车计价系统设计毕业设计Word格式文档下载.docx_第4页
第4页 / 共25页
完整版基于FPGA的出租车计价系统设计毕业设计Word格式文档下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

完整版基于FPGA的出租车计价系统设计毕业设计Word格式文档下载.docx

《完整版基于FPGA的出租车计价系统设计毕业设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《完整版基于FPGA的出租车计价系统设计毕业设计Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。

完整版基于FPGA的出租车计价系统设计毕业设计Word格式文档下载.docx

1绪论1

1.1设计背景1

1.2国内外研究现状1

1.3课题研究的目的和意义2

2开发工具和关键技术3

2.1QuartusII的介绍3

2.2VHDL语言的优点3

3系统的设计5

3.1设计基本要求5

3.2分析及步骤5

3.3实验方案及预计实现的功能5

3.4方案设计与论证6

4相关原理图及设计文件9

4.1分频模块9

4.2计量模块10

4.3控制模块11

4.4计费模块11

4.5数码模块12

5总体仿真15

6设计总结17

6.1设计结果17

6.2不足之处17

致谢18

参考文献19

附录20

1绪论

1.1设计背景

汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。

它关系着交易双方的利益。

具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。

因此,汽车计价器的研究也是具有一定意义的。

随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。

于是,出租车行业以低价高质的服务给人们带来了出行的享受。

但是总存在着买卖纠纷困扰着行业的发展。

而在出租车行业中解决这一矛盾的最好方法就是改良计价器,用更加精良的计价器来为乘客提供更加方便快捷的服务。

多年来国内普遍使用的计价器只具备单一的计量功能。

最早的计价器全部使用机械齿轮结构,只能简单的计程功能,可以说,早期的计价器就是个里程表。

随着科学技术的发展,产生了第二代计价器。

它采用手摇计算机与机械结构相结合的方式实现了半机械半电子化。

此时它在计程的同时还完成计价的工作。

大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。

它的功能也在不断完善。

出租车计价器是一种专用的计量仪器,它安装在出租车上,能够连续累加,并只是出行中任意时刻乘客应付费用。

随着电子技术的发展以及对计价器的不断改进和完善,便产生了能够自主计费,以及现在的能够打印发票和语音提示、按时间自主变动单价等功能[9]。

1.2国内外研究现状

我国第一家生产计价器的是重庆市起重机厂,最早的计价器全部采用机械齿轮结构,只能完成简单的计程功能,可以说,早期的计价器就是个里程表。

它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化,在计程的同时还可完成计价的工作。

大规模集成电路的发展产生了第三代计价器,也就是全电子化的计价器,其功能在不断完善中。

出租车计价器在最初使用时具备的主要功能是根据行驶里程计价,要求精度高,可靠性好。

随着电子技术的发展以及对计价器的不断改进和完善,便产生了诸多的附加功能。

例如:

(1)LED显示功能,数码管的使用让计价器实现多屏显示的功能,可同时显示各项营运数据,使乘客一目了然;

(2)永久时钟功能,在非营运状态下,日历时钟芯片的使用使计价器可以显示永久时钟;

(3)存储功能,可存储多项营运数据,便于查询。

新型数据存储器的应用使得计价器的营运数据在掉电情况下还可以保存10年。

随着集成电路和计算机技术的飞速发展,提高系统的可靠性与通用性,生产体积小、重量轻、功耗低、速度快、成本低、保密性好的产品将成为未来行业的主流[8]。

1.3课题研究的目的和意义

随着电子技术的不断发展与进步,集成电路的设计方法也在不断地更新。

时至今日,传统的手工设计过程已经被先进的电子设计自动化(EDA)工具所代替。

只有以硬件描述语言和逻辑综合为基础的子项下的电路设计方法才能满足日趋复杂的集成电路系统设计需求,才能缩短设计周期以满足设计对集成电路系统日益急迫的需求。

在这种情形下,传统的出租车计费器设计方法已不能跟上现在的节奏,以往的出租车计费器在功能上也远不能满足现实的需求。

以往的出租车计费器的不稳定性,功能稍等缺点是的大家开始寻求更新的,功能更强大,性能更稳定,价钱更低廉的新型出租车计费器。

而大规模可编程逻辑器件的出现,VHDL硬件描述语言的出现,使得这一切成为可能。

本设计的研究目标和意义也就是要使用价钱低廉、性能稳定、可扩性强、适应目前出租车市场需求的出租车计费器,以解决目前出租车计费器存在的一系列问题[12]。

2开发工具和关键技术

2.1QuartusII的介绍

QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;

支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。

Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。

AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎[1]。

2.2VHDL语言的优点

(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硬件描述语言来实现出租车的计费系统的基本设计要求。

对于本设计来说,设计的主体是外部输入模块、控制模块和显示模块,对输入的频率进行分频,得到超出公里数的单价对应的频率,按照车辆行驶公里数,对最终费用进行控制,再通过译码显示模块,最终在数码管上显示出计费数额。

本设计采用的是共阴极七段数码管,根据十六进制数和七段显示段码表的对应关系,数码管控制及译码显示模块将十进制的输入信号用七段数码管显示,由七段发光二极管组成数码显示器,利用字段的不同组合,可分别显示0~9。

本设计中,要求输出的段信号为高电平有效。

根据课题要求,系统设计采用自顶向下的设计方法,设计流程图如下:

图3-1出租车计费系统设计流程图

出租车计费系统由外部输入模块、控制模块和显示模块三部分组成。

控制模块是整个系统的核心,它由分频模块、控制模块、计量模块和译码显示模块构成。

分频模块:

它是对系统时钟频率进行分频。

控制模块:

主要完成对计价器状态的控制。

计量模块:

完成计价、计时和计程功能。

译码模块:

完成计价、计时和计程数据的显示。

预计实现的功能:

出租车计费起价为8.00元,当里程小于3km时,按起价费用计算;

等待累计时间超过2分钟,按每分钟1.5元计费。

(1)计价范围:

0~999.9元;

计价分辨率:

0.1元;

(2)计程范围:

0~99元;

(3)计时范围:

59分;

计时分辨率:

1分钟;

3.4方案设计与论证

方案一:

主要目的是为了实现:

出租车起始计价为8.00元,当里程小于3km时,按起价费用计算;

费用=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+(等候时间-2)*1.5(路程<

3km)

费用=2.8*路程+(等候时间-2)*1.5(路程>

但主要想用设计一定的函数关系来实现,而不是像方案一那样依赖分频来实现对里程和停止时间分别计费。

(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-1420HZ的分频模块

图4-215HZ、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-23KM以内的仿真结果

图5-33KM以外的仿真结果

对顶层原理图仿真得到图5-2,图5-3,分析图5-2可知:

位选scan:

7F——对应数码管段码seg:

7E,说明数码管上显示0;

即fei0是0;

BF——对应数码管段码seg:

7F,说明数码管上

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1