名称:DE2-70开发板出租车计费器verilog计价器(代码在文末下载)
软件:Quartus II
语言:Verilog
代码功能:
一个出租车计价系统。
完成的功能是前3公里内收费10元,超过3公里按每公里2元收费。
同时记录等待时间,累计等待时间超过5分钟则加3元,以此类推。
若总公里数超过20公里,需加收10元空载返程费。
公里数、等待时间、费用均需显示在数码管上
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在开发板验证,开发板如下,其他开发板可以修改管脚适配:
部分代码展示:
module taxi_fee( input clk,//标准时钟,clock0=50M input reset,//复位信号 input stop,//中途暂停 input start,//启动信号,行程开始,高有效 //等待时间 output [7:0] HEX0,//数码管-低亮 output [7:0] HEX1,//数码管-低亮 //总路程,里程范围为HL=0~99(BCD码显示) output [7:0] HEX2,//数码管-低亮 output [7:0] HEX3,//数码管-低亮 //合计费用 HML=xxx (BCD码显示) output [7:0] HEX4,//数码管-低亮 output [7:0] HEX5,//数码管-低亮 output [7:0] HEX6//数码管-低亮 ); wire one_kilometre;//1公里产生一次脉冲 wire [15:0] totel_money; wire [7:0] mileage; wire [7:0] minute;//等待时间 wire stop_negedge; wire start_negedge; //消抖模块 key_jitter i1_key_jitter( . clkin(clk), . key_in(stop),//输入 . key_negedge(stop_negedge)//消抖后按键下降沿 ); //消抖模块 key_jitter i2_key_jitter( . clkin(clk), . key_in(start),//输入 . key_negedge(start_negedge)//消抖后按键下降沿 ); speed_pulse U_speed_pulse( . clk(clk),//标准时钟,50MHz . reset(~reset),//复位信号,低有效 . one_kilometre(one_kilometre)//1公里产生一次脉冲 ); taxi_state U_taxi_state( . clk(clk),//标准时钟,50Mhz . reset(~reset),//复位信号 . stop(stop_negedge),//中途暂停 . start(start_negedge),//启动信号,行程开始,高有效 . one_kilometre(one_kilometre),//1公里产生一次脉冲 . minute(minute), . mileage_out(mileage),//里程 . totel_money_out(totel_money)//合计费用 ); display U_display( . clk(clk),//标准时钟,50Mhz . totel_money(totel_money),//费用 . mileage(mileage),//里程 . minute(minute), . HEX0(HEX0),//数码管-低亮 . HEX1(HEX1),//数码管-低亮 . HEX2(HEX2),//数码管-低亮 . HEX3(HEX3), //数码管-低亮 . HEX4(HEX4),//数码管-低亮 . HEX5(HEX5), //数码管-低亮 . HEX6(HEX6) //数码管-低亮 ); endmodule
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. Testbench
7. 仿真图