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

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

$
湖南工程学院
课程设计
课程名称嵌入式系统
课题名称基于CPLD的出租车计费器
专业电子信息工程
|
班级电子信息
学号 0113
姓名魏震洲
指导教师林愿
2015年12月20日
湖南工程学院
%
课程设计任务书
课程名称:嵌入式系统
题目:基于CPLD的出租车计费器
专业班级:电子信息
学生姓名:魏震洲

指导老师:林愿
审批:
任务书下达日期 2015 年12 月 1日
设计完成日期 2015 年 12月 15日
)

目录
摘要 (1)
Abstract (1)
引言 (1)
1.概述 (2)
2.总体设计 (3)
设计要求 (3)
基本的原理方框图 (3)
开发环境 (4)
3.软件设计 (4)
总体设计 (4)
各模块设计 (5)
4.结果仿真 (11)
编译 (11)
管脚配置 (11)
程序下载 (12)
5.硬件电路 (12)
6. 系统使用说明 (13)
结束语 (14)
参考文献 (14)
致谢 (15)
附录 (17)
基于CPLD的出租车计费器
摘要:本文借助QuartusⅡ软件,基于大规模可编程逻辑器件FPGA,利用Verilog HDL语言,进行出租车计费器设计。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以Xilinx公司的FPGA器件为例,它的结构可以分为三个部分:可编程逻辑块CLB(Configurable Logic Blocks)、可编程I/O模块IOB(Input/Output Block)和可编程内部连线PI(Programmable Interconnect) [4]。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

秒的显示范围是0~59。

分辨率为1秒。

基本的原理方框图
是1元;在等待的过程中,2分钟之内,费用不变,当超过2分时,每经过2分钟,费用加收1元。

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

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

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

开发环境
软件环境:QuartusⅡ 软件、Protel99se软件、Verilog HDL语言。

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

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

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

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

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

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

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

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

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

图2总模块图
各模块设计
3.2.1时钟分频模块
clk_50M reset
clk div
inst8
VCC clk_50M INPUT VCC
reset
INPUT clk
OUTPUT
计数器分频模块程序成功编译之后生成的模块图如图3所示,此模块是用于时钟信号的分频。

CLK 是50MHZ 的时钟信号,通过程序[9]:
if(!reset) begin clk<='d0; count=32'd0; end else
if(count==32'd25_000000)
50M50M3.2.2
clk_50M reset
clk1
div 1
inst12
VCC
clk_50M INPUT
VCC reset
INPUT
clk1
OUTPUT 3.2.3
clk start reset
distance[7..0]distance_enable
distancemokuai
inst13
VCC clk
INPUT
VCC start
INPUT VCC
reset
INPUT distance[7..0]
OUTPUT distance_enable
OUTPUT
三公里
3
.2.4
clk
reset start
s[7..0]
m[7..0]
time_enable
timemokuai inst16VCC
clk
INPUT
VCC
reset
INPUT
VCC
start
INPUT
s[7..0]OUTPUT m[7..0]
OUTPUT time_enable
OUTPUT
3.2.5select_clk reset clk f ee[7..0]
f eemokuai inst21VCC select_clk INPUT VCC reset INPUT
VCC
clk
INPUT f ee[7..0]
OUTPUT
3公里1
公里
3.2.
6
start
distance_enable time_enable select_clk
control
inst24VCC reset INPUT VCC reset25
INPUT VCC reset26INPUT clk
OUTPUT
3
.2.7
clk1
distance[7..0]s[7..0]m[7..0]f ee[7..0]dig[7..0]seg[7..0]
scan_led
inst27VCC
f ee[7..0]
INPUT VCC
m[7..0]INPUT VCC s[7..0]
INPUT VCC distance[7..0]INPUT VCC
clk1
INPUT dig[7..0]OUTPUT
seg[7..0]
OUTPUT
图3时钟分频模块
图4时钟仿真模块仿真波形 图5数码管分频模块 图6计程模块 图7计程模块仿真波形
图8计时模块 图9计时模块仿真波形 图10计费模块 图11计费模块仿真波形 图12控制模块
图13控制模块仿真波形 图14数码管显示模块
果仿真
QuartusⅡ开发系统是Altera 公司自行设计的一个完全集成化、易学易用的可编程逻辑设计环境。

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

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

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

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

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

管脚配置
在QuartusⅡ环境下,先选择器件。

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

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

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

表1管脚配置
程序下载
上述通过上。

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

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

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

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

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

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

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

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

图16 FPGA开发板
9P
图17 Protel99se中的电路原理图
在该图中,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芯片、Verilog HDL硬件描述语言、QuartusⅡ软件和一些外围电路,实现了软件和硬件的设计制作。

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

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

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

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

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

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

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

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

参考文献:
[1] 张慧.基于FPGA的出租车计费系统设计.山西电子技术[J],2011(3):64-66.
[2] 廖艳秋.基于FPGA的出租车计费器设计[D] .成都:电子科技大学硕士学位论文,2008:
42-45.
[3] 曹公正,陈娟,张宝利,陈乾辉.FPGA在出租车计费器上的研究与设计[J].长春工业大
学学报,2007(28):267-270.
[4] 侯宝强,刘和平.FPGA和CPLD器件的特点与应用.电子与自动化[J],2000(2):8-11.
[5] 井海明,刘玉红,刘永军.FPGA技术及其与其他技术的综合应用[J].仪表技术,2004(2):
42-45.
[6] 吴冬梅,吴延梅,邓玉玖.基于CPLD/FPGA的出租车计费器[J].电子技术应用,2004(11):
71-73.
[7] 童师白,华成英.模拟电子技术基础[M].北京:高等教育出版社,2009:28-36.
[8] Liu Yongliang,Zhao Lei,Zhen Peng,Fan Jing.Design and Implementation of
Distributed Multipoint Temperature Acquisition System[J].Microcomputer
information,2007(25):145~147.
[9] 杜惠敏,李宥谋,赵全良.基于Verilog的FPGA设计基础[M].西安:高等西安电子科
技大学,2006:192-200.
[10] Zhou Yucai,Liu Shaojun,Deng Yi,Liu Zhouwei,Rao Hongde.Design on the system
of temperature testing based on grouping DS18B20 [J].Microcomputer information,2007(23):161~163.
[11] Zhan Lunmin.1-wire Bus Technology and Realization of High Precise Measurement
of DS1821 [J].Journal of South-Central University for Nationalities (Natural Science Edition),2007(26):73~76.
[12] Jone Wulenskl.VHDL Digital System Design[M] .北京:电子工业出版社,2004,10~
105.
[13] Sheng Wenli.1-wire Device Bus Timing under C Complier [J].Journal of Northeast
China Institute of Electric Power Engineering (Natural Science Edition),2004(24):82~85.
[14] Yi Feng,Ke Xiao.The Distribution Temperature Sampling Based on FPGA[J].The
authors --Published by Atlantis Press,2011(23):57~59.
[15] 茅丰.基于FGA的出租车计费器设计[D].上海:上海交通大学硕士学位论文,2007:
43-44.】。

相关文档
最新文档