基于FPGA出租车计价器设计.docx

上传人:b****3 文档编号:3833579 上传时间:2023-05-06 格式:DOCX 页数:36 大小:1.05MB
下载 相关 举报
基于FPGA出租车计价器设计.docx_第1页
第1页 / 共36页
基于FPGA出租车计价器设计.docx_第2页
第2页 / 共36页
基于FPGA出租车计价器设计.docx_第3页
第3页 / 共36页
基于FPGA出租车计价器设计.docx_第4页
第4页 / 共36页
基于FPGA出租车计价器设计.docx_第5页
第5页 / 共36页
基于FPGA出租车计价器设计.docx_第6页
第6页 / 共36页
基于FPGA出租车计价器设计.docx_第7页
第7页 / 共36页
基于FPGA出租车计价器设计.docx_第8页
第8页 / 共36页
基于FPGA出租车计价器设计.docx_第9页
第9页 / 共36页
基于FPGA出租车计价器设计.docx_第10页
第10页 / 共36页
基于FPGA出租车计价器设计.docx_第11页
第11页 / 共36页
基于FPGA出租车计价器设计.docx_第12页
第12页 / 共36页
基于FPGA出租车计价器设计.docx_第13页
第13页 / 共36页
基于FPGA出租车计价器设计.docx_第14页
第14页 / 共36页
基于FPGA出租车计价器设计.docx_第15页
第15页 / 共36页
基于FPGA出租车计价器设计.docx_第16页
第16页 / 共36页
基于FPGA出租车计价器设计.docx_第17页
第17页 / 共36页
基于FPGA出租车计价器设计.docx_第18页
第18页 / 共36页
基于FPGA出租车计价器设计.docx_第19页
第19页 / 共36页
基于FPGA出租车计价器设计.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA出租车计价器设计.docx

《基于FPGA出租车计价器设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA出租车计价器设计.docx(36页珍藏版)》请在冰点文库上搜索。

基于FPGA出租车计价器设计.docx

基于FPGA出租车计价器设计

 

题目:

基于FPGA出租车计价器设计

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

摘  要

本文介绍了一种采用可编程逻辑器件(FPGA/CPLD)进行出租车计价器的设计思想以及实现方法。

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

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

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

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

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

关键词:

FPGA;出租车计价器;QuartusII;VerilogHDL

 

BasedontheFPGADesignofTaxiMeter

ABSTRACT

Thisarticledescribesthedesignideasandmethodsofthetaximeter,throughtheprogrammablelogicdevice(FPGA/CPLD).Usingprogrammablelogicdevicesdesignontheotherhand,peripheralcircuitissimple,convenientmodulardesign,theprincipleisclear,fast,strongfunction,highreliability,strongflexibility,andcompleteandadditionalfunctionalextension.Thisdesignhasrealizedthetaximeterrequiredsomebasicfunctions,suchaslog,timing,pricing,dynamicdisplay,billingamountfareandmileagecharging,waitingforthetiming.ThroughtheQuartusII9.0SoftwarePlatform,usingVerilogHDLlanguagecompletedthedescriptionandsimulationoffrequencymodule,themetermodule,Billingmodule,timingmodules,decoding,dynamicscanningdisplaymodule,foreachmodulearesimulatedrespectivelyandtop-levelmodulewithschematicdesign,thesimulationwaveformwereanalyzed.Afterdownloadvalidationhardware,completedthetaximeterdividermodule,logmodule,billingmodule,timingmodule,decodinganddynamicscanningdisplaymodulesdesignedtoachieve.

Keywords:

FPGA;Taximeter;QuartusII;VerilogHDL

 

目  录

 

1  前言

1.1 课题的来源及意义

本课题是在老师指导下,根据学校教学的需求和实际需要而开发的研究项目。

本设计是采用先进的EDA技术,利用QuartusⅡ工作平台和VerilogHDL硬件描述语言实现出租车计价器的设计,目的是实现在教学过程中可以让学生理论与实践相结合,同时更加深刻地理解理论知识,达到提高能力的目的,使其能够独立自主的研发,并进一步使学生对软件与硬件的结合有一个更直观地了解,来加深学生对课堂知识的理解与应用。

1.2 国内外发展状况

出租车行业在我国是八十年代初兴起的一项新兴行业,随着我国国民经济的高速发展,出租汽车已成为城市公共交通的重要组成部分,多年来国内普遍使用的计价器只具备单一的计量功能,许多国家正在研制新型的出租车计价器。

现今我国生产计价器的企业有上百家,主要是集中在北京,上海,沈阳和广州等地,目前全世界的计价器中有90%为台湾所生产。

