出租车模拟计费Verilog代码AX301开发板Quartus

发布时间:2024年01月12日

名称:出租车模拟计费Verilog代码AX301开发板Quartus

软件:Quartus

语言:Verilog

代码功能:

出租车模拟计费系统的实现

设计一个模拟的出租车计费系统,能显示里程和费用。

要求:(1)自行设定车速,根据计时转换为里程,里程显示方式为XXX,单位为km;

(2)费用的计算及显示,出租车的起步价设为7.00元,当里程小于2km时,按起步价计算费用;当里程大于2km时,按下式计算费用:费用=里程×1.80元/km。费用显示方式为XXX,单位为元;

本代码已在AX301开发板验证,开发板如下,其他开发板可以修改管脚适配:

AX301开发板照片.png

1.

出租车模拟计费系统的实现

设计一个模拟的出租车计费系统,能显示里程和费用。

要求:(1)自行设定车速,根据计时转换为里程,里程显示方式为XXX,单位为km;

(2)费用的计算及显示,出租车的起步价设为7.00元,当里程小于2km时,按起步价计算费用;当里程大于2km时,按下式计算费用:费用=里程×1.80元/km。费用显示方式为XXX,单位为元;

2. 工程文件

3. 程序文件

4. 程序编译

5. RTL图

6. 管脚分配

7. Testbench

8. 仿真图

整体仿真图

速度脉冲发生器模块

状态控制模块

显示模块

部分代码展示:

`timescale?1ns?/?1ps
//出租车模拟计费系统的实现
//设计一个模拟的出租车计费系统,能显示里程和费用。
//要求:(1)自行设定车速,根据计时转换为里程,里程显示方式为XXX,单位为km;
//(2)费用的计算及显示,出租车的起步价设为7.00元,当里程小于2km时,按起步价计算费用;当里程大于2km时,按下式计算费用:费用=里程×1.80元/km。费用显示方式为XXX,单位为元;
module?taxi_charge_top(
input?clk_50M,//50M时钟
input?rst_n,//复位信号
input?charge_end,//停止计费
input?charge_begin,//启动信号,开始计费
output?running_led,//高电平行驶指示灯
//数码管控制信号
output?[5:0]?bit_select,//数码管位选
output?[7:0]?seg_select//数码管段选
????);
wire?[7:0]?distance_out;//距离
wire?[15:0]?charging_money_out;//费用
wire?kilometre_en;
wire?[2:0]?state_in;
state_machine?i_state_machine(
.?clk_50M(clk_50M),//50M时钟
.?rst_n(rst_n),//复位信号
.?charge_end(charge_end),//停止计费,高有效
.?charge_begin(charge_begin),//启动信号
.?state_in(state_in),//当前状态
.?kilometre_en(kilometre_en),//1公里产生一次
.?distance_out(distance_out),//距离
.?charging_money_out(charging_money_out)//费用
);
//稍等脉冲产生模块
pluse_generate?i_pluse_generate(
.?clk_50M(clk_50M),//50MHz
.?rst_n(rst_n),//复位低有效?
.?state_in(state_in),//当前状态
.?running_led(running_led),//指示灯
.?kilometre_en(kilometre_en)//1公里产生一次
);
//数码管显示模块
display?i_display(
.?clk(clk_50M),
.?distance_out(distance_out),//距离
.?charging_money_out(charging_money_out),//费用
.?bit_select(bit_select),//数码管位选
.?seg_select(seg_select)//数码管段选
);
endmodule
源代码

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

文章来源:https://blog.csdn.net/diaojiangxue/article/details/135541010
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。