名称: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
完整代码
扫描文章末尾的公众号二维码