首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 基于赛灵思FPGA的出租车计价器设计
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于赛灵思FPGA的出租车计价器设计
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2015-1-17 19:07
|
显示全部帖子
基于赛灵思FPGA的出租车计价器设计
出租车
,
计价器
,
软件
作者:王晓晖,熊建国 西安通信学院 来源:现代电子技术
引 言
FPGA(Field Programmable Gate Array,现场可编程门阵列)是一种高密度可编程逻辑器件,它支持系统可编程,通过写入不同的配置数据就可以实现不同的逻辑功能。使用FPGA来设计电子系统,具有设计周期短、易于修改等明显特点,特别适合于进行科学实验、样机研制和电子产品的小批量生产。
本文针对FPGA器件,用EDA工具软件Max+P1usⅡ,设计了一种出租车的计价器,它可以以十进制数的形式,直观地显示出租车行驶的里程和乘客应付的费用,具有一定的实际应用价值。
1 系统设计要求
所要设计的出租车计价器,要求能够显示里程数和乘客应付的费用,其中里程数精确到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源程序来完成新的设计。
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议