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

合集下载

课程设计——基于FPGA的出租车计价器设计1

课程设计——基于FPGA的出租车计价器设计1

××大学××学院××课程设计基于FPGA的出租车计价器设计学生姓名学号所在系专业名称班级指导教师成绩××大学××学院二○一一年六月摘要:本文介绍了一个以Altera公司的CycloneII可编程逻辑芯片EP2C5T144C8为控制核心、运用VHDL硬件描述语言附加一定外围电路组成的出租车计费器系统。

本设计论文主要介绍了出租车计费器系统的组成及工作原理,简述了在EDA平台上用单片FPGA器件构成该数字系统的设计思想和实现过程。

同时,详细论述了人机交互驱动模块、驱动模块、计程模块、计费模块、译码动态扫描模块等的设计方法与技巧。

利用FPGA芯片实现一些功能较复杂的电子产品设计,不仅可以增加系统设计的灵活性,利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。

同时,在进行SOPC设计的时候,我们可以自由调用NIOS资源模块构建软核,从而减小了系统的功耗,实现产品的强大功能。

关键字:FPGA,VHDL,EP2C5T144C8,SOPCAbstract:Th is paper introduces a Altera company to CycloneII programmable logic chips EP2C5T144C8 as control core, useing VHDL hardware description language add a certain peripheral circuit of the message accounting device system of a taxi. This design paper mainly introduced the message accounting device taxi system composition and working principle, this paper expounds on the platform in EDA using single pill FPGA components, the digital system design thought and the implementation process. At the same time, discusses the human-computer interaction driver modules, driving module, taxi module, billing module, decode dynamic scanning module design methods and skills. Use the FPGA chip realize some function is more complex electronic product design, not only can increase the flexibility of the system design, use it for product development, not only the low cost, short cycle, high reliability, and with full intellectual property rights. Meanwhile, during the SOPC design, we can free calls NIOS resource module building soft nuclear, thus reduce power consumption, realizing products of the system of the powerful features.Key words: FPGA,VHDL,EP2C5T144C8,SOPC目录前言1.系统功能软件介绍 (1)1.1 QuartusII软件介绍 (1)1.2 FPGA芯片介绍 (1)1.3 硬件描述语言介绍 (2)2.总体方案设计 (3)2.1 系统框图 (4)2.2 基于MCU的出租车计费器 (4)2.3 基于FPGA的出租车计费器 (5)2.4 总体设计方案 (5)3.单个模块设计 (6)3.1 人机交互驱动模块 (6)3.1.1人机交互模块 (6)3.1.2人机交互模块仿真 (7)3.2 4x4矩阵键盘驱动模块设计 (7)3.2.1 4x4矩阵键盘模块 (8)3.2.2 4x4矩阵键盘仿真图 (7)3.3 二进制BIN转换成BDC(10进制)模块 (9)3.4 FILTER驱动模块设计 (9)3.5 PLS模块驱动设计 (10)3.5.1 PLS模块设计 (10)3.5.2 PLS模块设计仿真图 (11)3.6 出租车控制驱动模块设计 (11)3.7 顶层模块 (12)4.系统功能 ............................ 错误!未定义书签。

根据FPGA技术出租车计费器的设计

根据FPGA技术出租车计费器的设计

根据FPGA技术出租车计费器的设计FPGA(Field-Programmable Gate Array)技术在今天的电子设计领域中被广泛应用。

它具有灵活性、可编程性和可重构性等优点,使得它成为许多应用的理想选择,包括出租车计费器。

出租车计费器是乘客和司机之间的重要纽带,它负责计算乘客的乘车时间和里程,并据此计算出应支付的费用。

传统的出租车计费器通常是由硬件电路实现的。

然而,这种实现方式具有以下的缺点:1.难以适应不同的法定计费标准。

不同的地区和国家可能有不同的出租车计费标准,这就要求出租车计费器具有一定的可扩展性和灵活性。

而硬件电路实现通常是固定的,难以随意更改。

2.硬件电路实现复杂。

传统的出租车计费器通常需要使用多个电路组件,包括时钟、计数器、状态机等等。

而这些电路组件的设计和布线非常复杂,容易出现错误。

3.硬件电路实现不易维护。

一旦出现故障或需要更新,就需要重新设计和制造新的电路板,增加维护成本和周期。

为了解决这些问题,可以使用FPGA技术来设计出租车计费器。

通过将计费器的逻辑功能实现在FPGA芯片上,可以实现高度灵活、可编程和可重构的计费器。

首先,FPGA技术可以为计费器提供高度的可扩展性和灵活性。

使用FPGA芯片,可以将计费算法和计费标准的实现以软件的形式加载到FPGA 芯片上。

这意味着可以根据需要,随时更改计费算法和计费标准,以适应不同的地区和国家的法定计费标准。

这为出租车计费器的应用提供了更高的可定制性和可适应性。

其次,FPGA技术可以简化计费器的硬件电路设计。

使用FPGA芯片,可以将多个电路组件集成到一个单一的芯片上。

这种集成可以大大简化计费器的硬件设计和布线,减少错误和故障的风险。

同时,FPGA技术还提供了高级的图形化开发工具,如Vivado和Quartus,使得设计人员可以更快更轻松地完成计费器的设计和验证。

最后,FPGA技术可以提高计费器的可维护性。

使用FPGA芯片,可以通过简单地更新芯片上的软件,而无需重新设计和制造新的电路板。

基于FPGA的出租车计费系统的设计毕业设计

基于FPGA的出租车计费系统的设计毕业设计

基于FPGA的出租车计费系统的设计摘要随着我国市场经济的发展,交通也越来越便利,特别是计程车,以快捷、方便的特点早已盛行各个城市,成为城市交通的重要工具。

计程车市场从90年代初的起步阶段到现在已经进入了高峰期。

随着城市化水平的提高和人民生活水平的改善,计程车的服务也就显得越来越重要。

因此计程车计价器也就应运而生了。

