veriloghdl语言编写的基于eda的多功能出租车计费器word格式源文件内容摘要:
显示时间和选择模块的脉冲,从而来控制他们 4 s切换显示一次。 3 调试过程 要完成一个程序最重要的一部分便是调试部分,有时一个程序的各模块都想好了,且大致的程序都写好的,但也并不一定能代表成功,往往做一个项目调试一个程序要占到编写一个程序大部分时间。 所以不可避免的也出现了很多问题 ,由于这个程序的所有部分都是自己一个字母敲打而成,在调试中出现了很多问题,由于自己为了简化程序,尽量少利用资源来完成实训,这个程序在调试时出现的最大的问题就是车费和车程从 16进制转 10进制的过程遇到了一定的问题,最终自己在调试了几个小时候还是完成了调试,在调试过程还遇到了如年不能进位,动态显示不能实现, 程序出现管脚过多等一系列问题。 由于是第一接触做实际的项目,所以没什么经验,在调试过程中总有一些细节问题不能很快察觉。 自己根据试验箱上的效果来调试程序,把程序做到了最好。 4 功能 测试 测试仪器与设备 EDA 实训箱一台 性能 指标测试 我这个程序 字实训箱上运行都实现了预想效果,此次是自己完全动手实践写成的程序,当然也有我的很多特点。 其一我只用了 三个拨把开关就能实现控制车程、车费、年月日、时分秒四个数据的动态与手动显示,以及切换校时的三个按钮。 其次就是我利用所学知识尽量少用乘除法,把计算模块所耗资源减到了 4%。 还用我的程序增加了很多功能,如汽车转向,调档,显示是否有客,紧急情况显示,车顶广告箱会根据白昼自动亮灭。 试验箱上的 S0和 S1用来控制车速, S2用来控制显示是否有客人 ,S2往上拨表示有客人。 S5 用来控制是否手动显示 , S5 往上拨表示 手动显示,负责为 4S 一切换的动态显示。 S6 和S7 用来手动控制分别显示车程、车费、时分秒、年月日,当手动显示到年月日是可用 KK K10来校时年月日,当手动显示到时分秒是可用 K K K10来校时时分秒。 S8是紧急情况控制, s8往上拨,表示有紧急情况,蜂鸣器响同时有三个 LED黄灯亮。 S9是控制右转,S10控制左转。 S15用来时钟的清零端,当 s15往上拨时时钟清零。 5 实训心得体会 这次实训是我第一次通过自己的能力将 EDA知识运用到实际中,从中受益匪浅 ,激发的 学习兴趣,同时也培养了我思考能力和创新能力,为我今后的实践创新提供了很好的铺垫作用。 我选的实训题目是出租车计费器,虽然在此之前听老师大致讲解过车租车计费器的设计方案,但自己真正设计时,在一开始还是有点摸不着头脑,于是根据实训里的每一个要求,通过查找资料,再综合 实际情况 ,有了一个总体的设计框架。 设计一个良好的 EDA 程序,不仅要求符合题意,同时也应将尽量少的占用系统的资源, 在初步编写的程序中,所占的资源比较大,通过自己一步步调试 ,修改了很多语句,最终能顺利地将系统资源降低到 29%,特别是计费和计程模块 ,我从占 系统资源 150%降低到 4%。 通过这一点,让我们明白了,想要得到一个优异的程序,必须善于发现问题改正问题,同时要有一颗持之以恒的心。 虽然在实训中遇到了一些我们不能完成的问题,但也能在问题中提高很多专业知识,尤其是课堂上自己还没掌握的知识点,通过本次实验加深了理解,当然也离不开老师的悉心教导。 程序的调试是让我收获最多的,在调试时,可以锻炼自发现问题和解决问题的能力。 我一定会在大学以后的时间里继续努力学习 EDA相关方面的知识和进行一些实际的项目,为自己在 以后在电子大赛做好准备。 6 参考文献 【 1】曹昕燕、 周凤臣、聂春燕, EDA技术实验与课程设计【 M】,清华大学出版社 【 2】刘欲晓、方强、黄宛宁, EDA技术与 VHDL电路开发应用实践【 M】,电子工业出版社。 【 3】基于 EDA技术出租车计费器的设计 (样本 ) 百度文库 附录 附录 1:仿真波形图(部分模块) 车辆计费部分仿真波形图 24进制的仿真波形图 60进制的仿真波形图 夜灯模块显示 仿真波形图 附录 2:程序清单 一秒分频器 module clk_1s(clk,t)。 input clk。 output reg t。 reg [24:0] qs。 always @(posedge clk ) begin if(qs==202000001) qs=0。 else qs=qs+1。 if(qs100000001) t=0。 else t=1。 end endmodule 八秒分频器 module fenpin1(clk,clkn)。 input clk。 output reg clkn。 reg [28:0] qs。 always @(posedge clk) begin if(qs=1600000001) qs=0。 else qs=qs+1。 if(qs=800000001) clkn=1。 else clkn=0。 end endmodule 十六秒分频器 module fenpin2(clk,clkn2)。 input clk。 output reg clkn2。 reg [32:0] qs。 always @(posedge clk) begin if(qs=3202000001) qs=0。 else qs=qs+1。 if(qs1600000001) clkn2=1。 else clkn2=0。 end endmodule 时分秒模块 module clk_1s(clk,t)。 input clk。 output reg t。 reg [24:0] qs。 always @(posedge clk ) begin if(qs==202000001) qs=0。 else qs=qs+1。 if(qs100000001) t=0。 else t=1。 end endmodule module t24(clr,clk,t,q,j)。 input clr,clk,j。 output reg t。 output reg [7:0] q。 always @(posedge clk^j or negedge clr) begin if(~clr) q=0。 else if (q==39。 h23) begin q=0。 t=1。 end else begin t=0。 q=q+1。 if(q[3:0]==39。 ha) begin q[7:4]=q[7:4]+1。 q[3:0]=0。 end end end endmodule module t60(clr,clk,t,q,j)。 input clr,clk,j。 output reg t。 output reg [7:0] q。 always @(posedge clk^j or negedge clr) begin if(~clr) q=0。 else if (q==39。 h59) begin q=0。 t=1。 end else begin t=0。 q=q+1。 if(q[3:0]==39。 ha) begin q[7:4]=q[7:4]+1。 q[3:0]=0。 end end end endmodule module sfm(clk,clr,jm,jf,js,qm,qf,qs,cout)。 input clk,clr,jm,jf,js。 output [7:0] qm,qf,qs。 output cout。 wire q1,q2,q3。 clk_1s(clk,q1)。 t60(clr,q1,q2,qm,jm)。 t60(clr,q2,q3,qf,jf)。 t24(clr,q3,cout,qs,js)。 endmodule 年月日模块 module nyr(clk,clrn,jr,jy,jn,qn,qy,qr)。 input clrn,c。veriloghdl语言编写的基于eda的多功能出租车计费器word格式源文件
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。