图像增强 VGA HDMI 显示控制 Verilog Quartus

名称:图像增强 VGA HDMI 显示控制 Verilog Quartus

软件:Quartus

语言:Verilog

开发板/平台:DE10-Nano

功能介绍

本工程实现 FPGA 图像增强与 VGA/HDMI 显示控制,使用 Verilog 语言开发,开发环境为 Quartus。工程面向视频显示实验和图像处理入门应用,可完成基础视频时序产生、RGB 输出控制、图像处理模块调用以及 HDMI 显示链路配置。 设计中包含图像亮度处理、对比度处理、灰度处理和数据选择等功能模块,可用于观察不同图像处理逻辑对输出画面的影响。显示部分采用 640x480 有效显示区域时序,生成 hsync、vsync、dataEnable 和 RGBchannel 等关键信号,便于理解 FPGA 视频扫描、消隐区控制和像素有效区输出的关系。 工程还提供 DE10-Nano 相关 Quartus 工程、管脚约束、编译输出文件和演示资料,适合用于课程设计、FPGA 图像处理实验、VGA/HDMI 显示接口学习以及二次开发参考。

运行环境

开发语言:Verilog 开发软件:Quartus 适配开发板:DE10-Nano 工程类型:FPGA 图像增强、VGA/HDMI 显示控制工程 主要工程文件:vgaHdmi.qpf、vgaHdmi.qsf、vgaHdmi.sdc 主要源码路径:quartus/src/TopModule.v、quartus/src/vgaHdmi.v、quartus/src/i2c、quartus/src/pll

设计思路

设计以 FPGA 视频输出链路为核心,先由时钟与复位信号驱动 VGA/HDMI 显示时序,再通过水平计数、垂直计数产生行同步 hsync、场同步 vsync 和 dataEnable 有效显示区域信号。vgaHdmi 模块按照 640x480 显示区域组织像素扫描,并在消隐区、同步脉冲区和回扫区之间切换输出状态,从而形成标准的视频扫描节奏。 图像处理部分围绕亮度、对比度、灰度和数据选择等模块展开,适合学习 FPGA 中像素流处理的基本结构。整体思路是将图像数据或测试图案按像素节拍送入处理链路,再根据不同处理模块输出对应的 RGB 数据,最后通过 VGA/HDMI 控制模块完成显示输出。 HDMI 相关部分包含编码、并串转换和输出控制逻辑,I2C 配置模块用于 HDMI 芯片初始化配置。PLL 模块提供显示链路所需时钟,顶层模块负责把时钟、复位、按键/拨码开关、视频同步信号和 RGB 通道连接起来,形成可综合、可下载运行的完整 Quartus 工程。

模块结构

主要模块包括: TopModule:工程顶层模块,完成时钟、复位、视频输出、I2C 配置和外设信号连接。 vgaHdmi:VGA/HDMI 视频时序与 RGB 测试输出模块,产生 hsync、vsync、dataEnable、vgaClock 和 RGBchannel。 I2C_Controller、I2C_WRITE_WDATA、I2C_HDMI_Config:HDMI 相关 I2C 配置模块,用于完成 HDMI 芯片初始化写入控制。 pll_25、pll_25_0002:PLL 时钟模块,为显示链路提供所需像素时钟。 image_brightness、image_contrast、image_gray、image_pro、data_choose:图像增强与数据选择模块,用于亮度、对比度、灰度及图像处理结果切换。 vga_ctrl、vga_pic、vga_disp、tb_vga_pic:VGA 显示控制、图像显示和测试相关模块。 hdmi_ctrl、encode、par_to_ser、ddio_out:HDMI 编码、控制、并串转换和输出相关模块。

开发板验证

工程支持 DE10-Nano 开发板验证,已配置 Quartus 管脚约束与时钟约束,包含 vgaHdmi.qsf、vgaHdmi.sdc 以及 VGA/HDMI 相关引脚分配内容,可用于在 DE10-Nano 平台上进行编译、下载和显示测试。 验证内容围绕 FPGA 输出视频时序与 HDMI/VGA 显示链路展开,开关输入用于控制 RGB 三个颜色通道,便于在开发板上快速观察红、绿、蓝通道输出是否正常。工程中同时包含开发板实物运行图片,可作为下载前确认板级适配情况的参考。

