基于FPGA的出租车计价器的设计.doc

上传人:文库蛋蛋多 文档编号:4135638 上传时间:2023-04-07 格式:DOC 页数:42 大小:1.12MB
返回 下载 相关 举报
基于FPGA的出租车计价器的设计.doc_第1页
第1页 / 共42页
基于FPGA的出租车计价器的设计.doc_第2页
第2页 / 共42页
基于FPGA的出租车计价器的设计.doc_第3页
第3页 / 共42页
基于FPGA的出租车计价器的设计.doc_第4页
第4页 / 共42页
基于FPGA的出租车计价器的设计.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《基于FPGA的出租车计价器的设计.doc》由会员分享,可在线阅读,更多相关《基于FPGA的出租车计价器的设计.doc(42页珍藏版)》请在三一办公上搜索。

1、 摘 要 本文介绍了一种基于FPGA 芯片上实现出租车计价器功能的设计方法,主要阐述如何使用新兴的EDA 器件取代传统的电子设计方法,不仅实现了出租车计价器所需的一些基本功能,同时考虑到出租车行业的一些特殊性,更注重了把一些新的思路加入到设计中。本设计主要借助了FPGA 芯片,使用Verilog HDL语言灵活编程来实现多方面的计费,这样不仅使其不拘泥于硬件,具有更强的移植性,而且增强了实用价值,更加利于产品升级.本设计参考抚州的出租车计费标准,利用Verilog HDL语言设计出租车计价器,主要具有行驶路程(包括白天,夜间路程)动态显示计费,等待累计时间计费及最后的总费用动态显示功能,突出了

2、其作为硬件描述语言的良好的可读性、可移植性和易理解等优点。此程序通过下载到特定的芯片后,可应用于实际的出租车计费系统中。关键词:出租车计价器; Verilog HDL语言; FPGA; Quartus II; EDAABSTRACTThis article presents a method of how to use FPGA to design a taxi meter, and how to replace traditional electrical design with burgeoning EDA parts. Besides the basic functions of tax

3、i count meter, some new ideas are added concerning about the particularity of this calling. This design has mainly drawn support from the FPGA chip, uses Verilog the HDL language nimble programming to realize various cost, which not only causes it not to rigidly adhere to the hardware with a stronge

4、r portability, but also strengthens the use value, even more favors the product promotion.This design acts according to Fuzhous rental car cost standard to design rental car fare register with Verilog the HDL language,which includes the travel distance (including daytime, night distance) ,the waited

5、 for the accumulation time cost and the final all-in cost dynamic demonstration function, it, as the hardware description language, has highlighted the advantages of good readability, the probability, and easy to understand and so on. This procedure may apply in the actual rental car cost system thr

6、ough downloads into the specific chip.Key words:Taxi meter; Verilog HDL language; FPGA; Quartus II; EDA目 录 绪 论11概 述21.1 FPGA 介绍21.1.1 FPGA 发展状况21.1.2 FPGA 的结构与原理21.2 Verilog HDL 硬件描述语言32出租车计费系统设计说明52.1 出租车计费方案52.2 设计思路52.3 总体框架设计73出租车计费功能实现原理说明83.1 霍尔传感器原理83.1.1 霍尔传感器的工作原理83.1.2 霍尔传感器的工作过程93.1.3 里程输

7、入信号93.2 主要功能模块FPGA程序设计93.2.1 计时判断白天深夜模块93.2.2 车速计算及判断高低速模块113.2.3 等待时间计费模块153.2.4 百米判断分频模块173.2.5 白天深夜计费控制模块193.2.6 总里程计费控制模块213.2.7 统计总费用模块233.2.8 超速报警和低速指示部分模块244调试分析254.1 综合生成的原理图254.2 调试心得27结 论27致 谢28参考文献29附录30绪 论随着当今社会的迅猛发展,人们的生活水平的日愈提高,方便、效率成了大多数人追求的生活方式,但在人口多达14亿的中国来说,大量私家车的使用严重影响交通运行,并不能达到人们

