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

上传人:b****2 文档编号:13922837 上传时间:2023-06-19 格式:DOCX 页数:20 大小:256.18KB
下载 相关 举报
基于FPGA的出租车计费器设计.docx_第1页
第1页 / 共20页
基于FPGA的出租车计费器设计.docx_第2页
第2页 / 共20页
基于FPGA的出租车计费器设计.docx_第3页
第3页 / 共20页
基于FPGA的出租车计费器设计.docx_第4页
第4页 / 共20页
基于FPGA的出租车计费器设计.docx_第5页
第5页 / 共20页
基于FPGA的出租车计费器设计.docx_第6页
第6页 / 共20页
基于FPGA的出租车计费器设计.docx_第7页
第7页 / 共20页
基于FPGA的出租车计费器设计.docx_第8页
第8页 / 共20页
基于FPGA的出租车计费器设计.docx_第9页
第9页 / 共20页
基于FPGA的出租车计费器设计.docx_第10页
第10页 / 共20页
基于FPGA的出租车计费器设计.docx_第11页
第11页 / 共20页
基于FPGA的出租车计费器设计.docx_第12页
第12页 / 共20页
基于FPGA的出租车计费器设计.docx_第13页
第13页 / 共20页
基于FPGA的出租车计费器设计.docx_第14页
第14页 / 共20页
基于FPGA的出租车计费器设计.docx_第15页
第15页 / 共20页
基于FPGA的出租车计费器设计.docx_第16页
第16页 / 共20页
基于FPGA的出租车计费器设计.docx_第17页
第17页 / 共20页
基于FPGA的出租车计费器设计.docx_第18页
第18页 / 共20页
基于FPGA的出租车计费器设计.docx_第19页
第19页 / 共20页
基于FPGA的出租车计费器设计.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

湖南工程学院

课程设计

课程名称嵌入式系统

课题名称基于CPLD的出租车计费器

专业电子信息工程

班级电子信息

学号201213020113

姓名魏震洲

指导教师林愿

2015年12月20日

湖南工程学院

课程设计任务书

 

课程名称:

嵌入式系统

题目:

基于CPLD的出租车计费器

专业班级:

电子信息

学生姓名:

魏震洲

指导老师:

林愿

审批:

 

任务书下达日期2015年12月1日

设计完成日期2015年12月15日

 

设计内容与设计要求

CPLD为复杂可编程逻辑器件,通过EDA技术对其进行编程,可将一个较复杂的数字系统集成于一个芯片中,制成专用集成电路芯片,并可随时在系统修改其逻辑功能。

有关知识可参见相关教材或参考书。

一.设计内容

(1)实现计费功能,计费标准为:

按行驶里程计费,起步价为7.00元,并在车行3Km后按2.20元/Km计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。

(2)现场模拟功能:

能模拟汽车起动、停止、暂停以及加速等状态。

(3)按计动态扫描电路,将车费和路程显示出来,各有两位小数。

二、设计要求:

1、设计思路清晰,给出整体设计框图;

2、设计各单元电路,完成其功能仿真和编译并生成低层模块;

3、完成顶层设计并编译通过;

4、完成设计下载并调试电路;

5、写出设计报告;

 

主要设计条件

1.提供EDA实验室;

2.提供EL实验箱和CPLD芯片;

3.提供设计软件

说明书格式

1.课程设计封面;

2.任务书;

3.说明书目录;

4.设计总体思路,基本原理和框图(顶层电路图);

5.单元电路设计(各次级模块电路图);

6.设计仿真;

7.编程下载;

8.总结与体会;

9.附录;

10.参考文献。

 

进度安排

星期一、二:

下达设计任务书,介绍课题内容与要求;

查找资料,确定总体设计方案和单元电路设计;

星期三~第二周星期一:

单元电路设计与仿真,硬件下载;

第二周星期二、三:

硬件下载;

第二星期四、五:

书写设计报告,打印相关图纸;答辩

