基于FPGA的出租车计价器设计_第1页
基于FPGA的出租车计价器设计_第2页
基于FPGA的出租车计价器设计_第3页
基于FPGA的出租车计价器设计_第4页
基于FPGA的出租车计价器设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、现代数字系统设计报告基于FPGA的出租车计价器设计院系:信息工程学院姓名:专业:学号:2010000377基于FPGA的出租车计价器设计摘要介绍了出租车计费器系统的组成及工作原理,简述了在EDA平台上用FPGA器件构成该数字系统的设计思想和实现过程。论述了分频模块,速度获取模块,计费模块,进制转换模块,显示模块等的设计方法与技巧。 1 引言随着EDA技术的高速发展,电子系统的设计技术发生了深刻的变化,大规模可编程逻辑器件CPLDFPGA的出现,给设计人员带来了诸多方便。利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。本文介绍了一个以Altera公司可编程逻辑芯片cyc

2、lone2系列的EP2C35F672C6的fpga芯片为控制核心、附加一定外围电路组成的出租车计费器系统。随着社会的不断进步,人们生活水平的不断提高,出租车逐渐成为人们日常生活不可缺少的交通工具。而计价器作为出租车的一个重要组成部分,关系着出租车司机和乘客双方利益,起着重要的作用,因而出租车计价器的发展非常迅猛。2 系统规范2.1 出租车计价器的要求:设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起价三部分,用4位数码管显示总金额,最大值为99.99元;(1)顾客上车后即显示起步价8元,行车距离小于等于5公里时车费为起步价。(2)里程价为每公里1.8元,当行车距离大于5公里后每增

3、加0.5公里,车费增加0.9元,小于05公里不计。(3)车速低于100米分为误时状态,误时10秒后开始计误时。误时价为每分钟06元,要求开始计误时后,每误时10秒钟车费增加误时价0l元,误时小于10秒不计价。总车费为里程费与误时费之和。2.2 系统工作原理:出租车的一般计费过程为:出租车载客后,启动计费器,整个系统开始运行,里程计数器从0开始计数,费用计数器从8开始计算。再根据行驶里程或停止等待的时间按以上的标准计费。若在行驶状态,则计程器开始加计数,当路程超过五公里后,计费器以每公里1.8元累加。若出租车因等待顾客而停止并且时间超过10s时,则计时器进入误时计费状态,开始加计数,当时间每超过

4、十秒钟后,计费器0.1元累加。出租车到达目的地停止后,停止计费器,显示总费用和总里程,并由司机手动清零。根据出租车计费器的工作过程,本系统采用分层次、分模块的方式设计,其本系统组成框图如下所示。其中分频模块获取1s的脉冲信号,速度获取模块将采集的脉冲信号转换为速度信号,计费模块用来计算行车里程里程费用和因误时产生的费用并输出总里程和总费用,进制转换模块用来将输出的二进制/十六进制转换成易于观察的十进制,显示模块将进制转换模块输出的行驶的公里数和总费用等信息用数码管显示出。系统框图如下所示:3 各模块设计 本系统采用层次化、模块化的设计方法,设计顺序为自下向上。首先实现系统框图中的各子模块,然后

5、由顶层模块调用各子模块来完成整个系统。为了便于显示,这里的路程、费用计数器均用十六进制表示。3.1分频模块:3.1.1 计数器的分频模块具体框图: 此模块的功能是对总的时钟进行分频,分出的频率是让其他模块使用的。因为总的时钟使用的是27M的,设计该模块的时候用了一个25位的计数器,当计数器计到14000000的时候产生时钟。在仿真的时候为了方便观察设计了一个8分频的电路。当下载的时候用的是1Hz的时钟 。3.1.2 分频模块VerilogHDL源代码:module clk_1s(clk,clk1s);input clk;output clk1s;reg clk1s;reg24:0 cnt;al

