毕业论文(设计)基于verilog HDL的出租车计费器说明书.docVIP

毕业论文(设计)基于verilog HDL的出租车计费器说明书.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《EDA技术与应用》实训报告 学 号 姓 名 指导教师:江国强 杨艺敏 2011 年 4 月 28 日 实训题目:出租车计费器 1.系统设计 1.1 设计要求 1.1.1 设计任务 设计并制作① 用EDA实训仪的I/O设备和PLD芯片实现出租车计费器的设计。 ② 出租车起步开始计程和计费,计程系统按实际公里数计程,计费系统首先显示起步价(如7.0),车行驶2km以内,只收起步价7元。 ③ 出租车行驶超过2km后,按每公里1.6元在7.0元的基础上增加。 ④ 出租车行驶超过10km后(或超过20元路费),每公里加收50%的车费,即车费变为每公里2.4元。 ⑤ 出租车达到目的地后,(用一个按钮)计程和计费数据清零,为下一次计费开始。 1.2 方案比较 最初计费模块选择乘法,但占用资源过多,所以选择分段加法来解决 1.3 方案论证 1.3.1 总体思路 整个系统主要由计程兼计费模块组成,另外添加计时器和流水灯模块作为附加功能,最后由选择模块选择输出费用或时间,分频模块作为路程模拟输入。 1.3.2 设计方案 分频器将实训仪的时钟转换成1s或0.1s的脉冲模拟行进一公里,将脉冲输入计程兼计费模块进行路程累加和计费,同时输出路程数和费用。流水灯则按行进路程进行亮灭,附加的时钟功能可以查看时间。最后由选择模块进行费用和时间间的切换。 2.各个模块程序的设计 ①分频模块:模拟车辆行进,分1s/km档和0.1s/km档 module fpq(clk,cout,k1); input clk,k1; reg [24:0] q; output reg cout; always @(posedge clk) begin case(k1) 0: begin q=q+1; if (q=1) begin cout=1;q=0;end else cout=0; end 1: begin q=q+1 ; if (q==2000000-1) begin cout=1;q=0;end else cout=0; end endcase end endmodule ②计程兼计费模块:jsq99累计路程dejfq按规则计费,同时附带输出显示 该模块又由两个小模块组成: jsq99:路程显示 module jsq99(clr,clk,q,cout,k2); input clk,clr,k2; output reg[7:0]q; output reg cout; always @(posedge clk or negedge clr) begin if(~clr) q = 0; else begin if(k2==0) begin if(q==h99) q = 0; else q = q+1; if(q[3:0]==ha) begin q[3:0] = 0; q[7:4] = q[7:4]+1; end if(q==0) cout = 1; else cout = 0;end end end endmodule dejfq:计费 module dejfq(clk,clrn,q,k2); input clk,k2; input clrn; output reg[11:0] q; reg[3:0] c; always @(posedge clk or negedge clrn) begin if(~clrn) begin c=0;q=0;end else begin if(k2==0) begin if(c14) c=c+1; if(c=2) q[7:4]=7; else if(c=10) begin q[3:0]=q[3:0]+6;q[7:4]=q[7:4]+1; if(q[3:0]9)begin q[3:0]=q[3:0]-10;q[7:4]=q[7:4]+1;end if(q[7:4]9)begin q[7:4]=q[7:4]-10;q[11:8]=q[11:8]+1; end end else if(c10) begin q[3:0]=q[3:0]+4;q[7:4]=q[7:4]+2; if(q[3:0]9)begin q[3:0]=q[3:0]-10;q[7:4]=q[7:4]+1;end if(q[7:

您可能关注的文档

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档