参考文献

1.康华光主编.电子技术基础(数字部分),高等教育出版社。

2.阎石主编.电子技术基础(数字部分),清华大学出版社。

3.陈大钦主编,电子技术基础实验,高等教育出版社。

4.彭介华主编,电子技术课程设计指导,高等教育出版社。

5.张原编著,可编程逻辑器件设计及应用,机械工业出版社。

6.荀殿栋,徐志军编著,数字电路设计实用手册,电子工业出版社。

7.刘洪喜,陆颖编著.VHDL电路设计实用教程清华大学出版社

目录

摘要1

Abstract1

引言1

1.概述2

2.总体设计3

2.1设计要求3

2.2基本的原理方框图3

2.3开发环境4

3.软件设计4

3.1总体设计4

3.2各模块设计5

4.结果仿真11

4.1编译11

4.2管脚配置11

4.3程序下载12

5.硬件电路12

6.系统使用说明13

结束语14

参考文献14

致谢15

附录17

基于CPLD的出租车计费器

摘要:

本文借助QuartusⅡ9.0软件,基于大规模可编程逻辑器件FPGA,利用VerilogHDL语言,进行出租车计费器设计。

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

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

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

关键词:

出租车计费器;QuartusⅡ9.0软件;VerilogHDL语言;FPGA开发板

 

引言

随着出租车行业的发展,对出租车计费器的要求也越来越高,用户不仅要求

计费器性能稳定、计费准确;同时还要求其具有计价标准的灵活设定、营运额统计、密码设定等功能。

目前,出租车行业面临油价上涨和夏季空调费调整的问题,修改计价标准随着油价的上涨势在必行,所以出租车计费器计价标准的灵活设定成为计费器不可缺少的一部分。

因此性能稳定、便于检定、维护及修改参数成为出租车记费器的关键技术。

出租车计价系统较多的是利用单片机进行控制,但较易被私自改装,且故障率相对较高,不易升级。

而FPGA具有高密度、可编程及有强大的软件支持等特点,所以设计的产品具有功能强、可靠性高、易于修改等特点[1]。

随着FPGA(FieldProgrammableGateArray)等可编程器件的出现,解决了传统电子设计不能完成的任务。

利用FPGA来实现出租车计费器,可行性很高,电路简单,大大减少外围器件,可以用软件完全仿真,灵活度高,而且编好的系统可以在不同的FPGA芯片上通用。

同时由于FPGA的功能完全取决于语言VerilogHDL编写的程序,不拘泥于某种芯片的特殊指令[2],更加提高了产品的更新换代能力。

FPGA在电子设计领域中价格低廉,有良好的发展趋势,它的出现必定会占领大部分数字器件市场。

本设计选用的FPGA芯片,主要是Altera公司的CycloneⅡ系列芯片EP20C8Q208C8N。

使用软件QuartusⅡ9.0和超高速硬件描述语言VerilogHDL,从而实现计价标准的灵活设定。

使得该出租车计费器的特点是计费准确、性能稳定、分阶段(起步、里程、等待)自动计费[3]。

1.概述

EDA(ElectronicDesignAutomation)即电子设计自动化,是电子设计技术的核心,它的系统级高层次电子设计方法,对整个系统进行方案设计和功能划分,无须通过门级原理图描述电路,而是针对设计目标进行功能描述,摆脱了电路细节的束缚,大大缩短了产品的研制周期。

同时,这种高层次设计只是定义系统的行为特性,而不涉及实现工艺,因此利用其综合优化工具使工艺转化变得轻而易举。

FPGA是现场可编程门阵列的简称。

起源于美国的Xilinx公司,它结合了微电子技术、电路技术和EDA技术,使设计者可以集中精力进行所需逻辑功能的设计,缩短设计周期,提高设计质量。

FPGA器件在结构上,由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块来实现一定的逻辑功能。

以Xilinx公司的FPGA器件为例,它的结构可以分为三个部分:

