基于FPGA的出租车计费系统设计

2015-07-24 19:01:13李平
微型电脑应用 2015年7期
关键词:计费计时里程

李平

基于FPGA的出租车计费系统设计

李平

分析了出租车计费系统各模块的功能要求、基本原理以及实现方法。设计采用VHDL硬件描述语言进行编程,基于Quartus II9.0软件平台进行编译和仿真。介绍了采用EP2C35F678C8 FPGA芯片设计出租车计费系统的方法,阐述了该计费系统的主要组成单元:分频模块、计程模块、计时模块和计费模块等模块的设计,同时,给出了详细的仿真波形,基本实现了出租车基本计费功能,还能模拟汽车启动、停止、暂停等状态,同时,提高了计费系统的可靠性、通用性。

现场可编程门阵列(FPGA);数码管;计数分频;自顶向下

0 引言

出租车计费系统是乘客与司机之间用于公平交易的工具,同时它也是出租车行业发展的重要标志。所以具有良好性能的出租车计费系统无论是对司机还是乘客来说都是很重要的。因此,设计性能良好的出租车计费系统具有一定的实际意义。

目前,市场上的出租车计费系统主要采用的都是利用微控器如89C51、μPD78F0034单片机设计的计费系统[1]。出租车计费系统采用硬件模块化设计,分别为:主控模块,电源模块和按键显示模块。所以其硬件电路很复杂,并且由于分立元器件太多,造成电源功耗大,使得芯片不易散热,影响计价器的使用寿命[2-4]。而基于FPGA的出租车计费系统不仅可以解决由单片机设计引起的诸多问题,而且现场可编程门阵列FPGA具有开发简单,静态可重复编程和动态系统编程等优点。随着微电子技术的迅猛发展,使得FPGA在电子电路设计中可以实现速度更快、集成度更高的显著优势,即可实现的功能也越来越多[5-8]。所以基于FPGA的出租车计费系统已成为未来出租车计费方式的首选。

本设计采用Altera公司的CycloneII系列器件EP2C35F672C8,利用VHDL语言,实现对出租车计费系统的设计,采用LED数码显示。该计费系统不仅能够实现基本的计费功能,而且还能根据行驶路程、行驶时段等进行调节单价。经实际电路验证,该系统可以通过按键的选择来模拟白天、晚上以及等待时的的计费情况,并在数码管上显示对应的里程和金额。

1 系统总体设计方案

1.1 出租车计费系统的设计要求

按照计费标准能实现计费功能;实现预置功能:能预置起步价、每公里收价、行车加价里程;实现模拟功能:能模拟汽车启动、停止、暂停等状态。

计费系统要求可靠性高、成本低、通用性强;系统在不改变硬件电路的前提下,要具有可以重构系统的功能,采用完全相同电路结构,只要根据各地区的需求在VHDL程序中设置各参数,就可以适应各地区出租车不同计价标准的需要,还可实现根据各地区需求增加其他功能。一种具体计费方式如表1所示:

表1 计费方式

1.2 总体框架设计

本设计采用VHDL硬件描述语言,按照自顶向下的设计方法,将系统分成7个相对独立的模块分别设计,包括分频模块,车型选择模块,计时模块,计程模块,计费模块,数据分配模块以及译码显示模块,用Quartus II软件进行各模块仿真得其波形,直到各个模块功能仿真都通过后,再将其综合成整体,最后进行综合仿真。总体框图如图1所示:

图1 系统总体设计框图

出租车计费系统计数脉冲来自时钟脉冲信号,脉冲送至计数器;动态扫描脉冲由时钟提供,将单位脉冲看做行驶的单位公里数,并在此基础上进行计费与显示。设计中考虑了白天和晚上计费单价与起步价的差别,通过选择信号端对其进行选择,这样就可以体现不同情况下,不同的计费需求,同时,还考虑到一但遇到红灯,紧急情况或者是乘客要求暂时停车的情况,这里采用等待时间所产生的费用来解决这个问题。

2 系统实现与仿真

系统的顶层原理图如图2所示:

图2 系统顶层原理图

出租车计费系统的主体FPGA电路taxi模块由各子模块组成:分频模块fenpin、车轮大小选择模块size、计时模块jishi、计程模块jicheng、计费模块jifei、数据分配模块scan和译码模块yima。各模块的设计对应各模块的VHDL代码。本设计所用到的FPGA芯片是ltera公司的CycloneII系列EP2C35F672C8。该芯片内部资源丰富,包含有33216个逻辑单元,105个M4K RAM模块,以及35个18 BIT×18 BIT嵌入式乘法器4 个高性能PLL 以及多达475 个用户自定义I/O[9],因此,能较好满足该系统设计要求。顶层设计在Quartus II9.0软件中编译后,可以看出共占用了229个逻辑单元,227个组合功能函数和78个专用逻辑寄存器。

2.1 分频模块

本系统各模块所需的时钟信号与系统时钟信号不同,这就需要对已有的信号进行分频[10]。系统时钟clk1为1MHz,通过对clk1上升沿计数进行翻转分频,得到所需的500Hz的时钟信号clk。分频模块仿真波形如图3所示:

图3 分频模块仿真波形

输入端clk1的一个周期为1μ s,分频后输出端clk的一个周期为2ms,符合设计需求。

2.2 车轮大小选择模块

不同型号的车轮,其所对应的直径不同,因此,车每行驶100m,所对应的圈数也不同。开关sp控制不同车型所应该给出计程圈数,达到相应的圈数给出相对应的计程脉冲。有4种车轮可供选择,车轮直径越小,对应圈数越多,产生的计程脉冲周期越长,显示的计程数变化越慢;反之,车轮越大,计程数据变化越明显。此模块端口信号说明:clk为输入时钟脉冲信号,reset为复位信号,stop为停止信号,start为计价开始信号,pause为暂停等待信号,输出clkout为里程计费信号。所有信号均为高电平有效。

2.3 计程模块

计程模块是根据车轮大小选择模块产生的计程脉冲clkout来计数的。每出现一个计程脉冲信号,计程数据加1。当复位信号为‘1’时,里程的百、十、个、十分位均被复位为‘0’;反之,当复位信号为‘0’时,clkout开始循环计数。当十分位为9时,向个位进1,十分位清零,个位为9时,向十位进1,个位清零,十位为9时,向百位进1,十位清零,百位的计数方式同前。当计程为999.9公里时,达到最大计程范围,里程的各位均被清零。

当clkout输出10个脉冲后,KM_CNT0自动加1,当KM_CNT0为1001即达到最大值9时,KM_CNT1加1;同理,KM_CNT2和KM_CNT3也是形同KM_CNT0的原理进行计数的。计程模块仿真波形如图4所示:

图4 计程模块仿真波形

2.4 计时模块

车在行驶中暂停等待时,等待一分钟,计费加1,这就需要计时模块产生计时脉冲。当start=‘1’,stop=‘0’且pause=‘1’时,开始计时,计时达到60秒时,timecount输出一个脉冲,然后重新开始计时。当pause为1(start为1且stop和reset均为0)时,该模块开始工作,系统时钟clk每输出60个脉冲信号,计时脉冲timeout输出一个脉冲,也就是满足车暂停等待1min,计费加1元。计时模块仿真波形如图5所示:

图5 计时模块仿真波形

2.5 计费模块

2km以内为起步价,大于2km以后,每行驶1km费用按price进行变化,所以需要有路程信号标志位enable,当enable为‘1’时,说明此时所行路程已经大于2km,否则小于2km。为了更切合实际,采用白天和晚上起步价和计价单价不同的方式,其选择信号为choose,当choose=‘1’时,按白天所要求的计价方式计价,反之,为晚上。

timecount以1元为基准进行累加,在时钟信号下对计时脉冲进行累加,当达到一定数值时,总价加1元,否则计时脉冲继续累加。此模块端口信号说明:CLK为时钟信号,clkout为里程计数脉冲,timecount为计时计数脉冲,reset为复位信号,choose为白天、晚上选择输入端,KM_CNT0~KM_CNT3分别为路程的十分位到百位,MONEY0~MONEY3分别是费用的角、元、十元、百元输出端。

当choose为高电平时,车是在白天行驶的,当路程在2km以内(即KM_CNT0=0000,KM_CNT1=0010,KM_CNT2=0000,KM_CNT3=0000),只显示起步价;路程在2km以外5km以内(即KM_CNT0=0000,KM_CNT1=0011,KM_CNT2=0000,KM_CNT3=0000),按每公里1.4元计价;路程5km以外(即KM_CNT0=0000,KM_CNT1=0110,KM_CNT2=0000,KM_CNT3=0000),按每公里2元计价。等待的时间超过1min后,按每分钟1元累加。计费模块仿真波形如图6所示:

图6计费模块仿真波形

该模块的核心代码如下:

ELSIF timecount='1'THEN ---每来一次计时脉冲计费加1

IF MONEY_CN3="1001"AND MONEY_CN2="1001"AND MONEY_CN1="1001" THEN---费用等于999

MONEY_CN3<="0000";

MONEY_CN2<="0000";

MONEY_CN1<="0000";

MONEY_CN0<=MONEY_CN0;

ELSIF MONEY_CN3/="1001" AND

MONEY_CN2="1001"AND MONEY_CN1="1001" THEN--费用大于99小于999

MONEY_CN3<=MONEY_CN3+"0001";

MONEY_CN2<="0000";

MONEY_CN0<=MONEY_CN0;

ELSIF MONEY_CN2/="1001"AND MONEY_CN1="1001" THEN---费用大于9小于99

MONEY_CN3<=MONEY_CN3;

MONEY_CN2<=MONEY_CN2+"0001";

MONEY_CN1<="0000";

MONEY_CN0<=MONEY_CN0;

ELSE

MONEY_CN3<=MONEY_CN3; MONEY_CN2<=MONEY_CN2;

