基于CPLD/PPGA的出租车计费系统

发布者:SereneMeadow最新更新时间:2011-10-17 关键字:出租车计费  CPLD  PPGA 手机看文章 扫描二维码
随时随地手机看文章

随着EDA技术的高速发展,电子系统的设计技术和工具发生了深刻的变化,大规模可编程逻辑器件CPLD/FPGA的出现,给设计人员带来了诸多方便。利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。本文介绍了一个以Altera公司可编程逻辑芯片EPM7128SLC84-15为控制核心、附加一定外围电路组成的出租车计费器系统。

1 系统组成

基于CPLD/FPGA的出租车计费器的组成如图1所示。各部分主要功能如下:(1)A计数器对车轮传感器送来的脉冲信号进行计数(每转一圈送一个脉冲)。不同车型的车轮直径可能不一样,通过“设置1”对车型做出选择,以实现对不同车轮直径的车进行调整。(2)B计数器对百米脉冲进行累加,并输出实际公里数的BCD码给译码动态扫描模块。每计满500送出一个脉冲给C计数器。“设置2”实现起步公里数预制。(3)C计数器实现步长可变(即单价可调)的累加计数,每500米计费一次。“设置3”用来完成超价加费、起步价预制等。(4)译码/动态扫描将路程与费用的数值译码后用动态扫描的方式驱动数码管。(5)数码管显示将公里数和计费金额均用四位LED数码管显示(三位整数,1位小数)。

2 功能模块设计

出租车计费器由车型调整模块、计程模块、计费模块、译码动态及扫描等模块组成,整个系统采用模块化设计,首先用VHDL编写功能模块,然后用顶层原理图将各功能模块连接起来。

2.1 车型调整模块

出租车车型并非单一,各个车型的轮胎直径亦有所不同。据调查统计,现行出租车轮胎直径大致有四种,直径分别为520mm、540mm、560mm和580mm。若要使不同车型的出租车每行驶一百米均送出一个脉冲,可通过设置“可预制分频器”的系数来完成。根据上述车轮直径计算出的分频系数分别为61、59、57和55。预制数据受两个车型设置开关控制,DIP开关状态与车轮直径对应关系如表1所示(表中“1”为高电平,“0”为低电平)。

表1 车型设置

在参数预制中,使用With_Select语句(查表法)做分频选择:

with cartype select

typecounter<=“111101”when“00”, --520mm

“111011”when“01”, --540mm

“111001”when“10”, ——560mm

“111000”when“11”, --580mm

“000000”when others;

分频器采用的是加法分频电路,其占空比可通过datal(x)进行调整,并且分频器带有“开始”/“清零”端(高电平清零)。时序仿真波形如图2所示。从图中可以看出,对于设置开关为“10”的车型,当第57个脉冲到来时,该模块oclk端从高变低,输出一低电平信号。车型调整模块(以下简称FP)封装见图4。

2.2 计程模块

计程模块是一个模为10、步长为1的加法计数器。该模块可以预制参数,使其实际计数值大于预制数值后,每500米送出一个脉冲,并将计数值送译码动态扫描模块进行显示。预制参数采用非压缩BCD码,所以在计数器设计时必须将二进制1010至1111六个状态跳过去。在VHDL程序中,用IF语句来实现。

if km(3 downto 0)=“1001”then km:=km+“0111”:

else km:=kin+1;

end if;

计程模块也带有“开始”/“清零”端。参数预制同样使用With_Select语句。“起步里程”和“开关设置”对应关系如表2所示。计程模块(以下简称MILE)封装见图4。

表2 起步里程设置

2.3 计费模块

计费模块是一个模为10、步长可变的加法计数器。该模块通过开关量预制步长,当超过一定预制参数时改变步长。计费模块也采用非压缩BCD码,但因步长不为1,所以在做非压缩BCD加法时必须调整,否则可能导致在超过或未超过预置参数时出现超程错误。这里采用模仿微机的AF标志位,在其设立一个半进位标志,当累加和大于9或半进位标志为“1”时,对累加和进行调整。

if datal(3 downto 0)>9 or datal(4)=‘1'then

datal(3 downto 0):=datal(3 downto 0)+“0110”;

datal(8 downto 5):=datal(8 downto 5)+1;

end if;

其中,data(4)为半进位标志。“起步价格”和“超价加费”设置参数分别如表3和表4所示。计费模块(以下简称MONEY)封装见图4。

表3 起步价格设置

表4 超价加费设置

2.4 显示模块

显示模块由七段LED数码管译码和动态扫描显示两部分组成。

2.4.1 七段LED数码管译码

本次设计采用的是共阴极七段数码管,根据16进制数和七段显示段码表的对应关系,用VHDL的With_Select或When_Else语句可方便实现它们的译码。

2.4.2 动态扫描显示

动态扫描是利用人眼的视觉暂留原理,只要扫描频率不小于24Hz,人眼就感觉不到显示器的闪烁。本系统24Hz的扫描脉冲由相应的外围电路提供。动态扫描电路设计的关键在于位选信号要与显示的数据在时序上一一对应,因此电路中必须提供同步脉冲信号。这里采用八进制计数器提供同步脉冲,VHDL程序段如下:

