停车场车位计数控制 FPGA 设计 Verilog Quartus

名称:停车场车位计数控制 FPGA 设计 Verilog Quartus

软件:Quartus

语言:Verilog

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

功能介绍

本设计实现一个停车场车位计数控制系统,使用 Verilog 语言完成 FPGA 逻辑设计,工程环境为 Quartus。系统通过入口按键和出口按键模拟车辆进出停车场,经过按键消抖后送入计数模块,实现车辆数量的同步统计。 系统输出包含停车场满位指示、空位指示、蜂鸣器报警以及数码管显示。当剩余车位为 0、停车场达到满位状态时,满位 LED 可用于状态提示,同时蜂鸣器输出报警信号;当停车场无车辆时,空位 LED 可用于提示当前车辆数为 0。车辆数量通过数码管动态扫描方式显示,便于在开发板上直观看到计数变化。 该设计适合作为 FPGA 入门综合实验、数字逻辑课程设计或 Verilog 工程实践案例,覆盖按键输入处理、状态计数、LED/蜂鸣器输出控制、数码管显示以及顶层模块例化等常见 FPGA 设计内容。

运行环境

开发语言:Verilog 开发软件:Quartus 目标平台:Cyclone IV FPGA开发板 顶层模块:park_station_top 工程包含可综合 Verilog 源码、Quartus 工程配置、管脚约束、Testbench、编译结果以及设计说明相关内容。

设计思路

系统采用模块化设计思路,将停车场计数功能拆分为按键消抖、车辆计数控制和数码管显示三个主要部分。入口按键和出口按键作为外部机械输入,先经过消抖模块处理,避免按键抖动导致一次按下被重复计数,从而提升计数结果的稳定性。 车辆计数模块负责核心控制逻辑,在时钟驱动下根据入口信号和出口信号更新当前车辆数量,并结合复位信号完成初始状态恢复。计数结果同时用于驱动满位指示、空位指示和蜂鸣器控制,当车辆数达到系统设定的边界状态时,输出对应的提示信号,避免出现超范围计数带来的显示和状态错误。 显示部分采用数码管动态扫描方式,将车辆数量转换为段选和位选输出。顶层模块负责连接各功能模块,将消抖后的入口/出口信号送入计数模块,再把计数结果送入显示模块,同时把 LED、蜂鸣器和数码管接口统一引出,便于工程综合、管脚分配和上板验证。

模块结构

主要模块包括: park_station_top:顶层模块,完成时钟、复位、入口/出口按键、LED、蜂鸣器和数码管接口连接,并例化各子模块。 key_debounce:按键消抖模块,对入口按键和出口按键分别进行抖动滤除,输出稳定的按键信号。 park_station:停车场计数模块,根据入口、出口按键状态更新车辆总数,并输出满位、空位和蜂鸣器控制信号。 display:数码管显示模块,对车辆数量进行动态扫描显示,输出位选和段选信号。 park_station_top_tb:顶层仿真 Testbench,用于对顶层停车场计数流程进行仿真验证。

开发板验证

本设计支持 Cyclone IV FPGA开发板验证,工程中包含面向开发板的管脚约束/分配文件,并配套 AC101 开发板相关实物和引脚参考图片。入口按键、出口按键、复位按键、LED、蜂鸣器以及数码管接口均通过顶层端口引出,便于在开发板上进行停车场进出计数、满位/空位状态提示和数码管显示效果验证。

停车场车位计数控制 FPGA 设计 Verilog Quartus 开发板验证图片 【引脚信息】AC101-EDA开发板背面高清图.bmp

停车场车位计数控制 FPGA 设计 Verilog Quartus 开发板验证图片 AC101开发板.jpg

演示视频

包含演示视频,可用于查看停车场计数控制在开发板上的运行效果,包括按键模拟车辆进出、数码管车辆数量变化、LED 状态提示和蜂鸣器报警等现象。

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

包含设计文档相关图片内容,覆盖工程文件、程序文件、程序编译、RTL 图、管脚分配、仿真图、Testbench、顶层仿真、按键消抖模块、停车场计数模块和显示模块等说明。仿真内容可用于理解顶层信号连接、按键输入处理、车辆计数变化以及显示输出逻辑。

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image1.png

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image10.png

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image11.png

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image2.png

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image3.png

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image4.png

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image5.png

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image6.png

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image7.png

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image8.png

停车场车位计数控制 FPGA 设计 Verilog Quartus 设计文档图片 image9.png

部分代码

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

module park_station_top(
    input clk,//输入时钟
	 input rst_n,//低电平复位--key0
    input a_key,//入口--key1
    input b_key,//出口--key2
    
    output full_led,//停车场满(高电平亮)led0
    output empty_led,//停车场空(高电平亮)led1
    output beep ,//剩余车位为0时(停车场满),蜂鸣器报警。高电平时不响,输出1KHz=响

    output [7:0] weixuan,//数码管位选(高电平选择)
    output [7:0] duanxuan//数码管段选
);

//消抖后的按键信号
wire a;//入口按键(消抖后)
wire b;//出口按键(消抖后)
//车辆计数输出
wire [7:0] cnt_car_num;//车辆总数

//入口按键消抖
key_debounce u_key_a(
    .clk(clk),
    .button_in(a_key),
    .button_jitter(a)
);

//出口按键消抖
key_debounce u_key_b(
    .clk(clk),
    .button_in(b_key),
    .button_jitter(b)
);

//车辆计数模块(同步低电平复位)
park_station u_counter(
    .clk(clk),
    .rst_n(rst_n),
    .a(a),
    .b(b),
    .cnt_car_num(cnt_car_num),
    .full_led(full_led),
    .empty_led(empty_led),
    .beep(beep)
);

//数码管显示模块(动态扫描显示车辆数)
display u_display(
    .clk(clk),
    .cnt_car_num(cnt_car_num),
    .weixuan(weixuan),
    .duanxuan(duanxuan)
);

endmodule

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 停车场车位计数控制 FPGA 设计 Verilog Quartus

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

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