可编程逻辑块CLB(ConfigurableLogicBlocks)、可编程I/O模块IOB(Input/OutputBlock)和可编程内部连线PI(ProgrammableInterconnect)[4]。

FPGA的开发系统包括软件和硬件两个部分。

开发系统软件指专用的编程语言和相应的汇编程序或编译程序。

开发系统硬件部分包括计算机和编程器。

编程器是对FPGA进行写入和擦除的专用装置,能够供写入或擦除操作所需要的电源电压和控制信号,并通过串行接口从计算机接收编程数据,最终写进FPGA之中[5]。

基于FPGA的计费器系统利用VerilogHDL语言,采用模块化程序设计[3],自顶向下、由粗到细、逐步求精的方法,将基于FPGA的计费器系统的整体逐步分解各个模块。

它不需要专门的硬件,只通过软件编程即可实现计费器系统的逻辑功能、电路结构和连接形式。

VerilogHDL语言类似C语言,可读性强、更易理解,这种语言几乎覆盖了以往各种硬件描述语言的功能,在编程的过程中一般采用自顶向下的电路设计过程。

本设计利用VerilogHDL语言,在QuartusⅡ9.0软件中将出租车计费器基本结构分成8个模块对其进行程序汇编[6]。

将各块程序生成的.v文件组合在一起,生成数字钟源代码的.bdf图形文件,最后下载到CycloneⅡ系列芯片EP20C8Q208C8N中,验证试验结果。

在Protel99se的开发环境内,利用三极管、电阻、数码管、蜂鸣器等元器件设计该出租车计费器的外围电路,并进行PCB布线。

利用实验室现有的资源制作出相应的电路板并完成硬件电路的设计,和软件设计部分一起共同验证设计的最终结果。

2.总体设计

2.1设计要求

行程3公里内(包括3公里),且等待累计时间2分钟内(包括2分钟),起步费为6.0元;3公里外(不包括3公里)以每公里1.0元,等待累计时间2分钟外(不包括2分钟)以每分钟以1.0元计费。

能显示行驶公里数、等待累计时间和最后的总费用。

本计费器的显示范围为0~99元,计价分辨率为1元;计程器显示范围为0~99公里,分辨率为1公里;计时器的显示范围是分钟的显示范围是0~99,辨率为1分钟。

秒的显示范围是0~59。

分辨率为1秒。

2.2基本的原理方框图

 

图1基本原理方框图

该出租车计费器的基本原理方框图如图1所示,由时钟信号、等待信号、分频模块、行驶信号、计费/复位模块、主控模块、计时模块、计费模块、计程模块、显示输出模块8部分组成。

该计费系统通过分频模块将50MHz的时钟信号通过分频器变成1Hz的时钟信号和1KHz的显示输出信号。

该出租车计费的标准是起步价是6元,3公里之内费用不变,当超过3公里时,每行驶1公里,费用加收1元;在等待的过程中,2分钟之内,费用不变,当超过2分时,每经过2分钟,费用加收1元。

由start信号和reset信号共同来控制信号是等待信号还是行驶信号,当start是高电平且reset同时为高电平时,此时行驶信号起作用,出租车计费显示模块显示相应的费用和行驶的里程;当start是低电平且reset同时为高电平时,此时等待信号起作用,出租车计费显示模块显示相应的费用和等待的时间。

当reset为低电平时,计费系统复位。

该计费系统的显示费用是0~99元。

2.3开发环境

软件环境:

QuartusⅡ9.0软件、Protel99se软件、VerilogHDL语言。

硬件环境:

FPGA开发板、EP20C8Q208C8N芯片一片、4个相连的7段共阳极数码显示管2片、按键开关2个、单刀双掷开关2个、4.7K的电阻9个、100Ω的电阻8个、PNP三极管8个、NPN三极管1个[7]、蜂鸣器1个、导线若干、下载线一根等。

3.软件设计

