汽车转向灯与灯光控制 FPGA 设计 Verilog Quartus

名称:汽车转向灯与灯光控制 FPGA 设计 Verilog Quartus

软件:Quartus

语言:Verilog

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

功能介绍

本设计使用 Verilog 实现汽车转向灯及相关灯光控制,在 Quartus 工程中完成分频、状态控制和数码管显示的模块连接。系统设置左转、右转、紧急、前灯和刹车五路按键输入,输出左右转向灯信号、两位前灯信号、两位后灯信号以及蜂鸣器控制信号,适合用于汽车灯光控制类 FPGA 课程设计与实验演示。

除灯光输出外,系统还将控制模块的状态送入数码管显示模块,通过八位位选和七位段选接口完成扫描显示。灯光节拍与显示扫描节拍分别由分频模块产生,便于围绕按键控制、状态机、计数分频和动态扫描开展学习与调试。

工程配有顶层及各功能模块的波形文件、设计说明图片和开发板运行演示,可用于对照理解模块接口、检查控制时序,并结合上板效果学习从逻辑设计到硬件验证的过程。

运行环境

开发语言为 Verilog,工程使用 Quartus,目标硬件为 Cyclone IV FPGA开发板。工程采用 top 作为顶层模块,具有 Quartus 工程配置、管脚分配、原理图设计文件及编译输出,可用于查看模块连接和开展硬件调试。

仿真环境涉及 ModelSim,配有仿真运行脚本及 Quartus 波形文件。顶层默认分频参数为 BLINK_DIV = 50_000_000、SCAN_DIV = 50_000;运行前应根据实际输入时钟核对分频设置,并确认按键、灯光、蜂鸣器和数码管的硬件连接。

设计思路

设计将时间节拍、灯光控制和状态显示分开实现。顶层统一接入系统时钟,由 clock_divider 产生 blink_tick 与 scan_tick 两路节拍信号,分别供灯光控制和数码管扫描使用。BLINK_DIV 与 SCAN_DIV 作为顶层参数传入分频模块,便于根据输入时钟及观察需求调整节拍;具体闪烁和扫描周期需要结合分频实现与实际时钟计算。

turn_controller 集中接收左转、右转、紧急、前灯及刹车按键,通过状态机组织灯光与蜂鸣器控制,并输出两位 state 状态信号。显示模块直接使用这一状态信号,使控制逻辑与显示逻辑通过明确的接口衔接,便于分别检查状态变化和显示响应。

调试可按分频、控制、显示、顶层联动的顺序进行:先检查节拍产生过程,再观察不同按键条件下的状态与输出,随后检查数码管位选和段选,最后验证完整系统的连接。仿真时可适当缩小分频参数以缩短观察时间,上板时则应按实际时钟与显示需求设置参数。

模块结构

系统由 top、clock_divider、turn_controller 和 sevenseg_display 四个模块组成。

  • top:顶层连接模块,接入系统时钟与五路按键,导出灯光、蜂鸣器和数码管接口,并传递分频参数。
  • clock_divider:分频模块,输出 blink_tick 和 scan_tick,为灯光控制及显示扫描提供节拍。
  • turn_controller:控制模块,接收按键和闪烁节拍,完成状态机及灯光、蜂鸣器控制,输出两位 state 状态信号。
  • sevenseg_display:显示模块,接收状态与扫描节拍,输出 bit_sel[7:0] 位选和 seg_sel[6:0] 段选信号。

模块连接关系清晰:分频模块分别向控制模块和显示模块提供节拍,控制模块再向显示模块传递状态,顶层负责汇总外部接口。

开发板验证

设计已在 Cyclone IV FPGA开发板上完成上板验证,配有开发板实物图片、管脚分配配置和上板演示视频。验证时可结合按键输入,观察左右转向灯、前后灯、蜂鸣器及数码管的响应,并对照控制状态检查各输出之间的配合。

移植到其他开发板时,需要根据实际硬件重新核对时钟输入、按键连接、LED及数码管管脚,同时确认外设的有效电平和数码管段线、位选接线。

汽车转向灯与灯光控制 FPGA 设计 Verilog Quartus 开发板验证图片 开发板 (1).jpg

汽车转向灯与灯光控制 FPGA 设计 Verilog Quartus 开发板验证图片 开发板 (2).jpg

演示视频

演示视频与成功上板视频展示汽车灯光控制设计的运行效果,可结合开发板上的按键操作与输出变化,了解灯光控制及状态显示的实际表现。

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

设计说明图片涵盖工程文件、程序文件、程序编译、RTL结构、管脚分配及仿真图,便于对照查看实现结构与工程配置。

仿真内容覆盖顶层、分频模块、控制模块和显示模块。可结合对应波形文件检查分频节拍、按键与状态之间的关系,以及数码管扫描接口的变化,再通过顶层仿真观察模块联动。

汽车转向灯与灯光控制 FPGA 设计 Verilog Quartus 设计文档图片 image1.png

汽车转向灯与灯光控制 FPGA 设计 Verilog Quartus 设计文档图片 image10.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

部分代码

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

module top #(
    parameter BLINK_DIV = 50_000_000,
    parameter SCAN_DIV  = 50_000
) (
    input  wire        clk,
    input  wire        left_key,
    input  wire        right_key,
    input  wire        jingji_key,
    input  wire        front_key,
    input  wire        brake_key,
    output wire        LD,
    output wire        RD,
    output wire [1:0]  FD,
    output wire [1:0]  BD,
    output wire        speaker,
    output wire [7:0]  bit_sel,
    output wire [6:0]  seg_sel
);

// 子模块内部连线
wire blink_tick;
wire scan_tick;
wire [1:0] state;

// 分频模块:产生闪烁与扫描脉冲
clock_divider #(
    .BLINK_DIV(BLINK_DIV),
    .SCAN_DIV(SCAN_DIV)
) u_div (
    .clk(clk),
    .blink_tick(blink_tick),
    .scan_tick(scan_tick)
);

// 控制模块:状态机与灯/蜂鸣器控制
turn_controller u_ctrl (
    .clk(clk),
    .blink_tick(blink_tick),
    .left_key(left_key),
    .right_key(right_key),
    .jingji_key(jingji_key),
    .front_key(front_key),
    .brake_key(brake_key),
    .LD(LD),
    .RD(RD),
    .FD(FD),
    .BD(BD),
    .speaker(speaker),
    .state(state)
);

// 数码管显示模块
sevenseg_display u_disp (
    .clk(clk),
    .scan_tick(scan_tick),
    .state(state),
    .bit_sel(bit_sel),
    .seg_sel(seg_sel)
);

endmodule

代码文件(付费下载)

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

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

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