名称:完成简易出租车计价器设计Verilog代码Quartus 睿智FPGA开发板
软件:Quartus
语言:Verilog
代码功能:
完成简易出租车计价器设计,
1、起步8元/3公里,此后1元/500米
2、车速为每秒钟200米
3、通过按键控制汽车启动和暂停(S5),重新计价通过按键控制(S6)
4、数码管显示价钱精确到0.1元单位元和精确到100米的里程单位千米(数码管1-数码管4显示价格,数码管5-数码管8显示里程);
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在睿智FPGA开发板验证,睿智FPGA开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. 仿真图
顶层模块仿真图
按键消抖模块
速度脉冲产生模块
状态控制模块
显示模块
部分代码展示:
`timescale 1ns / 1ps //出租车模拟计费系统的实现 //费用的计算及显示,出租车的起步价设为8.00元,当里程小于3km时,按起步价计算费用;当里程大于3km时,按下式计算费用:1元/500m。费用精确到0.1元,里程精确到0.1Km; module taxi_charge_top( input clk_50M,//50M时钟 input rst_n,//复位信号 input charge_end,//重新计费 input charge_begin,//启动、停止 output running_led,//高电平行驶指示灯 //数码管控制信号 output [7:0] bit_select,//数码管位选 output [7:0] seg_select//数码管段选 ); wire charge_begin_n; wire [7:0] distance_out;//距离 wire [15:0] charging_money_out;//费用 wire kilometre_en; wire [2:0] state_in; //按键消抖 key_jitter i_key_jitter( . clkin(clk_50M), . key_in(charge_begin),//输入 . key_negedge(charge_begin_n)//消抖后按键下降沿 ); //状态机模块 state_machine i_state_machine( . clk_50M(clk_50M),//50M时钟 . rst_n(rst_n),//复位信号 . charge_end(charge_end),//停止计费,高有效 . charge_begin(charge_begin_n),//启动信号 . state_in(state_in),//当前状态 . kilometre_en(kilometre_en),//0.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),//复位低有效 . charge_begin_n(charge_begin_n),//启动停止 . state_in(state_in),//当前状态 . running_led(running_led),//指示灯 . kilometre_en(kilometre_en)//0.1公里产生一次 );
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1073
阅读全文
1040