• 正文
  • 相关推荐
申请入驻 产业图谱

出租车计费系统FPGA设计Verilog Quartus

10小时前
39
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称:出租车计费系统 FPGA 设计 Verilog Quartus

软件:Quartus

语言:Verilog

开发板/平台:Cyclone IV FPGA开发板

功能介绍

本设计实现了一个基于 FPGA 的出租车计费系统,使用 Verilog 语言在 Quartus 环境下完成工程设计。系统通过启动信号开始计费,通过停止计费信号结束当前计费过程,并使用运行指示灯表示车辆处于行驶/计费状态。

计费过程中,系统内部产生公里使能信号,用于推动里程累计和费用计算;当前里程与计费金额通过数码管进行显示。顶层接口包含时钟、复位、启动、停止、LED 指示和数码管控制信号,便于在 FPGA 开发板上完成完整的输入控制与显示验证。

该工程适合用于 FPGA 课程设计、数字逻辑综合实验、Verilog 状态机练习以及出租车计价器类项目参考。设计内容覆盖顶层例化、状态控制、脉冲产生、费用/里程输出和数码管显示等常见 FPGA 实验知识点。

运行环境

开发语言:Verilog

开发软件:Quartus

适用平台:Cyclone IV FPGA 开发板

工程包含 Quartus 工程文件、Verilog 源码、管脚约束文件、编译输出文件以及演示视频,可用于综合编译、上板验证和课程设计参考。

设计思路

设计以出租车计费流程为核心,将系统划分为状态控制、速度/里程脉冲产生和数码管显示三个主要部分。顶层模块统一接入 50MHz 系统时钟、复位、启动和停止控制信号,并向外输出行驶指示灯及数码管扫描信号,使逻辑功能和开发板外设连接保持清晰。

状态控制模块负责根据启动计费、停止计费等输入切换当前工作状态,并在有效行驶状态下累计里程和费用。速度脉冲产生模块在对应状态下生成公里计数使能信号,相当于把车辆行驶过程抽象成周期性的里程增量,便于在 FPGA 上进行可观察、可验证的计费演示。

显示部分接收里程与费用数据,通过动态扫描方式驱动多位数码管,将出租车行驶距离和计费金额实时显示出来。整体结构层次明确,适合学习 Verilog 模块化设计、状态机控制、计数逻辑、数码管动态显示以及 Quartus 工程综合实现流程。

模块结构

工程顶层模块为 taxi_charge_top,主要由以下模块组成:

1. taxi_charge_top:系统顶层模块,连接外部时钟、复位、启动/停止控制、运行指示灯和数码管显示接口,并完成各功能模块例化。
2. state_machine:状态控制模块,根据启动计费、停止计费和公里使能信号控制当前状态,输出里程和费用数据。
3. pluse_generate:速度脉冲产生模块,在运行状态下产生公里计数使能信号,同时控制 running_led 行驶指示输出。
4. display:数码管显示模块,对里程和费用数据进行动态扫描显示,输出位选 bit_select 和段选 seg_select 信号。

开发板验证

工程支持在 Cyclone IV FPGA 开发板上进行上板验证,设计中提供了管脚约束/分配文件,顶层接口包含 50MHz 时钟、低有效复位、启动计费、停止计费、行驶指示灯以及数码管位选/段选信号,便于直接连接开发板按键、LED 与数码管资源进行功能演示。

上板运行时,可通过启动信号进入计费流程,运行指示灯用于表示车辆行驶状态;停止计费后,数码管保持显示当前里程与费用结果,适合课程设计、FPGA 数字系统实验和出租车计费逻辑验证场景。

演示视频

包含出租车计费系统演示视频,可直观看到启动计费、行驶状态指示、里程与费用数码管显示等运行效果,便于下载前了解工程的实际展示方式。

演示视频请点击左下角阅读原文查看。

仿真图/仿真说明/设计文档图片

设计文档中包含工程文件、程序文件、程序编译、RTL 图、Testbench、顶层仿真图以及状态控制模块、速度脉冲产生模块、数码管显示模块等相关说明图片,可用于理解系统结构、仿真验证过程和各模块之间的连接关系。

部分代码

以下展示顶层模块 taxi_charge_top 的部分代码,完整源码请下载压缩包查看。

module taxi_charge_top(
input clk_50M,//50M时钟
input rst_n,//复位信号S1
input charge_end,//停止计费
input charge_begin,//启动信号,开始计费
output running_led,//高电平行驶指示灯
//数码管控制信号
output [6:0] bit_select,//数码管位选
output [7:0] seg_select//数码管段选	
    );

wire [7:0] distance_out;//距离
wire [15:0] charging_money_out;//费用
wire kilometre_en;
wire [2:0] state_in;
//状态控制模块
state_machine i_state_machine(
. clk_50M(clk_50M),//50M时钟
. rst_n(rst_n),//复位信号
. charge_end(charge_end),//停止计费,高有效
. charge_begin(charge_begin),//启动信号
. state_in(state_in),//当前状态
. kilometre_en(kilometre_en),//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),//复位低有效 
. state_in(state_in),//当前状态
. running_led(running_led),//指示灯
. kilometre_en(kilometre_en)//1公里产生一次
);

//数码管显示模块
display i_display(
. clk(clk_50M),
. distance_out(distance_out),//距离
. charging_money_out(charging_money_out),//费用
. bit_select(bit_select),//数码管位选
. seg_select(seg_select)//数码管段选	
);
endmodule

代码获取:点击原文【来源:www.hdlcode.com

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

本站代码库拥有大量 Verilog/VHDL的FPGA代码资源:hdlcode.com。代码有详细注释、演示视频、仿真图等资料,适合入门学习

微信公众号