在本设计中主要是通过VHDL语言来编程实现计费系统的四个功能块:分频模块,控制模块,计量模块和译码显示模块,最后使用MAX+PLUSII软件来对程序进行仿真,以模拟实现出租车的启动,停止以及等待等过程中的计时,计程和计费功能。

并将各功能模块的结果通过动态译码扫描模块输出到显示模块进行显示。

即通过显示模块显示出租车所行驶的路程,出租车等待的时间和出租车分别在等待过程中的费用和行驶过程中的费用。

关键字:VHDL语言;MAXPLUS II;出租车;计费器[键入文字]目录1绪论 (4)1.1研究的意义 (4)1.2当前国内外的研究现状 (4)1.3本课题的目的 (4)1.4本论文的章节安排 (5)2 VHDL和FPGA的简介 (6)2.1 VHDL的介绍 (6)2.2 FPGA的介绍 (6)3 Max+plusII平台简介 (8)3.1概述 (8)3.2 Max+plusII的特点 (8)4 设计方案的简介及比较 (10)4.1基于单片机出租车计费器设计方案 (10)4.1.1硬件各模块的功能 (10)4.1.2程序设计模块 (11)4.2基于FPGA的出租车计费器的设计方案 (11)4.3两种方案的比较 (12)4.4方案的确定 (12)5 出租车计费系统的设计 (13)5.1整体方案设计 (13)5.1.1设计的主要技术指标 (13)5.1.2整体设计方案的实现 (13)5.2模块的设计 (14)5.2.1秒分频模块 (14)5.2.2控制模块 (15)5.2.3计量模块 (16)5.2.4译码显示输出模块 (20)5.2.5整体原理与仿真 (22)5.2.6结果分析 (23)5.2.7结论 (23)[键入文字]1绪论1.1研究的意义随着我国市场经济的发展,交通也越来越便利,特别是计程车,以快捷、方便的特点早已盛行各个城市,成为城市交通的重要工具。

基于FPGA的出租车计程计费器项目教学设计

基于FPGA的出租车计程计费器项目教学设计

基于FPGA的出租车计程计费器项目教学设计一、项目背景计程车是城市交通中广泛存在的一种公共交通工具。

而计程车计价器则是计程车为乘客计价而使用的计量设备。

为了更好地实现计程车计价的准确性,本项目选取FPGA为开发平台,利用FPGA高速计算的特性,开发一个基于FPGA的出租车计程计费器。

二、项目设计1. 系统功能与架构本项目基于FPGA开发,主要由以下模块组成:(1)时钟模块:利用FPGA内置的PLL模块产生稳定的时钟信号。

(2)计时模块:利用时钟信号进行计时并输出当前时间。

(3)里程计算模块:监测车速并根据时间和车速信息计算行驶里程。

(4)费用计算模块:利用里程和起步价、里程单价等信息计算应收费用。

(5)LCD显示模块:将最终计费结果显示在LCD屏幕上。

2. 系统接口设计本项目需要与计费器外部的以下设备进行连接:(1)车速传感器:用于监测车速信息。

(2)计价器外部按钮/旋钮:用于设置起步价、里程单价等信息。

系统的流程主要包括以下步骤:(1)启动计程计费器,并设置起步价、里程单价等参数。

(2)开始计费器计价服务。

(4)根据设定的计价方式计算应收费用。

三、项目实现1. 硬件实现本系统的硬件部分主要包括FPGA芯片、LCD显示屏、车速传感器等。

其中,车速传感器通过FPGA的GPIO接口连接,LCD显示屏通过FPGA的SPI接口连接。

四、教学思路本项目适用于FPGA开发的初学者,重点在于让学生掌握FPGA芯片的使用方法和Verilog HDL语言的应用。

教学流程如下:(1)FPGA基础知识介绍介绍FPGA发展历程、FPGA基础结构、FPGA的编程思想等。

(2)FPGA开发环境构建介绍FPGA开发环境的构建方法,包括开发软件的安装、设备库文件的导入等。

(3)Verilog HDL语言基础介绍Verilog HDL语言的基本语法、数据类型、运算符、语句等。

(4)计程计费器项目开发按照项目设计,在FPGA开发环境中逐步搭建计程计费器系统,并进行相应的调试和优化。

基于FPGA的出租车计价器系统的设计【文献综述】

基于FPGA的出租车计价器系统的设计【文献综述】

文献综述电气工程及其自动化基于FPGA的出租车计价器系统的设计前言出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。

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

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

因此,汽车计价器的研究也是十分有一个应用价值的。

传统国内外出租车计价器多数由单片机实现,升级繁琐,成本高。

以出租车多功能计价器为例,传统的计价器常以MCS251系列单片机为其核心主控部件,如89C51RC2, LPD78F0034 等,该系列的单片机工作频率一般不大于24MHz,而且可扩展的资源有限,最大能够扩展的程序空间和内存空间一般都只有64kB,很难胜任出租车多功能计价器的不断升级要求。

传统的计价器通常采用硬件模块化的设计结构,主要包括主控模块,电源模块,按键显示模块,防作弊及脉冲输入模块以及税控模块等。

在主控模块中又包括CPU 子模块,语音识别子模块,串口通信子模块,复位、看门狗及电源监控子模块,打印子模块等,硬件电路复杂,不利于系统功能升级,容易在运营过程中产生干扰,影响系统的使用; 并且由于分立器件多,必然造成电源功耗大,芯片易发热,影响芯片的使用寿命。

基于FPGA的出租车计价器不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,特别是对小批量、多品种的产品需求,基于FPGA 的出租车计价器已成首选。

计费系统在各大、中城市出租车中使用越来越广泛。

针对现有计费系统通用性差的缺陷,本文采用ISP器件和VHDL语言开发了一套出租车计费系统;该计费系统的可靠性高、成本低、通用性强;该系统在不改变硬件电路的前提下,具有可以重构系统的功能,采用完全相同电路结构,只要根据各地区的需求在VHDL程序中设置各参数,就可以适应各地区出租车不同计费标准的需要,还可根据各地区需求增加其他功能。

