出租车计价器论文毕业设计.docx
《出租车计价器论文毕业设计.docx》由会员分享,可在线阅读,更多相关《出租车计价器论文毕业设计.docx(87页珍藏版)》请在冰点文库上搜索。
出租车计价器论文毕业设计
出租车计价器论文毕业设计
1引言1
1.1研究背景1
1.2目前出租车计价器存在的问题和改进方案1
1.2.1出租车计价器存在的问题1
1.2.2改进的方法2
2系统设计方案的论证与选择4
2.1方案设计4
2.1.1方案一:
基于单片机的出租车计价器方案设计4
2.1.2方案二:
基于EDA的出租车计价器方案设计4
2.2方案选择4
3出租车计价器功能及要求7
3.1出租车计费规则7
3.2出租车计价器的功能7
3.3出租车计价器的性能指标7
4出租车计费系统硬件设计9
4.1硬件总体方案设计9
4.2FPGA核心模块9
4.3按键控制电路13
4.4电机模块电路13
4.5电机测速模块14
4.6液晶显示模块15
5出租车计费系统软件设计16
5.1VHDL语言概述16
5.2系统总体框架17
5.3系统的顶层原理图18
5.4系统各功能模块的实现19
5.4.1CC2顶层模块的实现19
5.4.2GL模块的实现20
5.4.3int_div模块的实现22
5.4.4key_set模块的实现24
5.4.5DENDAI模块的实现25
5.4.6MONEY模块的实现26
5.4.7conv模块的实现28
5.4.8SF模块的实现29
5.4.9ram_1602模块的实现30
结论32
参考文献33
致谢34
附录1:
整体电路图(part1)35
附录2:
源程序37
1引言
1.1研究背景
出租车行业在我国是八十年代初兴起的一项新兴行业,随着我国国民经济的高速发展,出租汽车已成为城市公共交通的重要组成部分。
多年来国普遍使用的计价器只具备单一的计量功能。
目前全世界的计价器中有90%为所生产。
现今我国生产计价器的企业有上百家,主要是集中在北京,上海,和等地。
出租汽车计价器是一种专用的计量仪器,它安装在出租汽车上,能连续累加,并指示出行程中任一时刻乘客应付费用的总数,其金额值是计程和计时时间的函数。
我国第一家生产计价器的是市起重机厂,最早的计价器全部采用机械齿轮构,只能完成简单的计程功能,可以说,早期的计价器就是个里程表。
随着科学技术的发展,产生了第二代计价器。
它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化,在计程的同时还可完成计价的工作。
大规模集成电路的发展产生了第三代计价器,也就是全电子化的计价器,其功能在不断完善中。
出租车计价器在最初使用时具备的主要功能是根据行驶里程计价,要求精度高,可靠性好。
随着电子技术的发展以及对计价器的不断改进和完善,便产生了诸多的附加功能。
例如:
(1)LED显示功能,数码管的使用让计价器实现多屏显示的功能,可同时显示各项营运数据,使乘客一目了然;
(2)永久时钟功能,在非营运状态下,日历时钟芯片的使用使计价器可以显示永久时钟;(3)存储功能,可存储多项营运数据,便于查询。
新型数据存储器的应用使得计价器的营运数据在掉电情况下还可以保存10年。
随着出租车行业的发展,对出租车计费器的要求也越来越高。
本课题以FPGA芯片为主控芯片,结和外围电路来完成计价器多项功能,具有一定的应用价值。
由于科技的发展,芯片中的数据可保持十年不变,且芯片体积小,容量大,因此这种方式具有十分重要的现实意义和广阔的市场前景。
1.2目前出租车计价器存在的问题和改进方案
1.2.1出租车计价器存在的问题
随着我国国民经济的高速发展,出租汽车已成为城市公共交通的重要组成部分。
近几年来,出租车汽车行业在各地蓬勃发展,出租车经营也从无序状态逐渐走入正轨。
出租车计价器成为出租车运营中必配的、可靠的计量器具,其使用准确性直接关系到经营者与乘客的经济利益。
但在实际运营中,总有不少经营者或乘客反映相同路径,不同的出租车的收费有较大的出入。
目前出租车计价器存在的问题主要有:
1、计价器作弊的问题。
有些出租汽车司机在计价器上做手脚,多收乘客租金。
常见的手段是:
输入非法脉冲,计价器主要靠传感器发出的脉冲来计数,脉冲数的多少即汽车行驶里程的多少。
作弊者利用这一原理,额外向计价器输入脉冲,其方法多种多样如利用车收音机、电动剃须刀。
2、毛刺(竞争一冒险)现象。
主要影响数字系统设计有效性和可靠性的主要因素,由于毛刺的存在,使得系统存在诸多潜在的不稳定因素,尤其是对尖峰脉冲或脉冲边沿敏感的电路就更是如此。
毛刺通常主要对电路的触发清零端CLR、触发复位端RESET、CP端、锁存器的门控端和专用芯片的控制端等产生严重的影响,会使电路发生误动作,从而造成数字系统的逻辑混乱。
1.2.2改进的方法
1、相对于计价器作弊的问题,改进的方法:
(1)传感器输出编码脉冲。
传感器输出的脉冲其脉冲宽度、占空比等参数都是可变的,使计价器与传感器对号入座。
(2)传感器输出加密脉冲。
近年来由于电子技术的发展,已有商品化的加、解密器件供应,只要在传感器与计价器之间加入这种器件,就可以使计价器发出的加密脉冲,而其他传感器或脉冲一概不认。
(3)加入启动速度的判别电路。
利用汽车启动时速度总是由零逐步增高的道理,而非法的外加脉冲总是以固定速度加入的,当加入了判别电路后,如果速度不是由低到高则计价器拒绝接受。
2、在竞争冒险消除毛刺的主要的方法:
(1)调整路径延时,毛刺归根到底是由于延时不同而引起的,因此只要让门电路的所有输入信号具有相同的延时,毛刺就不会产生。
所以消除毛刺最原始、最直接的方法就是调整延时;
(2)引入选通信号,由于竞争仅仅发生在输入信号变化转换的瞬间,在稳定状态是没有竞争的,所以在输入信号稳定后进行选通就可以彻底消除尖峰脉冲。
3、本设计课题拟解决的问题:
本课题采用FPGA芯片为核心,用较少的硬件和适当的软件相互配合主要解决以下问题:
(1)不同地区的计费方式存在差异,即使同一地区,不同车型的出租车,其计费方式也有差别;另一方面,出租车还面临几年一次的调价或调整计费方式等问题。
因此,所设计的计费器不仅要能满足不同地区的要求,而且计费方式的调整也应当很方便。
(2)由于个别地区对计费器有特殊要求,有时必须修改软件。
另外,计费器还面临软件的升级。
因而,所设计的计费器应能很方便地重新编程。
(3)计费器必须要有防作弊功能,能有效防止司机作弊,同时要防止计费器在营运过程中死机。
2系统设计方案的论证与选择
2.1方案设计
2.1.1方案一:
基于单片机的出租车计价器方案设计
出租车计价器系统以单片机为核心,由按键电路、里程计算电路、数码管显示电路组成。
利用单片机灵活的编程设计和丰富的I/O端口及其控制的准确性,不仅能实现基本的里程计价价格调节、时钟显示,而且能很大程度上实现扩展功能,同时可方便日后对系统进行升级。
基于单片机的出租车计价器系统框图如图2-1所示。
2.1.2方案二:
基于EDA的出租车计价器方案设计
出租车计价器系统基于FPGA芯片,采用自顶向下设计方法。
将系统按功能分为速度模块、计程模块、计时模块和计费模块等大致四个模块。
基于FPGA的出租车计费系统总体框图如图2-2所示。
2.2方案选择
采用单片机设计具有成本低、易于控制的优点。
设计大多是:
通过软件编程,仿真,调试,符合要求后将程序用编程器写入到单片机芯片上。
利用单片机的中断响应乘客开车或者等待的请求,进行相应的处理。
利用寄存器存放计价器系统运行状态,从而可以根据整个行程的状态进行计价。
但这种设计外围电路较多而时序实现能力较弱,调试复杂,抗干扰能力差,特别对这种计程车的计价器需要长时间不间断运作的系统,由于主要是软件运作,容易出错,造成系统不稳定。
采用FPGA设计,设计者只需用HDL语言完成系统功能的描述,借助EDA工具就可得到设计结果,将编译后的代码下载到目标芯片就可在硬件上实现。
EDA技术作为一种现代电子系统开发方式,具有两方面特点。
1、修改软件程序即可改变硬件
由于FPGA/CPLD可以通过软件编程对该硬件的结构和工作方式进行重构,修改软件程序就相当于改变了硬件,这使设计者把思路概念变为实际芯片和电路的周期越缩越短。
软件可以使用自顶向下的设计方案,而且可以多个人分工并行工作,这些年来IP核产业的崛起,将若干软核结合起来就可以构成一个完整的系统,这一切极大地缩短了开发周期和上市时间,有利于在激烈的市场竞争中抢占先机。
2、速度快,可靠性高
MCU(MicroControllerUnit)和DSP(DigitalSignalProcessor)都是通过串行执行指令来实现特定功能,不可避免低速,而FPGA/CPLD则可实现硬件上的并行工作,在实时测控和高速应用领域前景广阔;另一方面,FPGA/CPLD器件在功能开发上是软件实现的,但物理机制却和纯硬件电路一样,十分可靠;而且与其他的设计方法相比,FPGA芯片具有比较丰富的存储单元,可以将原本需要外加的存储设备转移到FPGA芯片部实现,使整体设计需要的外围元器件更少。
而MCU和DSP芯片在强干扰条件下,尤其是强电磁干扰下,很可能越出正常的工作流程,出现PC跑飞现象。
EDA高可靠性正好克服了它们这一先天不足。
采用PLD设计,将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,并且可应用EDA软件仿真,调试,易于进行功能扩展,外围电路较少,采用硬件逻辑电路实现,其最大的优点是稳定性好,抗干扰能力强,非常适合作为计程车的计价器系统的控制核心。
基于对以上各个因素的考虑,决定采用以FPGA为核心,用VHDL编程来实现计价器的设计方法,实现出租车计价器的设计,提升设计的可行性。
3出租车计价器功能及要求
3.1出租车计费规则
出租车的计费工作原理分成5个阶段:
(1)车起步开始计费,首先显示起步价(本次设计起步费为8.0元),车在行驶3km以,只收起步价8.0元。
(2)车行驶到达或超过3km后,按每公里1.6元计费(在8.0元基础上每行驶1km车费加1.6元),车费依次累加。
(3)行驶路程达到或超过10km后,按每公里2.4元计费,即在总费用基础上每行驶1km车费加2.4元。
(4)在行驶中遇红灯或中途暂时停车情况下,车暂时停止,计价器则按时间计费,超过2分钟后按每20秒收费0.8元。
(5)若停止则车费停止计费,按下复位键后,费用恢复至起步价,等待下一次计费的开始。
本设计中出租车有起动/停止键,暂停键和加速键。
启动/停止键为一脉冲信号,当有电平发生变换时,表示该计费系统已启动。
在汽车运动的过程中,采用一个脉冲信号(计数脉冲)来实现路程的计数,该信号代替了实际的车行里程测速的脉冲信号,在刚开始LCD1602显示的是起始价;当启动/停止键使电平有偶次时,汽车停止前进,同时停止发生脉冲,此时路程计数和等待时间计时停止;当暂停键为低电平时,汽车暂停,计程脉冲失效,时间计数开始运行,最后把等待时间也这算成车费的一部分。
跟据相应的计费公式来计算出总费用,和单价费用,里程总数,等待时同时显示在液晶上。
当按复位键后,总费用恢复到起步价,时间计数器清零,里程计数器清零,单价数清零。
3.2出租车计价器的功能
(1)实时显示每次旅程的总金额和里程数;
(2)实时显示计费单价,并能显示等待时间;
(3)适应价格调整,程序修改方便。
3.3出租车计价器的性能指标
(1)供电电压5V。
注:
本设计采用5V供电。
(2)计费精度:
0.1元;计费围:
0.1~999.9元。
(3)计程精度:
0.1公里;计程围:
0.1~99.9公里。
(4)计时精度:
1秒;计时围:
1小时。
4出租车计费系统硬件设计
本设计中,硬件设计部分包括硬件总体方案设计、各个硬件模块设计及其原理分析。
下面作详细介绍。
4.1硬件总体方案设计
本系统采用FPGAEP1C3T144C8N核心板作为中央处理器,采用11个I/O口控制LCD1602显示,实现计价器的等待时间,总费用,实时费用单价及总里程数的实时显示。
根据要求通过按键来模拟出租车运行状态(开启/停止,等待,加速功能)以及计价器复位功能。
通过光电传感器输送脉冲传送给FPGA来作计数。
本系统主要由FPGA核心模块、按键模块、液晶显示模块、传感器模块以及电机驱动模块五部分组成,具体系统框图如图4-1所示:
图4-1系统框图
4.2FPGA核心模块
FPGA核心模块是整个系统的核心,它担负着整个系统的时序控制、数据采集和处理的任务。
本系统的FPGA核心模块主要由FPGA芯片、电源、时钟源、复位电路、FPGA配置电路及下载接口电路组成。
1、FPGA芯片
FPGA芯片采用Altera公司的Cyclone系列的EP1C3T144C8N,其I/O电压为3.3V,核电压为1.5V,一个锁相环,约3万门、6万RAMbit,144个引脚。
FPGA的I/O引脚按其功能可以分为四部分,且每个BANK的I/O引脚供电是独立的,BANK1~BANK4引脚图如图4-2所示:
图4-1系统框图
图4-2EP1C3T144BANK1~BANK4引脚图
2、电源
如图4-3所示,本核心板的所有I/O脚都采用3.3V电压标准,因此所有的VCCIO都连接3.3V,VCCINT为FPGA核工作电压输入,Cyclone系列的FPGA均采用1.5V的核电压,所以这里连接1.5V。
3、时钟源
无论是用离散逻辑、可编程逻辑,还是基于其他类型器件的任何数字设计,系统的成功运行都要依靠可靠的时钟。
一些对实时性和同步性要求较高的系统,如数据采集系统,甚至不能使用任何可能含有毛刺的输出作为时钟信号。
在CPLD/FPGA设计中最好的时钟方案是:
由专用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器。
CPLD/FPGA都具有专门的全局时钟引脚,它直接连到器件中的每一个寄存器。
这种全局时钟提供器件中最短的时钟到输出的延时。
在本系统中FPGAEP1C3T144C8N提供4路时钟供用户使用,板载50M有源晶振,可以根据需要进行PLL定制,或者直接分频处理。
本系统时钟接线如图4-4所示:
图4-3I/O电压、内核电压连接图
图4-4系统时钟接线图
4、复位电路
由于系统在运行中受到干扰后可能会出现CPU程序“跑飞”等异常,此时系统盲目运行甚至出现死机现象,因此为确保系统稳定可靠工作,复位电路是必不可少的一部分。
FPGA不像单片机,它的接口是非常灵活的,RST可以根据系统的布局任意选择I/O引脚接开关到低电平,部检测低电平有效复位。
但是在部需要进行对应的管脚配置和书写相应的功能代码,否则系统不能识别复位信号。
复位按键,可以从新配置FPGA,按下之后,从配置芯片中读取程序;成功读取之后,程序开始正常运行。
系统复位电路的原理图如图4-5所示:
5、配置电路
由于FPGA芯片一般都是基于SRAM工艺的,不具备非易失特性,因此每次断电后都会丢失部的逻辑配置,所以系统在每次上电后都必须从外部非易失性存储器中加载既定的配置信息。
本系统采用EPCS1作为FPGA的配置芯片,用于储存系统的部逻辑配置。
EPCS1是属于Altera的串行配置器件系列的芯片,是可编程逻辑工业领域中最低成本的配置器件。
EPCS1拥有包括在系统可编程(ISP)、flash存储器访问接口、节省单板空间的小外形集成电路(SOIC)封装等高级特征,成为CycloneFPGA系列产品在大容量及价格敏感的应用环境下的完美补充。
系统FPGA配置电路的原理图如图4-6所示:
图4-5系统复位电路图
图4-6系统FPGA配置电路图
6、下载接口电路
这是一种主串模式下FPGA的配置电路,通过AS接口来完成EPCS芯片的编程下载,使用的下载电缆是ByteBlasterII。
AS接口主要是用来编程EPCS1芯片,同时也可以用来调试系统。
具体过程是首先编程EPCS1,然后通过EPCS1配置FPGA,运行程序。
需要考虑的是EPCS1的编程次数是有限制的,虽然比EPC系列芯片的要多,但是太频繁的擦除和写入对芯片还是有一定影响的。
最好是在调试结束后,才使用AS接口将逻辑配置下载到EPCS1中,完成程序的固化。
AS接口电路原理图如图4-7所示:
4.3按键控制电路
按键控制电路如图4-8所示。
根据设计要求,按键功能分别为启动/停止(KEY1),暂停(KEY2),加速(KEY3),复位(KEY4)。
四个电阻的功能均为上拉电阻。
当按键SW未按下时,KEY值输出为高电平。
当按键SW按下时,KEY值输出为低电平。
按键的防抖处理有一般有两种方法:
一种是电容消抖法,另一种是软件消抖法。
本设计采用软件消抖法,具体细节将在软件部分按键消抖模块中详细介绍。
图4-7下载接口电路图
图4-8按键电路
4.4电机模块电路
电机模块电路如图4-9所示。
本电路中的电机可以采用直流电机和步进电机,在综合考虑了工作情境,系统精度和价格等因素,本设计所采用5V单向直流电机。
电机的工作状按以下几种情形来分析。
情形一:
当MOTO_A=1,MOTO_B=0时,Q1导通,导致Q2导通,Q6导通后电流形成回路,同时Q5截止,Q3截止,Q4截止,而电流从A流向B,电机正转。
情形二:
当MOTO_A=0,MOTO_B=1时,Q4导通,导致Q3导通,Q5导通后电流形成回路,同时Q2截止,Q1截止,Q6截止,而电流从B流向A,电机反转,因为本电路电机为单向,故效果为不动。
情形三:
当MOTO_A=1,MOTO_B=1时,由于对称的三极管型号相同,参数相同,导致A、B两点电位相同,电机不动。
通过以上分析可知,通过调节脉冲占空比可以调节电机的转动速度。
电机模块的作用是模拟出租车的运行状况,包括加速,开启和停止功能。
图4-9电机模块电路
4.5电机测速模块
电机测速电路如图4-10所示。
光电传感器是将光转化成电,以达到隔离的作用。
当发射管和接收管有物体遮挡时,则接收管阻值很大,故此时CP输出为高电平。
当发射管和接收管没有物体遮挡时,则接收管阻值很小,故此时CP输出为低电平。
从LED的亮灭情况来直观反应CP电平状态。
在此电路模块中,电阻R32起到限流作用,电阻R33是上拉电阻。
图4-10电机测速模块
4.6液晶显示模块
液晶1602显示电路如图4-11所示。
下面对1602作简单介绍。
16x2点阵字符液晶模块是由点阵字符液晶显示器件和专用的行、列驱动器,控制器必要的连接件,结构件装配而成,可以显示数字和英文字符。
这种点阵字符模块本身带有字符发生器,显示容量大,功能丰富。
16x2字符型液晶显示模块(LCM)的特性:
(1)+5V电压,反视度(明暗对比度)可调整;
(2)含振荡电路,系统含重置电路;(3)提供各种控制命令,如清除显示、字符闪烁、光标闪烁、显示移位等多种功能;(4)显示用数据DDRAM共有80字节;(5)字符发生器CGROM有160个5x7的点阵字型;(6)字符发生器CGRAM可由使用者自行定义8个5x7的点阵字型。
16x2字符型液晶显示模块(LCM)的引脚及功能如下:
1脚(VDD/VSS):
电源5(1±10%)V或接地。
2脚(VCC):
接地或电源5(1±10%)V。
3脚(VO):
反视度调整。
使用可变电阻调整,通常接地。
4脚(RS):
寄存器选择。
1:
选择数据寄存嚣;0:
选择指令寄存器。
5脚(R/W):
读/写选择。
1:
读;0:
写。
6脚(E):
使能操作。
1:
LCM可做读写操作;0:
LCM不能做读写操作。
7脚~14脚:
双向数据总线的第0位~第7位。
15脚(BLA):
背光显示器电源+5V。
16脚(BLK):
背光显示器接地。
图4-11液晶1602显示电路
5出租车计费系统软件设计
FPGA程序设计主要采用两种语言:
VHDL和VerilogHDL。
其中VerilogHDL比较简单,在NIOS项目里运用较多;而VHDL语言功能强大,学习起来有一定难度,在数字系统和通信系统设计中使用较多。
本次软件设计语言采用VHDL。
下面介绍VHDL语言及出租车计费系统各个模块的原理。
5.1VHDL语言概述
VHDL是由美国国防部为描述电子电路所开发的一种语言,其全称为(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage。
与另外一门硬件描述语言VerilogHDL相比,VHDL更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和行为级(寄存器传输级)。
1、VHDL语言的优点
VHDL是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言,综合起来讲,VHDL语言具有如下优点:
●覆盖面广,描述能力强,是一个多层次的描述语言。
在VHDL语言中,设计的原始描述可以非常简练,经过层层加强后,最终可成为直接付诸生产的电路或版图参数描述。
●具有良好的可读性,即容易被计算机接受,也容易被读者理解。
●使用期长,不会因工艺变化而使描述过时。
●支持大规模设计的分解和已有设计的再利用。
一个大规模的设计不可能由一个人独立完成,必须由多人共同承担,VHDL为设计的分解和设计的再利用提供了有力的支持。
2、VHDL程序的基本结构
一个完整的VHDL语言程序包括库的调用、程序包的调用、实体说明、结构体描述和配置5部分。
库和库中程序包的调用类似于高级程序语言的文件头,程序中的函数及一些数据类型如std_logic等都在库中的程序包中有定义,因此程序要用到这些函数及数据类型则必须调用库和库的程序包。
实体(Entity)是VHDL程序的基本单元,用于说明设计系统的外部接口信息,相当于提供一个设计单元的公共信息。
对于一个已经确定的系统,实体的描述是唯一的。
结构体(Architecture)用于描述相应实体的行为、功能或电路结构,特别要注意的是结构体与实体不是一一对应的的,一个实体可以对应多个结构体,但一个结构体只能对应一个实体。
配置语句一般用来描述层与层之间的连接关系以及实体与结构之间的连接关系。
在分层次的设计中,配置可以用来把特定的设计实体关联到元件实例(Component),或把特定的结构关联到一个实体。
当一个实体存在多个结构时,可以通过配置语句为其指定一个结构,若省略配置语句,则VHDL编译器将自动为实体选一个最新编译的结构。
5.2系统总体框架
系统的顶层框图如图5-1所示。
图5-1系统顶层框图
主要分为三个模块,分别为:
秒分频模块、计量模块和译码显示模块。
(1)脉冲生成模块使整个系统的同步工作,把系统提供的50M的晶振频率进行分频,得到我们所需要的秒信号(便于在以后的计时中用到),同时生成电路工作所需要的500Hz工作脉冲。
(2)计量控制模块也是系统中一个十分重要的模块,它由三个部分组成,分别是计价部分、计时部分和计程部分,是计程车计价器系统多功能实现的保证。
计价部分又包括两个容,一个是正常车行里程数这算成价格费用,根据车行路程的远近,还需要增加相应的附加费用;另一部分是在车行过程中等待红灯等暂停状态下,等候时间折算成的价格费用。
(3)最后一个译码显示模块作用在于把计程车的工作情况(等待时间、单价、价钱、行程数)反馈给乘客。
三个模块有机地结合在一起,实现了基于FPGA的多功能计程车计价器的设计。
5.3系统的顶层原理图
系统顶层原理图