Quartus出租车计费器verilog代码仿真

名称:Quartus出租车计费器verilog代码仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

出租车计费器

1、起步价7元,2公里内起步价

2、超过2公里,按每公里1.6元计费

2、总里程超过10公里,或总费用达到或超过20.0元时,每公里按2.4元收费

1. 工程文件

2. 程序文件

3. 程序编译

4. 管脚分配

5. RTL图

6. Testbench

7. 仿真图

7.1 整体仿真

7.2 里程脉冲产生模块式

一秒钟产生一个里程脉冲,模拟汽车行驶1公里

7.3 计费模块

下图为一次完整计费过程

首先起步价为7.0元,total_money=70

当总里程成功10公里,或总费用达到或超过20.0元时,每公里按2.4元收费,如下图,在第10公里(mileage=10)时,计费每次加24,10公里内(20元内)加16。

计费结束

7.4 显示模块

将里程和费用用百位、十位、个位显示

部分代码展示:

module taxi_fee(
input clk,//标准时钟,clock0=1024hz 
input reset,//复位信号
input stop,//本次行程结束,停止计费,高有效
input start,//启动信号,行程开始,高有效 
//合计费用 HML=xxx (BCD码显示)
output [3:0] Kmmoney_L,
output [3:0] Kmmoney_M,
output [3:0] Kmmoney_H,
//总路程,里程范围为HL=0~99(BCD码显示)
output [3:0] Kmcount_H,
output [3:0] Kmcount_L
);
wire one_kilometre;//1公里产生一次脉冲
wire [15:0] totel_money;
wire [7:0] mileage;
speed_pulse U_speed_pulse(
. clk(clk),//标准时钟,1024Hz
. reset(reset),//复位信号,低有效 
. one_kilometre(one_kilometre)//1公里产生一次脉冲
);
taxi_state U_taxi_state(
. clk(clk),//标准时钟,1024hz 
. reset(reset),//复位信号
. stop(stop),//本次行程结束,停止计费,高有效
. start(start),//启动信号,行程开始,高有效 
. one_kilometre(one_kilometre),//1公里产生一次脉冲
. mileage_out(mileage),//里程
. totel_money_out(totel_money)//合计费用
);
display U_display(
. clk(clk),//标准时钟,1024hz 
. totel_money(totel_money),//费用
. mileage(mileage),//里程
. Kmmoney_L(Kmmoney_L),
. Kmmoney_M(Kmmoney_M),
. Kmmoney_H(Kmmoney_H),
. Kmcount_H(Kmcount_H),//合计费用 HML=xxx (BCD码显示)
. Kmcount_L(Kmcount_L)//总路程,里程范围为HL=0~99(BCD码显示)
);
endmodule
完整代码

 扫描文章末尾的公众号二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值