下载此文档

EDA实训-出租车计费.pdf


文档分类:通信/电子 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
该【EDA实训-出租车计费 】是由【mama1】上传分享,文档一共【8】页,该文档可以免费在线阅读,需要了解更多关于【EDA实训-出租车计费 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。-
"EDA技术及应用"实训报告
姓名满眼皆是繁华
指导教师:
2021年7月8日
实训题目:出租车计费器的设计
1系统设计


设计并制作一台出租车计费器。

①用EDA实训仪的I/O设备和PLD芯片实现出租车计费器的设计。
②出租车起步开场计程和计费,计程系统按实际公里数计程,计费系统首先显示起步
价〔〕,车行驶2km以,只收起步价7元。
③出租车行驶超过2km后,。
④出租车行驶超过10km后〔或超过20元路费〕,每公里加收50%的车费,即车费变

⑤出租车到达目的地后,〔用一个按钮〕计程和计费数据清零,为下一次计费开场。


出租车计费器的整体构造包括:分频模块,计数模块,计费模块。
另外我还加了扩展功能:选择模块,计时模块。不计价时,可以切换到显示时分秒。这
个功能需要选择模块和计时模块共同来实现。
通过分频模块产生一个脉冲信号模拟汽车的启动与停顿,然后通过计数模块,计算出一
.z
-
共所行驶的路程,最后通过记价模块,将所行驶的路程计算出相对应的价钱。计费显示起步
价7元,2km之为起步价,;超过10km以后,
。通过数学公式计算出费用,这就是费用计算模块。结合生活中的出租车
计费器,分别有3km以,10km以以及超过10Km以后的计费标准。我设计用拨码开关来实现
清零与车速的转换,并通过数码管来显示路程与车费。车轮每转一圈就是一个脉冲,因此,
脉冲频率的快慢就是车速的快慢,这就是车速的计算;把车轮每转一圈4米的话,每来一
个脉冲路程就加4米,这就是路程的计算;当路程的百位向千位进位时就产生一个脉冲也就
是路程又走了1公里。于是便实现了车行驶3km以,只收起步价7元。行驶超过3km后,按
。行驶超过10km后〔或超过20元路费〕,每公里加收
50%的车费,。

2各个模块程序的设计

这个模块是设计不同车速的,通过d1与d2的值来设置四个不同的车速,其中00是最
慢,01是中速,10是最快,11是停顿。这样更贴切生活。

分为输出路程和时间的模块,由分频,路程,车费,模块组成。
车速的计算:车轮每转一圈就是一个脉冲,因此,脉冲频率的快慢就是车速的快慢。
路程的计算:如果车轮每转一圈,每来一个脉冲路程就加4米。
计费器模块如下列图所示:

这个模块就是实现题目要求的,在2km收起步价7块,大于2km小于10km的时候每公
,,通过if循环嵌套来实现。

这个模块是用来计算具体路程,并通过数码管表达出租车所行走的路程。

不计价时,可以切换到显示时间,显示时分秒,也可人为校准。方便在车上看时间。用
控制端上下电平控制选择。
计时模块路下列图所示:

计费器和显示时分秒的切换选择,由输入端c控制。
3调试过程
写程序的过程中遇到了很多问题,编译的时候出现了很多错误,通过询问教师跟同学,
再参考一些同学的程序后,解决了逐个问题,逐渐完善了自己的程序。
.z
-
管脚锁定:
4功能测试

EDA实训箱,QuartusII软件,数据连接线。