8、的目标,而统一管理使用的出租车凭着其方便快捷的优势使其越来越受欢迎。现今,在每个城市都可以随处看到往返的出租车,即使是一个小小的城镇上。当然,由于妥善的地方统一管理,其安全系数也是同类交通工具的佼佼者,这也是深得人们认可的。因此,满足人们需要的出租车行业的快速发展是一个必然的趋势,而且全国最近几年发展的出租车公司数量之大证明出租车计价器的市场是庞大的。由于受到油价影响各大城市都推出了运价油价联动机制,所以出租车计价器计价标准的灵活设定成为未来计价器不可缺少的一部分。 随着电子技术的发展,特别是集成电路技术的发展,使电子电路逐步告别分立元件时代,向小型化、集成化方向发展,要开发拥有自主知识产权的

9、硬件电路,就必须进行ASIC(Application Special Integrated Circuit 专用集成电路)、SOPC(System on Programmable Chip单片可编程系统)的设计,因此就必须掌握现代EDA(Electronic Design Automation电子设计自动化)技术。目前, 电子系统正向集成化、大规模和高速度的方向发展,以硬件描述语言HDL(Hardware Description Language)和逻辑综合为基础的自顶向下的电路设计方法在业界得到迅猛发展,Verilog HDL是硬件描述语言的一种,用于数字电子系统设计。它允许设计者用它来进行

10、数字逻辑系统的仿真验证、时序分析、逻辑综合,它是目前应用最广泛的一种硬件描述语言。另一种是VHDL,现在这两种都已成为IEEE标准,两者各有特点。但VerilogHDL拥有更悠久的历史、拥有更广泛的设计群体、资源也远比VHDL丰富,且非常容易学习掌握,作为学习HDL设计方法的入门和基础,是一种值得大力推广的硬件描述语言。本文采用Verilog HDL语言来设计实现出租车模拟计价器,开发软件采用Altera公司的Quartus(美国Altera公司研制的一种FPGA软件开发系统), Quartus具有功能强大、易学易用、开放等特点,源程序经Quartus软件调试优化,下载到EP2C35F672C

11、6N芯片中,可应用于实际的出租车计费系统中。使用软件Quartus和超高速硬件描述语言Verilog HDL来实现出租车的模拟计费,包括速度计算及高低速判断、等待时间累加计费、百米判断计费、24小时计时以判断白天深夜、白天深夜不同计价标准自动计费、统计总费用、超速报警等功能。 1 概 述1.1 FPGA 介绍1.1.1 FPGA 发展状况FPGA 是现场可编程门阵列(Field Programable Gate Array)的简称,FPGA 是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70 年代单片机的发明和使用。Actel 公司于2005 年1 月24 日在美国加利福尼亚

12、总部发布了它的ProASIC3 和ProASIC3E 系列的FPGA。这是该公司第三代的基于Flash 的可编程逻辑方案。这些新的ProASIC3 最低价将达到1.5 美元,代表了全球最低成本的FPGA,并且相对于基于SRAM的FPGA 来说具有保密的优势。基于Flash 的FPGA 可以提供加密、低功耗、上电工作、可重复编程的方案。而最近Lattice 公司发布了其新一代90nm 高性能FPGA:LatticeSC 系列。 该系列FPGA 采用日本富士通CS100A 90nm 工艺制造,集成了3.4Gbps 高速SERDES 模块,多种形式的嵌入式RAM,以及嵌入式定制ASIC 模块。逻辑容

13、量从容量从1 万5 千到11 万5 千个LUTs。 该系列将成为Lattice 公司目前性能最高的FPGA 主攻高速系统应用领域。从这些都可以看出可编程器件已成为现在及未来很长一段时间的主流,用它来实现出租车计费系统可以省去很多外围电路,稳定,简单有效,可以设计出很多复杂强大的功能,提高产品竞争力。1.1.2 FPGA 的结构与原理目前生产FPGA 的公司主要有Xilinx、Altera、Actel、Lattice、QuickLogic 等,生产的FPGA 品种和型号繁多。尽管这些FPGA 的具体结构和性能指标各有特色,但它们都有一个共同之处,即由逻辑功能块排成阵列,并由可编程的互连资源连接这

