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