出租车计费器的EOA设计与实现
图2所示为分频得到的秒信号仿真图,其输入信号是整数转换为BCD码的转换信号。该转换信号频率要求非常高,这样可保证整数转换BCD
码时输出与输入不会产生太大的延时。仿真结果证明,该设计是正确的。
图3给出了分频得到的车轮走100米的输出信号,其输入信号为驱动车轮转动信号。因为对不同车轮直径,车轮走100米所需圈数不同,所以,对不同车轮进行分类讨论。图3所示的仿真波形为车轮直径是520 mm的分频结果。
2.3 计量模块设计
根据出租车计费器的功能设计要求,费用的计算是按行驶的里程和等待时间来收费。当行驶里程小于3 km时,按起价计算费用;当里程大于等于3 km时每公里按2.5元计费。另外,等待累计时间大于等于4 min时,应按每分钟1.8元计费。因此应按要求设计行驶计费使能信号clk_length和等待计费使能信号clk_time。图4所示是这两种信号的仿真波形图。由图4可知,当出租车启动信号start为高电平有效,而等待信号stop为低电平无效时,出租车处于行驶状态,当行驶的里程数大于等于3公里时,系统将产生有效的行驶计费使能信号;而当出租车启动信号start为高电平有效,且等待信号stop也为高电平有效时,出租车处于等待状态,当等待时间大于等于4分钟时,即可产生有效的等待计费使能信号。本文引用地址://m.amcfsurvey.com/article/166527.htm
在此要特别说明的是,因为QuartusⅡ综合器不支持小数,因此,在设计出租车费用的时候,应将人民币角这个单位放在个位,元放在十位。依次类推,这样便于综合器进行综合。
2.4 转换模块的设计
由于出租车最终的价格要由7段数码管来显示,而7段数码管的输入信号为高电平‘l’或低电平‘0’:且该设计的前面部分将价格的数据类型定义为整数,因而需要附加整数到BCD码的转换电路。图5所示为整数转换BCD码的仿真波形。由图5可以看出,当整数类型的价格(pri-ce)为8时,经过8个时钟周期,BCD码的个位就变为8;而当价格(price)为54时,经过54个时钟周期,BCD码的个位变为4,BCD码的十位变为5。在此需要说明的是,图5中的整数转变为BCD码需要一段时间的延时,整数数据越大,转化输出产生的延时就越大。为了实时的实现整数到BCD码的转化,需要提高转换的时钟信号频率(clk_convert)。在图2中设计的100分频的频率计,目的就是减小这一时间。在实际的应用中,还可以考虑提高clk_convert的频率,设计更高的分频倍数。
3 出租车计费器的硬件验证
本设计选用杭州康芯电子有限公司生产的GW48EDA系统作为硬件验证系统,同时选用Altera公司的EPlK30TCl44-3作为主控芯片。该主控芯片是一种基于查找表结构的现场可编程逻辑器件,它的基本逻辑单元是可编程的查找表。它能够实现组合逻辑的运算,而可编程寄存器则可实现时序逻辑运算。因此,只要对出租车计费器整体设计中的输入输出引脚作引脚锁定,然后重新编译和下载,就可以进行出租车计费器的硬件验证。实验表明:本设计能够实现出租车计费器的全部功能,从而证明设计是正确的。
4 结束语
本文以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以QuartusⅡ开发软件和GW48EDA开发系统为设计工具,从而设计出具有起步定价、行驶计价和等待计价功能的出租车计费器。结果表明,本设计能够实现所要求的全部功能。同时,因为
FPGA芯片体积小,功耗低,价格便宜,安全可靠,稍加修改就可以改变起步的价格、每公里行驶的价格和等待时间的价格等,而且维护和升级比较方便,也很容易做成ASIC芯片,因而具有较好的应用前景。
评论