3.1总体设计

利用VerilogHDL硬件描述语言用自顶向下的设计方法编写程序,将出租车计费器的模块分为时钟分频模块、显示分频模块、计时模块、计费模块、计程模块、数码显示模块、控制模块和主控模块8部分,其中顶层模块是主控模块。

主控模块用来控制出租车计费器的输入输出信号,即控制出租车计费器是处于行驶状态还是处于等待计时状态。

并且通过主控模块中的start信号和reset信号来控制时钟信号的状态[8]。

显示模块主要包括计时模块、计费模块、计程模块。

从而并实现出租车计费器的显示。

通过QuartusⅡ9.0软件编程之后,将分别生成计数器的分频模块、数码管的分频模块、计程模块、计时模块、计费模块、控制模块、数码管显示模块和主控模块的代码[1],对应的文本文件分别为div.v、div1.v、distancemokuai.v、timemokuai、feemokuai.v、control.v、scan_led.v、和zhukong.v。

各模块程序编译成功之后可以生成的总的模块图如图2所示。

将程序下载到FPGA的开发板上,系统分析论证后,各模块分工协作,共同实现出租车计费这一功能。

图2总模块图

3.2各模块设计

3.2.1时钟分频模块

图3时钟分频模块

计数器分频模块程序成功编译之后生成的模块图如图3所示,此模块是用于时钟信号的分频。

CLK是50MHZ的时钟信号,通过程序[9]:

if(!

reset)

begin

clk<='d0;

count=32'd0;

end

else