随着我国经济的迅速发展,人民生活水平的显著提高,城市的交通日趋完善,出租车计价器的应用也越来越广泛。

虽然私家车的拥有量在大幅度地提高,但是出租车还是在我国的交通运输中承担着重要的角色,出租车计价器是出租车上必不可少的重要仪器,它是负责出租车营运收费的专用智能化仪表[1]。

用户不仅要求计价器性能稳定、计价准确而且对它的其它性能要求也越来越高。

近年来,我国出租汽车行业迅猛发展,出租汽车已经成为我国城市公共交通的重要组成部分和现代化城市必备的基础设施,成为人们工作、生活中不可缺少的交通工具。

出租汽车服务行业和出租汽车计价器紧密相关,因为出租汽车必须安装出租汽车计价器才能投入营运。

出租汽车计价器是一种能根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并直接显示车费值的计量器具。

计价器是出租汽车的经营者和乘坐出租汽车的消费者之间用于公平贸易结算的工具,因而计价器计价准确与否,直接关系到经营者和消费者的经济利益。

依据国家有关法律、法规,出租汽车计价器是列入国家首批强制检定的工作计量器具之一,也是近年来国家质量技术监督部门强化管理的六类重点计量器具之一。

现在出租车是城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。

汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。

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

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

因此,出租车计价器的研究也是十分有应用价值的。

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

通过本课题的设计,能够综合运用学过的数字系统、VerilogHDL硬件描述语言等知识,学习软件环境的使用方法,进行出租车计价器的设计。

1.3 研究的手段及目标

本次设计要求基于可编程逻辑器件,通过查阅相关资料和文献,制定设计方案,使用硬件描述语言VerilogHDL在QuartusⅡ软件平台上仿真调试,最终通过硬件下载验证,实现出租车计价器的设计。

 

2  总体方案设计

2.1 方案论证与选择

方案一:

采用数字电路控制,运用传感器件,输出脉冲信号,经过放大整形为移位寄存器的脉冲,实现计价,但是考虑到这种电路性能不够稳定,故障率较高,如要做到多功能则其规模较大不仅难调试,而且电路不实用[3],其原理图如图2-1所示。

图2-1 数字电路方案

方案二:

采用单片机控制,通过单片机作为主控器,利用1602字符液晶作为显示电路,采用外部晶振作为时钟脉冲,通过按键可以方便调节,本方案主要通过软硬结合可以很容易实现要求,其灵活性也还不错,成本也不高[4]。

方案原理图如图2-2所示。

图2-2 单片机控制方案

方案三:

采用EDA技术,根据层次化设计理论,该设计问题自顶向下可分为分频模块,计时模块、计程模块、计费模块以及译码和动态扫描显示模块,方案原理图如图2-3所示。

图2-3 EDA控制方案

方案总结:

通过各个方案的比较,首先数字电路控制不实用,不重点考虑,单片机方案虽有较大的活动空间,能实现所要求的功能而且能在很大的程度上进行扩展功能,虽然还可以方便的对系统进行升级,但考虑到单片机方案软件设计调试较为繁琐,最大限制还是在与本课程设计是利用EDA技术实现,另一方面采用可编程逻辑器件设计,而EDA控制方案外围电路简单,模块化设计方便,原理清晰,速度快,功能强,可靠性高,灵活性强,并且完成和扩展附加功能性强。

综上所述,本设计采用方案三。

2.2 设计思想及原理

出租车的一般计费过程为:

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

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

若在行驶状态,则计程器开始加计数,当路程超过2公里后,计费器以每公里1元累加。

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

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

根据课程设计要求计价器可根据车轮转数计算路程,车轮每转一圈送一个脉冲波,假设每转一圈为1米,车轮每转一圈送一个脉冲波(可用传感器检测送出脉冲),本设计为了方便模拟仿真,假设车轮转动100圈才产生一个脉冲,即一个脉冲代表100米,则经过分频器后,每100米送一个脉冲到里程计算模块,这样方便在软件里面仿真观察,若要下载到实物应用中去,通过实际车轮周长自己设置不同的分频电路来达到产生任意精度的计程距离模块。

而当车停止的时候通过分频模块产生秒脉冲,通过计时要求来产生计费,本设计重点就在计费模块的设计,本系统采用分层次、分模块的方式设计,其中行驶路程计数模块、等待时间计数模块和计费模块,用来统计路程、等待时间和总费用,数码管显示模块用来显示行驶的公里数和总费用等信息。

 

3  FPGA、Verilog及QuartusⅡ开发环境的介绍

3.1 现场可编程门阵列FPGA

FPGA,是Field-ProgrammableGateArray的英文缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。

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

FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。

其基本特点有:

1)采用FPGA设计专用集成电路,用户不需要投片生产,就能得到合用的芯片。