14、些逻辑功能块,从而实现不同的设计。典型的FPGA 通常包含三类基本资源:可编程逻辑功能块、可编程输入/输出块和可编程互连资源。可编程逻辑功能块是实现用户功能的基本单元,多个逻辑功能块通常规则地排成一个阵列结构,分布于整个芯片;可编程输入/输出块完成芯片内部逻辑与外部管脚之间的接口,围绕在逻辑单元阵列四周;可编程内部互连资源包括各种长度的连线线段和一些可编程连接开关,它们将各个可编程逻辑块或输入/输出块连接起来,构成特定功能的电路。用户可以通过编程决定每个单元的功能以及它们的互连关系,从而实现所需的逻辑功能。不同厂家或不同型号的FPGA,在可编程逻辑块的内部结构、规模、内部互连的结构等方面经常存

15、在较大的差异。除了上述构成FPGA 基本结构的三种资源以外,随着工艺的进步和应用系统需求的发展,一般在FPGA 中还可能包含以下可选资源:存储器资源(块RAM、分布式RAM);数字时钟管理单元(分频/倍频、数字延迟、时钟锁定);算数运算单元(高速硬件乘法器、乘加器);多电平标准兼容的I/O 接口;高速串行I/O 接口;特殊功能模块(以太网MAC 等硬IP 核);微处理器(PowerPC405 等硬处理器IP 核)。 1.2 Verilog HDL 硬件描述语言Verilog HDL于1983年由GDA(GateWay Design Automation)公司的Phil Moorby首创的为其模

16、拟器产品开发的硬件建模语言。那时它只是一种专用语言,现已发展为一种硬件描述语言(Hardware description language),用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间,并可在相同描述中显式地进行时序建模。Verilog HDL 是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种

17、建模语言。此外, Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog 仿真器进行验证。 Verilog HDL适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述是目前应用最为广泛的硬件描述语言,可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。其进行设计最大的优点是其工艺无关性这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实