if(count==32'd25_000000)//判断计时器记到了25000000吗?

begin

count<=32'd0;//计到25_000000计数器清零

clk<~clk;//输出的时钟取反

end

else

count<=count+1'd1;//没计到25000000计数器加一

end

将时钟信号变成1HZ的信号,从而降低了时钟信号的周期,满足了本实验的要求。

它的详细代码见附录。

图4时钟仿真模块仿真波形

时钟分频模块的仿真结果如图4所示,从波形可以看出当reset为低电平的时候clk为零,当为高电平的时候clk的高电平占了clk_50M的5个周期,低电平也占了clk_50M的5个周期。

3.2.2数码管分频模块

图5数码管分频模块

显示分频模块程序成功编译之后生成的模块图如图5所示,此模块是用于显示信号的分频。

其中clk是50MHz的时钟信号[8],通过程序

if(!

reset)

begin

clk1<='d0;

count=32'd0;

end

elseif(count==32'd25_000)//判断计时器记到了25_000吗?

begin

count<=32'd0;//计到25_000计数器清零

clk1<=~clk1;//

将时钟信号变成1KHz的信号[10],从而满足实验的要求。

3.2.3计程模块

图6计程模块

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

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

计程模块的方框图如图6所示。

图7计程模块仿真波形

仿真的波形图如图7所示。

由图可以看出,reset为1时,且start为1时,计费模块开始计数。

其中distancehigh代表高4位,distancelow代表低4位,当distancelow计数记到3时,distance_enabe开始变成高电平。

且当distancelow记到9时,distancehigh开始由0变成1。

3.2.4计时模块

图8计时模块

此模块的功能是计算出租车在暂停的过程中等待的时间。

在出租车在等待过程中(即复位/启动信号reset为1,行驶/停止信号start为0),在时钟信号1Hz的上升沿到来的时候,系统即对时间计数器time进行计数[11],当时间超过2分钟(不包括2分钟)时,系统将输出正脉冲信号time_enable。

计时模块的方框图如图所示。

图9计时模块仿真波形

仿真的波形图如上图图9所示。

从波形图可以看出,在clk的控制下,当复位/启动信号reset为1,行驶/停止信号start为0的时候计数,此时time_enable为低电平。

3.2.5计费模块

图10计费模块

此模块的功能是计算出租车的费用,根据行驶路程和等待时间计算费用。

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

计费模块的方框图如图10所示。

图11计费模块仿真波形

仿真的波形图如图11所示。

由图可以看出,刚开始费用显示的是6元当复位/启动信号reset为1时,计费模块开始计费。

其中select_clk用于选择是处于计时状态还是处于计程状态。

因此当select_clk为高电平时计费;当select_clk为低电平时,停止计费。

在整个计费过程中,CLK为上升沿时,开始工作。

3.2.6 控制模块

图12控制模块

此模块功能是用于为计费和计时模块提供时钟信号,当start为0,time_able作用;当start为1时,distance_able作用。

控制模块的方框图如图12所示。

图13控制模块仿真波形

仿真的波形图如图13所示。

由图可以看出,在start为高电平的前提下,当distance_enable为高电平时,输出信号select_clk为计程信号,当time_enable为高电平时,输出信号select_clk为计时信号,我们由图中可以看出此时的仿真还是存在一定的误差的。

3.2.7数码管显示模块

图14数码管显示模块

此模块的功能是显示计程、计时、计费的结果。

其中数码管显示分为静态显示和动态显示。

在FPGA开发板上仿真时采用的是动态显示,在硬件电路中采用的是动态显示。

当时钟信号时高电平时,reset是1时,该模块将计程、计时、计费的结果显示出来。

数码管显示模块的方框图如图14所示。

3.2.8主控模块

图15主控模块

此模块是本次设计的顶层模块,将各分模块用是图形方法连接起来,便可实现系统电路的功能。

主控模块的方框图如图15所示。

4.结果仿真

QuartusⅡ9.0开发系统是Altera公司自行设计的一个完全集成化、易学易用的可编程逻辑设计环境。

它具有原理图输入和文本输入两种输入方式,利用该软件所配的编译、仿真、综合、芯片编程功能,能将设计电路图或电路描述程序变成基本的逻辑单元写入到可编程逻辑的芯片FPGA中。

QuartusⅡ9.0软件是用VerilogHDL语言来编写模块的必备工具。

设计中主要用Altera公司FPGA来实现显示,QuartusⅡ9.0软件支持Altera公司不同结构的可编程逻辑器件,能满足用户各种各样的设计需要。

4.1编译

在QuartusⅡ9.0软件菜单“Processing”中选择“StartCompilation”即可开始[12],编译成功后可以进行波形仿真。

若出现错误,应回到源程序查找原因,直到编译通过。

4.2管脚配置

在QuartusⅡ9.0环境下,先选择器件。

在“Assignments”菜单下打开“Device”窗口,在“DeviceFamily”对话框中,选择CycloneⅡ,并选择“AvailableDevices”中的EP20C8Q208C8N,然后在菜单“Assignments”下打开“Pins”开始引脚分配,根据芯片管脚具体分配情况,对输入输出信号进行管脚配置。

完成管脚配置后[13],需重新编译使之生效。

其具体管脚配置情况如表1示。

表1管脚配置

信号名

管脚号

信号名

管脚号

信号名

管脚号

信号名

管脚号

clk_50M

12

dig[3]

91

set[0]

76

set[5]

83

dig[7]

97

dig[2]

89

set[1]

77

set[6]

84

dig[6]

96

dig[1]

87

set[2]

78

set[7]

85

dig[5]

95

dig[0]

86

set[3]

81

start

71

dig[4]

92

reset

75

set[4]

82

4.3程序下载

上述通过上。

本开发板用到的是Altera公司的CycloneⅡ系列EP20C8Q208C8N芯片,如图16所示。

具体方法如下:

(1)将下载电缆一端插入开发板上的USB-Blaster,另外一端插入到电脑中[14],然编译后利用一根导线,开始将程序下载到因仑实验室的FPGA开发板后打开开发板的电源。

(2)从“Tools”菜单下选择“Programmer”,在弹出的菜单中选择“Hardwaresetup”对话框,在“HardwareType”下拉框中选择“USB-Blaster”,即可将程序下载到FPGA的开发板上。

在FPGA开发板上进行系统仿真,并用开发板上的拨码开关K1、K2代替reset信号和start信号。

结果由开发板上的2个数码管进行动态显示。

图16FPGA开发板

5.硬件电路

下面由硬件电路系统对本次设计进行验证。

硬件电路即本设计的外围扩展电路,是本设计的重要环节,和软件设计部分一起共同完成设计的最终目标。

在硬件电路设计的过程中需要用到FPGA开发板、EP20C8Q208C8N芯片1片、4个相连的7段共阳极数码管2片、按键开关2个、单刀双掷开关2个、4.7K的电阻9个、100Ω的电阻8个、PNP三极管8个、NPN三极管1个、蜂鸣器1个、导线若干,在Protel99se的环境下所画的电路原理图如图16所示。

图17Protel99se中的电路原理图

在该图中,EP20C8Q208C8N芯片用插排器件con代替;通过2个四个相连的7段共阳极数码管显示输出结果,其中数码管显示采用的是动态显示;图中共有4个开关,其中两个为单刀双掷开关,两个为按键开关,这四个开关所起的作用相同,都是用来控制start信号和reset信号,并通过黄色和绿色两个发光二极管发光来显示两个信号处于正常工作状态;外围电路还设计了一个蜂鸣器。

6.系统使用说明

开发板提供的时钟信号是50MHz,通过计数器分频将时钟信号变成1Hz,然后提供给计程模块和计时模块;通过显示分频模块将时钟信号变成1KHz的信号,然后提供给数码管显示模块。

通过reset信号和start信号来控制计时和计费状态。

当reset为低电平时,计费系统恢复为起步价六元。

当reset信号和start信号同时为高电平时,系统处于计程状态,在3公里之内(包括3公里),费用是6元不变,当超过3公里时,每行驶一公里,费用加收一元。

行驶的里程显示范围是0~99,费用显示范围是0~99元。

当reset信号为高电平同时start信号为低电平时,系统处于等待计时状态,在计时时间2分钟之内(包括2分钟),费用不变,当超过2分钟时,每隔2分钟,费用加收一元。

出租车计费器的结果通过8个数码管来动态显示。

结束语

FPGA芯片的成本越来越低,未来基于FPGA平台的出租车计费器会有更低的成本、更小的体积、更安全、更精确、多功能[15]。

本文基于FPGA的出租车计费器设计,分别介绍了整个系统和各模块的设计。

使用FPGA芯片、VerilogHDL硬件描述语言、QuartusⅡ9.0软件和一些外围电路,实现了软件和硬件的设计制作。

本文介绍的出租车计费器能够实现最基本的计时、计程、计费功能。

通过将程序下载到FPGA的开发板上,可以验证所得的结果与预期的结果基本一致,并通过设计硬件外围电路,更形象的仿真了出租车计费系统。

如果将该设计再结合到实际应用中,那么,只需改变设计中计费要求,就可以应用到出租车上。

另外,如果再任意输入该出租车计价器的计费标准,那么,它的适用范围可能就更广泛了。

但是由于本人知识水平有限,只是实现了出租车计费系统最基本的计时、计程、计费功能,而且本次设计能够计算的里程和费用范围都是0~99,范围比较小。

在实际的出租车计费系统中还牵涉到不同的出租车的车轮并不完全相同,因此存在计程设定问题,密码设定、超速报警、按键抖动等问题都需要考虑。

可以说本设计只是完成了一个具备最基本功能的出租车计费器设计。

但从某种角度来看,这种方法由于不涉及具体电路问题,设计简单易懂,只用软件仿真就可验证其功能,可以为其他电子产品设计提供借鉴作用。

参考文献:

[1]张慧.基于FPGA的出租车计费系统设计.山西电子技术[J],2011(3):

64-66.

[2]廖艳秋.基于FPGA的

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

当前位置:首页 > 经管营销 > 经济市场

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

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