Edit online

功能描述

19 Nov 2024
Read time: 3 minute(s)

影子寄存器 (Shadow Register)

为了实现一组配置同时生效,DE 的大部分寄存器都是对应两个寄存器。
  • Preload register:软件可以操作的寄存器。
  • Shadow register:软件看不到,硬件操作的寄存器
当软件配置好一组参数到 preload register 后,设置 CONFIG_UPDATE 为 1,即可把所有的 preload register 寄存器值同时更新到 shadow register。

除了 CRC 校验、CCM 和 Gamma 矫正、QoS、Timing 相关寄存器和 DE 配置更新寄存器之外, 其他的寄存器都有 shadow register。

UI 图层

UI 图层有四个矩形窗口,每个窗口可以单独控制开关,四个窗口可以通过设置各自以 UI 图层左上角为原点的坐标,控制显示在 UI 图层的不同位置。四个窗口设置 Buffer 的颜色格式必须一致。矩形窗口对应的 Buffer 可以是对原始图像裁剪的一块区域,通过软件计算出相应矩形区域的 addr,并且四个矩形窗口不可重叠,需要进行有效性检查。


de_function_ui

1. UI 图层

Video 图层

Video 图层支持 RGB 和 YUV 格式输入。
  • 当输入格式为 YUV420、YUV422 格式时必须开启 scaler。
  • 当输入格式 为 RGB 格式时不支持 scaler。
  • 输入 Buffer 可以用软件裁剪矩形区域。
    • 对于 RGB 格式 addr 水平和垂直方向 都是 1 像素对齐。
    • 对于 YUV420、YUV422 需要保证 Y 和 U、V 的对应关系。
      • YUV420 格式裁剪的水平偏移需 2 像素对齐,垂直偏移也需 2 像素对齐。
      • YUV422 格式裁剪的水平偏移需要 2 像素对齐,垂直方向 1 像素对齐。

Video 图层 CSC0 YUV 转 RGB 的格式转换公式如下:

R=Coef0*Y+Coef1*U+Coef2*V+Coef3
G=Coef4*Y+Coef5*U+Coef6*V+Coef7
B=Coef8*Y+Coef9*U+Coef10*V+Coef11

Scaler0 有两个独立的 channel,两个 channel 独立处理。Y 分量由 channel0 处理,U 和 V 分量由 channel1 处理。YUV420/ YUV422 经过 scaler0 模块后,都统一输出 YUV444,然后再经过 CSC0 转换成 RGB 格式,作为最终的 Video 图层显示。

Blending

UI 图层在 Video 图层顶部,UI 图层和 Video 图层在重叠区域进行 Alpha 叠加和 Color Key 操作,Color Key 操作优先于 Alpha 叠加。在 UI 图层和 Video 图层都没有覆盖到的区域显示背景色。

UI Alpha 有三种模式:

  1. Pixels Alpha 模式:ui_alpha = pixel_alpha

    当 pixel alpha 不存在时,ui_alpha = 255。

  2. 全局 Alpha 模式:ui_alpha = G_ALPHA

    G_ALPHA 为设置的全局 alpha 值,取值范围为 0~255。

  3. 混合 Alpha 模式:ui_alpha = pixels alpha * G_ALPHA/255

UI 图层和 Video 图层透明度混合计算:

r_out=(r_ui*alpha_ui+r_video*(255-alpha_ui))/255
g_out=(g_ui*alpha_ui+g_video*(255-alpha_ui))/255
b_out=(b_ui*alpha_ui+b_video*(255-alpha_ui))/255

de_function_blend

色彩矩阵(CCM)

色彩矩阵 (Color Correction Matrix,CCM) 由一个 3x3 的增益矩阵及 3x1 的偏移矩阵组成。CCM 矩阵如下公式所示。



2. CCM 公式


3. CCM 输出范围限制
  • 其中 Nbit 是 R,G,B 输入输出,位宽为 8

  • Cij:12 bits 有符号数,其中 8 bits 小数

  • Offset:9 bits 有符号整数

Gamma 矫正

Gamma 矫正 R、G、 B 三个通道分别独立进行矫正,通过查表的方式进行矫正,输入数据的位宽为 8 bits,LUT 的长度为为 64,硬件通过线性插值得到两个节点之间的输入值对应的 gamma 矫正结果

限制条件

  • 支持屏幕最小 size 为 64x64

  • 模块时钟最高可到 150 MHz

  • Pixel clk 要小于 DE 模块时钟

  • 当开启 Dither 功能时,屏幕宽度最大到 1366,单位为 pixel

  • UI 图层不支持 scaler,仅 Video 图层 YUV 格式支持 scaler

  • UI 图层矩形窗支持的最小 size:2x2,单位为 pixel

  • Video 图层 YUV 格式支持的最小输入/输出 size:8x8,单位为 pixel

  • Video 图层 YUV 格式支持的最大输入宽度:1280,单位为 pixel

  • Video 图层 RGB 格式支持的最小 size:2x2,单位为 pixel

  • UI 图层和 Video 图层的所有格式的 stride 都要求 8 bytes 对齐