特高压直流闭锁引发送端电网过频的系统保护方案//邵广惠,侯凯元,王克非,夏德明,刘明松,刘永奇//(22):26

MONEY_CN1<=MONEY_CN1+"0001";

MONEY_CN0<=MONEY_CN0;

END IF;

2.6 数据分配模块

在时钟信号clk的控制下,将里程信号的百位十位个位以及十分位,还有费用信号的值分时输出。费用和路程的输出用到8位7段数码管,需要用8位片选信号sel1[7..0],还有小数点信号dp和输出信号d。最终利用人的视觉暂留,提高扫描频率,这样人眼就看到稳定的里程信号和费用信号的显示。在时钟信号CLK的控制下,将里程信号百位十位个位以及十分位,还有费用信号的值分时输出。其中,MONEY~MONEY3分别是费用的角,元,十元、百元信号输入端,KM_CNT0~KM_CNT3为里程的十分位到里程的百位输出。在sel1为0、1、2、3是输出里程,在sel1为4、5、6、7是输出价钱。

2.7 译码模块

译码模块的输入为4位的BCD码,输出的是共阴极7段数码管的7位,输入,输出一一对应,将输入的信号正确的在数码管上显示出来,让司机和乘客更直观的看到数字显示的行程和价格。

3 硬件调试

综合第2节所述,各模块设计仿真结果符合设计要求,用元件例化语句将各模块组合起来,构成系统的顶层设计。将整个设计下载到实验箱进行模拟调试,调试结果如表2所示:

表2 硬件调试结果

调试的结果是按以下方式所显示的:白天起步价6元,晚上起步价7元;2km以内只显示起步价;2km~5km内白天每公里按1.4元计价,晚上按每公里2元计价;5km以外白天每公里按2元计价,晚上按每公里3元计价的收费;等待1min费用加1元的。RESET为“1”时系统复位,为“0”系统正常工作。CHOOS为“1”表示白天,为“0”表示晚上。START为“1”表示车开动,为“0”表示未开动。表2中前3行数据分别是系统复位和系统正常工作时晚上和白天车未开动时显示的里程和价格;第四、五、六行数据分别是白天车开动后未停止行驶1.7km、 4km、7km时显示的里程和价格;第七行数据是白天车开动后行驶8km后暂停1分钟后显示的里程和价格。数据符合表1的计价方式。

4 总结

通过时序仿真和硬件模拟调试表明,所设计的出租车计费系统能动态显示行驶的里程、计费数目等,符合预定的设计功能要求。可以根据不同的运行状态进行收费,如果计费方式发生改变,可以通过修改VHDL源程序达到要求。另外,还可以扩展语音播报或票据打印等附加功能,此系统的设计体现了EDA设计的自顶向下的设计思想,基于FPGA的设计灵活性高、功耗低、集成度高,具有广阔的市场前景。

[6] 姚利彬,许勇,潘明.基于FPGA的出租车计费系统的设计与实现[J].电子设计工程,2011,19(23):166-170.

[7] 廖艳秋.基于FPGA的出租车计费器设计[D].成都:电子科技大学,2008.

[8] 焦敏.FPGA在出租车计费器上的应用研究[J].中国科技信息,2009,(9):145-146.

[9] 曹公正,陈娟等.FPGA 在出租车记费器上的研究与设计[J].长春工业大学学报,2007,28(3):267-270.

[10] 杨晓慧,杨旭.FPGA系统设计与实例[M].北京:人民邮电出版社,2010.

[11] 周淑阁.FPGA/CPLD系统设计与应用开发[M].北京:电子工业出版社,2011.

[12] 王翠.基于FPGA的出租车计价系统设计[J].现代电子技术,2012(5):187-189.

[13] 张文爱.EDA技术与FPGA应用设计[M].北京:电子工业出版社,2012.

[14] 李平,周原. 基于FPGA和DDS技术的信号发生器设计[J].电子设计工程, 2014, 22(10):71-74.

[15] 陈英梅,席亮亮. 基于FPGA的多种分频设计与实现[J].电子元器件应用,2007,9(6): 47-48,52.

TN741

A

2014.11.28)

1007-757X(2015)07-0031-03

黄淮学院教育教学改革项目(2014XJGLX0430,2014XJGLX0109)

李 平(1976-),女,汉族,河南驻马店人,黄淮学院,讲师,硕士,研究方向:信息处理与现代电子系统,驻马店,463000

猜你喜欢
计费计时里程
出租车计费的秘密
5G网络独立组网中融合计费方案的研究
畅游计时天地
车迷(2022年1期)2022-03-29 00:50:24
腕表计时2.0
中国化妆品(2020年9期)2020-10-09 08:56:56
生活中的分段计费
12时计时法与24时计时法的互化
腾势400 用在上海市区的来回穿梭克服里程焦虑
车迷(2017年12期)2018-01-18 02:16:12
24时计时法
幸福合力 开启幸福里程
中国宝玉石(2017年2期)2017-05-25 00:37:11
幸福合力 开启幸福里程
中国宝玉石(2017年1期)2017-03-24 09:19:42