出租车计费器 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。

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image11.png

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image1.png

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image2.png

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image3.png

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image4.png

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image5.png

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image6.png

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image7.png

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image8.png

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image10.png

出租车计费器 FPGA 设计 Verilog Quartus(2) 设计文档图片 image9.png

部分代码

以下展示顶层模块 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)

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员