正文文献[1-3]以单片机MC68HC705为核心控制芯片,该单片机片内带有8k字节EROM及304字节RAM,它采用统一编址方式,即所有I/O寄存器、数据存储器、程序存储器都处于同一地址空间,其指令系统简单,便于编程;I/O口可根据需要设定为输入或输出,因而是真正的双向I/O并行口;其特有的SPI(串行外围接口)功能可用来扩展各种I/O;此外,其独有的输入捕捉功能端记录外部发生事件非常方便。

基于FPGA的出租车计费器的设计

基于FPGA的出租车计费器的设计

基于FPGA的出租车计费器的设计目录一、实现功能概述 (2)1、基本功能 (2)2、扩展功能 (2)3、实现功能附图 (2)3.1 下载到DE0 (2)3.2 VGA显示部分 (3)二、模块设计 (4)1、基本功能模块 (4)1.1 模块图 (4)1.2 工作流程图 (5)2、VGA显示模块 (6)2.1 VGA显示原理 (6)2.2 VGA时序分析 (6)三、模块代码解析 (7)1、顶层模块(taxi.bdf) (7)2、里程计数器模块(distans_count.v) (8)3、时间计数模块(time_count.v) (9)4、控制模块(select_clk.v) (10)5、计费器模块(fee_count.v) (10)6、七段译码模块(divided_frequency.v) (11)7、切换模块(choose.v) (12)8、VGA显示模块(DE0_VGA.V、VGA_Ctrl.v、VGA_CLK.v、VGA_Pattern.v) (13)8.1 DE0_VGA.V (13)8.2 VGA_Ctrl.v (15)8.3 VGA_CLK.v (18)8.4 VGA_Pattern.v (20)一、实现功能概述1、基本功能●当行程不超过3km,且等待时间不超过两分钟时,按照出租车起步价(10元)计费。

●当行程超过3km时,按照2元/公里累加计费。

●当等待时间累计超过两分钟,按照1元/公里累加计费。

2、扩展功能●下载到DE0板子上,数码管显示时间、路程和费用。

计费器显示范围为0~999元,分辨率为1元;计程器显示范围为0~99km,分辨率为1km;计时器显示范围为0~59分钟,分辨率为1分钟。

●利用DE0板子上的VGA显示器接口做VGA动态实时显示计费状态及各个使能信号的状态,并且利用小车动画来直观的反映出出租车行驶火车停车等待的状态。

(在模块设计中有相应的附图)3、实现功能附图3.1 下载到DE0数码管计费数码管计里程及时间3.2 VGA显示部分VGA同步显示时间及里程、小车状态及按键状态VGA同步显示费用、小车状态及按键状态二、模块设计1、基本功能模块1.1 模块图等待时间计数模块行驶路程计数模块控制模块计费模块显示模块(数码管部分)时钟1.2 工作流程图基本模块的工作流程概述:出租车载客后,启动计费器,整个系统开始运行,进入初始化状态,即计程和计时从零开始,计费器从起步价10元开始。

基于FPGA出租车计费器设计报告(verilog)

基于FPGA出租车计费器设计报告(verilog)

出租车计费器一实验任务及要求1.能实现计费功能,计费标准为:按行驶里程收费,起步费为10.00元,并在车行3公里后再按2元/公里,当计费器计费达到或超过一定收费(如20元)时,每公里加收50%的车费,车停止不计费。

2.实现预置功能:能预置起步费、每公里收费、车行加费里程。

3.实现模拟功能:能模拟汽车启动、停止、暂停、车速等状态。

4.设计动态扫描电路:将车费显示出来,有两位小数。

5.用VHDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。

6.各计数器的计数状态用功能仿真的方法验证,并通过有关波形确认电路设计是否正确。

7. 完成电路全部设计后,通过系统实验箱下载验证设计的正确性。

计费器按里程收费,每100米开始一次计费。

各模块功能如下:(1) 车速控制模块当起停键为启动状态时(高电平),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;当处于停止状态时暂停发出脉冲,此时计费器和里程显示模块相应的停止计数。

(2) 里程动态显示模块其包括计数车速控制模块发出的脉冲以及将计数显示动态显示出来,每来一个脉冲里程值加0.1(控制器每发一个脉冲代表运行了0.1公里)。

(3) 计费动态显示模块其初值为10元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,并且计数显示动态显示出来,每来一个脉冲(代表运行了0.5公里)其数值加1元,当收费超过20时数值加1.5元。

三实验报告要求1.画出顶层原理图;2.用VHDL语言设计各子模块;3.叙述各子模块和顶层原理图的工作原理;4.给出各模块和顶层原理图的仿真波形图;5.给出硬件测试流程和结果。

四:设计说明:实际设计共五个模块,分别为分频模块(每一百米送一个脉冲以方便计数)、计算里程模块、里程取整模块(不足一公里的按一公里算)、计费模块、显示模块。

详细功能如下:1、分频模块:假设车轮每转一圈为2米,送一个脉冲,则需要50分频(共100米),同理,若知道车轮直径,即可算出分频比2、里程模块:每一百米记一次数,最大可以计999.9公里,精确到0.1公里。

基于FPGA出租车计价器设计

基于FPGA出租车计价器设计

题目:基于FPGA出租车计价器设计装订线基于FPGA出租车计价器的设计摘要本文介绍了一种采用可编程逻辑器件(FPGA/CPLD)进行出租车计价器的设计思想以及实现方法。

FPGA是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

另一方面采用可编程逻辑器件设计,外围电路简单,模块化设计方便,原理清晰,速度快,功能强,可靠性高,灵活性强,并且完成和扩展附加功能性强。

本设计实现了出租车计价器所需的一些基本功能,如计程、计时、计费、动态显示,其中计费金额包括起步价、里程计费、等待计时计费。

