名称:出租车模拟计费Verilog代码AX301开发板Quartus
软件:Quartus
语言:Verilog
代码功能:
出租车模拟计费系统的实现
设计一个模拟的出租车计费系统,能显示里程和费用。
要求:(1)自行设定车速,根据计时转换为里程,里程显示方式为XXX,单位为km;
(2)费用的计算及显示,出租车的起步价设为7.00元,当里程小于2km时,按起步价计算费用;当里程大于2km时,按下式计算费用:费用=里程×1.80元/km。费用显示方式为XXX,单位为元;
本代码已在AX301开发板验证,开发板如下,其他开发板可以修改管脚适配:
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
?扫描文章末尾的公众号二维码