6、ways (posedge clk)begin if(cnt=14000000) begin clk1s=clk1s; cnt=0; end else cnt=cnt+1; endendmodule3.2,速度获取模块: 速度获取模块的框图:此模块的功能是通过每秒对旋转编码器输出的脉冲进行计数通过相应的转换,输出所需要的速度数据供后面计费模块计程和计费使用。旋转编码器由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差(相对于一个周波为360度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每

7、转输出一个Z相脉冲以代表零位参考位。由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。旋转编码器是用来测量转速的装置。分辨率是以每旋转360度提供多少的通或暗刻线,也称解析分度、或直接称多少线,一般在每转分510000线。本设计使用的旋转编码器每旋转一圈输出360个脉冲。 速度获取模块的VerilogHDL源代码:module speed_gain(speed,start,reset,clk1s,speedtr);input speed,start,reset,clk1s;output7:0 speedtr;reg31:

8、0 s,m,n;reg7:0 speedtr;always (posedge speed)begin if(reset=0) begin s=0; speedtr=0; end else begin if(start) begin if(clk1s) begin if(m=1) begin m=0; s=1; end else s=s+1; end else begin n=s>>6; speedtr=n7:0; m=1; end end else begin s=0; speedtr=0; end endend3.3计费模块: 计费模块的框图:此模块的功能是计算出租车行驶的里程。

9、在出租车启动并行驶的过程中(即复位/启动信号reset为1,行驶/停止信号start为1),当时钟clk1s是上升沿的时候,系统即对路程计数器里程计数器进行加计数,当路程每超过五公里时,系统将增加0.9元 。车速低于10米秒为误时状态,误时10秒后开始计误时。每误时10秒钟车费增加误时价0l元,误时小于10秒不计价。总车费为里程费与误时费之和。 计费模块VerilogHDL源代码:module meterml(speedtr,clk1s,start,reset,money,mileage);input start,reset,clk1s;input7:0 speedtr;output23:0

10、mileage;output15:0 money;reg15:0 money,money1,money2;reg23:0 mileage;reg6:0 n;reg10:0 m;reg10:0 i;always (posedge clk1s)begin if(reset=0) begin mileage=24'b0; money1=0; n=1; end else begin if(start) begin mileage=mileage+speedtr; if(mileage<=50) money1<=12'd80; else begin if(mileage>

11、;=(n*50) begin money1<=money1+9; n<=n+1; end end end /else n=1; endendalways (negedge clk1s)begin if(reset=0) begin money2=0; i=1; m=0; end else begin if(start) begin if(speedtr<1) begin if(m>=10) begin if(m>=i*10) begin money2=money2+1; i=i+1; end else m=m+1; end else m=m+1; end else

12、 begin m=0;i=1;end end else begin m=0; i=1; end endendalways (negedge clk1s)begin if(reset=0) money=0; else money=money1+money2;endendmodule3.3.3 计费模块流程图如下图所示: 3.4 进制转换模块: 进制转换模块的框图:进制转换模块用于将计费模块输出的二进制/十六进制里程数据和金额数据转换成便于识别的BCD数据,送给显示模块显示。3.4.2 控制模块的VerilogHDL源代码:module bintobcd(bin,bcd);input15:0 bi

13、n;output15:0 bcd;wire15:0 bcd;wire3:0 A0,A1,A2,A3;assign A0=bin/1000;assign A1=(bin-A0*1000)/100;assign A2=(bin-A0*1000-A1*100)/10;assign A3=bin-A0*1000-A1*100-A2*10;assign bcd=A0,A1,A2,A3;endmodule3.5 显示模块: 显示模块的框图:数码管有两种显示方式动态显示与静态显示,在本系统中使用的开发板为静态显示。此模块的功能是将进制转换模块输出计价金额及行车里程数据用数码管以十进制显示出来。 显示模块的V

14、erilogHDL源代码如下所示:module dspy (oSEG0,oSEG1,oSEG2,oSEG3,oSEG4,oSEG5,oSEG6,oSEG7,iDIG);input31:0iDIG;output6:0oSEG0,oSEG1,oSEG2,oSEG3,oSEG4,oSEG5,oSEG6,oSEG7;ledshowu0(oSEG0,iDIG3:0);ledshowu1(oSEG1,iDIG7:4);ledshowu2(oSEG2,iDIG11:8 );ledshowu3(oSEG3,iDIG15:12);ledshowu4(oSEG4,iDIG19:16);ledshowu5(oSEG

15、5,iDIG23:20);ledshowu6(oSEG6,iDIG27:24);ledshowu7(oSEG7,iDIG31:28);endmodulemodule ledshow(outnum,num);input3:0 num;output6:0 outnum;reg6:0 outnum;always (num)begin case (num) 4'h1: outnum = 7'b1111001;/ -t-4'h2: outnum = 7'b0100100; / | |4'h3: outnum = 7'b0110000; / lt rt4&#

16、39;h4: outnum = 7'b0011001; / | |4'h5: outnum = 7'b0010010; / -m-4'h6: outnum = 7'b0000010; / | |4'h7: outnum = 7'b1111000; / lb rb4'h8: outnum = 7'b0000000; / | |4'h9: outnum = 7'b0011000; / -b-4'ha: outnum = 7'b0001000;4'hb: outnum = 7'b0

17、000011;4'hc: outnum = 7'b1000110;4'hd: outnum = 7'b0100001;4'he: outnum = 7'b0000110;4'hf: outnum = 7'b0001110;4'h0: outnum = 7'b1000000;endcaseendendmodule3.6 顶层模块:各模块设计仿真实现后,可分别创建成元件符号。顶层就是将各分模块用Verilog HDL语言或者是图形方法连接起来,便可实现系统电路。顶层模块的VerilogHDL源代码:Module zon

18、g(clk,speedtr,speed,start,reset,oSEG0,oSEG1,oSEG2,oSEG3,oSEG4,oSEG5,oSEG6,oSEG7);input clk,speed,start,reset;output7:0 speedtr;output6:0 oSEG0,oSEG1,oSEG2,oSEG3,oSEG4,oSEG5,oSEG6,oSEG7;/reg7:0 speedtr;wire clks;wire7:0 speedtr;wire15:0 moneys,moneytr,mileagetr;wire23:0 mileages;wire6:0 w_oSEG0,w_oSE

19、G1,w_oSEG2,w_oSEG3,w_oSEG4,w_oSEG5,w_oSEG6,w_oSEG7;wire3:0 sBCD1,sBCD2,sBCD3,sBCD4,sBCD5,sBCD6,sBCD7,sBCD8;assign w_oSEG0=oSEG0;assign w_oSEG1=oSEG1;assign w_oSEG2=oSEG2;assign w_oSEG3=oSEG3;assign w_oSEG4=oSEG4;assign w_oSEG5=oSEG5;assign w_oSEG6=oSEG6;assign w_oSEG7=oSEG7;/always speedtr=speedtrs;/assign mileages =mileage;clk_1s u1(.clk(clk), .clk1s(clks);speed_gain u2(.speed(speed), .start(start), .reset(reset), .clk1s(clks), .speedtr(speedtrs);meterml u3(.speedtr(speedtrs), .clk1s(clks), .start(start), .res

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论