该设计采用模块化设计,自顶向下,在Quartus II9.0软件平台下,采用Verilog HDL 硬件描述语言分别设计了分频模块、计程模块、计费模块、计时模块,译码以及动态扫描显示模块的出租车计价器的五大模块,用原理图设计了顶层模块,对每个模块和主程序分别进行了仿真,并对仿真波形作了分析。

经过硬件下载验证,完成了出租车计价器分频模块、计程模块、计费模块、计时模块,译码以及动态扫描显示模块的设计实现。

关键词:FPGA;出租车计价器;Quartus II;Verilog HDLBased on the FPGA Design of Taxi MeterABSTRACTThis article describes the design ideas and methods of the taximeter, through the programmable logic device (FPGA/CPLD). Using programmable logic devices design on the other hand, peripheral circuit is simple, convenient modular design, the principle is clear, fast, strong function, high reliability, strong flexibility, and complete and additional functional extension. This design has realized the taxi meter required some basic functions, such as log, timing, pricing, dynamic display, billing amount fare and mileage charging, waiting for the timing. Through the Quartus II 9.0 Software Platform,using Verilog HDL language completed the description and simulation of frequency module, the meter module, Billing module, timing modules, decoding, dynamic scanning display module,for each module are simulated respectively and top-level module with schematic design , the simulation waveform were analyzed. After download validation hardware, completed the taxi meter divider module, log module, billing module, timing module, decoding and dynamic scanning display modules designed to achieve.Keywords: FPGA;Taximeter;Quartus II;Verilog HDL目录1 前言 (1)1.1 课题的来源及意义 (1)1.2 国内外发展状况 (1)1.3 研究的手段及目标 (2)2 总体方案设计 (3)2.1 方案论证与选择 (3)2.2 设计思想及原理 (4)3 FPGA、Verilog及QuartusⅡ开发环境的介绍 (6)3.1 现场可编程门阵列FPGA (6)3.2 硬件描述语言Verilog HDL (6)3.3 QuartusⅡ开发环境 (7)4 设计与仿真验证 (8)4.1 分频模块 (8)4.1.1 计程分频模块 (8)4.1.2 计时分频模块和计费分频模块 (9)4.1.3 数码管动态显示模块 (9)4.1.4 数码管动态显示模块仿真 (9)4.2 计程模块 (10)4.2.1 计程模块电路 (10)4.2.2 计程模块仿真 (12)4.3 计时模块 (12)4.3.1 计时模块电路 (12)4.3.2 计时模块仿真 (13)4.4 计费模块 (14)4.4.1 计费模块电路 (14)4.4.2 计费模块仿真 (15)4.5 数码管显示模块 (16)4.5.1 数码管显示模块电路 (16)4.5.2 数码管显示仿真 (17)4.6 整体顶层模块设计电路 (17)4.7 下载实现 (20)5 结论 (23)参考文献 (24)致谢 (24)附录 (25)1 前言1.1 课题的来源及意义本课题是在老师指导下,根据学校教学的需求和实际需要而开发的研究项目。

基于FPGA的出租车计费系统设计

基于FPGA的出租车计费系统设计
山西 电子 技 术 2011年 第 3期
软 件 技 术
文章 编 号 :1674-4578(2011)03—0063-02
基 于 FPGA的 出租 车计 费 系统设 计
张 慧
(盐城 纺织 职业技 术 学 院 ,江 苏 盐城 224005)
摘 要 :出租 车计 费系统 大 多利 用单 片机 进行 控 制 ,较 易被 改装 ,且故 障 率较 高。针 对 这一 问题 ,设 计 了一 种基 于 FPGA的 出租车计 费 系统 ,可模拟汽 车行 驶 、暂停等待 ,停 止等过 程 ,并 可 同时显 示金额 、乘车 总路 程 。设 计 采 用层 次 化 设 计 方 法 ,用 VHDL语 言进 行 编 程 ,开 发 软 件 为 MAX plusⅡ。 经 测 试 ,波 形 与 仿 真 结 果 都 满 足 设 计 要 求 。
1 系统功 能设计
所设计 的计 价器 的计费标 准为 :车在行驶 3 km以内 ,只 收起 步价 9.0元 ;车行 驶超 过 3 km后 ,按 每公里 2元 计费。 行驶路 程达 到或超过 9 km后 ,车 费按 每公里 3.0元开 始计 费。车遇 红灯 或 中途暂 停时 ,每 3分 钟计 0.5元 。若 停止 (rSt)则车费清零 ,等待 下一 次计 费 的开始 。要 求 能够 显示 里程数 和乘客应付 的费用 ,其 中里 程数 精确 到 0.01 km,乘 客应付 的费用精确到 0.1元 ,显 示范 围为 :里程 为 0~99.99 公 里 ,费用 为 0~999.9元 。
将各个模块按照输入输 出关系连接 ,顶层 电路原理 图如 图 2所示 。g[6…0]为七段显示码 输 出,通过动态 扫描依次 控制 8个数码管 的显示 ,dp为小数 点位 。

基于FPGA的出租车计费系统设计

基于FPGA的出租车计费系统设计

软件设计开发本栏目责任编辑:谢媛媛基于FPGA 的出租车计费系统设计张炯,陈初侠,操晓思,徐甫,欧阳凯(巢湖学院电子工程学院,安徽巢湖238000)摘要:该文基于FPGA 芯片EP1K30QC208-2进行了出租车计费系统设计。

首先从设计要求出发,将出租车计费系统分成多个子电路模块并用Verilog HDL 语言对其进行设计,然后调用已设计好的各子电路模块采用原理图方式进行顶层电路设计,最后将设计好的顶层电路下载到FPGA 芯片中进行硬件验证。

实验结果表明,所设计的出租车计费系统能动态显示出租车的行驶里程、等待时间和计费金额,具有一定的实用价值。

关键词:出租车计费;FPGA ;Verilog HDL 中图分类号:TP29文献标识码:A文章编号:1009-3044(2021)13-0093-03开放科学(资源服务)标识码(OSID ):众所周知,出租车在我们的生活中承担着非常重要的角色,一个具有良好性能的出租车计费系统不仅有助于加强行业管理,还可以减少乘客与司机之间的纠纷[1]。

