出租车计价器FPGA设计.docx
《出租车计价器FPGA设计.docx》由会员分享,可在线阅读,更多相关《出租车计价器FPGA设计.docx(14页珍藏版)》请在冰豆网上搜索。
出租车计价器FPGA设计
出租车计价器FPGA设计
(2)行程小于基本里程时,显示起步价,基本里程设2公里,起步价设5元;
(3)当行程大于基本里程时,每多行一公里,在起步价上加1元;
(4)当出租车进入低速状态,由司机按下等候键,每等待5分钟加1元,不足5分钟的不计算;
(5)此处用脉冲信号模拟轮胎的转数,设每计一个脉冲汽车前进100米,系统中所需脉冲均由20MHz晶振分频提供。
三.系统设计方案
该系统的设计可以采用分立元件来搭建,也可以通过单片机来设计,而使用可编程FPGA来设计,具有设计周期短、易于修改等明显特点,而且随着可编程逻辑器件和EDA软件的飞速发展,越来越多的电子系统采用FPGA来设计,一旦该系统达到一定的量产规模,也比较容易转化为ASIC芯片设计。
因此,基于FPGA来设计一个出租车的计价器。
本系统在EDA工具软件MAX+plusⅡ中,采用硬件描述语言VerilogHDL和原理图设计相结合的方法,进行各个模块的设计,最终将各个模块组成整个系统。
出租车能够显示行驶的里程,可以通过车轮的转动产生脉冲,然后通过计数器对脉冲进行计数来实现。
假设出租车每行驶2m就产生一个脉冲。
由于里程数要精确到O.1km,也就是100m,因此每经过50个脉冲就要输出一个新的脉冲信号,这里称为100m脉冲信号,作为里程计数器的时钟信号,可以通过一个模为50的计数器进行分频而得到。
里程计数器可以用一个二位BCD码计数器来实现,最大能显示到99。
以前两位为整数,,也就是最大能显示里程99km,因为出租车都在市区和近郊活动,二位BCD码计数器是可以实现里程计数的。
里程计数器每计数10km还会周期性地输出一个脉冲信号,称为10km脉冲信号,可以通过一定的组合电路来实现。
系统最核心的部分就是计费如何实现。
这里就需要设计一个BCD码的加法器,在起步价的基础上,根据行驶里程的不同,依据计费标准,每增加1km加上一个单价,单价的产生可以用VerilogHDL编写程序来实现。
总体框图如下
(1).分频模块
分频模块的VerilogHDL源程序如下图:
(2).计时模块
计时模块的VerilogHDL源程序如下图:
(3).计程模块
计程模块的VerilogHDL源程序如下图:
(4).计费模块
计费模块的VerilogHDL源程序如下图:
(5).控制模块
(6).显示模块
显示模块的VerilogHDL源程序如下图:
用VerilogHDL编写程序来实现模块功能的优点在于,当出租车的计费标准发生变化时,可以很容易地通过改写程序来完成新的设计,比起硬件电路的修改要方便得多,这也是用VerilogHDL来实现模块功能的重要优势。
(6).顶层原理图如下:
对以上的各个源程序进行编译,并分别建成模块,画出顶层原理图如下:
(7).编译
(8).引脚分配
(9).时序仿真
计程模块
计时模块
通过仿真验证表明,本文所设计的出租车计价器能够正常地显示行驶的里程数和乘客应付的费用,符合预定的计费标准和功能要求。
基于FPGA的设计,集成度高、设计周期短。
尤其是当计费标准发生变化时,容易通过改写VerilogHDL源程序来完成新的设计。
四.心得体会
我对以前所学的知识加深了记忆,对所用的软件更加熟悉。
通过设计实验,我学会独立思考,查询资料去解决试验中所遇到的问题,而其和同学们互相交流,互相沟通学习,增进了我们的友谊,让我们懂得团队的力量。
设计的过程中我们遇到很多问题,慢慢的我们发现问题、解决问题,最后完成此次设从刚开始的原理图到下载到开发板这个过程中,我们发现了我们很多不足之处。
有一点是我们必须认真、细心。
有时候就是小小的一点问题,不管干什么,都要一心一意,才能成功,成功不可能一帆风顺,肯定要经历一段风雨,我们要相信努力了一定会有收获。
五.参考文献
1.XX资料;
2.图书馆书籍;
3.课本。
5.《FPGA设计》
6.《EDA》