该模块位于Demonstrations\FPGA\HDMI_TX\vpg_source路径下。

模块概述

这是一个VGA显示控制器模块,用于生成符合DMT(Display Monitor Timing 显示器时序)时序的视频信号。

该模块的RTL Viewer视图如下:

image

 该模块根据输入的时序参数生成VGA的行同步信号(vga_hs)、场同步信号(vga_vs)、数据有效信号(vga_de)以及RGB颜色数据(vga_r, vga_g, vga_b)。本案例利用该模块生成测试图案(颜色渐变和边框)用于HDMI显示验证。

输入信号:

  • clk:像素时钟输入。

  • reset_n:低电平有效的异步复位信号。

  • h_total:一行像素的总数(包括消隐区)。

  • h_sync:行同步脉冲的宽度(以像素数为单位)。

  • h_start:行有效数据开始的像素位置。

  • h_end:行有效数据结束的像素位置。

  • v_total:一帧的总行数(包括消隐区)。

  • v_sync:场同步脉冲的宽度(以行为单位)。

  • v_start:场有效数据开始的行位置。

  • v_end:场有效数据结束的行位置。

  • v_active_14v_active_24v_active_34:将垂直有效区域分为4等分的行位置,用于颜色模式切换。

输出信号:

  • vga_hs:行同步信号(低电平有效)。

  • vga_vs:场同步信号(低电平有效)。

  • vga_de:数据有效信号(高电平表示有效像素区域)。

  • vga_rvga_gvga_b:8位RGB颜色输出。

关键内部信号

  • h_count:水平像素计数器。

  • v_count:垂直行计数器。

  • pixel_x:当前行内的像素索引(用于颜色生成)。

  • h_actv_act:行和场的有效区域标志。

  • color_mode:颜色模式控制信号(4位,分别代表4种颜色区域)。

  • boarder:边框标志(用于绘制白色边框)。

逻辑代码分析

1. 水平控制逻辑(Horizontal Control)

  • 使用h_count计数像素位置,在达到h_total时归零。

  • 生成行同步信号vga_hs:当h_count >= h_sync且未到行末时,同步信号为高(同步脉冲结束),否则为低(同步脉冲期间)。

  • 控制行有效区域h_act:在h_starth_end之间置位。

  • pixel_x在有效区域内递增,用于生成颜色渐变。

image

 

 

 

image

 

2. 垂直控制逻辑(Vertical Control)

  • 在每行结束时(h_max为真)更新v_count

  • 生成场同步信号vga_vs:当v_count >= v_sync且未到帧末时,同步信号为高(同步脉冲结束),否则为低。

  • 控制场有效区域v_act:在v_startv_end之间置位。

  • 根据垂直位置设置color_mode

    • v_active_14v_active_24v_active_34将有效区域分为4部分,分别对应不同的颜色模式。

image

 

3. 图像生成与数据有效(Pattern Generator and DE)

  • vga_de(数据有效)由pre_vga_de延迟一拍产生,pre_vga_deh_actv_act的逻辑与。

  • 绘制白色边框:当进入或退出有效区域时(行或场的边界),boarder置位,输出白色(RGB=0xFF)。

  • 在非边框区域,根据color_mode输出渐变颜色:

    • 0001:红色渐变(红色分量随pixel_x递增)。

    • 0010:绿色渐变。

    • 0100:蓝色渐变。

    • 1000:白色渐变(三通道同时递增)。

    • 默认:黑色(RGB=0)。

image

 

 

image

 

image

 de信号比h_act信号慢2拍:

image

分辨率640x480@60的场同步信号脉冲2, 场后肩33:

image

 

IMG_20250901_155301

 

IMG_20250901_155325

 

IMG_20250901_155335

 

 

IMG_20250901_155345

 

 

 

IMG_20250901_155353