出租车计费系统可以采用模拟电路和数字电路来实现,这种设计方法弊端是整体电路较复杂,而且出现故障时调试比较困难。

出租车计费系统也可以采用单片机来实现[2],但由于计费系统经常需要根据油价进行计费标准的相应更改,如果采用单片机,需要每次更改计费标准后再次烧录程序至单片机,费时费力[3]。

因此对出租车计费系统的更新换代迫在眉睫。

随着大规模可编程逻辑器件的出现,基于FPGA 设计的出租车计费系统逐渐显示其强大的性能,不仅具有很高的可移植性,而且需要更改电路时非常方便,如果计费标准变化,可以实现现场更新[3]。

本文以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(Verilog HDL)为主要表达方式,以Quartus Ⅱ开发软件和ZY11EDA13BE 开发系统为设计工具设计了一种能动态显示出租车计程、计时、计费的系统。

基于fpga的出租车计费系统设计原理

基于fpga的出租车计费系统设计原理

基于fpga的出租车计费系统设计原理下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!基于FPGA的出租车计费系统设计原理引言在现代城市交通中,出租车作为一种重要的交通工具,其计费系统的设计对于保障乘客权益、提高交通效率具有重要意义。

基于FPGA的出租车计费器

基于FPGA的出租车计费器

基于FPGA的出租车计费器摘要基于FPGA的出租车计费器设计摘要本文介绍了一种基于FPGA 芯片上实现出租车计价器功能的设计方法,主要阐述如何使用新兴的EDA 器件取代传统的电子设计方法,不仅实现了出租车计价器所需的一些基本功能,同时考虑到出租车行业的一些特殊性,更注重了把一些新的思路加入到设计中。

本设计主要借助了FPGA 芯片,使用Verilog HDL语言灵活编程来实现多方面的计费,这样不仅使其不拘泥于硬件,具有更强的移植性,而且增强了实用价值,更加利于产品升级。

本设计参考成都的出租车计费标准,利用Verilog HDL语言设计出租车计价器,主要具有行驶路程动态显示计费,等待累计时间计费及最后的总费用动态显示功能,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点。

此程序通过下载到特定的芯片后,可应用于实际的出租车计费系统中。

关键词:出租车计价器; 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 taxi 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 stronger portability, but also strengthens the use value, even more favors the product promotion.This design acts according to chengdu's rental car cost standard to design rental car fare register with Verilog the HDL language,which includes the travel distance,the waited 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 through downloads into the specific chip.Key words:Taxi meter;Verilog HDL language;FPGA;Quartus II;EDA目录第一章绪论 (1)1.1 课题背景: (1)1.2 出租车计价器现状及发展趋势: (2)1.3 本设计的主要工作: (3)1.4 现代数字系统的设计方法 : (3)1.4.1 设计步骤: (3)1.4.2 设计优点: (5)1.5 EDA技术: (5)1.5.1 EDA技术的内涵: (5)1.5.2 EDA技术的基本特征: (6)1.5.3 EDA的基本工具: (7)1.6 EDA 技术简介: (8)第二章出租车计价器的设计 (10)2.1 出租车计价器的要求: (10)2.2 系统组成框图: (10)第三章各模块设计 (11)3.1分频模块: (11)3.1.1 计数器的分频模块: (11)3.1.2 计数器的分频模块VerilogHDL源代码: (11)3.1.3 仿真的结果: (12)3.1.4 数码管的分频模块: (12)3.1.5 数码管的分频模块VerilogHDL源代码: (12)3.2 计程模块: (13)3.2.1 计程模块的框图: (13)3.2.2 计程模块的VerilogHDL源代码: (14)3.2.3 计程模块的仿真结果: (15)3.3计时模块: (16)3.3.1 计时模块的框图: (16)3.3.2 计时模块的VerilogHDL源代码: (16)3.3.3 计时模块的仿真结果: (17)3.4控制模块: (18)3.4.1 控制模块的框图: (18)3.4.2 控制模块的VerilogHDL源代码: (18)3.4.3 控制模块的仿真结果: (19)3.5 计费模块: (19)3.5.1 计费模块的框图: (19)3.5.2 计费模块的VerilogHDL源代码如下所示: (20)3.5.3 计费模块的仿真结果: (20)3.6 数码管显示模块: (21)3.6.1 数码管显示模块的框图: (21)3.6.2 数码管显示的VerilogHDL源代码: (21)3.7 顶层模块: (23)第四章验证方案 (26)4.1 验证的流程图: (26)4.2 验证的VerilogHDL源代码: (26)4.3 系统仿真: (28)第五章结论 (30)5.1 Quartus II软件综合的报表: (30)5.2 综合的RTL级电路: (30)5.3 设计总结: (30)5.4 FPGA设计展望: (32)参考文献 (33)致谢 (34)附录 (35)外文资料(原文) (36)外文资料(译文) (44)第一章绪论1.1 课题背景:随着我国经济的迅速发展,人们生活水平的显著提高,城市交通的日趋完善,出租车逐渐成为人们日常生活不可缺少的交通工具。

基于FPGA的出租车计费器设计

基于FPGA的出租车计费器设计

湖南工程学院课程设计课程名称嵌入式系统课题名称基于CPLD的出租车计费器专业电子信息工程班级电子信息学号 2姓名魏震洲指导教师林愿2015年12月20日湖南工程学院课程设计任务书课程名称:嵌入式系统题目:基于CPLD的出租车计费器专业班级:电子信息学生姓名:魏震洲指导老师:林愿审批:任务书下达日期 2015 年12 月 1日设计完成日期 2015 年 12月 15日目录摘要 (1)Abstract .......................... 错误!未定义书签。