18、现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路 使用Verilog HDL 设计系统方法是自顶向下的系统设计方法,在设计过程中,首先是从整体上对系统设计作详细的规划,然后完成电路系统功能行为方面的设计。其设计流程如图1-1:图1-1 Verilog HDL 工程设计流程随着EDA 技术的发展,使用硬件语言设计FPGA 成为一种趋势。借用MAXPLUSII或QuartusII 等软件用Verilog HDL 语言开发FPGA 的完整流程为:(1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL 编辑环境。通常VHDL 文件保存为.v文件。(2)功能仿真:将文

19、件调入HDL 仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)。(3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻辑综合软件会生成.edf(edif)的EDA 工业标准文件。(4)布局布线:将.edf 文件调入PLD 厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA 内。(5)时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序(也叫后仿真)。(6)编程下载:确认仿真无误后,将文件下载到芯片中。.sof 文件用于直接下载到芯片(掉电后会消失),

20、.pof 文件用于rom 芯片下载(掉电后不消失)。2 出租车计费系统设计说明2.1 出租车计费方案各个地方的出租车计费标准不尽相同,但是考虑的计费方式都是大同小异,对于以本文方式设计的计价器,相对来说易于操作且灵活可靠,如果要适用某个城市的出租车,大致只要修改计费标准即可。本出租车计费考虑了初始费用预置,等待时间累加计费,行驶里程计费等等,是一种比较实用的出租车计费方法。以下参考了抚州出租车计价器标准: (1)白天(早上5:00-晚上23:00)行程3km之内,起步费为4元,满3km但不超过11km的里程,每公里收费1.4元,超过11km的里程,每公里收费2.1元。(2)深夜(晚上23:00

21、-早上5:00),起步价为8元,11km之内每公里收费2元,超过11公里,每公里收费3元。(3)无论白天深夜,等待累加时间为每两分钟以10元计费。本计价器的显示范围为09999元,计价分辨率为01元;计程器显示范围为099公里,分辨率为1公里;计时器显示24小时计时,分辨率为1秒钟。2.2 设计思路本设计基本上是用软件实现出租车计费的基本功能,首先,车牌的空车档打下与否相当于总开关clr,为了方便顾客查询准确的相关乘车费用,我们只设置了这一个开关,这样以来总费用就不易修改,因此增加了其公正性。clr一关闭,所有的里程,等待时间,费用等全部清零,clr一开通,相关的里程,等待时间,费用等都开始计

22、数。然后根据计时判断此时的时间段是白天还是深夜,24小时计时是任何时候都在进行的,所以只要读取打下车牌的时间段就知道要开启哪个时间段的计费标准。在本设计中,我们想到用霍尔传感器来产生里程脉冲,把霍尔传感器安装在车子的轴轮上,轮子每转一圈就被传感一次,就设置产生一个脉冲,也可以安装多个霍尔传感器,以使得传感的信号更精确,在这里我们直接引用了霍尔传感器传感出来的一米里程脉冲,还根据需要把脉冲分频成后面模块需要的千米脉冲,以方便计算速度和里程。里程是通过计算霍尔传感器传来的里程脉冲,速度是由1s内车子走过的路程来确定,到了下一秒就清零从新计算下一秒走过的路程,这样计算出来的速度虽然是一秒的平均速度,

23、但是由于时间很短,就可以当着是瞬时速度。还有一个百米判断及分频模块,它的功能除了里程分频,还有就是如果乘客坐没到100米就要下的话,就不收费。最后把各个有费用的模块进行总的费用统计,即把计时和计程费用相加,当然,百米模块也牵到相关费用,且分频的里程信号运用于白天深夜计费控制模块,因此,我们后面把它们合起来进行总里程计费。时间脉冲的生成由同组人完成,在本设计中只需引用即可。在本设计中用到了1秒、10毫秒及20毫秒的时间脉冲。系统模块的框图如图2-1: 图2-1 系统模块框图系统主体流程介绍:系统主要由霍尔传感器传感脉冲、计时判断白天深夜模块、速度计算判断高低速模块、低速计算等待时间计费模块、百米

24、判断及里程分频模块、白天深夜计费模块、总费用统计模块组成。2.3 总体框架设计首先在出租车车轮轴上安装一霍尔传感器,每运行一圈就有矩形波脉冲信号,再根据脉冲的个数来计算行驶的路程,然后在每1s内统计一下行驶的路程,就可以算出1s内的平均速度,由于时间段比较小,此速度可以约为瞬时速度, 为了减小速度计算的误差,我们设置的路程是米单位,最小的里程脉冲是1米,时间脉冲可以任选,只要计算到了1秒,就可以计算出速度,再根据速度的大小来进行低速超速判断,小于4m/s的速度为低速,低速时就进行等待时间累加模块,主要用计时来控制计费,累计时间计费每两分钟1元,此时路程计费就不起作用了。当速度大于48m/s时,

25、则超速报警,超速报警是通过接硬件电路来实现的。车速在4m/s 到48m/s 之间的则进入计里程状态,根据出租车行使速度的大小不同1秒内计的千米次数也不同,在仿真的时候我们可以自行设置里程脉冲,以达到不同速度。由速度大小再通过高低速标志位自动选择来实现计程和计时,输出到自动计费模块,在超速状态时就会自动报警,在低速行驶时计时计费,计程计费在低速和超速之间处于运行状态。当时钟模块给自动计费模块一个信号判断是白天还是深夜,自动计费模块会按照不同的计费标准自动调节计费。白天的起步费、单位里程费、过11km 后的空载加收费、深夜加收后的起步费、单位里程费、过11km 后的空载加收费和低速等待时间转换的费

26、用标准等多个可设定部分。设定好的数值分别送到计费控制模块、等待计时模块。按下计费启动键后开始自动计费,再按一下清零上一次的统计模块计费数值。LCD 显示模块及时钟脉冲一秒的产生等外围硬件的设计由我的搭档负责。 3 出租车计费功能实现原理说明3.1 霍尔传感器原理3.1.1 霍尔传感器的工作原理3.1.1.1 霍尔效应的原理图如图3-1所示:当电流随过放在磁场中的半导体基片(霍尔元件)且电流方向和磁场方向垂直时, 在垂直于电流和磁通的半导体基片的横向侧面上即产生一个电压, 这个电压称为霍尔电压UH 。霍尔电压的高低与通过的电流和磁感应强度成正比, 可用下式表示: UH = RHIB/d (3-1

27、)式中: RH-霍尔系数 d-基片厚度 I-电流 B磁场强度 图3-1 霍尔效应原理图 由公式(3-1)可知, 当通过的电流为一定值时, 霍尔电压UH与磁场强度B成正比, 即霍尔电压的大小仅与磁场强度的大小有关而与磁通的变化速率无关。3.1.1.2 霍尔开关集成电路(1) 霍尔开关集成电路的构成霍尔开关集成电路把稳压器、霍尔电压发生器、信号放大器、信号变换器和输出驱动器都集中在一块芯片上, 如图3-2所示: 图3-2 内部电路方框图(2) 工作原理霍尔开关集成电路中的信号放大器将霍尔元件产生的幅值随磁场强度变化的霍尔电压UH放大后再经信号变换器、驱动器进行整形、放大后输出幅值相等、频率变化的方

28、波信号。3.1.2 霍尔传感器的工作过程当变速箱运转时, 与之相藕合的传感器的轴随之旋转, 与传感器轴一体的磁体也同步旋转, 使得霍尔元件感应的磁场B发生变化, 因而输出矩形波脉冲信号, 该信号可作为仪表和ECU的车速里程信号。其每转的脉冲数等同于磁体上的磁对极数。3.1.3 里程输入信号在出租车计价器系统当中,不可缺少的是它的输入模块,这里共计应该是3个输入,clr,clk,clk1。clr表述的是开关的作用,当有顾客上车时,启动此按键,便开始计费。顾客下车时,先显示总的费用,然后计费清零。clk为计时脉冲,一般设置的都是1s周期,用来控制24小时计费和等待时间累加计费。clk1为1米的里程

29、脉冲,后面也有分频的千米信号,不过这个输入信号是由霍尔传感器来产生的,我们没有深入探讨,只是假设在轮轴上安装霍尔传感器,以产生里程脉冲,而且我们直接引用了1米脉冲。3.2 主要功能模块FPGA程序设计下面依次设计分析以下各模块:计时判断白天深夜模块 、车速计算及判断高低速模块、低速计算等待时间模块、百米判断及里程分频模块、白天深夜计费模块、总里程计费模块、总费用统计模块、超速报警和低速指示部分模块。3.2.1 计时判断白天深夜模块图3-3 计时判断白天深夜模块这是编程计时判断白天深夜模块运行正确时形成的Block原理图,输入为1秒clk脉冲,输出有时分秒和白天深夜标志位P。流程图:图3-4 计

30、时判断白天深夜模块流程图流程图分析:这个模块的思想以前接触的比较多,首先每个程序模块都要初始化输入输出,设置好每个变量类型再开始进入正题,在每个秒脉冲clk上升沿来临时,sec加一计数,计到60秒时sec清零,分min加一计数,分min计到60时清零,时hour加一计数,时计到24时清零,在每个clk有效时读取时hour值,如果在凌晨5点到晚上23点时,白天深夜标志位p就为0,在23点到5点之间,p就置一,这样就区分了白天和深夜,已备后面模块引用。 图3-5 计时判断白天深夜模块仿真波形此模块比较基础的实现了24小时计时的功能,每秒来一个1秒clk脉冲,秒sec开始计数,计到60s之后清零,分

31、min加一,当分min加到60时,分清零,时hour加一,时加到24后清零,然后又重新开始计时。在此模块中,根据时间的计数还进行了白天深夜的判断,当时间段在23:00-05:00时,判断标志位p置一,在其它时间段p标志位清零。从上面的仿真图中可以清楚的观察到此模块的功能。3.2.2 车速计算及判断高低速模块Verilog HDL 编写的车速判断模块如下图3-6所示:图3-6 车速计算及判断高低速模块流程图如下:图3-7 车速计算及判断高低速模块流程图流程图分析:首先都要初始化输入输出及规定变量类型,做好预备工作之后根据要求进行流程设计,我们这里首先要计时,在计的1秒时间里还要计算走过的里程,因

32、此clk,clk1的变化次数都得统计,在复位信号clr开通的前提下,ms统计clk的上升沿个数,co统计clk1的上升沿个数,并赋给dis,再根据ms的时间单位累加到1秒后积存器全部清零,此时的dis数值就是速度大小,再由速度的大小来进行低速超速判断,小于4m/s的速度为低速,低速时就进行等待时间累加模块,当速度大于48m/s时,则超速报警,同时还在进行里程计费,车速在4m/s 到48m/s 之间的则进入按里程计费模块。仿真波形:图3-8 车速计算及判断高低速模块仿真波形一此模块的功能是通过1s内出租车行驶的里程来计算速度,这里的clk为20ms,用“ms”作为clk计数变量,这里有两份仿真波

33、形,一clk1为40ms的脉冲,我们默默认的速度为25m/s,40ms就为1米脉冲,clr还是复位开通信号,为1则开通,为0则关闭,co为1米计数变量,co的值给变量dis,单位为米,每秒内读取dis的值,除以1秒就为1秒内的平均速度,因为时间很短,就作为此时的瞬时速度,单位为m/s,在第一份仿真图里,由于clk1平均为40ms,所以它的速度都是平均速度25m/s。程序加了高低速后的仿真波形:图3-9 车速计算及判断高低速模块仿真波形二第二份仿真图里的clk1是随便给的,即相同时间内行驶的路程不同,因此它的速度测起来也相差很大。此改进模块的功能是在通过1s内出租车行驶的里程来计算速度时,同时还

34、设置了高低速判断。高低速判断的程序段:if(speed48) begin gaosu=1;disu=0;endelse if(speed=4)begin gaosu=0;disu=0;end这里的clk为10ms,为了速度更精确而取的较小的时间段脉冲,用“ms”作为clk计数变量,这里clk1为随意设置的脉冲,clr和co与前面作用一样,由上面仿真图可以看出:第一秒钟与第三四秒明显设置的不一样,得出速度值的不同和高低速度标志位的变化。由于要考虑到计算速度时的精确度,我们必须要在秒范围由里程计算出速度,因此,此时速度单位应为m/s。我们要区分低速与超速,当计算出来的速度小于4m/s时,disu标

35、志位置一,gaosu标志位清零,就会计算等待时间,这是在等待时间累加计费模块里面执行的。当速度大于48m/s时,gaosu标志位置一,disu标志位清零,就会通过硬件电路报警,并且还在里程计费。当速度在4m/s-48m/s之间时,我们就按里程来进行白天或深夜计费,这又到了控制计费模块里面了。3.2.3 等待时间计费模块图3-10 等待时间计费模块图3-11 等待时间计费模块流程图流程图分析:开始时初始化输入输出,在clk和clr有效的前提下(clr关闭时秒,分,费用全清零),如果disu信号也为高电平时,就开始计时,clk为1秒脉冲,sec用来计算clk的上升沿个数,计到60时分min自动加一

36、,而费用fee1就是min数值的一半。仿真波形:图3-12 等待时间计费模块仿真波形此模块是计算出总路程的等待时间,clk为1s脉冲,秒sec为单位计算时间,计到60时分min加一,再根据读取的min值来计算等待时间的费用,这里clr为复位信号,许多模块都有用到此清零信号,在clr为低电平的情况下,sec,min,fee1全清零,一切重新开始计数;在clr为高电平的情况下,由于disu的信号是随意的设置为0或1,当其为1时,即为低速时,开始计算时间,当其为0时, 即为超速时,等待时间寄存起来保持不表,直到下一个低速信号为1时,继续计算等待时间,就达到了累加的等待时间,fee1为等待的累积时间转

37、化成的费用,在这是用二进制右移一位实现每两分钟一元钱的。这里费用fee1只用了7位,是为了仿真时简便一点,而后面为了与其他模块连接起来,fee1改用了14位,因为费用的最大值为9999角(大于2的13次方8192,小于2的14次方16384),因此总模块图统一用14位的费用。从图片中可以看出,秒计数单位随disu信号的变化比较敏感,因为时间脉冲是设为1秒的,而分钟单元则因时间单位比较大,有时看不出随disu信号敏感变化的图像,这是因为有时分计到快到一秒时了,disu信号突然为0,这时候要保持原时间,而在disu信号为0时,分信号早就开始计这分钟了,因此会有分时间反映快慢的出入。3.2.4 百米

38、判断分频模块图3-13 百米判断分频模块图3-14 百米判断分频模块流程图流程图分析:初始化输入输出,设置好变量类型,在clk1来的时候检查clr是否开通,没开通就把里程寄存器清零,不然co就开始计数里程并给dis1,1米里程脉冲clk1计到1000时清零重新计数,co1就加一计数,它计的是千米信号赋给dis,当检测到dis1在第一次的100米之前con就清零,否则con标志位就置一,以为后面来了clr复位信号时,读取con值已决定要不要计费。仿真波形:图3-15 百米判断分频模块仿真波形一以上仿真图清楚的看到标志位con的百米标志效果。图3-16 百米判断分频模块仿真波形二这幅仿真图直观的表

39、现出来分频的效果。百米判断是在复位信号clr为高电平即不复位时,每来一个1米里程计数脉冲clk1,co就自动加一计数,计到100次的话就说明行驶的路程dis1达到了100米,con(百米标志位)就从0变为1,这时就开始计总费用,没计到100次就结束(复位时)就不用计费,等待下一个人乘坐出租车才开始计费。在一般的情况下,我们假设速度为90km/h,所以默认情况下,1米脉冲的周期为40ms。千米脉冲的周期为40s。另外还包括了分频功能,co计到1000时即里程计到1km时co1就自动加一,co1的值赋给dis,dis的里程单位就为千米,这就达到了分频的效果,以便于其他模块的连接调用等。由于我们只用

40、到了1米和1千米的里程脉冲,所以我们只是分频了这一次的里程脉冲信号。3.2.5 白天深夜计费控制模块图3-17 白天深夜计费控制模块图3-18 白天深夜计费控制模块流程图流程图分析:开始初始化输入输出,设置好变量类型,在千米里程脉冲clk1来了之后判断disu信号是否为0,不是的话则进入到等待时间计费模块,此时的费用寄存起来等待下一次的有效信号到来计算里程费用。是就判断clr是否有效,无效则这个模块的费用单位全清零,有效则计数里程,然后通过读取白天深夜标志位p来确定进行那种计费体制,最后输出所计算的费用。仿真波形:图3-19 白天深夜计费控制模块仿真波形一此模块的主要功能是实现实时计费的控制,

41、clk1为千米脉冲,我们默认的速度是1km/40s,所以设置的周期是40s,clr是复位信号,此信号在有人乘出租车时开通,乘客下时clr复位,一切费用,里程清零。在这之前用到了disu信号,当其为1时表示速度低于4m/s,此时启动的是等待时间累加计费,而不是里程计费,所以这模块的费用在disu=1时保持不变。p为白天深夜的标志位,p为1,表示在深夜,启动深夜的计费标准,p为0,表示在白天,启动白天的计费标准,在clr开通的情况下,在读取p的值,以确定启动哪个标准计费,co为千米个数计算,里程dis就是数值co千米,费用是根据里程来确定,具体的标准为: 白天(早上5点到夜里11点)标准:行程3公

42、里内,起步价为4元,行驶里程满3km但不超过11km时,每公里收费1.4元,超过11km,每公里收费2.1元。深夜(夜里11点到早上5点)标准:起步价为8元,11km内的里程每公里收费2元,超过11公里,每公里收费3元。 图3-20 白天深夜计费控制模块仿真波形二第一份仿真图是在p全为0的情况下,启动的是白天计费,第二个仿真图是p为变值的不同计费,有白天有深夜,而且为了使白天深夜计费分开,clr还清了一次零,这里不但综合了disu为0和1的不同情况,p也试验了不同的值来仿真,使得结果更具有说服力。这里有一个问题没有解决,就是当时间段跨越了白天深夜的时候,那费用就按后一标准计算,在这里,还有待改

43、进。我们仿真时是靠clr清零来实现的。本计价器的显示范围为09999元,计价分辨率为01元;计程器显示范围为099公里,分辨率为1公里;计时器24小时计时,分辨率为1秒钟。由于起步费要求在开始计费时屏幕上就要显示,P是白天和深夜的判别信号,fee为动态变化的总费用,每走完一公里就给clk1端一个信号,自动计费模块根据不同状态自动计费一次,co自加1,clr是启动和停止的输入端,它一方面控制计费的开始和停止,另一方面起到清零作用,且只当第二次启动的瞬间才清零,fee把计算的里程费用值累加后输出给总额计算端的一部分。3.2.6 总里程计费控制模块由于分频的输入,我们在这个模块综合了百米分频和计费控

44、制的模块,组成统一的里程计费模块,这里除了分频信号好连接输入外,还综合了百米计费与一般计费,这样的话,我们就可以更加直观的看出计费的实现原理了。综合生成的里程计费图:图3-21 总里程计费控制模块仿真波形:图3-22 总里程计费控制模块仿真波形一 这个仿真图说明了如果乘客上车没计到100米里程就下车的话,就不收费用。等待下次的clr开通重新计数。图3-23 总里程计费控制模块仿真波形二这个仿真图除了说明了con的百米标志作用外,还综合了白天的计费。说明了在下一个开通信号clr高电平时,又得开始计到100米才计算费用,后面的里程按平时的白天深夜计费。由于p选取的是白天,所以按照白天的计费标准开始

45、计里程费用。 这两个模块的综合其实是调试出来的一个程序模块,以更加形象直观的体现其计费功能。图3-24 总里程计费控制模块仿真波形三这个仿真图的功能较全,有当clr为0时,全部用到的寄存器和费用都清零,当disu信号为1时,所有有关的里程计费单元都保持不变,直到disu信号又为0才开始又计数里程及里程费用,还有就是白天深夜标志位p的变化,其为0时,启动白天计费标准,为1时,启动晚上计费标准,这些都可以再这幅仿真图上看出来。3.2.7 统计总费用模块其实就是把总里程计费fee2与等待时间计费fee3相加起来,就是总的费用了。这里还要注意clr的复位作用,当clr为零,总费用fe清零。图3-25

46、统计费用模块仿真图:图3-26 统计费用模块这里主要是实现最后的费用统计,fee2是里程计的费用,fee3是等待时间累加转化的费用,在clr有效的前提下,两费用相加即为总统计费用。3.2.8 超速报警和低速指示部分模块下面是超速报警和低速指示部分的电路原理图图3-27:图3-27 超速报警和低速指示部分的电路原理图由于FPGA 芯片的输出电压是3.3V 且电流很小,无法正常驱动发光二极管,所以使用了两个NPN 的三极管作为开关驱动发光二极管。从速度计算及判断模块里面读取速度的值,当速度低于4m/s时,低速信号disu输入高电平,黄色的低速指示灯亮起;当速度高于48m/s 时,超速信号gaosu输入高电平,此时红色指示灯亮起,并发出声光报警,提示司机要减速,安全行驶。4 调试分析4.1 综合生成的原理图下面为综合生成的原理图:图4-1 综合计费模块这与我们之前的模块框图是对应的,每个模块的功能前面已经介绍了。把它们相应的信号连接起来就形成了总计费原理图。综合仿真的图形:图4-2 综合计费仿真图一上面两图其实是一个仿真图,为了更清楚的看到结果,我截成了两份。在这一份仿真图里面,clr为复位信号,在高电平时才有效,clk为1秒时间脉冲,clk1为1米里程脉

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号