基于FPGA的出租车计费器.docx
《基于FPGA的出租车计费器.docx》由会员分享,可在线阅读,更多相关《基于FPGA的出租车计费器.docx(26页珍藏版)》请在冰豆网上搜索。
基于FPGA的出租车计费器
摘要1
Abstract1
第一章引言2
1.1课题背景2
1.2本文的主要工作2
第二章FPGA、VHDL介绍4
2.1FPGA现状及发展4
2.2FPGA的结构与特点4
2.2.1FPGA基本结构5
2.2.2FPGA的特点6
2.3VHDL设计优点6
第三章出租车计费器的设计7
3.1出租车计费器的总体设计7
3.1.1出租车计费标准7
3.1.2总体框架设计7
3.2出租车计费器主要模块设计8
3.2.1速度模块9
3.2.2计程模块9
3.2.3计时模块10
3.2.4计费模块10
第四章整体电路设计11
4.1整体电路图11
4.2电源电路12
4.3启动/停止按键电路12
4.4自动清零部分13
第五章系统仿真与下载实现13
5.1QuartusⅡ软件介绍14
5.1.1软件特点14
5.1.2QuartusⅡ设计流程:
14
5.2仿真结果15
5.2.1整体仿真15
5.2.2速度模块仿真15
5.2.3计程模块仿真16
5.2.4计时模块仿真16
5.2.5计费模块仿真17
5.3设计测试17
第六章总结及展望18
·致谢19
·主要参考文献19
基于FPGA的出租车计费器设计
摘要:
随着EDA技术的高速发展,电子系统的设计技术和工具发生了深刻的变化,大规模可编程逻辑器件CPLD/FPGA的出现,给设计人员带来了很多方便。
利用它进行产品开发,可以降低研发成本,缩短研发周期。
本文介绍了一种采用FPGA芯片进行出租车计费器的设计方法,描述了研究该课题的意义和应用价值;说明了Altera公司的FPGA结构原理及其主要运用;介绍了超高速集成电路硬件描述语言的主要功能和设计;讲解了出租车计费器的系统原理和功能。
本文主要采用了Altera公司的可编程逻辑芯片EPC2C35F672C8为核心控制,并附加一定外围电路组成出租车计费器,使用目前流行的VHDL语言进行设计,具有移植性强的特点,便于升级及可重复使用。
利用QuartusⅡ6.0对所设计的出租车计费器的VHDL代码进行仿真,并在FPGA数字实验系统上实现了该控制。
关键字:
FPGA,VHDL,QuartusⅡ,出租车计费器
DesignofTaxiMeterBasedonFPGA
ABSTRACT:
WiththerapiddevelopmentofEDAtechnology,thedesignandtoolsofelectronicsystemhavedeeplychanged.Andthelarge-scaleprogrammablelogicdeviceCPLD/FPGAappearancetomakeconveniencefordesigner.Byusingittoresearchanddevelop,itwillhelpdevisertoreducecost,shortencycle.ThisessayintroducesadesignoftaximeterbyusingFPGAchip,describesthesignificanceandimportancetoresearchthis,explainmakeupelementsofFPGAwhichismadebyAlteraCompany,introducethemainfunctionanddesignofVery-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,interpretthetaximeterprincipleandfunctionsofthesystem.ThisessaymainlyusetheEPC2C35F672C8forcorecontrol,andaddsomeoutsidecircuittomakeataximeter.ItisdesignedwithVHDLLanguageanditcanbemigratedeasier.Thismaketheproductmuchmoreconveniencetorepeatuse.ByusingQuartusⅡ6.0toemulatetaximeterVHDLcode,thePFGAdigitalexperimentsystemcanbecontrolled.
KeyWords:
FPGA,VHDL,QuartusⅡ,TaxifareRegisters
第一章引言
1.1课题背景
几年来,出租车行业发展迅速,全国大大小小的出租车公司已有数千家,基于出租车的附属品市场前景也是十分广阔。
传统的出租车计费器大多是由单片机实现的,发展使用也是十几年了,在稳定性、成本、制造工艺、使用习惯等方面都具有一些优势,但在运营过程中系统不是很稳定,容易造成死机的现象。
传统计费器的不足点:
1.产品更新周期长:
传统的计费器利用微控器,大部分功能依靠单片机实现。
但单片机的程序不通用,不同芯片指令集不相同,因此设计研发比较困难,周期很长。
2.计价方式不灵活:
每次计价标准修改都需要重新烧录芯片,使得每次价格调整都成为很费力的事情,很难适应社会发展的需要。
本设计基于FPGA的出租车计费器主要由Altera公司的CycloneⅡ型系列芯片EPC2C35F672C8及一些外部控制电路组成。
使用软件QuartusⅡ和超高速硬件描述语言VHDL来实现计价标准灵活设定。
FPGA在电子设计领域中价格低廉,有良好的发展趋势,它的出现必定会占领大部分数字器件市场。
1.2本文的主要工作
面对出租车行业日益迅猛的发展趋势及对计费器更高的灵活性的要求,本设计希望尝试一些新的方法来予以解决。
(1).利用FPGA取代传统微控器
随着FPGA等数字可编程器件的出现解决了传统电子设计不能完成的任务,利用FPGA来实现出租车计费器,可行性很高,而且电路简单,大大减少外围器件,可以用软件完全仿真,灵活度高,可以设计一些复杂的系统,而且编好的系统可以在不同的FPGA或CPLD芯片上通用。
FPGA能完成任何数字器件的功能,使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。
同时由于FPGA的功能完全取决于VHDL语言编写的程序,不拘泥于某种芯片的特殊指令,更加提高了产品的更新换代能力。
(2).完成基于FPGA的出租车计费器的设计
出租车计费器系统是VHDL语言的实际应用,利用VHDL语言设计出来的出租车计费器系统将实现计程模块、计时模块以及动态扫描模块等设计方法与技巧。
计程模块将用计数器来完成,计数器对脉冲数计数,然后提供给程序数据。
通过不同的信号,然后用比较器可以让我们确定出租车是在车行计程还是车停计时。
再将数据传输到计费模块,通过多种条件判定,最后确定输出值,然后相加确定最后的费用,并显示出来。
第二章FPGA、VHDL介绍
2.1FPGA现状及发展
FPGA是现场可编程门阵列(FieldProgrammableGateArray)的简称。
它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA起源于美国的Xilinx公司,该公司于1985年推出了世界上第一块FPGA芯片。
在这二十年的发展过程中,FPGA的硬件体系结构和软件开发工具都在不断的完善,日趋成熟。
从最初的1200个可用门,90年代时几十万个可用门,发展到目前数百万门至上千万门的单片FPGA芯片,Xilinx、Altera等世界顶级厂商已经将FPGA器件的集成度提高到一个新的水平。
FPGA结合了微电子技术、电路技术、EDA技术,使设计者可以集中精力进行所需逻辑功能的设计,缩短设计周期,提高设计质量。
目前世界上有十几家生产CPLD/FPGA的公司,最重要的几家是Altera、Xilinx、Lattice和Actel。
Actel公司生产的FPGA广泛应用于通信等领域,该公司的部分FPGA系列采用了繁荣死结构,可以应用于航空航天、军事领域。
另外一些FPGA采用了Flash工艺制造。
Xilinx公司目前有8款FPGA的DSP。
其中Sparten-3ADSP为低端产品,高端的Virtex-DSP分为两个产品线:
Virtex-4SX,采用了65nm工艺的Virtex-5SXT。
所以Xilinx的产品从21最多到352个GMAC/s(千兆乘加/秒),以提供不同范围的性能,同时也增大在存储器方面的带宽。
因此最低速产品可以运行到250MHz,告诉产品运行到550MHz;MAC单元从84到640。
Altera公司的高密度StratixⅢ器件拓展FPGA的DSP性能。
嵌入式DPS模块运行在550Hz,这些器件可达每秒492千兆乘加(GMAC)的性能,并结合良好的逻辑结构于速度优化的互联。
StratixⅡ器件可以引脚完全兼容地移植到HardCopyⅡ结构化ASIC,从而保证客户的设计功能没有任何改变。
Altera的新一代结构化ASIC芯片,逻辑相当于多达220万ASIC门,DSP模块相当于额外的140万门,还有集成超过8Mbits的嵌入式存储器。
2.2FPGA的结构与特点
2.2.1FPGA基本结构
目前生产FPGA的主要公司有Altera、Xilinx、Lattice和Actel,生产的FPGA品种和型号繁多,尽管这些FPGA的集体结构和性能指标各有特色,但它们都有一个共同之处,即由逻辑功能块排成阵列,并有可编程的互连资源连接这些逻辑功能块,从而实现不同的设计。
典型的FPGA通常包含三类基本资源:
可编程逻辑功能块、可编程输入/输出块和可编程互联资源,基本结构如图2-1所示。
图2-1FPGA基本结构
2.2.2FPGA的特点
FPGA使用的是可编程的查找表(LookUpTable,LUT)结构,LUT是可编程的最小逻辑结构单元。
大部分FPGA采用基于SRAM的查找表逻辑形成结构,就是用SRAM(静态随机存储器)来构成逻辑函数发生器。
一个N输入查找表(LUT)可以实现N个输入变量的任何逻辑功能。
目前市场上有三种基本FPGA编程技术:
SRAM、反熔丝、Flash。
其中SRAM是迄今为止应用范围最广的架构,主要因为它速度快且具有可重编程能力,而繁荣死FPGA只具有一次可编程(OneTimeProgrammable,OTP)能力。
基于Flash的FPGA是FPGA领域比较新的技术,也能提供重编程功能。
2.3VHDL设计优点
利用VHDL语言设计数字逻辑硬件系统具有多方面的优点。
1.VHDL可以用来描述逻辑设计的结构,比如逻辑设计中有多少个子逻辑,而这些子逻辑是如何连接的。
2.VHDL并不十分关心一个具体逻辑是靠何种电路实现的,设计者主要把精力集中电路所能实现的功能上。
3.VHDL采用类似于高级语言的语句格式完成对硬件行为的描述,所以我们称VHDL为行为描述语言。
4.VHDL所给出的逻辑的模拟与调试为设计者提供了最大的空间,用户甚至不必编写任何测试向量便可进行源代码级的调试。
5.设计者可以非常方便地比较各种方案的可行性和优劣,大大降低了设计的难度。
并且设计者的原始描述是非常简练的硬件描述,经过EDA工具处理最终生成付诸生产的电路描述或版图参数描述的工艺文件。
6.VHDL语言具有良好的可读性,VHDL语言中的设计尸体(DesignEntity)、程序包(Package)、设计库(Library)为设计人员重复利用别人的设计成果提供了技术手段。
第三章出租车计费器的设计
3.1出租车计费器的总体设计
3.1.1出租车计费标准
车起步开始计费,首先显示起步价,起步费为3.00元,车在行驶3km以内,只收起步价。
车行驶超过3km后,每公里2元,车费依次累加。
当总费用达到或超过40元时,每公里收费4元。
当遇到红灯或客户需要停车等待时,则按时间计费,计费单价为每20秒收费1元。
3.1.2总体框架设计
系统流程介绍:
分析系统设计要求不难得知,整个出租车计费系统按功能主要分为速度模块、计程模块、计时模块和计费模块,其系统结构图如图3-1所示。
图3-1出租车计费器系统结构图
系统接收到reset信号后,总费用变为3元,同时其他计数器、寄存器等全部清零。
系统接收到start信号后,首先把部分寄存器赋值,总费用不变,单价price寄存器通过对总费用的判断后赋为2元。
其他寄存器和计数器等继续保持为0。
速度模块:
通过对速度信号sp的判断,决定变量kinside的值。
Kinside即是行进100m所需要的时钟周期数,然后每行进100m,则产生一个脉冲clkout。
计程模块:
由于一个clkout信号代表行进100m,故通过对clkout计数,可以获得共行进的距离kmcount。
计时模块:
在汽车启动后,当遇到顾客等人或红灯时,出租车采用计时收费的方式。
通过对速度信号sp的判断决定是否开始记录时间。
当sp=0时,开始记录时间。
当时间达到足够长时产生timecount脉冲,并重新计时。
一个timecount脉冲相当于等待的时间达到了时间计费的长度。
这里选择系统时钟频率为500Hz,20s即计数值为1000。
计费模块由两个进程组成。
其中,一个进程根据条件对enable和price赋值:
当记录的距离达到3公里后enable变为1,开始进行每公里收费,当总费用大于40元后,则单价price由原来的2元每公里编程4元每公里;第二个进程在每个时钟周期判断timeout和clkout的值。
当其为1时,则在总费用上加上相应的费用。
3.2出租车计费器主要模块设计
从上述设计方案中我们可以大致得到出租车计费器的系统框图,如图3-2所示。
其中clk为输入时钟脉冲,时钟上升沿有效;reset为复位信号,start为开始计费信号,stop为停止计费信号,均高电平有效;SP[2..0]表示出租车状态(停止或不同形式速度);kmcnt和count信号则分别输出出租车行驶的里程和花费。
图3-2出租车计费器系统框图
3.2.1速度模块
速度模块首先根据start信号判断是否开始计费,然后根据输入的速度档位sp[2..0]的判断,确定行驶100m所需要的时钟数,每前进100m,输出一个clkout信号。
同时由cnt对clk进行计数,当cnt等于kinside时,把clkout信号置1,cnt清0。
其模块框图如图3-3。
图3-3速度模块框图
3.2.2计程模块
此模块主要用于记录行进的距离,其模块框图如图3-4所示。
通过对clkout信号的计数,可以计算行驶的距离kmcount。
一个clkout脉冲相当于行进100m所以只要记录clkout的脉冲数目即可确定共行进的距离。
Kmcount1为十分位,kmcount2为个位,kmcount3为十位,分别为十进制数。
图3-4计程模块框图
3.2.3计时模块
速度模块主要用于计时收费,记录计程车速度为0的时间(如等待红灯),其模块框图如图3-5所示。
通过对sp信号的判断,当sp=0,开始记录时间。
当时间达到足够长时,产生timecount脉冲,并重新计时。
图3-5计时模块框图
3.2.4计费模块
计费模块如图3-6所示,可分为kmmoney1和kmmoney2两个进程。
Kmmoney1用于产生enable和price信号。
当记录距离达到3km后,enable信号为1,开始进行每公里收费。
当总费用大于40元后,单价price由原来的2元变成4元,用作计时收费。
通过对sp信号的判断,当sp=0,开始记录时间。
当时间达到足够长时,产生timecount脉冲,并重新计时。
Kmmoney2用于判断timecount和clkout的值,当其为1时,总费用加1。
最终输出为总费用。
图3-6计费模块框图
第四章整体电路设计
4.1整体电路图
整体RTL电路如图4-1。
硬件电路由CycloneⅡ电路板组成,clk为时钟周期信号,由试验箱产生,start/stop是启动停止按键电路,reset为自动清零电路。
电源又AD-DC开关电源供电。
图4-1整体RTL门电路
4.2电源电路
电源采用了是比较流行的开关电源,AD-DC开关电源,输入115VAC到230VAC,输出+5V(4A)。
使用开关电源的好处就是比较节省能源,它的转换效率很高,可达85%以上,稳压范围宽,除此之外,还具有稳压精度高、不使用电源变压器等特点。
4.3启动/停止按键电路
如图4-2所示,采用双刀双路开关,一路开关用于清零部分,由于显示部分特殊要求,即计费停止后屏幕上荏苒要保持计费的所有信息,只有当下次计费启动时才清零从新开始计费。
另外两路开关,其中一路用于启动指示和启动/停止输出信号给FPGA芯片的I/O口。
当按下键后,清零部分和启动计费部分同时进行,但清零只是瞬间的,计费指示灯两起。
再次按下键后,开关换到另外的两路,空车指示灯亮起。
图4-2启动/停止按键电路
4.4自动清零部分
由于显示部分的特殊要求,即计费停止后屏幕上仍然要保持计费的所有信息,只有当下次计费启动时才清零从新开始计费。
VHDL语言的特殊性,不能在一个结构中用两个不同的动作使其赋值。
所以必须要有一个瞬间清零的信号,当FPGA的清零I/O端口为“1”时就自动清零。
使用电容的充放电功能来实现,按键断开时清零输出端为接地,按键闭合时电容充电清零端为高电平,充完电后清零端输出又为低电平,当按键断开后,通过一个2k欧姆的电阻放电,为下次充电做好准备。
如图4-3所示。
图4-3自动清零电路
第五章系统仿真与下载实现
5.1QuartusⅡ软件介绍
5.1.1软件特点
QuartusⅡ是Altera公司自行设计的一个完全集成化、易学易用的可编程逻辑设计环境,它提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
1.可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;
2.芯片(电路)平面布局连线编辑;
3.LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;
4.功能强大的逻辑综合工具;
5.完备的电路功能仿真与时序逻辑仿真工具;
6.定时/时序分析与关键路径延时分析;
7.可使用SignalTapⅡ逻辑分析工具进行嵌入式的逻辑分析;
8.支持软件源文件的添加和创建,并将它们连接起来生成编程文件;
9.使用组合编译方法可一次完成整体设计流程;
10.自动定位编译错误;
11.高效的期间编程与验证工具;
12.可读入标准的EDIF网表文件、VHDL网表文件、和Verilog网表文件;
13.能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件;
5.1.2QuartusⅡ设计流程:
1.设计输入:
完成器件的硬件描述,包括文本编辑器、块与符号编辑器、MegaWizard插件管理器、约束编辑器和布局编辑器等工具;
2.综合:
包括分析和综合器、辅助工具和RTL查看器等工具;
3.不惧连线:
将设计综合后的网表文件映射到实体器件的过程,包括Fitter工具、约束编辑器、布局图编辑器、芯片编辑器和增量布局连线工具;
4.时序分析;
5.2仿真结果
5.2.1整体仿真
对电路整体进行仿真,得出如下仿真波形图5-1。
图中,当复位信号reset为高电平时,系统所有寄存器、计数器都清零;当开始计费信号start信号有效时,计费器开始计费,根据出租车行驶的速度sp[2..0]的取值计算所用花费和行驶里程;当停止计费信号有效时,计费器停止工作。
图5-1出租车计费器仿真波形图
5.2.2速度模块仿真
速度模块的仿真波形图如图5-2所示。
该模块根据出租车所处的运行状态和不同的形式速度,对相应数目的时钟周期进行计数,车每行驶100m时输出信号clkout输出高电平。
图5-2速度模块仿真波形图
5.2.3计程模块仿真
计程模块的仿真波形如图5-3所示。
图中,当reset信号有效时,系统复位清零;否则,对输入信号clkout进行十进制计数。
图5-3计程模块仿真波形图
5.2.4计时模块仿真
计时模块的仿真波形图如图5-4所示。
预设1000个时钟周期为20s,对时钟周期进行计数,每计1000个时钟周期输出高电平,指示计时20秒。
图5-4计时模块仿真波形图
5.2.5计费模块仿真
计费模块的仿真波形图如图5-5所示。
当reset信号有效时,系统复位清零;否则,当计时计费信号timecount和计程计费信号clkout为高电平时,按照一定计费规则进行计费。
图5-5计费模块仿真功能图
综上所述,本设计的出租车计费器完全符合系统设计的要求,实现了出租车计费器所需的各项基本功能。
5.3设计测试
利用QuartusⅡ6.0对所设计出租车计费器的VHDL代码进行了仿真,并在CycloneⅡ型可编程数字实现系统上实现了该控制。
该数字实现系统分成两部分,一是FPGA的下载板,它主要包括所使用的芯片、RS-232接头、接脚转换插槽等;另一部分是I/O实验板,它主要包括显示、脉冲输出等。
出租车计费器的各部分利用数字实验系统所附的RS-232连接线将计算机中的VHDL代码设计的内容烧录到该实验系统的EPC2C35F672C8芯片中进行测试,测试结果基本实现了总费用=起费用+(里程-3km)×里程单价+等待时间×等待单价的出租车计费模式。
第六章总结及展望
本文论述了基于FPGA的出租车计费器设计,分别介绍了整个系统和各个模块的设计,使用FPGA芯片、VHDL硬件描述语言作为设计手段,利用自顶向下的模块化设计思路,通过在QuartusⅡ软件下进行的模拟仿真,并进行相应的硬件下载调试,证明所设计的系统完成了出租车计费器的功能,各项技术指标符合预定标准,具有一定实用性。
由于本人在经验水平上的欠缺,设计中可能存在很多不足,请各位老师予以指证!
近年来,FPGA在通信、控制、数据计算等领域得到了广泛的应用,利用FPGA来设计电子产品可减少电子系统的开发风险和开发成本;缩短了上市时间;通过在系统编程、远程在线重构等技术降低维护升级成本。
并且,FPGA器件的成本越来越低,Actel公司发布第三代的基于Flash的可编程逻辑方案,这些新的FPGA芯片最低价将达到1.5美元,代表全球最低成本的FPGA。
这些都说明可编程器件已成为现在及未来很长一段时间的主流,用它来实现的出租车计费器省去很多外围电路,稳定,简单有效,将来必然可以设计出更多更强大的功能,提高产品竞争力。
未来基于FPGA平台的出租车计费器将会有更低的成本、更小的体积、更安全、更精确和更多功能。
·主要参考文献
[1]刘韬,楼兴华.《FPGA数字