名称:出租车自动计费器设计Verilog代码vivado? Nexys4开发板
软件:vivado
语言:Verilog
代码功能:
出租车自动计费器设计要求
设计一个出租车自动计费器,具有行车里程计费等候时间计费及起价三部分,用四位数码管显示总金额,最大值为999.9元。
行车里程单价2元/公里,等候时间单价0.5元/10秒,起价10元(1公里起价)。
行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲数,然后由计数译码电路转换成收费金额,实验中以一个脉冲模拟汽车前进100米,收费0.2元;用两个数码管显示行驶公里数。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Nexys4开发板验证,Nexys4开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
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
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=469
667