




文档简介
上海交通大学 硕士学位论文 基于fpga的出租车计费器设计 姓名:茅丰 申请学位级别:硕士 专业:软件工程 指导教师:郭炜 20070101 基于基于 fpga 的出租车计费器设计的出租车计费器设计 摘要摘要 本文介绍了一种采用单片 fpga 芯片进行出租车计费器的设计方法,主 要阐述如何使用新兴的 eda 器件取代传统的电子设计方法,利用 fpga 的 可编程性,简洁而又多变的设计方法,缩短了研发周期,同时使出租车计费 器体积更小功能更强大。本设计不仅实现了出租车计费器所需的一些基本功 能,同时考虑到出租车行业的一些特殊性,更注重了把一些新的思路加入到 设计中。主要包括采用了 fpga 芯片,使用 vhdl 语言进行编程,使其具有 了更强的移植性, 更加利于产品升级; 利用 lcd 液晶显示取代了传统的 led 显示, 使其在显示时更灵活多变, 可以按需要改变显示内容而不拘泥于硬件; 灵活的计价标准设定使得油价波动等成本因数和出租车价格联动成为可能; 同时也增加了统计功能、密码设定、超速警报、路桥费等新的功能使得本设 计更加具有实用价值。 关键字:关键字: 出租车计费器,fpga,max+plus,vhdl 语言,多功能 基于 fpga 的出租车计费器设计 2 2 design of taxi meter based on fpga abstract this 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.the develop period can be short because of the programmable fpga and the design method which is simple and variable. it can also make the taxi count meter smaller and more functional.besides the basic functions of taxi count meter, some new ideas are added concerning about the particularity of this calling. it becomes more transplantable and easier to upgrade by using of the fpga and programming with vhdl language.replacing the traditional led with lcd make the display more flexible and can be displayed according to which is needed and wont be limited by the hardware. the linkage between the cost factors which can be influenced by oil and the taxi cost may be possible through the flexible setting of the cost calculation standard. this method can be more practical by adding some new functions including statistic function, password setting, overspeed alarm and bridge travel expenses. key words: taxi meter,fpga, max+ plus,vhdl, multiple function 附件四 上海交通大学 学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下, 独立进行研究工作所取得的成果。除文中已经注明引用的内容外, 本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式 标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 易牟 。7 ,r 日期:仉c7 m 弓月l , c 日 附件五 上海交通大学 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定, 同意学校保留并向国家有关部门或机构送交论文的复印件和电子 版,允许论文被查阅和借阅。本人授权上海交通大学可以将本学位 论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或扫描等复制手段保存和汇编本学位论文。 保密口,在年解密后适用本授权书。 本学位论文属于 不保密0 。 ( 请在以上方框内打“4 “ ) 指导教师签名: 钎婶 日期:2 v u 年弓月泸日 。巾pi 彦八 咽 名 月 签 弓 者 手 懈 许 文 仉 论 : 位 期 学 日 基于 fpga 的出租车计费器设计 1 1 1 引言 最近几年出租车行业发展迅速, 在全国有几千家出租车公司, 因此出租车计费器的市 场是庞大的。 由于受到油价影响各大城市都推出了运价油价联动机制, 所以出租车计费器 计价标准的灵活设定成为未来计费器不可缺少的一部分。而上海的出租车运价是 1993 年 制定的,1998 年做过微调,可见已经有近 10 年没有变动了,所以现在的计费器都没有把 灵活设定计价标准的功能加入其中,以至于出现了更改计价标准时要取下芯片重新烧录, 据可靠统计每台计费器更换标准以及调试所需时间为 1 小时, 全上海的出租车计费器修改 历时 1 个月。现在计费器大多数以单片机为平台的,但是单片机程序是不通用的,不同的 芯片有不同的指令集,因此设计研发比较困难。而 fpga 等数字可编程器件的出现彻底 解决了这个问题,而且性能更稳定、设计更灵活、能实现较复杂的功能,运用 eda 软件 可方便的在电脑上实现设计与仿真。本设计基于 fpga 的出租车计费器主要由 altera 公 司的 acex 系列芯片 ep1k100qc208-3、 hd44780 控制的 lcd 及一些外部控制电路组成。 使用软件 max+plus 和超高速硬件描述语言 vhdl 来实现 lcd 显示(包括时钟、车速、 等待时间、行驶路程、桥路费、总费用、开始计费和停止、参数设定菜单以及营运额统计 显示切换)、计价标准灵活设定、按白天深夜不同计价标准自动计费、统计功能、密码设 定、模拟车轮驱动、超速警报、开机动画等功能。fpga 是电子设计领域中最具活力和发 展前途的一项技术,未来必定会取代部分落伍的数字器件。 基于 fpga 的出租车计费器设计 2 2 2 概述 2.1 方案论证 2.1.1 出租车计费器现状和挑战 2.1 方案论证 2.1.1 出租车计费器现状和挑战 最近几年出租车行业发展迅速,在全国有几千家出租车公司,出租车计费器的市场非 常庞大。 目前市场上使用的出租车计费器主要采用的都是利用 mcu 如 89c51 单片机实现 的计费器设计,显示方式上主要采用的是固定显示内容的 led 显示。如图 1 所示 图 1 传统 led 显示的计费器 传统的出租车计费器由于发展使用了十几年,在稳定性、成本、以及使用习惯上都具 有一些优势,但是随着出租车价格市场化,我国加入 wto 以来主导出租车行业成本的许 多因素主要包括油价的波动,都对传统的出租车计费器提出了更高的要求。近一年来,各 大城市都在对出租车价格进行调整, 由于数量太多, 很多城市的调价甚至需要一个月的时 间才能完成, 经常会同一时间出现几个价格, 有的城市的出租车上还会出现司机人工计价 的尴尬情形。这些都暴露了传统计费器在灵活性和升级换代能力的天生不足。 传统计费器的不足可以体现在以下几点: 1产品更新周期长 传统计费器利用 mcu 如 89c51 单片机实现汽车计费器的设计,大部分的功能可以用 单片机来实现。但是单片机程序是不通用的,不同的芯片有不同的指令集,因此设计研发 比较困难,周期长。如果系统设计的不好,则系统不是很稳定,而且灵活度不够,不易实 现功能复杂的设计。 2计价方式的不灵活 每次计价标准的修改都需要将芯片从新烧录,使得每次调价都需要耗费大量的人力物 力,很难达到目前油价联动的需求。 3显示方式的不灵活 由于传统计费器采用 led 显示,看似简单、方便,但是这种方式要求计费器外形设计 基于 fpga 的出租车计费器设计 3 3 固定化,如果需要改变显示内容,甚至需要整个设备的更换,不利于产品的理想升级。 这些都体现了目前对出租车计费器市场更新换代的需求。 2.1.2 解决方案 2.1.2 解决方案 考虑到目前出租车行业迅猛发展的趋势以及对计费器更高的灵活性要求, 本设计希望 尝试一些新的方法来予以解决。 1 利用 fpga 取代 mcu 随着 fpga 等数字可编程器件的出现解决传统电子设计不能完成的任务, 利用 fpga 来实现出租车计费器。可行性很高,而且电路简单,大大减少外围器件,可以用软件完全 仿真, 灵活度高, 可以设计一些复杂的系统, 而且编好的系统可以在不同的 fpga 或 cpld 芯片上通用。fpga 能完成任何数字器件的功能,使用 fpga 来开发数字电路,可以大大 缩短设计时间,减少 pcb 面积,提高系统的可靠性。 同时由于 fpga 的功能完全取决于 vhdl 语言编写的程序,不拘泥于某种芯片的特 殊指令,更加提高了产品的更新换代能力。 2 利用 lcd 取代 led 由于液晶的显示内容的可编程性, 使其具有 led 不可替代的灵活性和完善的升级能力, 出租车计费器在需要改变显示方式和内容时不需过多考虑外形设计,只需在 fpga 程序 中改动即可。同时液晶价格的持续走低,都使 lcd 取代 led 成为可能。 3 增加计价标准设定功能 通过设计此功能模块可以使得计价标准设计更加灵活,体现目前出租车行业发展的需 要,使运价、油价联动成为可能 2.2 fpga 介绍2.2 fpga 介绍 2.2.1 fpga 发展状况2.2.1 fpga 发展状况 fpga 是现场可编程门阵列(field programable gate array)的简称,fpga 是电子设 计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于 70 年代单片机的发明和 使用。 actel 公司于 2005 年 1 月 24 日在美国加利福尼亚总部发布了它的 proasic3 和 proasic3e 系列的 fpga。这是该公司第三代的基于 flash 的可编程逻辑方案。这些新的 基于 fpga 的出租车计费器设计 4 4 proasic3 最低价将达到 1.5 美元, 代表了全球最低成本的 fpga, 并且相对于基于 sram 的 fpga 来说具有保密的优势。基于 flash 的 fpga 可以提供加密、低功耗、上电工作、 可重复编程的方案。 而最近 lattice 公司发布了其新一代 90nm 高性能 fpga:latticesc 系列。 该系列 fpga 采用日本富士通 cs100a 90nm 工艺制造,集成了 3.4gbps 高速 serdes 模块,多 种形式的嵌入式 ram,以及嵌入式定制 asic 模块。逻辑容量从容量从 1 万 5 千到 11 万 5 千个 luts。 该系列将成为 lattice 公司目前性能最高的 fpga 主攻高速系统应用领域。 从这些都可以看出可编程器件已成为现在及未来很长一段时间的主流, 用它来实现出 租车计费系统可以省去很多外围电路, 稳定, 简单有效, 可以设计出很多复杂强大的功能, 提高产品竞争力。 2.2.2 fpga 的结构与原理 2.2.2 fpga 的结构与原理 目前生产 fpga 的公司主要有 xilinx、altera、actel、lattice、quicklogic 等,生产 的 fpga 品种和型号繁多。 尽管这些 fpga 的具体结构和性能指标各有特色, 但它们都有一 个共同之处,即由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块,从 而实现不同的设计。 典型的 fpga 通常包含三类基本资源: 可编程逻辑功能块、 可编程输入/输出块和可编程 互连资源。 可编程逻辑功能块是实现用户功能的基本单元, 多个逻辑功能块通常规则地排 成一个阵列结构,分布于整个芯片;可编程输入/输出块完成芯片内部逻辑与外部管脚之 间的接口, 围绕在逻辑单元阵列四周; 可编程内部互连资源包括各种长度的连线线段和一 些可编程连接开关,它们将各个可编程逻辑块或输入/输出块连接起来,构成特定功能的 电路。 用户可以通过编程决定每个单元的功能以及它们的互连关系, 从而实现所需的逻辑 功能。不同厂家或不同型号的 fpga,在可编程逻辑块的内部结构、规模、内部互连的结 构等方面经常存在较大的差异。 除了上述构成 fpga 基本结构的三种资源以外, 随着工艺的进步和应用系统需求的发展, 一般在 fpga 中还可能包含以下可选资源: 存储器资源(块 ram、分布式 ram) ; 数字时钟管理单元(分频/倍频、数字延迟、时钟锁定) ; 算数运算单元(高速硬件乘法器、乘加器) ; 多电平标准兼容的 i/o 接口; 高速串行 i/o 接口; 基于 fpga 的出租车计费器设计 5 5 特殊功能模块(以太网 mac 等硬 ip 核) ; 微处理器(powerpc405 等硬处理器 ip 核) 。 下面以 xilinx 公司的spartan-ii系列以及altera公司的cyclone-ii系列fpga为例, 介绍 fpga 的一般结构。 xilinx 公司的 spartan-ii 系列 fpga 器件的基本结构如图 2 所示。 主要包括 5 个可配置部分: (1)可配置逻辑块(configurable logic blocks,clbs) ,用 于实现大部分逻辑功能; (2)在 clbs 的四周分布着可编程的输入输出块(input/output blocks,iobs) ,提供封装引脚与内部逻辑之间的连接接口; (3)丰富的多层互连结构的 可编程连线(未画出) ; (4)片上的随机存取块状 ram(block ram) ; (5)全数字式延迟 锁相环(dll)时钟控制块,与每个全局时钟输入缓冲器相连,该闭环系统确保时钟边沿 到达内部触发器与其到达输入引脚同步,有效地消除时钟分配的延迟。 altera 公司 fpga 器件 cyclone-ii 系列主要包括: (1)逻辑阵列,由多个逻辑阵列块 (logic array blocks,labs)排列而成,用于实现大部分逻辑功能; (2)在芯片四周分 布着可编程的输入输出单元(input/output elements,ioes) ,提供封装引脚与内部逻辑 之间的连接接口; (3)丰富的多层互连结构的可编程连线(未画出) ; (4)片上的随机存 取块状 ram; (5)锁相环(pll) ,用于时钟的锁定与同步、能够实现时钟的倍频和分频; (6)高速的硬件乘法器,有助于实现高性能的 dsp 功能。 altera 的 acex 等芯片的结构如图 2: 基于 fpga 的出租车计费器设计 6 6 图 2 acex 等芯片的结构 目前绝大部分 fpga 都采用查找表(look up table,lut)技术,如 altera 的 acex、 apex、cyclone、stratix 系列,xilinx 的 spartan、virtex 系列等。这些 fpga 中的最基 本逻辑单元都是由 lut 和触发器组成的。 查找表简称为 lut,本质上就是一个 ram。目前 fpga 中多使用 4 输入的 lut,所以每 一个 lut 可以看成一个有 4 位地址线的 16x1 的 ram。当用户通过原理图或 hdl 语言描述 了一个逻辑电路以后,fpga 开发软件会自动计算逻辑电路的所有可能的结果,并把结果 事先写入 ram。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出 该地址对应的内容,然后输出即可。 由于 lut 主要适合 sram 工艺生产,所以目前大部分 fpga 都是基于 sram 工艺的。而 sram 工艺的芯片在掉电后信息就会丢失,因此需要外加一片专用的配置芯片。在上电的 时候,由这个专用配置芯片把数据加载到 fpga 中,fpga 就可以正常工作。少数 fpga 产 品采用反熔丝或 flash 工艺,掉电后配置信息不会丢失,因此这种 fpga 芯片不需要外加 的专用配置芯片。 查找表(look-up-table)的原理与结构:查找表(look-up-table)简称为 lut,lut 本 质上就是一个 ram。 目前 fpga 中多使用 4 输入的 lut,所以每一个 lut 可以看成一 个有 4 位地址线的 16x1 的 ram。 当用户通过原理图或 hdl 语言描述了一个逻辑电路 以后,pld/fpga 开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入 基于 fpga 的出租车计费器设计 7 7 ram,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应 的内容,然后输出即可。 下面是一个 4 输入与门的例子。 表 1 四输入与门的例子 实际逻辑电路 lut 的实现方式 a,b,c,d 输入 逻辑输出 地址 ram 中存储的内容 0000 0 0000 0 0001 0 0001 0 0 . 0 1111 1 1111 1 2.3 vhdl 硬件描述语言 vhdl 的英文全名是 vry_high_speed integrated circuit hardware description language,被认为是标准硬件描述语言,有专家认为,在新世纪中,vhdl 与 verilog hdl 语言将承担起几乎全部的数字系统设计任务。 vhdl 主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特 征的语句外, vhdl 的语言形式和描述风格与句法十分类似于一般的计算机高级语言。 vhdl 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一 个系统)分成外部(或称可视部分,即端口)和内部(或称不可视部分) ,即设计实体的 内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦内部开发完成后, 其他的设计可以直接调用这个实体。这种将设计实体分成内外部分的概念是 vhdl 系统设 计的基本点。 使用 vhdl 设计系统方法是自顶向下的系统设计方法,在设计过程中,首先是从整体 上对系统设计作详细的规划,然后完成电路系统功能行为方面的设计。 基于 fpga 的出租车计费器设计 8 8 其设计流程如图 3 图 3 vhdl 工程设计流程 随着 eda 技术的发展,使用硬件语言设计 fpga 成为一种趋势。借用 maxplusii 或 quartusii 等软件用 vhdl 语言开发 fpga 的完整流程为: (1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的 hdl 编辑环境。 通常 vhdl 文件保存为.vhd 文件。 (2)功能仿真:将文件调入 hdl 仿真软件进行功能仿真,检查逻辑功能是否正确 (也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真) 。 (3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔 表达式和信号的连接关系。逻辑综合软件会生成.edf(edif)的 eda 工业标准文件。 (4)布局布线:将.edf 文件调入 pld 厂家提供的软件中进行布线,即把设计好的逻 辑安放到 pld/fpga 内。 (5)时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时 序(也叫后仿真) 。 (6)编程下载:确认仿真无误后,将文件下载到芯片中。.sof 文件用于直接下载到 芯片(掉电后会消失) ,.pof 文件用于 rom 芯片下载(掉电后不消失) 。 2.4 ep1k100 芯片简介 2.4 ep1k100 芯片简介 本设计采用的fpga芯片ep1k100qc208-3是altera公司推出的新型芯片系列acex 1k 系列。acex 1k 系列器件具有以下特性: (1)采用查找表 lut 和 eab 相结合的结构模式, 可提供高效低功耗的优良性能。 因为 lut 结构适用于实现高效的数据通道、增强型寄存器、数学运算及数字信号处理设计,而 eab 结构可实现复杂的逻辑功能和存储器功能。 (2) 密度高,典型门数为 1 万到 10 万门,有多达 49152 位的 ram(每个 eab 有 4096 个 ram) 。 (3)系统内核采用 2.5v 电压,i/0 脚可支持 2.5v3v5v 多电压标准;器件功耗低; 基于 fpga 的出租车计费器设计 9 9 具有高达 250mhz 的双向 i/0 功能; 完全支持 33mhz 的 pci 总线标准; 内置 jtag 边界扫描 电路;不需测试矢量和扫描链即可对所有器件进行 100%的功能测试。 (4)具有快速连续式延时可预测的快速通道互连;能实现快速加法器、计数器和比较 器等算术运算功能; 具有专用链和实现高速多扇入逻辑功能的专用级链; 具有能实现内部 三态总线的三态仿真;具有多达 6 个全局时钟信号和 4 个全局清除信号。 (5)每个引脚都有独特的三态输出使能控制;可编程输出的压摆率控制可以减少电平 转换产生的噪声; 引脚与引脚间具有用户可选的钳位电路; 支持热插拔操作。 下表为 acex 系列芯片主要参数。 表 2 acex 1k 系列芯片参数 device ep1k10 ep1k30 ep1k50 ep1k100 typical gates 10,000 30,000 50,000 100,000 maximum system gates 56,000 119,000 199,000 257,000 logic elements 576 1,728 2,880 4,992 embedded array blocks (eabs) 3 6 10 12 maximum ram bits 12,288 24,576 40,960 49,152 speed grades -1, -2, -3 -1, -2, -3 -1, -2, -3 -1, -2, -3 package (mm) maximum user i/o pins 100-pin tqfp 66 144-pin tqfp 92 102 102 208-pin pqfp 120 147 147 147 基于 fpga 的出租车计费器设计 10 10 3 出租车计费系统设计说明出租车计费系统设计说明 3.1 出租车计费方式 由于各地出租车计价情况的不同, 本设计主要依据上海市出租车计价情况作为参考依 据。先来了解一下上海市出租车是如何计费的: 表 2 上海旧计费标准(预设) 白天 5:0023:00 深夜 23:005:00(加收 30%) 起步 10 元 (3km) 起步 13 元 (3km) 2 元/km (超过 3km) 2.6 元/km (超过 3km) 3 元/km (超过 10km 加收 50%) 3.9 元/km (超过 10km 加收 50%) 每 5 分钟计为 1 公里 (当车速低于 12km/h) 总 额 桥路费、电调费 (如有此费用时) 表 3 上海新计费标准 白天 5:0023:00 深夜 23:005:00 (加收 30%) 起步 11 元 (3km) 起步 14.3 元 (3km) 2.1 元/km (超过 3km) 2.7 元/km (超过 3km) 3.2 元/km (超过 10km 加收 50%) 5.1 元/km (超过 10km 加收 50%) 每 5 分钟计为 1 公里 (当车速低于 12km/h) 总 额 桥路费、电调费 (如有此费用时) 从上面两表可以看出目前出租车行业由于调价、路桥、夏季电调、燃油费波动等诸多因 数要求出租车计费器在价格调节方面做到灵活可靠,易于操作等特点。 3.2 总体框架设计 系统流程介绍:系统主要由电动机驱动模块、lcd 显示模块、计费标准设定模块、 自动计费模块、统计模块和时钟模块等组成。 首先由电动机驱动模块控制步进电机运转来模拟出租车车轮,速度值通过车速比较 器判断是否低于12km/h,如低于12 km/h则进入计时状态 (依照预设值每5分钟计为1km) , 基于 fpga 的出租车计费器设计 11 11 如果高于 180km/h 则发出车速过高的声光报警, 车速在 12 到 180km/h 之间的则进入计程 状态,根据车轮的大小不同每 km 计的次数也不同,计程和计时通过选通模块自动选择 输出到自动计费模块,计程和计时同一时刻只会有一个处于运行状态。时钟模块给自动 计费模块一个信号判断是白天还是深夜,自动计费模块会按照不同的计费标准自动调节 计费。计费标准设定模块包括密码设定(只有密码正确后才能进行计费设定)、白天的 起步费、单位里程费、过 10km 后的空载加收费、深夜加收后的起步费、单位里程费、 过 10km 后的空载加收费、低速行驶等待时间以及车轮大小设定,总共 9 个可设定部分。 设定好的数值分别送到自动计费模块、计时模块和计程模块。按下计费启动键后利用电 容的瞬间充电过程来清零上一次的计费数值,此后开始自动计费,按下计费停止键后计 费终止,统计模块自动执行保存记录。lcd 显示模块包括 lcd 驱动部分、lcd 选通部 分、lcd 译码部分、二进制转 bcd 码部分,最终界面上会显示时钟、车速、等待时间、 行驶路程、桥路费或电调费、总费用、开始计费和停止、参数设定菜单以及营运额统计 显示切换、开机动画等。 下面是基于 fpga 的出租车计费器的系统框图: 基于 fpga 的出租车计费器设计 12 12 图 4 出租车计费器系统设计框图 基于 fpga 的出租车计费器设计 13 13 4 fpga 程序设计 4 fpga 程序设计 4.1 lcd 显示设计 4.1.1 4.1 lcd 显示设计 4.1.1 字符型液晶介绍 本设计采用 20 列 x4 行的字符型液晶,能同时显示 80 个字符。lcm 由字符型液晶 显示屏(lcd)、控制驱动电路 hd44780 及其扩展驱动电路 hd44100 等组成,具有若 干个 5x7 或 5x10 点阵组成的字符集,可显示 192 种字符,还具有 64 个字节的自定义字 符 ram。 hd44780 是字符型 lcm 的控制器,分为控制部分和驱动部分。控制部分产生内部 工作时钟,控制着各个功能电路的工作,管理着字符发生器 cgram 和 cgrom,显示 存储器 ddram。其中 cgrom 为已固化好的字符库,cgram 为可随时定义的字符库, 根据用户的不同的定义可调出所需要的字符。mdls 系列字符型 lcm 电路框图如图 5 所示。 图 5 mdls 系列字符型 lcm 电路框图 此液晶模块有 16 个引脚,各引脚功能说明如表 4 所示: 基于 fpga 的出租车计费器设计 14 14 表 4 mdls 系列字符型液晶引脚说明 引脚号引脚号 符号符号 状态状态 功能功能 1 vss 电源地 2 vdd +5v 逻辑电源 3 v0 液晶驱动电源 4 rs 输入 寄存器选择 1:数据 ;0:指令 5 r/w 输入 读、写操作选择 1:读 ;0:写 6 e 输入 使能信号 7 db0 三态 数据总线(lsb) 8 db1 三态 数据总线 9 db2 三态 数据总线 10 db3 三态 数据总线 11 db4 三态 数据总线 12 db5 三态 数据总线 13 db6 三态 数据总线 14 db7 三态 数据总线(msb) 15 a 背光灯+5v 16 k 背光灯 gnd 4.1.2 指令集控制 hd44780 共有 11 条控制指令,我们只要对其中的 6 条指令进行控制就可以成功的显 示字符。这 6 条控制指令为: 1 功能设置 表表 5 功能设置功能设置 基于 fpga 的出租车计费器设计 15 15 2 清屏 表表 6 清屏清屏 3 显示开关控制 表表 7 显示开关控制显示开关控制 4 输入方式设置 表表 8 输入方式设置输入方式设置 5 ddram 地址设置 表表 9 ddram 地址设置地址设置 基于 fpga 的出租车计费器设计 16 16 6 写数据 表表 10 写数据写数据 4.1.3 fpga 控制的控制的 lcd 驱动设计驱动设计 图 6 fpga 控制的 lcd 驱动模块 大多数 lcd 驱动程序都是用单片机编写的,而我使用 vhdl 来实现它,事实证明一 样有效,而且更稳定。lcd 驱动主要用于控制六条指令,包括功能设置、清屏、显示开 关控制、输入方式设置、ddram 地址设置、写数据六个状态。这六个状态转换图如图 7 所示。 图 7 控制指令状态转换图 基于 fpga 的出租车计费器设计 17 17 其中写数据状态又分为四路, 每次只写入 1 行字符的数据, 所以走 4 圈才能全屏幕刷 新一次。下面是用 vhdl 编写的 lcd 驱动模块在 maxplus 中的仿真图,如图 8 所示。 图 8 lcd 驱动模块仿真图 从图中可以看出, 我已经对使能信号端 e 做了优化, 使其只有当数据端信号稳定不发 生跳变时才对数据进行读写操作,以此来防止写入不可靠的数据,造成错误。当 rs 为高 电平,e 为下降沿时开始写数据给 ddram。其中每一行 ddram 的首地址分别为:第一 行 00 0h、第二行 40 40h、第三行 14 14h、第四行 54 54h。 42 电机驱动模块设计 42 电机驱动模块设计 为什么出租车计费器当中会有这个模块呢?其实只是为了演示时更为直观而已, 用步 进电机来模拟出租车的车轮运动。 其硬件部分主要由步进电机驱动器和步进电机组成, 如 图 9 所示。 图 9 步进电机驱动器和步进电机 驱动器型号为 by-2hb02m,驱动两相步进电机,输入端依次为 cp(信号脉冲)、 u/d(正反转)、div(每脉冲所转角度调节,高电平为 9 度,低电平为 2.25 度)、sgnd 基于 fpga 的出租车计费器设计 18 18 (信号地)、vh(电机驱动电源,现使用+12v)、gnd(电机驱动电源地)。 360 度/ 9 度= 400 ,即每 400 个脉冲步进电机转一圈。现在设车轮周长为 1 米,则只 要给驱动器一个22.222khz的频率, 于是得出22.222khz/400x3600秒x1米=199.998km/h, 约为 200km/h。 现在将 22.222khz 分成每 200 个方波为 1 份, 然后对其调频, 比如说 80km/h 则让 200 个方波当中的 80 个方波通过,其余都为高电平,采用这种方法就可以轻松实现 调频,控制电动机的转速。下面是 vhdl 编写的模块框图,如图 10 所示。 图 10 电动机调速模块 由于此步进电机在 12v 供电时最高只能识别 2.3khz 的方波, 无法等同实际汽车的车 轮转速, 所以给电机一个基准频率 2.222khz, 这样步进电机转速为实际车轮转速的 1/10, 用来模拟出租车车轮。速度还是按照原来的 200 等分,即从 0km/h 到 200km/h 进行调速, 每次步进 1km/h。上面 up 和 down 用来增加和减少速度,输出两个,一个给电动机驱动 器,另一个给计程模块。下面是调速模块的仿真图,如图 11 所示。 图 11 步进电机调速模块的仿真图 基于 fpga 的出租车计费器设计 19 19 4.3 主要功能模块设计 4.3.1 车速比较模块 4.3 主要功能模块设计 4.3.1 车速比较模块 vhdl 编写的车速比较模块如图 12 所示。 图 12 车速比较模块 其中 p 为速度值输入端,当其值大于 180km/h 时汽车超速,high 端为高电平,发出 声光报警。当车速低于 12km/h 时 low 端为高电平,high 端为低电平,此时将进入计时状 态,车速大于 12km/h 小于 180km/h 时 low 端为低电平,high 端也为低电平,进入计程状 态。 4.3.2 计时模块 4.3.2 计时模块 图 13 计时模块 当速度低于 12km/h 时计时模块启动。输入端 clk 为 1hz,clr 为清零端(计费停止后 自动清零) ,time 为时间设定输入端(默认为每 5 分钟计为 1km,可设为其它值) 。输出 端 js60 送到显示部分计数,每 1 分钟一个上升沿,js 端送到计程计时选通模块,默认为 每 5 分钟计为 1km 送出一个高电平。 基于 fpga 的出租车计费器设计 20 20 4.3.3 计程模块 4.3.3 计程模块 图 14 计程模块 计程模块,计算出租车行驶路程,每行驶一公里输出端 jc 就发出一个上升沿给计程 计时选通模块。输入端 p 为车轮大小的设定值,根据车轮直径的不同,每转一圈行进路 程也不同,因此每公里计的 clk 次数也会不同,车轮越大计的 clk 数越少。clr 是 清零 端,每次计费结束后自动清零,保证下次计费的准确性。 4.3.4 计程计时选通模块 4.3.4 计程计时选通模块 图 15 计程计时选通模块 通过速度比较器的输出信号给计程计时选通模块的选通端sel就可以识别现在是应该 要把计程的信号输出给自动计费模块还是把计时的信号输出给自动计费模块。输出端 p 的每个上升沿都代表计了 1km。 基于 fpga 的出租车计费器设计 21 21 4.3.54.3.5 计程计时显示输出模块 图 16 计程计时显示输出模块 lcd 显示屏上会显示 0 到 999km 的路程和 0 到 99min 的时间。计程端有三位数字的 bcd 码输出,通过译码器成为 lcd 模块可以识别的 8 位数字编码。计时端则有两位数字 的 bcd 码输出,最大计时 99 分钟。清零端 clr 则通过下次按下计费启动键的瞬间清零, 因为计费停止后还要保持显示输出,让顾客和司机可以清楚地看到所有计费信息。 4.3.64.3.6 计费标准设定系统 图 17 计费标准设定系统 基于 fpga 的出租车计费器设计 22 22 由于受到油价影响, 很多城市都推出了油价运价联动机制。 所以说将来的计费器应当 具备灵活的计价标准设定功能。我设计的计费标准设定系统包括了:白天的起步费设定、 每公里价格设定、超出 10 公里后的加收设定,以及深夜的对应与上面三项的加收设定、 低速时的时间设定,车轮大小设定、密码保护设定,总共 9 项参数可以设定,可以说相当 全面和灵活。 首先通过设定选择按键,初始化时停留在密码设定选项,只有当密码输入正确后,按 下选择按键才能进行下面选项的设定。密码输入正确后 passout 会变为 1 送到 set 模块和 chelun 模块,否则为 0,禁止设定。setmux 是设定选通模块用于选通加减键给需要设定的 模块(u 为加,d 为减) 。通过自动加速模块可以让加减一开始加的慢,过了 4 秒后自动 变快, 一方面使得快速调到某个数值, 另一方面又可以精确定位到某个数值, 比较人性化。 4.3.74.3.7 去除按键抖动模块 图 18 按键去抖动模块 去除按键抖动的办法很多,我采用的是数字去抖动方法,即对按键进行扫描,去除抖 动不确定状态,提高按键的可靠性。可以用下面的图来解释其原理,如图 19 所示。 图 19 去除按键抖动原理图 基于 fpga 的出租车计费器设计 23 23 4.3.8 4.3.8 设置选择模块 图 20 设置选择模块 当 pass 端为 1 时才可以进行选择操作,an 为按键输入端,setout 为输出端从 000 到 111 给选通模块分别代表不同设置选项。 4.3.94.3.9 设置按键选通模块 图 21 按键选通模块 为了减少出租车计费器上的按键,为它做了一个按键选通模块。u 为加键,d 为减键, 当 sel 为 000 时把 u 给 u0、d 给 d0,以此类推,sel 为 111 则把 u 给 u7、d 给 d7。 表 11 sel 设定表 sel 输出 功能 000 u0、d0 密码输入的加减 001 u1、d1 白天起步费的加减 010 u2、d2 白天每公里路费的加减 011 u3、d3 白天过 10 公里后的空载加收费的加减 100 u4、d4 深夜起步费的加减 101 u5、d5 深夜每公里路费的加减 110 u6、d6 深夜过 10 公里后的空载加收费的加减 111 u7、d7 低于 12km/h 的计时时间设定的加减 基于 fpga 的出租车计费器设计 24 24 4.3.104.3.10 按键自动加速模块 图 22 按键自动加速模块 按键自动加速模块是一个非常人性化的功能设定, 通过自动加速模块可以让加减一开 始变化的慢,过了长按 4 秒后自动变快,一方面使得快速调到某个数值,另一方面又可以 精确定位到某个数值。当按下键后起初以 1hz 进行加,按住 4 秒后变为 4hz 的速度进行 加减。clk 输出自动变化的频率给加减模块,k 是累积端,累积 4 秒后不再发生变化,通 过 xor 端,当加键或减键停止后则自动使 k 累积的值清零,这样下次按下加键时就又从 1hz 开始加了。 4.3.114.3.11 密码设定模块 图 23 密码设定模块 为了防止司机或者别人随意改动计费标准的参数设定, 设置了一个密码保护模块。 up 和 down 为加减键,clk 为加减的快慢频率,只要按住加键后就会自动加了,word 是显示 输出端, 经过二进制转 bcd 码后就可以在界面上显示。 passout 为密码是否正确的输出端, 正确时输出 1 到选择端,进行参数设置。 基于 fpga 的出租车计费器设计 25 25 4.3.124.3.12 白天起步费设定模块 图 24 白天起步费设定模块 up 和 down 为加减键,clk 为加减的快慢频率,ds 为起步费输出端给自动计费模块, 它的初始值设为 10.0 元,每次可以加减 0.1 元进行设定,最大值为 99.9 元。 4.3.134.3.13 白天每公里费用设定模块 图 25 白天每公里费用设定模块 up 和 down 为加减键,clk 为加减的快慢频率,ds 为每公里价格输出端给自动计费模 块,它的初始值设为 2.0 元/km,每次可以加减 0.1 元进行设定,最大值为 99.9 元/km。 4.3.144.3.14 白天过 10 公里后加收费设定模块 图 26 白天过 10 公里后加收费设定模块 基于 fpga 的出租车计费器设计 26 26 up 和 down 为加减键,clk 为加减的快慢频率,ds 为加收 50%后的每公里价格输出端 给自动计费模块,它的初始值设为 3.0 元/km,每次可以加减 0.1 元进行设定,最大值为 99.9 元/km。 4.3.154.3.15 深夜起步费设定模块 图 27 深夜起步费设定模块 根据上海标准深夜 23:00 到凌晨 5:00 之间要加收 30%的费用。up 和 down 为加减 键,clk 为加减的快慢频率,ds 为起步费输出端给自动计费模块,它的初始值设为 10.0+10.0x30%=13 元,每次可以加减 0.1 元进行设定,最大值为 99.9 元。 4.3.164.3.16 深夜每公里费用设定模块 图 28 深夜每公里费用设定模块 根据上海标准深夜 23:00 到凌晨 5:00 之间要加收 30%的费用。up 和 down 为加减 键, clk 为加减的快慢频率, ds 为每公里价格输出端给自动计费模块, 它的初始值设为 2.6 元/km,每次可以加减 0.1 元进行设定,最大值为 99.9 元/km。 基于 fpga 的出租车计费器设计 27 27 4.3.174.3.17 深夜过 10 公里后加收费设定模块 图 29 深夜过 10 公里后加收费设定模块 根据上海标准深夜 23:00 到凌晨 5:00 之间要加收 30%的费用。up 和 down 为加减 键,clk 为加减的快慢频率,ds 为过 10 公里后加收 50%费用的每公里价格输出端给自动 计费模块,它的初始值设为 3.9 元/km,每次可以加减 0.1 元进行设定,最大值为 99.9 元 /km。 4.3.184.3.18 计时时间设定模块 图 30 计时时间设定模块 根据标准当车速低于 12km/h 时,不计路程,计时间。现在上海的计费标准是每 5 分 钟计为 1km。所以预设值为 5 分钟。可以在 0 到 7 分钟内每次加减 1 分钟进行设定。 基于 fpga 的出租车计费器设计 28 28 4.3.194.3.19 车轮大小设定模块 图 31 车轮大小设定模块 根据调查现在的出租车车轮大小主要有以下几种规格: 表 12 车轮直径规格与每 km 转的圈数对应表 车轮直径 50cm 52cm 54cm 56cm 58cm 60cm 圈数/km 636.6 612.1 589.5 568.4 548.8 530.5 当密码正确后,pass 端为 1,setout 把设定的车轮大小数值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学理化实验考试题及答案
- 成人教育考试题目及答案
- 关于新质生产力的面试真题
- 新质生产力智能制造概念
- 民族风俗习惯课件
- 宣传稿写作指南讲解
- 民族英雄班队会课件
- 五班级上学期班主任方案
- 新质生产力的主导力量分析
- 2025年麻醉学科肌松药物应用模拟考试卷答案及解析
- 2025年山东高考真题化学试题(原卷版)
- 第2课 教师节快乐 第2课时(课件)2025-2026学年道德与法治二年级上册统编版
- 2025年福建省福州市辅警考试题库(附答案)
- 2025年国家网络安全宣传周知识竞赛考试练习题库(完整版)含答案
- 绿化项目养护监理方案投标文件(技术方案)
- 科普短视频与新闻传播融合模式的研究
- 安徽省港航集团有限公司所属企业招聘笔试真题2024
- 2025秋新部编版一年级上册语文教学计划+教学进度表
- 《电力系统微机继电保护》课件-第五章 微机线路保护举例
- (2025)中小学“学宪法、讲宪法”知识竞赛题库(含答案)
- 2025年中国PC工业计算机(工控机)数据监测研究报告
评论
0/150
提交评论