cIkl_label:PROCESS(scp)

BEGIN

IF scp'vent and scp=‘1'THEN count<=count+1;

END IF;

END PROCESS clkl_label;

显示数据的选择由计数器控制,VHDL程序段如下:

temp<=counterl when count=“000”else...

counter4 when count=“011”else

milel when count=“100”else...

mile4 when count=“111”;

位选信号时序仿真如图3所示。从时序仿真图和上述程序可以看出,位选信号和要显示的数据实现了同步。

动态扫描电路中小数点的显示无法在译码电路中完成。由于小数点的位置是固定的,因此可由计数器提供的同步信号产生另一信号控制DP。VHDL程序实现如下:

if (count:“101”or count=“001”)then data(0)<=‘1';

else data(0)<=‘0';

end if;

显示模块(以下简称SHOW)封装见图4。此模块中应用了两个过程,在过程内程序顺序执行,其中第一个过程触发第二个过程。

3 系统综合

3.1 模块联调

各个功能子模块设计完成后,利用MAXPLUSⅡ的图形编辑器(Graphic Editor)将各功能子模块(.sym)进行连接。由于MILE模块中存在毛刺,故不能直接与后级相连,通过对输出脉冲信号加门电路延时,再与原始信号相“与”的方法即可消除毛刺。系统顶层原理图如图4所示。

芯片管脚定义可以直接用编辑.pin文件或在Floor—Plan Editor下进行。完成管脚定义后选择器件(EPM7128SIC84—15),编译后生成.sof、.pof及报告文件.rpt。查看报告文件可得到器件管脚的利用情况及器件内部资源的使用情况。通过更换适当的器件使其资源配置达到最优。选择器件的一般原则是系统所使用的资源不要超过器件资源的80%,若超过90%,系统功耗将增大,工作不稳定。从本次设计器件部分报告中得知:输入、输出管脚各用16只,芯片资源利用率仅为51%,具有较大的扩展空间。

3.2 硬件设计说明

本次设计的出租车计费器计数脉冲CP来自车轮转速传感器(干簧管),脉冲经器件内部整形后送计数器;动态扫描脉冲由外围电路给出;系统使用整流、滤波、降压后的出租车电源供电;由于CPLD/FPGA的驱动能力有限,为了增强数码管的亮度,提高系统的可靠性,设计中在LED驱动和位驱动上分别增加了电流驱动器件ULN2803和2SCl015。

现场实验表明:该计费器实现了按预制参数自动计费(最大计费金额为999.9元)、自动计程(最大计程公里数为999.9公里)等功能;能够实现起步价、每公里收费、车型及加费里程的参数预制(如:起步价5.00元;3公里后,1.20元/公里;计费超过15.00元,每公里加收50%的车费等),且预置参数可调范围大。由于采用了CPLD/FPGA大规模可编程逻辑器件,整机功耗小、抗干扰能力强、系统稳定、工作可靠、升级方便。另外,根据实际需要,系统可方便地增加以下功能:①通过芯片内部编程增加时钟功能(器件内部资源足够),既可为司机和乘客提供方便,又能为夜间行车自动调整收费标准提供参考;②用CPLD/FPGA的输出引线控制语音芯片,可向乘客发出问候语、提醒乘客告诉司机所要到达的地点、报出应收缴的费用等。

关键字:出租车计费  CPLD  PPGA 引用地址:基于CPLD/PPGA的出租车计费系统

上一篇:汽车OBD2诊断程序开发
下一篇:车用CAN总线测试平台的研发与应用

推荐阅读最新更新时间:2024-05-02 21:39

