




已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
出租车计价器论文毕业设计目 录 1 引言11.1 研究背景11.2 目前出租车计价器存在的问题和改进方案11.2.1 出租车计价器存在的问题11.2.2 改进的方法22 系统设计方案的论证与选择42.1 方案设计42.1.1 方案一:基于单片机的出租车计价器方案设计42.1.2 方案二:基于EDA的出租车计价器方案设计42.2 方案选择43 出租车计价器功能及要求73.1 出租车计费规则73.2 出租车计价器的功能73.3 出租车计价器的性能指标74 出租车计费系统硬件设计94.1 硬件总体方案设计94.2 FPGA核心模块94.3 按键控制电路134.4 电机模块电路134.5 电机测速模块144.6 液晶显示模块155 出租车计费系统软件设计165.1 VHDL语言概述165.2 系统总体框架175.3 系统的顶层原理图185.4 系统各功能模块的实现195.4.1 CC2 顶层模块的实现195.4.2 GL 模块的实现205.4.3 int_div 模块的实现225.4.4 key_set 模块的实现245.4.5 DENDAI 模块的实现25315.4.6 MONEY 模块的实现265.4.7 conv模块的实现285.4.8 SF模块的实现295.4.9 ram_1602模块的实现30结 论32参考文献33致 谢34附录1:整体电路图(part1)35附录2:源程序37天津职业技术师范大学2012届本科生毕业设计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.1.2 方案二:基于EDA的出租车计价器方案设计出租车计价器系统基于FPGA芯片,采用自顶向下设计方法。将系统按功能分为速度模块、计程模块、计时模块和计费模块等大致四个模块。基于FPGA的出租车计费系统总体框图如图2-2所示。2.2 方案选择采用单片机设计具有成本低、易于控制的优点。设计大多是:通过软件编程,仿真,调试,符合要求后将程序用编程器写入到单片机芯片上。利用单片机的中断响应乘客开车或者等待的请求,进行相应的处理。利用寄存器存放计价器系统运行状态,从而可以根据整个行程的状态进行计价。但这种设计外围电路较多而时序实现能力较弱,调试复杂,抗干扰能力差,特别对这种计程车的计价器需要长时间不间断运作的系统,由于主要是软件运作,容易出错,造成系统不稳定。速度模块计时模块计程模块计费模块总里程总费用FPGA芯片里程脉冲复位信号 图2-2 基于FPGA的出租车计费系统总体框图启动/停止 采用FPGA设计,设计者只需用 HDL 语言完成系统功能的描述,借助 EDA 工具就可得到设计结果,将编译后的代码下载到目标芯片就可在硬件上实现。EDA 技术作为一种现代电子系统开发方式,具有两方面特点。1、修改软件程序即可改变硬件由于 FPGACPLD 可以通过软件编程对该硬件的结构和工作方式进行重构,修改软件程序就相当于改变了硬件,这使设计者把思路概念变为实际芯片和电路的周期越缩越短。软件可以使用自顶向下的设计方案,而且可以多个人分工并行工作,这些年来IP核产业的崛起,将若干软核结合起来就可以构成一个完整的系统,这一切极大地缩短了开发周期和上市时间,有利于在激烈的市场竞争中抢占先机。2、速度快,可靠性高MCU(Micro Controller Unit)和 DSP(Digital Signal Processor)都是通过串行执行指令来实现特定功能,不可避免低速,而 FPGACPLD 则可实现硬件上的并行工作,在实时测控和高速应用领域前景广阔;另一方面,FPGACPLD 器件在功能开发上是软件实现的,但物理机制却和纯硬件电路一样,十分可靠;而且与其他的设计方法相比,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.1999.9 元。(3) 计程精度:0.1 公里;计程范围:0.199.9 公里。(4) 计时精度: 1 秒; 计时范围:1 小时。 4 出租车计费系统硬件设计本设计中,硬件设计部分包括硬件总体方案设计、各个硬件模块设计及其原理分析。下面作详细介绍。4.1 硬件总体方案设计本系统采用FPGA EP1C3T144C8N 核心板作为中央处理器,采用11个I/O口控制LCD1602显示,实现计价器的等待时间,总费用,实时费用单价及总里程数的实时显示。根据要求通过按键来模拟出租车运行状态(开启/停止,等待,加速功能)以及计价器复位功能。通过光电传感器输送脉冲传送给FPGA来作计数。本系统主要由FPGA核心模块、按键模块、液晶显示模块、传感器模块以及电机驱动模块五部分组成,具体系统框图如图4-1所示:图4-1 系统框图4.2 FPGA核心模块FPGA核心模块是整个系统的核心,它担负着整个系统的时序控制、数据采集和处理的任务。本系统的FPGA核心模块主要由FPGA芯片、电源、时钟源、复位电路、FPGA配置电路及下载接口电路组成。1、FPGA芯片FPGA芯片采用Altera公司的Cyclone系列的EP1C3T144C8N,其I/O电压为3.3V,内核电压为1.5V,一个锁相环,约3万门、6万RAM bit,144个引脚。FPGA的I/O引脚按其功能可以分为四部分,且每个BANK的I/O引脚供电是独立的,BANK1BANK4引脚图如图4-2所示:图4-1 系统框图图4-2 EP1C3T144 BANK1BANK4引脚图2、电源如图4-3所示,本核心板的所有I/O脚都采用 3.3V电压标准,因此所有的VCCIO都连接 3.3V,VCCINT为FPGA内核工作电压输入,Cyclone 系列的FPGA均采用 1.5V的内核电压,所以这里连接 1.5V。3、时钟源无论是用离散逻辑、可编程逻辑,还是基于其他类型器件的任何数字设计,系统的成功运行都要依靠可靠的时钟。一些对实时性和同步性要求较高的系统,如数据采集系统,甚至不能使用任何可能含有毛刺的输出作为时钟信号。在CPLD/FPGA设计中最好的时钟方案是:由专用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器。CPLD/FPGA都具有专门的全局时钟引脚,它直接连到器件中的每一个寄存器。这种全局时钟提供器件中最短的时钟到输出的延时。在本系统中FPGA EP1C3T144C8N 提供4路时钟供用户使用,板载50M有源晶振,可以根据需要进行PLL 定制,或者直接分频处理。本系统时钟接线如图4-4所示:图4-3 I/O电压、内核电压连接图图4-4 系统时钟接线图4、复位电路由于系统在运行中受到干扰后可能会出现CPU程序“跑飞”等异常,此时系统盲目运行甚至出现死机现象,因此为确保系统稳定可靠工作,复位电路是必不可少的一部分。FPGA不像单片机,它的接口是非常灵活的,RST可以根据系统的布局任意选择I/O引脚接开关到低电平,内部检测低电平有效复位。但是在内部需要进行对应的管脚配置和书写相应的功能代码,否则系统不能识别复位信号。复位按键,可以从新配置FPGA,按下之后,从配置芯片中读取程序;成功读取之后,程序开始正常运行。系统复位电路的原理图如图4-5所示:5、配置电路由于FPGA芯片一般都是基于SRAM工艺的,不具备非易失特性,因此每次断电后都会丢失内部的逻辑配置,所以系统在每次上电后都必须从外部非易失性存储器中加载既定的配置信息。本系统采用EPCS1作为FPGA的配置芯片,用于储存系统的内部逻辑配置。EPCS1是属于Altera的串行配置器件系列的芯片,是可编程逻辑工业领域中最低成本的配置器件。EPCS1拥有包括在系统可编程(ISP)、flash存储器访问接口、节省单板空间的小外形集成电路(SOIC)封装等高级特征,成为Cyclone FPGA系列产品在大容量及价格敏感的应用环境下的完美补充。系统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(110%)V或接地。2脚(VCC):接地或电源5(110%)V。3脚(VO):反视度调整。使用可变电阻调整,通常接地。4脚(RS):寄存器选择。1:选择数据寄存嚣;0:选择指令寄存器。5脚(R/W):读/写选择。1:读;0:写。6脚(E):使能操作。1:LCM可做读写操作; 0:LCM不能做读写操作。7脚14脚:双向数据总线的第0位第7位。15脚(BL A):背光显示器电源+5V。16脚(BL K):背光显示器接地。图4-11 液晶1602显示电路 5 出租车计费系统软件设计FPGA程序设计主要采用两种语言:VHDL和Verilog HDL。其中Verilog HDL比较简单,在NIOS项目里运用较多;而VHDL语言功能强大,学习起来有一定难度,在数字系统和通信系统设计中使用较多。本次软件设计语言采用VHDL。下面介绍VHDL语言及出租车计费系统各个模块的原理。5.1 VHDL语言概述VHDL是由美国国防部为描述电子电路所开发的一种语言,其全称为(Very High Speed Integrated Circuit) Hardware Description Language。与另外一门硬件描述语言Verilog HDL相比,VHDL更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和行为级(寄存器传输级)。1、VHDL语言的优点VHDL是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言,综合起来讲,VHDL语言具有如下优点:l 覆盖面广,描述能力强,是一个多层次的描述语言。在VHDL语言中,设计的原始描述可以非常简练,经过层层加强后,最终可成为直接付诸生产的电路或版图参数描述。l 具有良好的可读性,即容易被计算机接受,也容易被读者理解。l 使用期长,不会因工艺变化而使描述过时。l 支持大规模设计的分解和已有设计的再利用。一个大规模的设计不可能由一个人独立完成,必须由多人共同承担,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 系统的顶层原理图系统顶层原理图如图5-2所示。图5-2 系统顶层原理图该原理图中输入部分分别是计价器启动/停止信号:START;暂停信号:PUL;复位信号:SYS_RESET,时钟信号:CLK_50M,脉冲输入信号:CP。输出部分分别是液晶读写信号lcd_wr,液晶串行信号:lcd_rs,液晶使能信号:lcd_en,液晶数据信号data7.0,直流电机控制端:motoa,motob。其中各模块的功能是:key_set 模块:通过对KEY2.0 信号的采样判断处理,能够对KEY2.0按键进行消抖处理,防止由于微小震动而产生的错误信号。int_div 模块:生成适合于本系统需要的500 Hz与1 Hz的时钟信号。GL 模块:通过对速度信号脉冲信号 CP、开关信号 START、复位信号 SYS_RESET、暂停信号PUL的判断,决定输出计数公里数和公里状态标志,即 flag_3k,flag_3_9k,flag_9k和不同公里范围的每公里脉冲数 flag_3_9km,flag_9km,同时将公里数送入 LCD 模块。DENDAI 模块:在汽车启动后,当遇到顾客等人、红灯或堵车不能前进时,出租车采用计时收费的方式。当PUL 为1时,开始记录时间,并将时间送入 LCD 模块。当时间达到预设时长时则产生用于计费 flag 脉冲和时间计费标志信号 t。SF 模块:四选一,通过对公里状态信号 en0,en1,en2,时间状态信号t 决定输出计费单价sf_out7.0,并将之送入 LCD 显示模块。MONEY 模块: 从 GL 模块传送来的 flag_3_9km,flag_9km信号和从DENDAI 模块传送来的 flag 信号决定单价费用以便用于总费用的累加,同时输出十六进制费用数 fei_bcd15.0。其中 flag_3_9km 产生单价1.6元,flag_9km产生单价2.4元,flag产生单价0.8元。conv 模块:将MONEY模块产生的十六进制费用 fei_bcd15.0 译码成4位十进制数 out13.0,out23.0,out33.0,out44.0,并送入 LCD 显示模块。LCD 显示模块:系统采用字符型液晶显示数据,将行驶单价、总公里、总费用以及等待时间在LCD 上显示。5.4 系统各功能模块的实现5.4.1 CC2 顶层模块的实现CC2模块如图5-3所示。输入信号为时钟信号 CLK_50M,脉冲信号CP,复位信号SYS_RESET,按键开关KEY2.0,输出信号为液晶显示信号 lcd_rs,lcd_rw,lcd_e,data7.0,直流电机控制端 motoa,motob。图5-3 顶层模块图图5-4 CC2模块仿真波形图CC2模块仿真图如5-4所示。三个按键的功能是开始/停止,暂停,加速,还有一个复位按键。脉冲输入端CP。所得的数据送至液晶LCD1602上以及输出电机状态。5.4.2 GL 模块的实现GL 模块如图5-5所示。输入信号为时钟信号 CLK_50M,脉冲信号 CP,开始/停止按键 START,暂停信号 PUL,复位信号 RESET,输出信号为3km以内标志信号 flag_3k,大于3km少于10km的标志信号 flag_3_9k,大于或等于10km的标志信号 flag_9k,大于3km少于10km内每公里脉冲信号 flag_3_9km,大于或等于10km每公里脉冲信号 flag_9km,公里十时制输出 glbai3.0,glshi3.0,glge3.0。下面列出GL 模块的关键代码:BEGINIF RESET=0 THEN glcount=B0000_0000_0000;ELSIF START=1 THENIF glcount000000110000 THEN en0=1;en1=0;en2=0;ELSIF glcount=000000110000 THEN en0=0;en1=1;en2=000010010000 THEN en0=0;en1=0;en2=1;END IF;IF PUL=0 THEN NULL;ELSIFsecevent and sec=0 THENIFglcount(3 DOWNTO 0)=X9THENglcount(3 DOWNTO 0)=X0;en=1;IF glcount(7 DOWNTO 4)=X5 THENglcount(7 DOWNTO 4)=X0;IF glcount(11 DOWNTO 8)=X9THENglcount(11 DOWNTO 8)=X0;ELSEglcount(11 DOWNTO 8)=glcount(11 DOWNTO 8) +1 ;END IF;ELSEglcount(7 DOWNTO 4)=glcount(7 DOWNTO 4) +1 ;-秒十位加1END IF;ELSEglcount(3 DOWNTO 0)=glcount(3 DOWNTO 0) +1 ;-秒加1en=0;END IF;END IF;ELSE en0=0;en=0;en1=0;en2=0;END IF;END PROCESS JS;glbai=glcount(11 downto 8);glshi=glcount(7 downto 4);glge=glcount(3 downto 0);-flag_1k=1 when en=1 else 0;flag_3k=1 when en0=1 else 0;flag_3_9k=1 when en1=1 else 0;flag_9k=1 when en2=1 else 0;-flag_3km=1 when en=1 else 0;-小于3KMflag_3_9km=en1 AND en; -3KM9KMflag_9km=en2 AND en;-大于9KMEND one;GL 模块仿真图如图5-6所示。当 PUL为1时,脉冲计数有效,否则为暂停时间,脉冲计数无效。相应的数值和状态位送至输出端。图5-5 GL模块图图5-6 GL模块仿真图形5.4.3 int_div 模块的实现int_div 模块如图5-7所示。输入信号为系统时钟信号CLK_50M,输出信号为用于计时的时钟信号CLK1HZ,工作脉冲信号CLK500HZ。下面给出分频模块关键代码:BEGIN IF RISING_EDGE(CLK_50M) THEN IF Counter=N1-1 THENcounter=0;Temp1=Not Temp1;ELSECounter=Counter+1;END IF;IF Counter1=N2-1 THENcounter1=0;Temp3=Not Temp3;ELSECounter1=Counter1+1;END IF;END IF;IF falling_edge(CLK_50M)THENIF Counter=N1/2 THENTemp2=NOT Temp2;END IF;IF Counter1=N2/2 THENTemp4=NOT Temp4;END IF;END IF;END PROCESS;CLK1HZ=Temp1 XOR Temp2;CLK500HZ=Temp3 XOR Temp4;END;int_div 模块仿真波形如图5-8所示。将系统时钟50MHz频率进行分频,分别是500Hz、1Hz时钟。图5-7 int_div 模块原理图图5-8 int_div 模块仿真波形图5.4.4 key_set 模块的实现key_set 模块如图5-9所示。输入系统时钟clock_50M,按键 key2.0,输出按键使能信号START,PUL,直流电机控制端motoa,motob。图5-9 key_set 模块原理图下面给出按键设计的核心代码:begin if rising_edge(clock_50M) then if clk=1 then dout1=key; dout2=dout1; dout3=dout2; end if; end if;end process;process (clock_50M) -按键功能部分begin if rising_edge(clock_50M) then k_debounce=dout1 or dout2 or dout3 ;-按键消抖输出. end if;end process;key_edge=NOT (dout1 or dout2 or dout3 ) and k_debounce;key_set 模块仿真波形如图5-10所示。通过按键来控制电机的运转情况以及DENDAI、GL 模块的控制信号 START,PUL 信号。模块中按键采用防消抖处理电路。按键扫描周期为316Hz。图5-10 key_set 模块仿真图5.4.5 DENDAI 模块的实现DENDAI 模块如图5-11所示。输入信号为 CLK_1HZ,CLK_500HZ, START,PUL,输出信号为 hour_h3.0,hour_l3.0,min_h3.0,min_l3.0,flag,ff。下面给出等待模块的关键代码:IF CLK_1HZEVENT AND CLK_1HZ=1 THEN IF START=0 THEN en1=0;en0=0;m1=000;m0=0000;s1=000;s0=time_wait THEN en1=1;-此IF语句得到en1使能信号ELSE en1=0;END IF;IF s1&s0=0100000 OR s1&s0=1000000 OR m0(0)&s1&s0=10000000 THEN en0=1;ELSE en0=0;END IF;IF s1=101 AND s0=1001 THEN s1=000;s0=0000;END IF;IF s0=1001 THEN s0=0000; IF s1=101 THEN s1=000; IF m0=1001 THEN m0=0000; -此IF语句完成分计数 IF m1=101 THEN m1=000; ELSE m1=m1+1; END IF; ELSE m0=m0+1; END IF; ELSE s1=s1+1; END IF;ELSE s0=s0+1;END IF;ELSE en1=0;en0=0;END IF;hour_h=0&m1;hour_l=m0;min_h=0&s1;min_l=s0;ff=en1;DENDAI 模块仿真信号如图5-12所示。开始/停止信号 START,暂停信号 PUL。输出为送入液晶的时钟数值 hour_h3.0,hour_l3.0,min_h3.0,min_l3.0,达到2分钟标志信号 flag,超过2分钟后每20分钟脉冲信号 ff。图5-11 DENDAI模块原理图图5-12 DENDAI模块仿真波形图5.4.6 MONEY 模块的实现MONEY 模块如图5-13所示。输入信号为 flag,flag_3_9km,flag_9km,RESET,输出信号为 fei_bcd15.0。下面给出计费的关键代码: fei_bcd=denfei+chefei_3_9+chefei_9+fei_base ;den:process(flag,reset)variable d0:std_logic_vector(15 downto 0);beginif reset=0 then d0:=x0000;elsif rising_edge(flag) then d0:=d0+fei_wait;end if;denfei=d0;end process den;che_3_9:process(flag_3_9km,reset)variable d2:std_logic_vector(15 downto 0);beginif reset=0 then d2:=x0000;elsif rising_edge(flag_3_9km) then d2:=d2+fei_over3km;end if;chefei_3_9=d2;end process che_3_9;che_9:process(flag_9km,reset)variable d3:std_logic_vector(15 downto 0);beginif reset=0 then d3:=x0000;elsif rising_edge(flag_9km) then d3:=d3+fei_10km;end if;chefei_9=d3;end process che_9;MONEY 模块仿真波形如图5-14所示。由 DENDAI模块输出的等待时间计费信号 flag,由 GL模块输出的大于3km少于10km内每公里计费信号 flag_3_9km,大于或等于10km每公里计费信号 flag_9km,不同的信号总费用累加的额度不同,单个flag脉冲产生0.8元,单个 flag_3_9km脉冲产生1.6元,单个 flag_9km脉冲产生2.4元。图5-13 MONEY模块原理图图5-14 MONEY模块仿真波形图5.4.7 conv模块的实现conv模块如图5-15所示。输入信号为 clk,in1615.0,输出信号为 out13.0,out23.0,out33.0,out43.0。图5-15 conv模块原理图下面列出译码模块的关键代码:if clkevent and clk=1 thenout1=conv_std_logic_vector(tmp rem 10,4);out2=conv_std_logic_vector(q1 rem 10,4);out3=conv_std_logic_vector(q2 rem 10,4);out4=conv_std_logic_vector(q3 rem 10,4);end if;conv模块仿真波形如图5-16所示。将16位十六进制码译成16位十进制码。利用时钟信号 clk来产生敏感信号。图5-16 conv模块仿真波形图5.4.8 SF模块的实现SF 模块如图5-17所示。输入信号为 en0,en1,en2,t,输出信号为 sf_out7.0。下面列出单价模块的关键代码:BEGINIF t=1 THENsf_out_t=fei3;ELSIF en1=1 THENsf_out_t=fei1;ELSIF en2=1 THENsf_out_t=fei2;ELSE sf_out_t=fei0;END IF;END PROCESS;sf_out=sf_out_t;END ONE;SF 模块仿真波形如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学生心理健康教育 课件 第九章大学生生命教育与心理危机应对
- 应急地震安全培训
- 园林绿化作业人员考试黑钻押题含答案详解(新)
- 2025年西安海棠职业学院传统康复治疗技术期末测试卷附参考答案详解(模拟题)
- 免疫功能低下人群秋季腹泻治疗特殊性与策略
- 代沟合同(标准版)
- 房管合同(标准版)
- 2025年数字文化产业商业模式创新与数字文化产业商业模式创新模式研究报告
- 2025年绿色供应链管理在制造业的绿色供应链合作伙伴关系优化与风险管理框架实施报告
- 2025年工业互联网平台云计算资源动态分配策略与智能原子识别融合报告
- 轨道交通课说课课件
- 超声科法律法规与工作规范
- 小学中国新疆课件教学
- 乒乓球基础知识简介课件
- DB15∕T 972-2024 医疗机构物业管理服务规范
- 矿产堆场整治方案(3篇)
- 2025光伏发电建设项目文件归档与档案规范
- 木板企业板材加工厂安全生产双重预防机制方案(2024-2024新标准实施)
- 人教版一年级数学上册数学游戏自测卷(含答案)
- 生物质颗粒工人管理制度
- 【内蒙古】2024内蒙古事业单位联考考试笔试附带答案详解
评论
0/150
提交评论