图像增强 VGA HDMI 显示控制 Verilog Quartus 开发板验证图片 .png

图像增强 VGA HDMI 显示控制 Verilog Quartus 开发板验证图片 .png

图像增强 VGA HDMI 显示控制 Verilog Quartus 开发板验证图片 .png

图像增强 VGA HDMI 显示控制 Verilog Quartus 开发板验证图片 .png

图像增强 VGA HDMI 显示控制 Verilog Quartus 开发板验证图片 image1.png

图像增强 VGA HDMI 显示控制 Verilog Quartus 开发板验证图片 image2.png

图像增强 VGA HDMI 显示控制 Verilog Quartus 开发板验证图片 image3.png

图像增强 VGA HDMI 显示控制 Verilog Quartus 开发板验证图片 image4.png

图像增强 VGA HDMI 显示控制 Verilog Quartus 开发板验证图片 image5.png

演示视频

提供工程演示视频,可查看 DE10-Nano 平台上视频输出和颜色通道显示效果,适合下载前了解实际运行状态。

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

设计文档内容包含工程文件、程序文件、程序编译、RTL 图和管脚分配说明,可辅助了解工程结构、编译流程与硬件引脚连接。工程中还包含 vgaHdmi_TB.v、仿真脚本和波形配置文件,可用于对 vgaHdmi 显示时序模块进行仿真参考。

部分代码

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

module vgaHdmi(
  // **input**
  input clock, clock50, reset,
  input switchR, switchG, switchB,

  // **output**
  output reg hsync, vsync,
  output reg dataEnable,
  output reg vgaClock,
  output [23:0] RGBchannel
);

reg [9:0]pixelH, pixelV; // estado interno de pixeles del modulo

initial begin
  hsync      = 1;
  vsync      = 1;
  pixelH     = 0;
  pixelV     = 0;
  dataEnable = 0;
  vgaClock   = 0;
end

// Manejo de Pixeles y Sincronizacion

always @(posedge clock or posedge reset) begin
  if(reset) begin
    hsync  <= 1;
    vsync  <= 1;
    pixelH <= 0;
    pixelV <= 0;
  end
  else begin
    // Display Horizontal
    if(pixelH==0 && pixelV!=524) begin
      pixelH<=pixelH+1'b1;
      pixelV<=pixelV+1'b1;
    end
    else if(pixelH==0 && pixelV==524) begin
      pixelH <= pixelH + 1'b1;
      pixelV <= 0; // pixel 525
    end
    else if(pixelH<=640) pixelH <= pixelH + 1'b1;
    // Front Porch
    else if(pixelH<=656) pixelH <= pixelH + 1'b1;
    // Sync Pulse
    else if(pixelH<=752) begin
      pixelH <= pixelH + 1'b1;
      hsync  <= 0;
    end
    // Back Porch
    else if(pixelH<799) begin
      pixelH <= pixelH+1'b1;
      hsync  <= 1;
    end
    else pixelH<=0; // pixel 800

    // Manejo Senal Vertical
    // Sync Pulse
    if(pixelV == 491 || pixelV == 492)
      vsync <= 0;
    else
      vsync <= 1;
  end
end

// dataEnable signal
always @(posedge clock or posedge reset) begin
  if(reset) dataEnable<= 0;

  else begin
    if(pixelH >= 0 && pixelH <640 && pixelV >= 0 && pixelV < 480)
      dataEnable <= 1;
    else
      dataEnable <= 0;
  end
end

// VGA pixeClock signal
// Los clocks no deben manejar salidas directas, se debe usar un truco
initial vgaClock = 0;

always @(posedge clock50 or posedge reset) begin
  if(reset) vgaClock <= 0;
  else      vgaClock <= ~vgaClock;
end

// **************************************************************
// Screen colors using de10nano switches for test

assign RGBchannel[23:16] = (switchR)? 8'd255 : 8'd0;
assign RGBchannel [15:8] = (switchG)? 8'd255 : 8'd0;
assign RGBchannel  [7:0] = (switchB)? 8'd255 : 8'd0;

endmodule

代码文件(付费下载)

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

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

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