S14为1时开场计费,S0和S1可以调节路程跳动的速度,可切换3种不同的速度;K7
按键校准车费;当S0S1都为1时,停顿计费,也表示车停顿走动。S15用来切换计费器和
显示时间的功能,拨为0时,是计费器功能;拨为1时,是显示时间功能。按键K7K6K5
可以调节路程的设置,S14为0时是清零功能。K2K1K0为时分秒的校准。
5实训心得体会
这次EDA实训将EDA知识运用到实际中,我从中受益匪浅。我选择的实训题目是出租车
计费器,刚开场看题目,有点摸不着头脑,查找资料,于是根据每一个要求,再根据教师上
课讲的容,有了个总体的思路。
通过这样实训,提高了动手能力,如何运用数码管显示十进制数,在将EDA课堂知识运
用到实训中时,对课堂知识也有了更好的理解,在过程中遇到不懂的地方,通过请教教师和
同学也明白了自己的缺乏之处,并将在以后的学****中进一步完善自己。
波形仿真时,一直有问题。后来发现是因为自己操作不对,在proessing那儿要设置,
我记得上课教师又给我们讲过,可能是我记得不牢。通过这次实训,我运行软件QuartusII
熟练多了较以前来说。下次做实训的时候要考虑周到,不清楚的时候要及时翻书,并回忆教
师上课讲的容和重点。更在这一点上明白了,我们必须善于发现问题改正问题,同时要有一
颗持之以恒的心。用理论知识运用到实际中,大大提高了我们的学****兴趣,同时要感教师们
的悉心教诲。
6参考文献
[1]·实验·测试〔第二版〕.:华中科技大学,2000
[2]江国强,EDA技术与应用〔第2版〕,电子工业,2021
附录
附录1:仿真波形图〔局部模块〕
路程仿真
计费器仿真
时间仿真
附录2:程序清单
分频器
modulefpq(clk,d1,d2,nclk);
inputclk,d1,d2;
.z
-
outputnclk;
regnclk;
reg[24:0]num;
always(posedgeclk)
begin
case({d1,d2})
0:beginnum=num+1;
if(num>=19999999)
beginnclk=1;num=0;end
elsenclk=0;
end
1:beginnum=num+1;
if(num>=1999999)
beginnclk=1;num=0;end
elsenclk=0;
end
2:beginnum=num+1;
if(num>=199999)
beginnclk=1;num=0;end
elsenclk=0;
end
3:beginnum=num+1;
if(num>=0)
beginnclk=1;num=0;end
elsenclk=0;
end
endcase
end
endmodule
路程计算
modulelc(nclk,clrn,q,d);
inputnclk,clrn;
outputreg[15:0]q;
outputregd;
.z
-
reg[11:0]i;
reg[3:0]k;
always(negedgenclkornegedgeclrn)
begin
if(clrn==0)beginq=0;i=0;end
else
begini=i+1;
k=i*4;
if(k>9)
beginq[3:0]=q[3:0]+1;k=0;
if(q[3:0]>9)
begin
q[3:0]=0;q[7:4]=q[7:4]+1;
if(q[7:4]>9)
begin
q[7:4]=0;q[11:8]=q[11:8]+1;d=1;
if(q[11:8]>9)
begin
q[11:8]=0;q[15:12]=q[15:12]+1;
end
end
end
end
elsed=0;
end
end
endmodule
车费计算
modulecf(d,clrn,q,j);
inputd,j;
inputclrn;
outputreg[15:0]q;
regc;
always(posedged^j)
.z
-
begin
if(~clrn)beginc=0;q=0;end
elsec=c+1;
if(c<=2)q[7:4]=7;
elseif(c<=10)beginq[3:0]=q[3:0]+6;q[7:4]=q[7:4]+1;
if(q[3:0]>9)beginq[3:0]=q[3:0]-10;q[7:4]=q[7:4]+1;end
if(q[7:4]>9)beginq[7:4]=q[7:4]-10;q[11:8]=q[11:8]+1;end
end
elseif(c>10)beginq[3:0]=q[3:0]+4;q[7:4]=q[7:4]+2;
if(q[3:0]>9)beginq[3:0]=q[3:0]-10;q[7:4]=q[7:4]+1;end
if(q[7:4]>9)beginq[7:4]=q[7:4]-10;q[11:8]=q[11:8]+1;
if(q[11:8]>9)beginq[11:8]=q[11:8]-10;q[15:12]=q[15:12]+1;
end
end
end
if(c>14)c=11;
end
endmodule
60进制计数器
modulet60(clrn,clk,j,q,cout);
inputclrn,clk,j;
outputreg[7:0]q;
outputregcout;
always(posedgeclk^jornegedgeclrn)
begin
if(~clrn)q=0;
elsebegin
if(q=='h59)q=0;
elseq=q+1;
if(q[3:0]=='ha)beginq[3:0]=0;
q[7:4]=q[7:4]+1;
end
if(q=='h59)cout=1;
elsecout=0;
.z
-
end
end
endmodule
24进制计数器
modulet24(clrn,clk,j,q,cout);
inputclrn,clk,j;
outputreg[7:0]q,cout;
always(posedgeclk^jornegedgeclrn)
begin
if(~clrn)q=0;
elsebegin
if(q=='h23)q=0;
elseq=q+1;
if(q[3:0]=='ha)beginq[3:0]=0;
q[7:4]=q[7:4]+1;
end
if(q=='h23)cout=1;
elsecout=0;
end
end
endmodule
分频1秒
modulefenpin1s(clk,cout);
inputclk;
reg[24:0]q;
outputregcout;
always(posedgeclk)
begin
if(q==20000000-1)q=0;
elseq=q+1;
if(q==20000000-1)cout=1;
elsecout=0;
end
endmodule
.z
-
总时间
modulezsj(qm,qf,qs,day,q);
input[7:0]qm,qf,qs,day;
outputreg[31:0]q;
always
begin
q[31:0]={day,qs,qf,qm};
end
endmodule
选择切换功能
module*uanze(q1,q2,q3,q,c,clk);
inputc,clk;
input[15:0]q1,q2;
input[31:0]q3;
outputreg[31:0]q;
always(posedgeclk)
begin
case(c)
0:beginq[31:16]=q1[15:0];q[15:0]=q2[15:0];end
1:beginq[23:0]=q3[23:0];q[31:24]=0;end
endcase
end
endmodule
.z

EDA实训-出租车计费 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人mama1
  • 文件大小323 KB
  • 时间2023-03-13