出租车自动计费器设计Verilog代码vivado Nexys4开发板

名称:出租车自动计费器设计Verilog代码vivado  Nexys4开发板(文末获取)

软件:vivado

语言:Verilog

代码功能:

出租车自动计费器设计要求

设计一个出租车自动计费器,具有行车里程计费等候时间计费丶及起价三部分,用四位数码管显示总金额,最大值为999.9元

行车里程单价2元/公里,等候时间单价0.5元/10秒,起价10元(1公里起价)

行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲数,然后由计数译码电路转换成收费金额,实验中以一个脉冲模拟汽车前进100米,收费0.2元;用两个数码管显示行驶公里数

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

Nexys4开发板开发板.png

1. 工程文件

2. 程序文件

3. 程序编译

4. 程序RTL图

5. 管脚约束

6. Testbench

7. 仿真图

整体仿真

wheel_second_pluse模块

taxi_state模块

Display模块

部分代码展示:

module taxi_fee(
input clk,//标准时钟,100M
input reset,//复位信号,低有效 
input stop,//本次行程结束,停止计费,高有效--按键
input start,//启动信号,行程开始,高有效 --按键
input Speed,//0:等待  1:行驶--开关
output led_wheel,//车轮脉冲指示灯
output [7:0] bit_select,//数码管位选
output [7:0] seg_select//数码管段选
);
wire wheel_pulse;
wire second_pulse;
wire one_kilometre;//0.1公里产生一次
wire [15:0] totel_money;
wire [15:0] mileage;
wire [2:0] state;
//模块例化
//车轮脉冲产生及秒脉冲产生模块
wheel_second_pluse U_wheel_second_pluse(
. clk(clk),//标准时钟,100MHz
. reset(reset),//复位信号,低有效 
. Speed(Speed),//0:等待  1:行驶
. state(state),
. led_wheel(led_wheel),
. wheel_pulse(wheel_pulse), // 车轮脉冲,10个1公里,100米一次
. second_pulse(second_pulse) 10秒脉冲
);
taxi_state U_taxi_state(
. clk(clk),//标准时钟,100M 
. reset(reset),//复位信号,低有效 
. stop(stop),//本次行程结束,停止计费,高有效
. start(start),//启动信号,行程开始,高有效 
. Speed(Speed),//0:等待  1:行驶
. one_kilometre(wheel_pulse),//0.1公里产生一次
. second_pulse(second_pulse),10秒脉冲
. state_out(state),
. mileage_out(mileage),
. totel_money_out(totel_money)//合计费用
);
display U_display(
. clk(clk),//标准时钟,100M 
. totel_money(totel_money),//费用
. mileage(mileage),//里程
. bit_select(bit_select),//数码管位选
. seg_select(seg_select)//数码管段选
);
endmodule
源代码

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

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值