引言 (2)1.概述 (2)2.总体设计 (3)2.1设计要求 (3)2.2基本的原理方框图 (4)2.3 开发环境 (4)3.软件设计 (4)3.1总体设计 (4)3.2 各模块设计 (5)4.结果仿真 (12)4.1编译 (12)4.2管脚配置 (12)4.3程序下载 (12)5.硬件电路 (13)6. 系统使用说明 (14)结束语 (15)参考文献 (15)致谢.............................. 错误!未定义书签。

附录.. (16)基于CPLD的出租车计费器摘要:本文借助QuartusⅡ9.0软件,基于大规模可编程逻辑器件FPGA,利用Verilog HDL语言,进行出租车计费器设计。

该出租车计费系统包括计数器分频模块、数码管分频模块、计程模块、计时模块、计费模块、控制模块、数码管显示模块和顶层主控模块共八大部分;分起步、里程、等待三个阶段。

该出租车计费器能够自行设定计费标准,借助CycloneⅡ系列EP20C8Q208C8N芯片的FPGA开发板,进行功能仿真,并且利用外围电路和开发板的结合,能够进行相应的硬件测试。

测试结果由2片4个相连的7段共阳极数码管驱动电路来显示。

关键词:出租车计费器;QuartusⅡ9.0软件;Verilog HDL语言;FPGA开发板引言随着出租车行业的发展,对出租车计费器的要求也越来越高,用户不仅要求计费器性能稳定、计费准确;同时还要求其具有计价标准的灵活设定、营运额统计、密码设定等功能。

出租车计价器的FPGA设计

出租车计价器的FPGA设计

出租车计价器的FPGA设计O 引言FPGA(Field Programmable Gate Array,现场可编程门阵列)是一种高密度可编程逻辑器件,它支持系统可编程,通过写入不同的配置数据就可以实现不同的逻辑功能。

使用FPGA 来设计电子系统,具有设计周期短、易于修改等明显特点,特别适合于进行科学实验、样机研制和电子产品的小批量生产。

本文针对FPGA 器件,用EDA 工具软件Max+P1usⅡ,设计了一种出租车的计价器,它可以以十进制数的形式,直观地显示出租车行驶的里程和乘客应付的费用,具有一定的实际应用价值。

1 系统设计要求所要设计的出租车计价器,要求能够显示里程数和乘客应付的费用,其中里程数精确到0.1km,乘客应付的费用精确到O.1 元,显示必须以十进制的形式来进行。

出租车的计费标准为:起步价6 元,里程在3 km 以内均为起步价;里程在3~7 km 之间时,每行驶1 km 增加1.6 元;超过7 km 时,每行驶1 km 增加2.4 元。

2 系统设计方案该系统的设计可以采用分立元件来搭建,也可以通过单片机来设计,而使用可编程FPGA 来设计,具有设计周期短、易于修改等明显特点,而且随着可编程逻辑器件和EDA 软件的飞速发展,越来越多的电子系统采用FPGA 来设计,一旦该系统达到一定的量产规模,也比较容易转化为ASIC 芯片设计。

因此,基于FPGA 来设计一个出租车的计价器。

本系统在EDA 工具软件MAX+plusⅡ中,采用硬件描述语言Verilog HDL 和原理图设计相结合的方法,进行各个模块的设计,最终将各个模块组成整个系统。

出租车能够显示行驶的里程,可以通过车轮的转动产生脉冲,然后通过计数器对脉冲进行计数来实现。

假设出租车每行驶2 m 就产生一个脉冲。

由于里程数要精确到O.1 km,也就是100m,因此每经过50 个脉冲就要输出一个新的脉冲信。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安邮电学院FPGA课程设计报告题目:基于FPGA的出租车计价器设计院系:电子工程学院专业班级:微电子0901学生姓名:李欢导师姓名:黄海生起止时间: 12.6.18 至 12.6.29 2012年7 月1 日基于FPGA的出租车计价器设计摘要介绍了出租车计费器系统的组成及工作原理,简述了在EDA平台上用FPGA器件构成该数字系统的设计思想和实现过程。

论述了计程模块,计费模块,计时模块,动态译码模块等的设计方法与技巧。

1.引言:随着EDA技术的高速发展,电子系统的设计技术发生了深刻的变化,大规模可编程逻辑器件CPLD/FPGA的出现,给设计人员带来了诸多方便。

利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。

本文介绍了一个以Altera公司可编程逻辑芯片cyclone2系列的EP2C35f672c6的fpga芯片为控制核心、附加一定外围电路组成的出租车计费器系统。

随着社会的不断进步,人们生活水平的不断提高,出租车逐渐成为人们日常生活不可缺少的交通工具。

而计价器作为出租车的一个重要组成部分,关系着出租车司机和乘客双方利益,起着重要的作用,因而出租车计价器的发展非常迅猛。

2.系统规范:2.1,出租车计价器的要求:◇出租车起步价为8元,行驶过程中大于两公里后每公里1元,中途停止等待时间累计大于三分钟后按每3分钟1元计价。

◇计价系统里程显示范围为:0~99公里,分辨率1公里。

计价费用显示范围为:0~999元,分辨率1元。

等待计时器显示范围为:0~60分钟,分辨率1分钟。

2.2计价系统原理:出租车载客后,启动计费器,整个系统开始运行,里程计数器和时间计数器从0开始计数,费用计数器从8开始计算。

再根据行驶里程或停止等待的时间按以上的标准计费。

若在行驶状态,则计程器开始加计数,超过两公里后每公里1元。

若出租车停止等待状态,则计时器开始加计数,当时间超过三分钟后,计费器以每3分钟1元累加。

出租车到达目的地停止后,停止计费器,显示总费用。

根据出租车计费器的工作过程,本系统采用分层次、分模块的方式设计,其本系统组成框图如下所示。

其中行驶路程计数模块、等待时间计数模块和计费模块,用来统计路程、等待时间和总费用,控制模块是用来控制计费模块,数码管显示模块用来显示行驶的公里数、等待累计时间和总费用等信息。

