9.1.2. 功能描述

9.1.2.1. 影子寄存器(shadow register)

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

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

9.1.2.2. UI图层

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

../../../_images/de_function_ui.png

图 9.1 UI图层

9.1.2.3. 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图层显示。

9.1.2.4. Blending

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

UI alpha有三种模式:pixel alpha模式、全局alpha模式、混合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
../../../_images/de_function_blend.png

图 9.2 Blending

9.1.2.5. 色彩矩阵(CCM)

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

../../../_images/de_ccm0.png

图 9.3 CCM公式

../../../_images/de_ccm1.png

图 9.4 CCM输出范围限制

  • 其中Nbit是R,G,B输入输出位宽:8

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

  • Offset: 9bits有符号整数

9.1.2.6. Gamma矫正

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

9.1.2.7. 限制条件

  • 支持屏幕最小size为64x64

  • 模块时钟最高可到150MHz

  • 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都要求8bytes对齐