资讯详情

出租车计费器verilog HDL源程序

设计制作出租车计费器。

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设计和生成该硬件描述语言的模块。整个设计的核心部分是分频/测量模块和距离车费计数模块。分频/测量模块的功能主要用于产生距离脉冲功能。距离车费技术模块主要包括计算距离和车费。通过距离与车费的关系,当距离小于一定公里时,车费保持不变,达到一定公里时,按规定每公里增加车费,超过一定公里时,每公里增加车费。在所有模块的功能正确后,使用原理图构建顶层电路并进行整体模拟,直到满足设计要求,最后在实验箱上检查设计是否正确。在实现基本功能的基础上,设计了流水灯。乘客上车时,流水灯开始运行,乘客下车时,流水灯停止。

3f829e29e76caa8c3b1f630a6b27d58d.gif

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

3f829e29e76caa8c3b1f630a6b27d58d.gif

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

标签: 公连接器类型

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台