设计制作出租车计费器。
1.1.2 性能指标要求
① 用EDA实训仪的I/O设备和PLD芯片设计出租车计费器。
② 出租车开始计费,计费系统按实际公里计费,计费系统首先显示起价(如7.0),车行驶2km起步价只有7元。
③ 超过2辆出租车km之后,按每公里1.6元在7.在0元的基础上增加。
④ 10多辆出租车行驶km之后(或超过20元路费),每公里加收50%的车费,即车费变成每公里2.4元。
⑤ 出租车到达目的地后,计程和计费数据(用一个按钮)将被清除,从下一次计费开始。
1.2 设计思路及设计框图
1.2.1设计思路
这个设计首先是QuartusⅡ出租车计费器在环境中的各个部分使用verilog HDL设计和生成该硬件描述语言的模块。整个设计的核心部分是分频/测量模块和距离车费计数模块。分频/测量模块的功能主要用于产生距离脉冲功能。距离车费技术模块主要包括计算距离和车费。通过距离与车费的关系,当距离小于一定公里时,车费保持不变,达到一定公里时,按规定每公里增加车费,超过一定公里时,每公里增加车费。在所有模块的功能正确后,使用原理图构建顶层电路并进行整体模拟,直到满足设计要求,最后在实验箱上检查设计是否正确。在实现基本功能的基础上,设计了流水灯。乘客上车时,流水灯开始运行,乘客下车时,流水灯停止。
51hei.png (6.17 KB, 下载次数: 7)
2020-11-4 21:38 上传
设计每个模块程序
2.11秒分频器路程计数器的设计
计费器价格调整通过秒脉冲实现,9以上自动进入一位,计费脉冲实现。
路程模块:
路程模块用于控制数字管SEG4~SEG7显示有两个输入,分别是nclk,clrn。还有一种寄存器输出d,给计费器一个路程提示。
。
计费模块:
计费模块用于计算出租车的路费,共输入3个,d,clrn,j。
d它是计圈模块的输出,主要为计费器提供距离提示,并开始计费。在2公里内,数字管显示起步价为7.0元;2公里到10公里,每公里1公里.6元在7.在0元的基础上增加;,每公里2公里.4元;期间,低位每十进一次。此外,输入j用于设定计程车的起步价。clrn零端还没有清理干净。
流水灯模块:
流水灯模块是出租车计费器设计的创新点,共有两个输入,clk,key。给led灯的初始值为1,然后设置中间变量temp,将led灯的初值给temp。然后在key=0时执行对led左转灯,左转完成后给出led赋temp值,即回到初值,循环执行。
3调试过程
将程序锁定在培训箱上的管脚后,将程序下载到培训箱模拟出租车的行程。培训箱前四个数字管表示距离,后四个数字管表示车费。将分频器按钮置于高电平状态,分频器开始输送1秒信号,将控制距离开始的按钮置于高电平,模拟乘客上车,车费数字管开始显示起价7.0元,行程开始计算,车费数码管在2公里内显示7.当行程大于2公里后小于10公里时,车费数字管开始每公里增加10元.路程大于10公里后,6元,车费数码管开始每公里增加2.4元,然后将按键放在低电平,按下清零键,重置8个数字管,恢复起价。而当乘客上车时,距离和收费开始增加,流水灯会一直转动,当乘客下车时,流水灯会停止,这是培训的创新和亮点。
4功能测试
4.1 测试仪器和设备
EDA培训箱、数据连接线、计算机quartus仿真。
4.2 性能指标测试
① 用EDA实训仪的I/O设备和PLD芯片设计出租车计费器。
② 出租车开始计费,计费系统按实际公里计费,计费系统首先显示起价(如7.0),车行驶2km起步价只有7元。
③ 出租车行驶超过2km之后,按每公里1.6元在7.在0元的基础上增加。
④ 出租车行驶超过10km之后(或超过20元路费),每公里加收50%的车费,即车费变成每公里2.4元。
⑤ 出租车到达目的地后,计程和计费数据(用一个按钮)将被清除,从下一次计费开始。
所有性能指标都需要完成。
5心得体会
EDA在某些方面和CAD也涉及到软件Quartus II它的应用还涉及到数字、电力和C语言的学习,可以说结合了大量的知识。此外,在编写程序后,编译错误应逐一纠正,然后验证是否可以在实验箱上实现功能、验证和实现
6参考文献
《EDA第三版技术与应用 江国强编着 电子工业出版社
附录
附录1:模拟波形图(部分模块)
附录2:程序清单
(1)计费模块:
module jf(d,clrn,q,j);
input j,d,clrn ;
output reg[15:0] q;
reg[3:0] c;
always @(posedge d&&j or negedge clrn)
begin
if(clrn==0) begin c=0;q=0;end
else begin 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];q[7:4]=q[7:4] 1;end
if(q[7:4]>9)begin q[7:4]=q[7:4];q[11:8]=q[11:8] 1; end
end
else if(c>10) 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];q[7:4]=q[7:4] 1;end
if(q[7:4]>9)begin q[7:4]=q[7:4];q[11:8]=q[11:8] 1;
if(q[11:8]>9)begin q[11:8]=q[11:8];q[15:12]=q[15:12] 1;end
end
end
end
end
endmodule
(2)路程模块:
module lc (nclk,clrn,d,q);
input nclk,clrn;
output reg[15:0] q;
output reg d;
reg[11:0]i;
always @(negedge clrn or posedge nclk)
begin
if(clrn==0) begin q=0;i=0; end
else
begin i=i 5;
if(i>9)
begin q[3:0]=q[3:0] 1;i=0; d=1;
if(q[3:0]>9)
begin
q[3:0]=0;q[7:4]=q[7:4] 1;
//if(q[7:0]<=2) d=1;
if(q[7:4]>9)
begin
q[7:4]=0;q[11:8]=q[11:8] 1;
if(q[11:8]>9)
begin
q[11:8]=0;q[15:12]=q[15:12] 1;
end
end
end
end
else d=0;
end
end
endmodule
(4)分频器模块:
module fpq(clk,kaishi,clk_1s);
input clk,kaishi;
output reg clk_1s;
reg[24:0] qs;
always @(posedge clk)
if(kaishi==1)
begin
if(qs==20000000-1) qs=0;
else qs=qs 1;
if(qs==20000000-1)nbsp; clk_1s=0;
else clk_1s=1;
end
endmodule
(5)流水灯模块:
module deng(led,key,clk);
input clk,key;
output[11:0] led;
reg[11:0] led;
reg temp;
initial led=12'b000000000001;
always @(posedge clk)
begin
if(key==0)
begin
temp=12'b000000000001;
led=led<<1;
if(led==12'b000000000000)
led=temp;
end
end
endmodule
51hei.png (10.14 KB, 下载次数: 4)
2020-11-4 21:37 上传
全部资料51hei下载地址:
出租车计费器.7z
(523.9 KB, 下载次数: 15)
2020-11-4 20:55 上传
点击文件名下载附件
下载积分: 黑币 -5
出租车计费器.doc
(106 KB, 下载次数: 10)
2020-11-4 20:54 上传
点击文件名下载附件
下载积分: 黑币 -5