2)FPGA可做其它全定制或半定制ASIC电路的中试样片。

3)FPGA内部有丰富的触发器和I/O引脚。

4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

此外,FPGA有多种配置模式:

并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。

随着科技的发展以及工艺技术的进步,FPGA性能会更强。

目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。

3.2 硬件描述语言VerilogHDL

VerilogHDL是硬件描述语言的一种,用于数字电子系统设计。

该语言允许设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证、时序分析、逻辑综合。

它是目前应用最广泛的一种硬件描述语言。

据有关文献报道,目前在美国使用VerilongHDL进行设计的工程师大约有10多万人,全美国有200多所大学教授用Verilog硬件描述语言的设计方法。

在我国台湾地区几乎所有著名大学的垫子和及所及工程系都讲授Verilog有关的课程。

VerilogHDL既是一种行为描述的语言也是一种结构描述的语言。

一个复杂电路系统的完整VerilogHDL模型是由若干个模块构成的,每一个模块又可以由若干个子模块构成。

其中有些模块需要综合成具体电路,而有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块有交互联系的现存电路或激励信号源。

利用VerilogHDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构,以此来描述极其复杂的大型设计,并对所做设计的逻辑电路进行严格的验证[5]。

VerilogHDL行为描述语言作为一种结构化和过程性的语言,其语法结构非常适合于算法级和RTL级的模型设计。

这种行为描述语言具有以下功能:

1)可描述顺序执行或并行执行的程序结构;

2)用延迟表达式或事件表达式来明确地控制过程的启动时间;

3)通过命名的事件来触发其它过程里的激活行为或停止行为;

4)提供了条件如if-else,case等循环程序结构;

5)提供了可带参数且非零延续时间的任务(task)程序结构;

6)提供了可定义新的操作符的函数结构(function);

7)提供了用于建立表达式的算术运算符、逻辑运算符、位运算符[6];

3.3 QuartusⅡ开发环境

QuartusⅡ是Altera公司的CPLD/FPGA设计工具软件,适合单芯片可编程系统(SOPC)的最全面的设计环境。

它能够实现从设计输入到下载的所有功能。

QuartusⅡ软件包是MAX+plusⅡ的升级版本,Altera公司的第四代开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusⅡ提供了方便的设计输入方式、快速的编译和直接易懂的器件编程。

QuartusⅡ软件包的编程器是系统的核心,提供功能强大的设计处理,设计者可以添加特定的约束条件来提高芯片的利用率[7]。

QuartusⅡ还支持Altera的IP核,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。

 

4 设计与仿真验证

该出租车计价器要求实现的功能:

1)出租车起步价为8.0元。

2)行程>2公里,每公里加收费用1元;等待累计时间>2分钟,每2分钟加收费用1元。

3)能显示行驶公里数和最后的总费用。

4)能通过修改程序来对计费要求实现改变。

用VerilogHDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路,各计数器的计数状态用功能仿真的方法验证,并通过有关波形和硬件下载确认电路设计是否正确。

4.1 分频模块

4.1.1 计程分频模块

图4-1  计程分频模块

本设计为了模拟仿真假设车轮每转一圈为1米,转动100圈才产生一个脉冲,即一个脉冲代表100米,则经过2000000分频器后是每行驶100米送一个脉冲到里程计算模块。

俩个INPUT分别输入的是复位信号reset和20MHz的时钟信号,输出OUTPUT是10Hz信号,实现了将20MHz信号分成10Hz信号,路程分频模块如图4-1所示。

部分代码:

……

always@(posedgeclk_20M)

begin

if(!

reset)

begin

clk_10=0;

counter<=0;

end

else

begin

if(counter==1000000)

begin

counter<=0;

clk_10<=~clk_10;

end

else

counter<=counter+1;

end

end

输入是复位信号reset,时钟信号clk_20M,输出是时钟信号clk_10。

将20M的脉冲信号进行2000000分频,在clk_20M时钟信号的上升沿,counter进行加1计数,在counter=1000000时,counter进行取反,clk_10输出的是10Hz的时钟信号。

4.1.2 计时分频模块和计费分频模块

图4-2 计时分频模块和计费分频模块

在等待时间超过2分钟后,每经过2分钟加收费用1元,所以给计时模块输入的是1Hz的秒脉冲。

当汽车行驶时,路程的计费是按照1公里加收1元,所以给计费模块在按照里程计费时输入的是路程分频模块的十分频时钟信号,即1Hz脉冲信号,如图4-2所示。

4.1.3 数码管动态显示分频模块

图4-3 数码管动态显示分频模块