总设计图:3 .各模块设计:3.1分频模块:3.1.1,计数器的分频模块:3.1 .2 计数器的分频模块具体框图:引脚分配:信号名称功能描述方向宽度Clk 输入50MHz的时钟信号input 1Clk_1 输出经过分频以后的1Hz的时钟信号output 1reset 复位信号input 1电路设计:此模块的功能是对总的时钟进行分频,分出的频率是让计数器用的,因为总的时钟是50M的。

设计该模块的时候用了一个30位的计数器,当计数器计到25_000000的时候产生时钟。

3.1 .3,计数器的分频模块VerilogHDL源代码:module fenpin(clk,reset,clk_1);input clk,reset;output clk_1;reg clk_1;reg [29:0] count;always@(posedge clk,negedge reset) beginif(!reset)begincount=0;clk_1=1'b0;endelse if(count==25000000)begincount=0;clk_1=!clk_1;endelsecount=count+1'd1;endendmodule仿真的结果:3.2,计程模块:3.2.1,计程模块的框图:引脚分配信号名称功能描述方向宽度start 出租车开启信号input 1Clk_1 分频后计时时钟,频率为1Hz Input 1reset 清零信号Input 1 lch 计程模块计算出的里程数Output 8此模块的功能是计算出租车行驶的路程。

在出租车启动并行驶的过程中(即复位/启动信号reset为0,行驶/停止信号start为1),当时钟clk是上升沿的时候,系统即对里程计数器进行加计数。

3.2.2计程模块的VerilogHDL源代码:module licheng(reset,start,clk_1,lch);input reset,start,clk_1;output lch;reg [7:0] lch;reg [5:0] count;always@(negedge reset,posedge clk_1)beginif(!reset)beginlch=8'b00000000;count=6'b000000;endelsebeginif(start)beginif(count==6'b000001)beginlch=lch+8'b00000001;count=count+6'b000001;if(lch[3:0]>4'b1001)beginlch[7:4]=lch[7:4]+4'b0001;lch[3:0]=4'b0000;endendelse if(count==6'b000010)count=6'b000000;elsecount=count+6'b000001;endendendendmodule3.2.3计程模块的仿真结果:3.3计时模块:3.3.1,计时模块的框图:管脚分配信号名称功能描述输入输出位宽Clk_1 分频后计时时钟,频率为1Hz input 1reset 清零信号input 1start 出租车开启信号input 1jishi 计时模块计算的时间数据output 8Jishi_1 计时收费输出数据output 8 3.3.2,计时模块的VerilogHDL源代码:module js(reset,start,clk_1,jishi,jishi_1);input reset,start,clk_1;output jishi,jishi_1;reg [5:0] count1,count2;reg [7:0] jishi,jishi_1;always@(negedge reset,posedge clk_1)beginif(!reset)begincount2=6'b000000;count1=6'b000000;jishi=8'b00000000;jishi_1=8'b00000000;endelsebeginif(!start)beginif(count1==6'b000001)beginjishi=jishi+8'b00000001;count2=count2+6'b000001;count1=count1+6'b000001;if(count2==6'b000011)beginjishi_1=jishi_1+1'b1;count2=6'b000000;endif(jishi[3:0]>4'b1001)beginjishi[7:4]=jishi[7:4]+4'b0001;jishi[3:0]=4'b0000;endendelse if(count1==6'b000010)count1=6'b000000;elsecount1=count1+6'b000001;endendendendmodule3.3.3计时模块的仿真结果:。

3.5,计费模块:3.5.1计费模块的框图:费用计数器模块用于出租车启动后,根据行驶路程和等待时间计算费用。

当出租车停车时,时钟select_clk用于将费用计数器复位为起步价8元;当车处于行驶状态且满3公里时,此后路程每满1公里,费用计数器加1元;当出租车处于停止等待状态且时钟满3分钟时,时间每满3分钟,费用计数器加1元。

