出租车计价器的FPGA设计.docx

上传人:小飞机 文档编号:5042650 上传时间:2023-05-31 格式:DOCX 页数:7 大小:247.72KB
返回 下载 相关 举报
出租车计价器的FPGA设计.docx_第1页
第1页 / 共7页
出租车计价器的FPGA设计.docx_第2页
第2页 / 共7页
出租车计价器的FPGA设计.docx_第3页
第3页 / 共7页
出租车计价器的FPGA设计.docx_第4页
第4页 / 共7页
出租车计价器的FPGA设计.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《出租车计价器的FPGA设计.docx》由会员分享,可在线阅读,更多相关《出租车计价器的FPGA设计.docx(7页珍藏版)》请在三一办公上搜索。

1、出租车计价器的FPGA设计O引言FPGA(Field Programmable Gate Array,现场可编程门阵列)是一种高密度可编程逻辑器件,它支持系 统可编程,通过写入不同的配置数据就可以实现不同的逻辑功能。使用FPGA来设计电子系统,具有设计 周期短、易于修改等明显特点,特别适合于进行科学实验、样机研制和电子产品的小批量生产。本文针对FPGA器件,用EDA工具软件Max+P1usII,设计了一种出租车的计价器,它可以以十进制 数的形式,直观地显示出租车行驶的里程和乘客应付的费用,具有一定的实际应用价值。1系统设计要求所要设计的出租车计价器,要求能够显示里程数和乘客应付的费用,其中里程

2、数精确到0. 1km,乘客 应付的费用精确到O. 1元,显示必须以十进制的形式来进行。出租车的计费标准为:起步价6元,里程 在3 km以内均为起步价;里程在37 km之间时,每行驶1 km增加1. 6元;超过7 km时,每行驶1km增加2. 4元。2系统设计方案该系统的设计可以采用分立元件来搭建,也可以通过单片机来设计,而使用可编程FPGA来设计,具 有设计周期短、易于修改等明显特点,而且随着可编程逻辑器件和EDA软件的飞速发展,越来越多的电子 系统采用FPGA来设计,一旦该系统达到一定的量产规模,也比较容易转化为ASIC芯片设计。因此,基 于FPGA来设计一个出租车的计价器。本系统在EDA工

3、具软件MAX+plusII中,采用硬件描述语言Verilo g HDL和原理图设计相结合的方法,进行各个模块的设计,最终将各个模块组成整个系统。出租车能够显示行驶的里程,可以通过车轮的转动产生脉冲,然后通过计数器对脉冲进行计数来实现。 假设出租车每行驶2 m就产生一个脉冲。由于里程数要精确到0.1km,也就是100m,因此每经过50 个脉冲就要输出一个新的脉冲信号,这里称为100 m脉冲信号,作为里程计数器的时钟信号,可以通过一个模为50的计数器进行分频而得到。里程计数器可以用一个三位BCD码计数器来实现,最大能显示到999。以前两位为整数,第三位为小 数,也就是最大能显示里程99. 9 km

4、,因为出租车都在市区和近郊活动,三位BCD码计数器是可以实现 里程计数的。里程计数器每计数1 km还会周期性地输出一个脉冲信号,称为1 km脉冲信号,可以通过一 定的组合电路来实现。系统最核心的部分就是计费如何实现。这里就需要设计一个BCD码的加法器,在起步价的基础上,根 据行驶里程的不同,依据计费标准,每增加1 km加上一个单价,单价的产生可以用Verilog HDL编写程 序来实现。系统的总体设计框图如图1所示。fiClJ g1 km豚冲七f启动倍母图1 总体设计枢图嶙的舛100 m林伸当二郅分频塞2. 1单价产生模块单价产生模块的Verilog HDL源程序如下:module jiash

5、ut bai, hi, jia):inputCB :0j bai Tshi;outputLl 1 :0j jiaregEll :0 jia;always (bai or shi)beginif(bai= =0)beginif(悝hi =0&whiV3) jia = O*else if(shi = 3&shi = 7) jia = 12zhO2d :endelse jia= 12rh024 endendmodule其中输入信号bai和shi就是里程计数器输出的两位整数里程,输出信号jia就是根据计费标准而产生 的单价,以三位BCD码的形式输出,以前两位为整数,第三位为小数。即里程在3 km以内时