由于用8个数码管进行显示,输入的时钟信号是20MHz,将20MHz的时钟信号进行25000分频,分频成800Hz,数码管才可以进行动态显示,数码管动态显示分频模块如图4-3所示。

4.1.4 数码管动态显示分频模块仿真

图4-4 数码管动态显示分频模块

从波形图4-4可以看出在时钟信号clk_20M的控制下,进行25000分频,输出800Hz的时钟信号。

4.2 计程模块

4.2.1 计程模块电路

此模块的功能是计算出租车行驶的路程。

在出租车启动并行驶的过程中(即复位/启动信号reset为1,行驶/停止信号start为1),当时钟clk_10是上升沿的时候,系统即对路程计数器distance的里程计数器进行加计数,当路程超过2公里时,系统将输出标志正脉冲distance_enable。

其模块如图4-4所示。

图4-5 计程模块电路

部分计程代码如下:

……

always@(posedgeclk_10ornegedgereset)//异步复位

begin

if(!

reset)//低电平复位

begin

distance<=16'd0;

end

elseif(start)//start高电平有效

begin

if(distance[3:

0]==9)//判断distance的低四位计到了9没有

begin

distance[3:

0]<=4'd0;//计到9清零

......

elsedistance[3:

0]<=distance[3:

0]+1'd1;//distance的低四位没有计到9的时候加一

end

end

//*产生distance_enable信号*//

always@(posedgeclk_10ornegedgereset)

......

else

if(distance>=16'd20)//大于2公里的时候

begin

distance_enable<=1'd1;//输出distance_enable信号

end

end

输入是时钟信号clk_10,汽车行驶信号start和复位信号reset,输出是里程distance和里程计费使能信号distance_enable,当脉冲信号10Hz上升沿到来时,distance开始进行加1计数,最小单位是米,当distance大于等于20,即2公里时,输出distance_enable信号。

4.2.2 计程模块仿真

图4-6 计程模块仿真

从波形图4-5可以看出在时钟的控制下,当reset=0时,复位,里程计数归0;当reset=1且start=1的时候distance开始计数,当计到大于2的时候输出了distance_enable=1。

准备对第2公里以后的脉冲进行加计费。

4.3 计时模块

4.3.1 计时模块电路

此模块用于模拟出租车停车等待的时间。

在出租车行进中,如果车辆停止等待,计数器则在1Hz信号clk_1的上升沿进行加计数,每60次产生进位脉冲使分钟计数器位进行加计数,当累计等待时间超过2(不包括2分钟)分钟时,输出标志time_enable正脉冲信号。

其模块如图4-6所示。

图4-7 计时模块电路

部分计时代码如下:

……

always@(posedgeclk_1ornegedgereset)//异步复位

if(!

reset)

begin

time_enable<=0;

j<=0;

end

elseif(!

te)

begin

if(j==119)

begin

j<=0;

time_enable<=1;

end

else

begin

j<=j+1;

time_enable<=0;

end

end

输入是时钟信号clk_1,复位信号reset和汽车行驶信号te,输出是时间计费使能信号time_enable。

当te=0(te引脚与start输入连接),在输入脉冲信号1Hz的上升沿,j进行加1计数,当计到119时,即2分钟,time_enable输出一个正脉冲。

4.3.2 计时模块仿真

图4-8 计时模块仿真

从波形图4-7可以看出在clk_1的控制下当reset=1且te=0的时候时间计数,当时间大于2分钟的时候,time_enable输出一个正脉冲,成为计费模块中等待时间计费的脉冲信号。

4.4 计费模块

4.4.1 计费模块电路

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

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

其模块图如4-8所示。

图4-9 计费模块电路

部分等待时间计费代码如下:

……

always@(negedgeresetorposedgeclk)//异步复位

begin

if(!

reset)//低电平有效

begin

fee<=16'd0;

end

else

if(fee[3:

0]==4'd9)//费用的低四位是不是计到了9

begin

fee[3:

0]<=4'd0;//计到9清零

if(fee[7:

4]==4'd9)

……

elsefee[3:

0]<=fee[3:

0]+1'd1;//费用的低四位没有计到9加1

//endbegin

end//endalways

输入是时钟信号clk和复位信号reset,输出是费用fee,clk接的是time_enable信号,当te=0时,出租车进入等待时间计费,在clk的上升沿,fee进行加1计数,time_enable每2分钟产生一个正脉冲,此程序实现了每2分钟加费1元的功能。

部分里程计费代码如下:

……

always@(negedgeresetorposedgeclk_1)//异步复位

begin

if(!

reset)//低电平有效

begin

fee<=16'd8;

end

elseif(en==1&&start==1)

if(fee[3:

0]==4'd9)//费用的低四位是不是计到了9

begin

fee[3:

0]<=4

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2