出租车计费器 FPGA 设计 Verilog Quartus(2)
名称:出租车计费器 FPGA 设计 Verilog Quartus(2)
软件:Quartus
语言:Verilog
功能介绍
出租车计费器 FPGA 设计使用 Verilog 编写,工程可在 Quartus 中进行综合,并配套 ModelSim 仿真。设计目标是实现一个按速度档位、行驶里程和等待时间自动计费的出租车计费系统,适合用于 FPGA 课程设计、数字逻辑综合实验以及 Verilog 状态机项目练习。 系统支持启动、停止、复位和速度档位输入,能够根据不同运行状态完成里程累计与金额累计。起步后按起步价 7 元计费,行驶过程中根据速度档位和里程条件进入不同计价规则;停车等待时按照等待时间单独计费,能够覆盖出租车计费器中常见的行驶计费和等待计费两类场景。 输出部分包含公里数高低位和金额显示位,便于在仿真中观察 Kmcount_H、Kmcount_L、Kmmoney_H、Kmmoney_M、Kmmoney_L 等结果信号。工程包含 Verilog 源码、Testbench、Quartus 综合结果和 ModelSim 仿真内容,适合需要完整工程参考的用户下载学习。运行环境
开发软件:Quartus。 仿真软件:ModelSim。 设计语言:Verilog。 工程包含 Quartus 工程文件、Verilog 源码、Testbench、综合输出文件以及仿真相关文件,可用于综合和功能仿真参考。设计思路
本设计采用模块化方式实现出租车计费器,将时钟分频、里程脉冲、速度档位选择、计费状态控制和金额显示等功能分开处理。系统通过 Start、Stop、Reset 与 Speed 输入控制计费流程,Speed 使用 2 位档位编码表示不同运行状态,其中 00 表示暂停等待,01 表示低速,10 表示中速,11 表示高速。 计费逻辑围绕出租车常见计费规则展开:Start 置位后进入起步计费,起步价为 7 元;运行过程中根据速度档位和里程条件进行金额累加。中速档位下,3 公里后按每公里 2 元计价;高速档位下,金额达到 45 元后按每公里 4 元计价;停车等待状态下按 20 秒 1 元进行等待计费。 仿真激励覆盖了启动、中速运行、高速运行、低速运行、暂停等待以及停止结算等典型场景。测试过程中依次切换 Speed 档位,并在最后拉高 Stop 信号完成计费结束,仿真结果给出最终计费 212 元、公里数 46 的运行过程,便于学习完整出租车计费状态机的设计与验证方法。模块结构
工程主要模块包括:taxi_meter_vlg_tst 测试平台、taxi_meter 顶层计费模块、control_state 控制状态模块、division_1hz 分频模块、Kmmoney_display 金额显示模块、pauset_20_seconds 等待计时模块、speed_gears_select 速度档位选择模块、pluse_1_kilometre 里程脉冲模块。 其中 taxi_meter 负责连接各功能单元并输出公里数与金额结果;control_state 负责根据启动、停止、速度档位等输入组织计费状态;division_1hz 提供低频计时基础;pauset_20_seconds 用于等待计费时间判断;speed_gears_select 和 pluse_1_kilometre 配合实现不同速度条件下的里程更新。演示视频
配套演示视频展示了出租车计费器工程的综合与仿真过程,可用于快速了解工程运行流程、仿真激励设置以及计费结果变化情况。仿真图/仿真说明/设计文档图片
仿真文档包含整体仿真图和关键过程说明。仿真流程中 Start=1 后进入起步计费,起步价为 7;速度档位 10 表示中速,3 公里后每公里 2 元;速度档位 11 表示高速,45 元后每公里 4 元;速度档位 00 表示停车等待,按 20 秒 1 元计费;最后在速度档位 01 条件下 Stop=1,仿真结果显示最终计费为 212 元,公里数为 46。










部分代码
以下展示顶层模块 taxi_meter_vlg_tst 的部分代码,完整源码请下载压缩包查看。
module taxi_meter_vlg_tst();
reg Clk;
reg Reset;
reg [1:0] Speed;
reg Start;
reg Stop;
// wires
wire [3:0] Kmcount_H;
wire [3:0] Kmcount_L;
wire [3:0] Kmmoney_H;
wire [3:0] Kmmoney_L;
wire [3:0] Kmmoney_M;
// assign statements (if any)
taxi_meter i1 (
// port map - connection between master ports and signals/registers
.Clk(Clk),
.Kmcount_H(Kmcount_H),
.Kmcount_L(Kmcount_L),
.Kmmoney_H(Kmmoney_H),
.Kmmoney_L(Kmmoney_L),
.Kmmoney_M(Kmmoney_M),
.Reset(Reset),
.Speed(Speed),
.Start(Start),
.Stop(Stop)
);
initial
begin
Reset=0;
Speed=2'd0;
Start=0;
Stop=0;
#100;
Reset=1;
#100;
Start=1;
#500;
Start=0;
#500;
Speed=2'b10;
#140000;
Speed=2'b11;
#180000;
Speed=2'b01;
#190000;
Speed=2'b00;
#1900000;
Speed=2'b01;
#200000;
Stop=1;
#420;
Stop=0;
end
always
begin
Clk=1;
#10;
Clk=0;
#10;
end
endmodule
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 出租车计费器 FPGA 设计 Verilog Quartus(2)
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 出租车计费器 FPGA 设计 Verilog Quartus(2)