6、,jia=0;里 程在 37 km 之间时,jia=016(1. 6 元);超过 7 km 时,jia=024(2. 4 元)。用Verilog HDL编写程序来实现模块功能的优点在于,当出租车的计费标准发生变化时,可以很容易 地通过改写程序来完成新的设计,比起硬件电路的修改要方便得多,这也是用Verilog HDL来实现模块功 能的重要优势。2. 2三位BCD码加法器系统中用到了三位BCD码加法器,可以实现三位十进制数的加法运算。加法器输出的结果就是乘客应 付的费用,这里同样以前两位为整数,第三位为小数,也就是最大能显示99. 9元。三位BCD码加法器由 三个一位BCD码加法器级联而成。一位

7、BCD码由四位二进制数组成,四位二进制数的加法运算会产生大于9的数字,必须进行适当的调 整才会产生正确的结果。一位BCD码加法器的Verilog HDL源程序如下:module bed _ jia(研 b, sum T cin Teo): input310私b;input cin ;output; 3 :()3 wni;output co jreg3 ;0 sum:r 华 l:o ;always C a or Ij ar cin)beginfissign i cot sum) a4- b + cin ;if(ko,sum5/b01001)begin sum = sum + 6 ?co = ;

8、endendend module一位BCD码加法器模块的仿真波形和生成的模块符号如图2和图3所示。SUMp q CO图3 一位RCD码加法器的模块符号而coA|3.0| I Af3.OB3.O 4 RP 0 1N *本模块中A和B为输入的一位BCD码,CIN为低位来的进位信号,CO是本片向高位产生的进位输出 信号,SUM是两个数相加的和。三位BCD码加法器由三个本模块级联而成,其电路原理图和仿真波形如 图4和图5所示。图4 三位BCD码加法器的电路原理图Nam-e.Va-iu .500 OnB1&I.Ous1.5购2.0ubIL1icin寻制11 .0理声时11 0网嘲1,口DHD00H 10

9、1H 1QI吧JC四-X.叫.X.虾,呼.X m X凹X叫画I0T,1印 X 1DE I 1 由(.件 X ,.同_ * X 105 1 Y 107 i 1D9 i 110 I 111 :图5 三位BCD码加法器的仿真波形2. 3缓冲器模块三位BCD码加法器输出的结果通过缓冲器以后,反馈到输入端重新作为一个加数,在1km脉冲信号的作用下,每来一个脉冲就和单价相加,形成连续累加的功能。缓冲器还有一个控制输入端LD, LD=O时,在1km脉冲的作用下,输出起步价6元;LD=1时,在1km脉冲的作用下,输出和输入相等。缓冲器的Verilog HDL源程序如下:module dffl2(clkld,d

10、tq);input clkfId; input 1110 dj output口 1 :0 qt regll:0 q; always (posedge elk or negdge Id) beginif(ld=O) q= 12Jh060;else q=d;endendmodule2. 4整体电路将各个模块按照输入输出关系连接成整体电路如图6所示。图6由溶丰计价柔的整垛电分. O在整体电路中,clk为最原始的时钟输入端,cr为异步清零端,q11. O输出里程,jiaqian11.输出乘客应付的费用。3系统仿真验证整体电路的仿真波形如图7所示。1 fl“,们广旷为-U 一 LJ UUULLT trI

11、TU.den Yboig I owY 函 X 由曰 oh f dl? y 113 fHg 问U|从系统仿真波形图7(a)中可以看出,当清零端cr=O时,里程数立刻清零,乘客应付的费用显示三位十 进制数060(起步价6元),表示乘客刚上车。当清零端cr=1时,出租车开始行进,里程和费用都开始计数, 里程显示三位十进制数,前两位为整数,第三位为小数,也就是每行驶100 m计一次数。从系统仿真波形图7(b)中可以看出,行驶到3 km时,费用由6元增加为7. 6元,行驶到4 km时, 费用由7. 6元增加为9. 2元,在37 km之间时,每行驶1 km增加1. 6元。系统仿真波形图7(c)中显示了每行驶1 km后,费用逐渐累加的情况。系统仿真波形完全验证了预期的 设计要求。4结语通过仿真验证表明,本文所设计的出租车计价器能够正常地显示行驶的里程数和乘客应付的费用,符合预定的计费标准和功能要求。基于FPGA的设计,集成度高、设计周期短。尤其是当计费标准发生变化时,容易通过改写Verilog HDL源程序来完成新的设计。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号