科研训练报告基于FPGA的出租车计价器设计.doc
《科研训练报告基于FPGA的出租车计价器设计.doc》由会员分享,可在线阅读,更多相关《科研训练报告基于FPGA的出租车计价器设计.doc(20页珍藏版)》请在三一办公上搜索。
1、西安邮电学院科研训练报告基于FPGA的出租车计价器设计院系:电子工程学院姓名: 专业班级:微电子(05)学号: 81目录摘要21引言:22系统规范:22.1,出租车计价器的要求:22.2 ,系统组成框图:23 .各模块设计:33.1分频模块:33.1.1,计数器的分频模块:33.1 .3,计数器的分频模块VerilogHDL源代码:43.1 .4,仿真的结果:43.1.5,数码管的分频模块:43.1 .6 ,具体框图:43.1 .7,数码管的分频模块VerilogHDL源代码:53.2,计程模块:53.2.1,计程模块的框图:53.2.2计程模块的VerilogHDL源代码:53.2.3计程模
2、块的仿真结果:63.3计时模块:73.3.1,计时模块的框图:73.3.2,计时模块的VerilogHDL源代码:73.3.3计时模块的仿真结果:83.4,控制模块:83.4.1, 控制模块的框图:93.4.2,控制模块的VerilogHDL源代码:93.4.3,控制模块的仿真结果:93.5,计费模块:93.5.1计费模块的框图:93.5.2,计费模块的VerilogHDL源代码如下所示:103.5.3,计费模块的仿真结果:103.6,数码管显示模块:113.6.1,数码管显示模块的框图:113.6.2,数码管显示的VerilogHDL源代码:113.7,顶层模块:133.7.1,顶层模块的V
3、erilogHDL源代码:134.验证方案:144.1,验证的流程图:144.2,验证的VerilogHDL源代码:154.3,系统仿真:155.综合:175.1, Quartus II软件综合的报表:175.2,综合的RTL级电路:176. 结束语:187.参考文献:18基于FPGA的出租车计价器设计2系统规范:2.1,出租车计价器的要求: 行程3公里内(包括3公里),且等待累计时间2分钟内(包括2分钟),起步费为10元; 3公里外(不包括3公里)以每公里2元,等待累计时间2分钟外(不包括2分钟)以每分钟以1.0元计费。 能显示行驶公里数、等待累计时间和最后的总费用。本计费器的显示范围为09
4、9元,计价分辨率为1元;计程器显示范围为099公里,分辨率为1公里;计时器的显示范围是分钟的显示范围是099, 辨率为1分钟。秒的显示范围是059。辨率为1秒。2.2 ,系统组成框图:出租车的一般计费过程为:出租车载客后,启动计费器,整个系统开始运行,里程计数器和时间计数器从0开始计数,费用计数器从10开始计算。再根据行驶里程或停止等待的时间按以上的标准计费。若在行驶状态,则计程器开始加计数,当路程超过三公里后,计费器以每公里2元累加。若出租车停止等待状态,则计时器开始加计数,当时间超过两分钟后,计费器以每分钟1元累加。出租车到达目的地停止后,停止计费器,显示总费用。根据出租车计费器的工作过程
5、,本系统采用分层次、分模块的方式设计,其本系统组成框图如下所示。其中行驶路程计数模块、等待时间计数模块和计费模块,用来统计路程、等待时间和总费用,控制模块是用来控制计费模块,数码管显示模块用来显示行驶的公里数、等待累计时间和总费用等信息。系统框图如下所示:3 .各模块设计:本系统采用层次化、模块化的设计方法,设计顺序为自下向上。首先实现系统框图中的各子模块,然后由顶层模块调用各子模块来完成整个系统。为了便于显示,这里的路程、时间和费用计数器均用十六进制表示。3.1分频模块:3.1.1,计数器的分频模块:3.1 .2 ,计数器的分频模块具体框图: 此模块的功能是对总的时钟进行分频,分出的频率是让
6、计数器用的,因为总的时钟是50M的。设计该模块的时候用了一个32位的计数器,当计数器计到25_000000的时候产生时钟。在仿真的时候为了方便观察设计了一个8分频的电路。当下载的时候用的是2HZ的时钟 。3.1 .3,计数器的分频模块VerilogHDL源代码:module div(clk_50M,clk,reset);/ 端口的定义input clk_50M,reset;/ 总的时钟是50Moutput clk;/分频后输的时钟 reg clk;reg 31:0 count;/32位的计数器always (posedge clk_50M or negedge reset)/异步复位begin
7、 if(!reset) begin clk=d0; count=32d0;endelse if(count=32d25_000000)/ 判断计时器记到了25_000000吗 begin count=32d0;/计到25_000000计数器清零 clk=clk;/输出的时钟取反 end/end begin else count=count+1d1;/ 没计到25_000000计数器加一end/end alwaysendmodule / 结束分频模块3.1 .4,仿真的结果: 从波形可以看出当reset为低电平的时候clk为零,当为高电平的时候clk的高电平占了clk_50M的八个周期,低电平也
8、占了clk_50M的八个周期。3.1.5,数码管的分频模块:3.1 .6 ,具体框图: 此模块的功能是对总的时钟进行分频,分出的频率是让数码管用的,因为总的时钟是50M的。设计该模块的时候用了一个32位的计数器,当计数器计到50_000的时候产生时钟。在仿真的时候为了方便观察设计了一个8分频的电路。3.1 .7,数码管的分频模块VerilogHDL源代码:module div1(clk_50M,clk1,reset);/ 端口的定义input clk_50M,reset;/ 总的时钟是50Moutput clk1;/分频后输的时钟 reg clk1;reg 31:0 count;/32位的计数
9、器always (posedge clk_50M or negedge reset)/异步复位begin if(!reset) begin clk1=d0; count=32d0;endelse if(count=32d50_000)/ 判断计时器记到了50_000吗 begin count=32d0;/计到50_000计数器清零 clk1=clk1;/输出的时钟取反 end/end begin else count=count+1d1;/ 没计到50_000计数器加一end/end alwaysendmodule / 结束分频模块3.2,计程模块:3.2.1,计程模块的框图:此模块的功能是计
10、算出租车行驶的路程。在出租车启动并行驶的过程中(即复位/启动信号reset为0,行驶/停止信号start为1),当时钟clk是上升沿的时候,系统即对路程计数器distance的里程计数器进行加计数,当路程超过三公里时,系统将输出标志正脉冲distance_enable。3.2.2计程模块的VerilogHDL源代码:module distancemokuai(clk,start,reset,distance,distance_enable);/端口的定义input clk,start,reset;output 7:0 distance;/ 输出的公里reg 7:0 distance;outpu
11、t distance_enable;/ 控制计费的公里信号reg distance_enable;always(posedge clk or negedge reset)/异步复位begin if(!reset)/低电平复位 begin distance=8d0; end else if(start)/ start 高电平有效 begin if(distance3:0=9)/判断distance的低四位计到了9没有 begin distance3:0=4d0;/计到9清零 if(distance7:4=9) /判断distance的高四位计到了9没有 distance7:4=4d0;/ /计到
12、9清零 else distance7:4= distance7:4+1d1;/ distance的高四位没有计到9的时候加一 end/end begin else distance3:0=distance3:0+1d1;/ distance的低四位没有计到9的时候加一 end/end startend/end always/*产生distance_enable信号*/always(posedge clk or negedge reset)beginif(!reset)begin distance_enable8d1)/ 公里大于三的时候 begin distance_enable=1d1;/输
13、出distance_enable信号 end/end beginend/end alwaysendmodule/结束计程模块3.2.3计程模块的仿真结果:从波形图可以看出在时钟的控制下当reset为低电平的时候distance,distance为零,当reset为高电平且start为高电平的时候distance开始计数,当计到大于三的时候输出了distancedistance_enable为高电平。3.3计时模块:3.3.1,计时模块的框图:此模块用于计算停车等待的时间。在出租车行进中,如果车辆停止等待,计数器则在1 Hz信号clk的上升沿进行加计数,每60次产生进位脉冲使分钟计数器位进行加计
14、数,当累计等待时间超过2(不包括2分钟)分钟时,输出标志time_enable正脉冲信号。3.3.2,计时模块的VerilogHDL源代码:module timemokuai(clk,reset,start,s,m,time_enable);/ 端口的定义input clk,reset,start;output 7:0 s;/输出的秒output 7:0 m;/输出的分output time_enable;/输出的控制计费的信号reg 7:0 s;reg 7:0 m;wire time_enable; always(posedge clk or negedge reset)/异步复位begin
15、if(!reset)/低电平有效begin/复位s=8d0;m=8d0;endelse if(!start)/start 信号低电平有效beginif(s3:0=9)/ 秒的低四位是9 begin s3:0=4d0;/清零 if(s7:4=5) / 秒的高四位是5 begin s7:4=4d0; /清零 if(m3:0=9) / 分的低四位是9 begin m3:0=4d0; /清零 if(m7:4=9) / 分的高四位是9 m7:4=4d0; /清零 else m7:4=m7:4+1d1; / 分的高四位不是9加一endelse m3:0=m3:0+1d1; /分的低四位不是9加一endel
16、se s7:4=s7:4+1d1; / 秒的高四位不是5加一endelse s3:08d2)&(s7:0=8d0)?1d1:1d0;/产生time_enable信号。 endmodule/结束计时模块3.3.3计时模块的仿真结果:两分钟之内(包括两分钟)的仿真结果如下所示:从波形图可以看出在clk的控制下当start为低电平reset为低电平的时候时间计数但是费用没有计数,time_enable为低电平。两分钟之外(不包括两分钟)的仿真结果如下所示:从波形图可以看出在clk的控制下当start为低电平reset为低电平的时候时间计数当时间大于二分钟的时候费用计数,time_enable为输出高
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 科研 训练 报告 基于 FPGA 出租车 计价器 设计
链接地址:https://www.31ppt.com/p-4135645.html