名称:出租车计费器Verilog代码vivado ego1开发板(文末获取)
软件:vivado
语言:Verilog
代码功能:
出租车计费器
1、起步价5元,3公里内起步价
2、3公里后每公里2.1元
3、停车等待时,0.6元每十分钟
4、计费方式可以通过代码参数快捷修改
本代码已在ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:
1. 计费方式可自定义,修改以下代码即可
2. 工程文件
3. 程序文件
4. 程序运行
5. 程序RTL图
6. 管脚约束
7. Testbench
8. 仿真图
整体仿真
wheel_second_pluse模块
speed_pulse模块
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] dig_led_1, output [3:0] wei_led_1, output [7:0] dig_led_2, output [3:0] wei_led_2//高电平点亮,高电平选通 ); wire wheel_pulse; wire second_pulse; //车轮脉冲产生及秒脉冲产生模块 wheel_second_pluse U_wheel_second_pluse( . clk(clk),//标准时钟,100MHz . reset(reset),//复位信号,低有效 . Speed(Speed),//0:等待 1:行驶 . led_wheel(led_wheel), . wheel_pulse(wheel_pulse), // 车轮脉冲,10个1公里 . second_pulse(second_pulse) //秒脉冲 ); //模块例化 wire one_kilometre;//1公里产生一次 wire ten_minute;//暂停等待,10分钟产生一次 wire [15:0] totel_money; wire [7:0] mileage; wire [7:0] second; //信号定义 speed_pulse U_speed_pulse( . clk(clk),//标准时钟,100M . reset(reset),//复位信号,低有效 . wheel_pulse(wheel_pulse), // 车轮脉冲,10个1公里 . second_pulse(second_pulse), //秒脉冲 . one_kilometre(one_kilometre),//1公里产生一次 . second_out(second), . ten_minute(ten_minute)//10分钟产生一次 ); taxi_state U_taxi_state( . clk(clk),//标准时钟,100M . reset(reset),//复位信号,低有效 . stop(stop),//本次行程结束,停止计费,高有效 . start(start),//启动信号,行程开始,高有效 . Speed(Speed),//0:等待 1:行驶 . one_kilometre(one_kilometre),//1公里产生一次 . ten_minute(ten_minute),//10分钟产生一次 . mileage_out(mileage), . totel_money_out(totel_money)//合计费用 ); display U_display( . clk(clk),//标准时钟,100M . reset(reset),//复位信号,低有效 . totel_money(totel_money),//费用 . mileage(mileage),//里程 . second(second), . dig_led_1(dig_led_1), . wei_led_1(wei_led_1), . dig_led_2(dig_led_2), . wei_led_2(wei_led_2)//高电平点亮,高电平选通 ); endmodule
源代码
扫描文章末尾的公众号二维码