信号名称功能描述输入输出位宽lch 计程模块计算出的里程数Input 8Jishi_1 计时收费输出数据Input 8fee 计价器计算出的总价Output 143.5.2,计费模块的VerilogHDL源代码如下所示:module jf(lch,jishi_1,fee);input lch,jishi_1;output fee;reg [13:0] fee;wire [7:0] lch;wire [7:0] jishi_1;always@(lch,jishi_1)beginif(lch[7:0]>8'b00000010)beginif(jishi_1[7:0]<8'b00000010)beginfee[4:0]={1'b0,lch[3:0]}+5'b01000-5'b00010;fee[9:5]={1'b0,lch[7:4]};fee[13:10]=4'b0000;if(fee[4:0]>5'b01001)beginfee[4:0]=fee[4:0]-5'b01010;fee[9:5]=fee[9:5]+5'b00001;endendelsebeginfee[4:0]={1'b0,jishi_1[3:0]}+{1'b0,lch[3:0]}-5'b00001+5'b01000-5'b000 10;fee[9:5]={1'b0,jishi_1[7:4]}+{1'b0,lch[7:4]};fee[13:10]=4'b0000;if(fee[4:0]>5'b10011)beginfee[4:0]=fee[4:0]-5'b10100;fee[9:5]=fee[9:5]+5'b00010;endelse if(fee[4:0]>5'b01001)beginfee[4:0]=fee[4:0]-5'b01010;fee[9:5]=fee[9:5]+5'b00001;endif(fee[9:5]>5'b10011)beginfee[9:5]=fee[9:5]-5'b10100;fee[13:10]=fee[13:10]+4'b0010;endelse if(fee[9:5]>5'b01001)beginfee[9:5]=fee[9:5]-5'b01010;fee[13:10]=fee[13:10]+4'b0001;endendendelsebeginif(jishi_1[7:0]<8'b00000010)beginfee[13:0]=14'b00000000001000;endelsebeginfee[4:0]={1'b0,jishi_1[3:0]}-5'b00001+5'b01000; fee[9:5]={1'b0,jishi_1[7:4]}+{1'b0,lch[7:4]}; fee[13:10]=4'b0000;if(fee[4:0]>5'b10011)beginfee[4:0]=fee[4:0]-5'b10100;fee[9:5]=fee[9:5]+5'b00010;endelse if(fee[4:0]>5'b01001)beginfee[4:0]=fee[4:0]-5'b01010;fee[9:5]=fee[9:5]+5'b00001;endif(fee[9:5]>5'b10011)beginfee[9:5]=fee[9:5]-5'b10100;fee[13:10]=fee[13:10]+4'b0010;endelse if(fee[9:5]>5'b01001)beginfee[9:5]=fee[9:5]-5'b01010;fee[13:10]=fee[13:10]+4'b0001;endendendendendmodule3.5.3,计费模块的仿真结果:3.6,数码管显示模块:3.6.1,数码管显示模块的框图:3.6.2,数码管显示的VerilogHDL源代码:module display(clk_1,lch,reset,jishi,fee,hex0,hex1,hex2,hex4,hex5,hex6,hex7); input clk_1,lch,jishi,fee,reset;output hex0,hex1,hex2, hex4, hex5, hex6, hex7;wire reset;wire [7:0] lch;wire [7:0] jishi;wire [13:0] fee;reg [6:0] hex0,hex1,hex2,hex4,hex5,hex6,hex7; always@(posedge clk_1,negedge reset)beginif(!reset)beginhex6[6:0]=7'b1000000;hex7[6:0]=7'b1000000;hex4[6:0]=7'b1000000;hex5[6:0]=7'b1000000;hex0[6:0]=7'b1000000;hex1[6:0]=7'b1000000;hex2[6:0]=7'b1000000;endcase(lch[3:0])4'b0000:hex6[6:0]=7'b1000000;4'b0001:hex6[6:0]=7'b1111001;4'b0010:hex6[6:0]=7'b0100100;4'b0011:hex6[6:0]=7'b0110000;4'b0100:hex6[6:0]=7'b0011001;4'b0101:hex6[6:0]=7'b0010010;4'b0110:hex6[6:0]=7'b0000010;4'b0111:hex6[6:0]=7'b1111000;4'b1000:hex6[6:0]=7'b0000000;4'b1001:hex6[6:0]=7'b0010000;default:hex6[6:0]=7'b1000000;endcasecase(lch[7:4])4'b0000:hex7[6:0]=7'b1000000;4'b0001:hex7[6:0]=7'b1111001;4'b0010:hex7[6:0]=7'b0100100;4'b0011:hex7[6:0]=7'b0110000;4'b0100:hex7[6:0]=7'b0011001;4'b0101:hex7[6:0]=7'b0010010;4'b0110:hex7[6:0]=7'b0000010;4'b0111:hex7[6:0]=7'b1111000;4'b1000:hex7[6:0]=7'b0000000;4'b1001:hex7[6:0]=7'b0010000;default:hex7[6:0]=7'b1000000;endcasecase(jishi[3:0])4'b0000:hex4[6:0]=7'b1000000;4'b0010:hex4[6:0]=7'b0100100; 4'b0011:hex4[6:0]=7'b0110000; 4'b0100:hex4[6:0]=7'b0011001; 4'b0101:hex4[6:0]=7'b0010010; 4'b0110:hex4[6:0]=7'b0000010; 4'b0111:hex4[6:0]=7'b1111000; 4'b1000:hex4[6:0]=7'b0000000; 4'b1001:hex4[6:0]=7'b0010000; default:hex4[6:0]=7'b1000000; endcasecase(jishi[7:4])4'b0000:hex5[6:0]=7'b1000000; 4'b0001:hex5[6:0]=7'b1111001; 4'b0010:hex5[6:0]=7'b0100100; 4'b0011:hex5[6:0]=7'b0110000; 4'b0100:hex5[6:0]=7'b0011001; 4'b0101:hex5[6:0]=7'b0010010; 4'b0110:hex5[6:0]=7'b0000010; 4'b0111:hex5[6:0]=7'b1111000; 4'b1000:hex5[6:0]=7'b0000000; 4'b1001:hex5[6:0]=7'b0010000; default:hex5[6:0]=7'b1000000; endcasecase(fee[3:0])4'b0000:hex0[6:0]=7'b1000000; 4'b0001:hex0[6:0]=7'b1111001; 4'b0010:hex0[6:0]=7'b0100100; 4'b0011:hex0[6:0]=7'b0110000; 4'b0100:hex0[6:0]=7'b0011001; 4'b0101:hex0[6:0]=7'b0010010; 4'b0110:hex0[6:0]=7'b0000010; 4'b0111:hex0[6:0]=7'b1111000; 4'b1000:hex0[6:0]=7'b0000000; 4'b1001:hex0[6:0]=7'b0010000; default:hex0[6:0]=7'b1000000; endcasecase(fee[8:5])4'b0000:hex1[6:0]=7'b1000000; 4'b0001:hex1[6:0]=7'b1111001; 4'b0010:hex1[6:0]=7'b0100100; 4'b0011:hex1[6:0]=7'b0110000; 4'b0100:hex1[6:0]=7'b0011001; 4'b0101:hex1[6:0]=7'b0010010;4'b0111:hex1[6:0]=7'b1111000;4'b1000:hex1[6:0]=7'b0000000;4'b1001:hex1[6:0]=7'b0010000;default:hex1[6:0]=7'b1000000;endcasecase(fee[13:10])4'b0000:hex2[6:0]=7'b1000000;4'b0001:hex2[6:0]=7'b1111001;4'b0010:hex2[6:0]=7'b0100100;4'b0011:hex2[6:0]=7'b0110000;4'b0100:hex2[6:0]=7'b0011001;4'b0101:hex2[6:0]=7'b0010010;4'b0110:hex2[6:0]=7'b0000010;4'b0111:hex2[6:0]=7'b1111000;4'b1000:hex2[6:0]=7'b0000000;4'b1001:hex2[6:0]=7'b0010000;default:hex2[6:0]=7'b1000000;endcaseendendmodule3.7,顶层模块:各模块设计仿真实现后,可分别创建成元件符号。

相关文档
最新文档