基于CPLD/FPGA的半整数分频器的设计
摘要:简要介绍了CPLD/FPGA器件的特点和应用范围,并以分频比为2.5的半整数分频器的设计为例,介绍了在MAX+plus II开发软件下,利用VHDL硬件描述语言以及原理图的输入方式来设计数字逻辑电路的过程和方法。 关键词:VHDL CPLD/FPGA 数字逻辑电路设计 半整数分频器 1 引言 CPLD(Complex programmable Logic Device,复杂可编程逻辑器件)和FPGA(Field programmable Gates Array,现场可编程门阵列)都是可编程逻辑器件,它们是在PAL、GAL等逻辑器件基础上发展起来的。同以往的PAL、GAL相比,FPGA/CPLD的规模比较大,适合于时序
[半导体设计/制造]
I2C器件接口IP核的CPLD设计
摘要:根据单片机I2C串行扩展的特点,在EDA软件MaxplusII的环境下,利用AHDL语言,建立IP核。此设计利用状态机实现,在给出设计的同时详细说明IP核的建立过程,并下载到芯片通过硬件试验验证。 关键词:可编程逻辑器件 I2C串行扩展 IP核 由于CPLD数字设计结构化的趋势,将出现针对CPLD不同层次的IP(Intellectual Property)核。各个IP核可重复利用,可大大提高设计能力和效率。国外各大公司都推出了专门的IP核,我国也迫切需要发展自己的IP核。本文针对I2C的主方式串行扩展通信的特点,详细给出设计过程和结果。 1 IP核简介   IP核是指:将一些在数字电路中常用但比较复杂的功能块,如F
[半导体设计/制造]
基于CPLD的位同步时钟提取电路设计
引言 异步串行通信是现代电子系统中最常用的数据信息传输方式之一,一般情况下,为了能够正确地对异步串行数据进行发送和接收,就必须使其接收与发送的码元同步,位同步时钟信号不仅可用来对输入码元进行检测以保证收发同步,而且在对接收的数字码元进行各种处理等过程中,也可以为系统提供一个基准的同步时钟。 本文介绍的位同步时钟的提取方案,原理简单且同步速度较快。整个系统采用VerilogHDL语言编写,并可以在CPLD上实现。 位同步时钟的提取原理 本系统由一个跳变沿捕捉模块、一个状态寄存器和一个可控计数器共三部分组成,整个系统的原理框图如图1所示,其中data_in是输入系统的串行信号,clock是频率为串行信号码元速率2N倍的高精度时
[嵌入式]
CPLD在视频采集卡中的应用
20世纪90年代以后,可编程逻辑器件的广泛应用EDA技术的发展给电子系统的设计带来了革命性的变化。利用EDA工具,采用可编程器件,通过设计芯片来现系统功能的设计方法能够由设计者定义器件的内部逻辑管脚,视频采集卡将原来由电路板设计完成的太部分工作放在芯片的设计中进行。CPLD是可编程逻辑器件(PLD)中的一种,其内部由输入输出单元、逻辑单元、中央布线池等部组成。 由于CPLD器件逻辑功能模块较大,适合控集型数字系统的设计,并且许多CPLD都具有可在线编功能,这使得基于CPLD数字系统的设计更灵活、系统工作速度更高、功耗更低,因此CPLD成为IC中增长最快的产品。在文章中,视频采集卡采用Ahera公司的CPLD器件中的E.PLD(
[工业控制]
循环冗余校验码的单片机及CPLD实现
    摘要: 循环冗余码校验(CRC)是一种可靠性很高的串行数据校验方法。介质循环冗余码校验的基本原理,并分别用单片机和CPLD作了循环冗余码验的软件实现和硬件实现。包括汇编语言和VHDL语言源程序。     关键词: 差错校验 查表法 CPLD 1 基本原理 串行数据的差错检验是保证数据正确的必要手段,通常采用奇遇校验法和循环冗余校验法。这两种方法都是通过冗余数据来提供必要信息。奇偶校验法适用于以字节为单位数据传输。例如用偶校验传送1个ASCII字符时,要附加1个校验位,从而使全部9位中“1”的个数为偶数。奇偶校验简单易行,但当数据崩溃或出现多位错误时,往往不能检验出来,因而可靠性不高。 循环冗余码
[半导体设计/制造]
基于AD7892SQ和CPLD的数据采集系统
0 引 言 本系统以AD7892SQ和CPLD(复杂可编程逻辑器件)为核心设计了一个多路信号采集电路,包括模拟多路复用、集成放大、A/D转换,CPLD控制等。采用硬件描述语言Verilog HDL编程,通过采用CPLD使数据采集的实时性得到提高。 1 硬件设计 针对多路信号的采集,本系统采用4/8通道ADG508A模拟多路复用器对检测的信号进行选择,CMOS高速放大器LF156对选中的信号进行放大,AD7892SQ实现信号的A/D转换,CPLD完成控制功能。电路如图1所示。 AD7892SQ是美国AD公司生产的LC2MOS型单电源12位A/D转换器,可并行或串行输出。 AD7892SQ A/D转换器具有如下特点:单
[嵌入式]
一种基于CPLD的PWM控制电路设计
  在直流伺服控制系统中,通过专用集成芯片或中小规模的数字集成电路构成的传统PWM控制电路往往存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点因此PWM控制电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高.随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便.针对以上情况,本文给出一种基于复杂可编程逻辑器件(CPLD)的PWM控制电路设计和它的仿真波形. 1 PWM控制电路基本原理   为了实现
[嵌入式]
一种基于<font color='red'>CPLD</font>的PWM控制电路设计
基于CPLD器件的单稳态脉冲展宽电路的设计
  在数字电路设计中,当需要将一输入的窄脉冲信号展宽成具有一定宽度和精度的宽脉冲信号时,往往很快就想到利用54HC123或54HC4538等单稳态集成电路。这一方面是因为这种专用单稳态集成电路简单、方便;另一方面是因为对输出的宽脉冲信号的宽度、精度和温度稳定性的要求不是很高。当对输出的宽脉冲信号的宽度、精度和温度稳定性的要求较高时,采用常规的单稳态集成电路可能就比较困难了。众所周知,专用单稳态集成电路中的宽度定时元件R、C是随温度、湿度等因素变化而变化的,在对其进行温度补偿时,调试过程相当繁琐,而且,电路工作的可靠性亦不高。对于从事数字电路设计工作的人员来说,最头痛和最担心的,恐怕就是对单稳态电路的设计和调试了。   随着电子技
[嵌入式]
基于<font color='red'>CPLD</font>器件的单稳态脉冲展宽电路的设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved