所要设计的出租车计价器,要求能够显示里程数和乘客应付的费用,其中里程数精确到0.1km,乘客应付的费用精确到O.1元,显示必须以十进制的形式来进行。出租车的计费标准为:起步价6元,里程在3 km以内均为起步价;里程在3~7 km之间时,每行驶1 km增加1.6元;超过7 km时,每行驶1 km增加2.4元。
2 系统设计方案
该系统的设计可以采用分立元件来搭建,也可以通过单片机来设计,而使用可编程FPGA来设计,具有设计周期短、易于修改等明显特点,而且随着可编程逻辑器件和EDA软件的飞速发展,越来越多的电子系统采用FPGA来设计,一旦该系统达到一定的量产规模,也比较容易转化为ASIC芯片设计。因此,基于FPGA来设计一个出租车的计价器。本系统在EDA工具软件MAX+plusⅡ中,采用硬件描述语言Verilog HDL和原理图设计相结合的方法,进行各个模块的设计,最终将各个模块组成整个系统。
出租车能够显示行驶的里程,可以通过车轮的转动产生脉冲,然后通过计数器对脉冲进行计数来实现。假设出租车每行驶2 m就产生一个脉冲。由于里程数要精确到O.1 km,也就是100m,因此每经过50个脉冲就要输出一个新的脉冲信号,这里称为100 m脉冲信号,作为里程计数器的时钟信号,可以通过一个模为50的计数器进行分频而得到。
里程计数器可以用一个三位BCD码计数器来实现,最大能显示到999。以前两位为整数,第三位为小数,也就是最大能显示里程99.9 km,因为出租车都在市区和近郊活动,三位BCD码计数器是可以实现里程计数的。里程计数器每计数1 km还会周期性地输出一个脉冲信号,称为1 km脉冲信号,可以通过一定的组合电路来实现。
系统最核心的部分就是计费如何实现。这里就需要设计一个BCD码的加法器,在起步价的基础上,根据行驶里程的不同,依据计费标准,每增加1 km加上一个单价,单价的产生可以用Verilog HDL编写程序来实现。系统的总体设计框图如图1所示。
2.1 单价产生模块
单价产生模块的Verilog HDL源程序如下:
其中输入信号bai和shi就是里程计数器输出的两位整数里程,输出信号jia就是根据计费标准而产生的单价,以三位BCD码的形式输出,以前两位为整数,第三位为小数。即里程在3 km以内时,jia=0;里程在3~7 km之间时,jia=016(1.6元);超过7 km时,jia=024(2.4元)。
用Verilog HDL编写程序来实现模块功能的优点在于,当出租车的计费标准发生变化时,可以很容易地通过改写程序来完成新的设计,比起硬件电路的修改要方便得多,这也是用Verilog HDL来实现模块功能的重要优势。
2.2 三位BCD码加法器
系统中用到了三位BCD码加法器,可以实现三位十进制数的加法运算。加法器输出的结果就是乘客应付的费用,这里同样以前两位为整数,第三位为小数,也就是最大能显示99.9元。三位BCD码加法器由三个一位BCD码加法器级联而成。
一位BCD码由四位二进制数组成,四位二进制数的加法运算会产生大于9的数字,必须进行适当的调整才会产生正确的结果。一位BCD码加法器的Verilog HDL源程序如下:
一位BCD码加法器模块的仿真波形和生成的模块符号如图2和图3所示。
本模块中A和B为输入的一位BCD码,CIN为低位来的进位信号,CO是本片向高位产生的进位输出信号,SUM是两个数相加的和。三位BCD码加法器由三个本模块级联而成,其电路原理图和仿真波形如图4和图5所示。
2.3 缓冲器模块
三位BCD码加法器输出的结果通过缓冲器以后,反馈到输入端重新作为一个加数,在1km脉冲信号的作用下,每来一个脉冲就和单价相加,形成连续累加的功能。缓冲器还有一个控制输入端LD,LD=O时,在1km脉冲的作用下,输出起步价6元;LD=1时,在1km脉冲的作用下,输出和输入相等。缓冲器的Verilog HDL源程序如下:
2.4 整体电路
将各个模块按照输入输出关系连接成整体电路如图6所示。
在整体电路中,clk为最原始的时钟输入端,cr为异步清零端,q[11..O]输出里程,jiaqian[11..O]输出乘客应付的费用。
3 系统仿真验证
整体电路的仿真波形如图7所示。
从系统仿真波形图7(a)中可以看出,当清零端cr=O时,里程数立刻清零,乘客应付的费用显示三位十进制数060(起步价6元),表示乘客刚上车。当清零端cr=1时,出租车开始行进,里程和费用都开始计数,里程显示三位十进制数,前两位为整数,第三位为小数,也就是每行驶100 m计一次数。
从系统仿真波形图7(b)中可以看出,行驶到3 km时,费用由6元增加为7.6元,行驶到4 km时,费用由7.6元增加为9.2元,在3~7 km之间时,每行驶1 km增加1.6元。
系统仿真波形图7(c)中显示了每行驶1 km后,费用逐渐累加的情况。系统仿真波形完全验证了预期的设计要求。
4 结 语
通过仿真验证表明,本文所设计的出租车计价器能够正常地显示行驶的里程数和乘客应付的费用,符合预定的计费标准和功能要求。基于FPGA的设计,集成度高、设计周期短。尤其是当计费标准发生变化时,容易通过改写Verilog HDL源程序来完成新的设计。
设计原理与实现方案论证1里程计数及显示
在出租车转轴上加装传感器,以便获得“行驶里程信号”。
设汽车每走1Km发一个脉冲,里程的计数显示,可用十进制、译码显示。该模块涉及时序电路相关知识,如计数器(74ls60,74ls90等)、译码驱动器、显示器等中规模芯片相关知识。
侯时模块设计类似于里程计数模块,不同的是脉冲信号可由石英晶振经分频后获得。简易的也可用555定时器近似获得,涉及脉冲信号产生相关知识。但在这个实验中使用直接的脉冲信号。
2加法器模块电路
该模块功能为计价,由两部分组成:
行驶里程的测量,与机动车标配的里程表完全一样。
现在都是电子式里程计。
在机动车主轴上(或变速箱的输出轴上),安装电磁(或光电)传感器,主轴每旋转一周,产生一个电磁(或光电)脉冲,利用计数器,记录脉冲数。
考虑传动速比,即可得到车轮的旋转圈数,再考虑车轮直径,利用周长公式,即可得出车辆的行驶里程。
同时也可得出车辆的行驶速度。
至于出租车的价格,是由多项因素构成的。
1、行驶费:
首先:测量车辆的行驶距离(这一点与里程表工作原理完全一样);
其次:依据当地出租车计价办法,编辑算法,由算法依据行驶里程,计算得出行驶费用。
2、等候费:
首先:测量车辆的行驶速度。当车速低于某一设定数值时,启动计时程序;
其次:依据当地出租车计价办法,编辑算法,由算法依据低速行驶时间,计算得出等候费用。
3、夜间行驶费:
与前述1相类似,只是考虑时间因素,当进入夜间行车时,计价器得出的费用乘以一个系数。
以上就是关于出租车计价器 Verilog仿真全部的内容,包括:出租车计价器 Verilog仿真、求出租车计价器数字电路课程设计原理图!!(纯数字电路)、出租车计价器的工作原理,我是问计价器如何测定车辆行驶的里程。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)