G2D
1. 简介
图形 2D 加速器 (G2D) 是一种专用于图像操作的专用 DMA。它可以执行以下操作:
用特定颜色填充目标图像的一部分或全部。
将源图像的一部分或全部复制到目标图像的一部分或全部中。
将源图像的一部分或全部复制到目标图像的一部分或全部中,并进行像素格式转换。
将一个部分和/或两个具有不同像素格式的完整源图像进行混合,并将结果复制到具有不同颜色格式的目标图像的一部分或全部中。
支持所有经典的彩色编码方案,从每像素 4 位到 32 位,支持索引或直接彩色模式。
G2D 拥有自己专用的颜色查找表(CLUT)内存。
2. 主要特性
G2D 的主要特性包括:
一个用于寄存器配置的内部从属总线。
一个用于内存访问的内部主控总线(总线地址宽度可为 32位~64位,数据宽度为 32位)。
从一个区域复制到另一个区域。
在源图像和目标图像之间进行带像素格式转换的复制。
从两个具有独立颜色格式的源进行复制并混合。
用固定颜色填充区域。
用户可编程的工作区域大小。
用户可编程的源区域和目标区域偏移量。
用户可在整个空间内编程源地址和目标地址。
最多支持 2 个源进行混合操作。
可修改 Alpha 值(源值、固定值或调制值)。
用户可编程的源和目标颜色格式。
支持最多 11 种颜色格式,从每像素 4 位到 32 位,支持间接(L8、AL44、AL88、L4)或直接(ARGB8888、RGB888、RGB565、ARGB1555、ARGB4444、A8、A4)颜色编码。
2 个内部内存用于间接彩色模式下的 CLUT 存储。
通过 CPU 自动 CLUT 加载或 CLUT 编程。
用户可编程的 CLUT 大小(最大尺寸为 32x256 位)。
4 种操作模式:寄存器到内存、内存到内存、带像素格式转换的内存到内存、以及带像素格式转换和混合的内存到内存。
中止和挂起 G2D 操作。
在用户可编程的目标行上产生水印中断。
在总线错误或访问冲突时产生中断。
在过程完成时产生中断。
用户可编程的图像大小。
支持 3 种镜像模式(X、Y、XY)。
支持裁剪窗口。
支持下采样(采样率可为 1~8)。
支持 RGB 像素顺序和 BGR 像素顺序。
3. 功能描述
G2D 控制器作为主设备执行直接内存传输。
G2D 的框图如图 3.1 G2D 框图所示:
图 3.1: G2D 框图
G2D 可在以下模式下运行:
寄存器到内存
内存到内存
带像素格式转换的内存到内存
带像素格式转换和混合的内存到内存
上述类型的传输以及采样、窗口裁剪和镜像是独立的,可以单独配置。
总线从端口用于编程 G2D 控制器。
G2D 提供 2 个查找表(LUT)来存储像素,供间接像素格式使用。如果像素格式是间接的,则在启用 G2D 传输之前,必须将像素数据写入 LUT。LUT 中的像素数据可以通过两种方式更新:
自动加载。配置 G2D_FPCTL/G2D_BPCTL 寄存器的 FCNP/BCNP 字段以设置要加载的像素数量。要加载的像素数等于 FCNP+1 或 BCNP+1。然后设置 G2D_FPCTL/G2D_BPCTL 寄存器的 FLLEN/BLLEN 位开始加载。
软件编程。可以通过从机总线端口直接将像素写入相应的 LUT 存储器地址。
LUT 支持两种像素格式,ARGB8888 和 RGB888,由 G2D_FPCTL/G2D_BPCTL 寄存器中的 FLPF 或 BLPF 字段决定。
如果 G2D 传输模式需要执行像素格式转换,前景层或背景层的像素数据需要从原始格式扩展到 ARGB8888 格式。G2D_FPCTL/G2D_BPCTL 寄存器的 FPF 和 BPF 字段定义了前景层和背景层的像素格式。一个像素包含以下 5 个通道:
Alpha 通道 A:透明度,0x00:透明,0xFF:不透明。
红色通道 R:红色值,0x00:无红色,0xFF:全红。
绿色通道 G:绿色值,0x00:无绿色,0xFF:全绿。
蓝色通道 B:蓝色值,0x00:无蓝色,0xFF:全蓝。
亮度通道:作为 LUT 的索引。
前景和背景的像素格式如下表:
BPF[3:0]/FPF[3:0] |
像素格式 |
|---|---|
4’b0000 |
ARGB8888 |
4’b0001 |
RGB888 |
4’b0010 |
RGB565 |
4’b0011 |
ARGB1555 |
4’b0100 |
ARGB4444 |
4’b0101 |
L8 |
4’b0110 |
AL44 |
4’b0111 |
AL88 |
4’b1000 |
L4 |
4’b1001 |
A8 |
4’b1010 |
A4 |
各像素格式的存储地址如下表:
像素格式 |
字节3 bit31~24 |
字节2 bit23~16 |
字节1 bit15~8 |
字节0 bit7~0 |
|---|---|---|---|---|
ARGB8888 |
|
|
|
|
RGB888 |
|
|
|
|
RGB565 |
|
|
|
|
ARGB1555 |
|
|
|
|
ARGB4444 |
|
|
|
|
L8 |
|
|
|
|
AL44 |
|
|
|
|
AL88 |
|
|
|
|
L4 |
|
|
|
|
A8 |
|
|
|
|
A4 |
|
|
|
|
像素格式扩展
如果格式是 RGB888,则 alpha 通道将设置为 0xFF。
A |
R |
G |
B |
|
|---|---|---|---|---|
RGB888 |
R[7] R[6] R[5] R[4] R[3] R[2] R[1] R[0] |
G[7] G[6] G[5] G[4] G[3] G[2] G[1] G[0] |
B[7] B[6] B[5] B[4] B[3] B[2] B[1] B[0] |
|
ARGB8888 |
1 1 1 1 1 1 1 1 |
R[7] R[6] R[5] R[4] R[3] R[2] R[1] R[0] |
G[7] G[6] G[5] G[4] G[3] G[2] G[1] G[0] |
B[7] B[6] B[5] B[4] B[3] B[2] B[1] B[0] |
如果格式是 RGB565,则 alpha 通道将设置为 0xFF。
A |
R |
G |
B |
|
|---|---|---|---|---|
RGB565 |
R[4] R[3] R[2] R[1] R[0] |
G[5] G[4] G[3] G[2] G[1] G[0] |
B[4] B[3] B[2] B[1] B[0] |
|
ARGB8888 |
1 1 1 1 1 1 1 1 |
R[4] R[3] R[2] R[1] R[0] R[4] R[3] R[2] |
G[5] G[4] G[3] G[2] G[1] G[0] G[5] G[4] |
B[4] B[3] B[2] B[1] B[0] B[4] B[3] B[2] |
A |
R |
G |
B |
|
|---|---|---|---|---|
ARGB1555 |
A[0] |
R[4] R[3] R[2] R[1] R[0] |
G[4] G[3] G[2] G[1] G[0] |
B[4] B[3] B[2] B[1] B[0] |
ARGB8888 |
A[0] A[0] A[0] A[0] A[0] A[0] A[0] A[0] |
R[4] R[3] R[2] R[1] R[0] R[4] R[3] R[2] |
G[4] G[3] G[2] G[1] G[0] G[4] G[3] G[2] |
B[4] B[3] B[2] B[1] B[0] B[4] B[3] B[2] |
A |
R |
G |
B |
|
|---|---|---|---|---|
ARGB1555 |
A[3] A[2] A[1] A[0] |
R[3] R[2] R[1] R[0] |
G[3] G[2] G[1] G[0] |
B[3] B[2] B[1] B[0] |
ARGB8888 |
A[3] A[2] A[1] A[0] A[3] A[2] A[1] A[0] |
R[3] R[2] R[1] R[0] R[3] R[2] R[1] R[0] |
G[3] G[2] G[1] G[0] G[3] G[2] G[1] G[0] |
B[3] B[2] B[1] B[0] B[3] B[2] B[1] B[0] |
如果像素格式是 L8 或 L4,则 8 位亮度通道值(当像素格式为 L4 时,高位填 0)用作索引值,从 LUT 获取像素数据。如果像素格式是 AL44,则 8 位亮度通道(高位填 0)用作索引值,从 LUT 获取红、绿和蓝通道值。Alpha 通道值将被扩展为 8 位,扩展后的高位将是通道值,并且通道值的高位将填充到低位。如果像素格式是 A8,则红、绿和蓝通道值分别等于 G2D_FPV 寄存器的 FPDRV、FPDGV 和 FPDBV 位或 G2D_BPV 寄存器的 BPDRV、BPDGV 和 BPDBV 位。
G2D 支持通过三种算法调制 alpha 通道值,由 G2D_FPCTL/G2D_BPCTL 寄存器的 FAVCA/BAVCA 位决定。
FAVCA/BAVCA |
alpha 算法 |
|---|---|
2’b00/2’b11 |
无影响 |
2’b01 |
等于 G2D_FPCTL/G2D_BPCTL 寄存器的 FPDAV/BPDAV 位的值 |
2’b10 |
等于 FPDAV/BPDAV 位的值乘以 alpha 值再除以 255 |
Alpha 通道值的混合基于以下公式(Af 是前景层 alpha 值,Ab 是背景层 alpha 值)
Amix = (Af * Ab)/255;
Ablend = Af + Ab - Amix;
红、绿和蓝通道值的混合基于以下公式(Rf, Gf, Bf 是前景层的红、绿和蓝值;Rb, Gb, Bb 是背景层的红、绿和蓝值):
Rblend = (RfAf + RbAb - Rb*Amix)/Ablend;
Gblend = (GfAf + GbAb - Gb*Amix)/Ablend;
Bblend = (BfAf + BbAb - Bb*Amix)/Ablend;
注意:
除法结果向下取整;
如果 Ablend 等于 0,则 Rblend、Gblend 和 Bblend 等于 0xFF。
像素压缩
DPF |
像素格式 |
|---|---|
3’b000 |
ARGB8888 |
3’b001 |
RGB888 |
3’b010 |
RGB565 |
3’b011 |
ARGB1555 |
3’b0100 |
ARGB4444 |
A |
R |
G |
B |
|
|---|---|---|---|---|
ARGB8888 |
A[7] A[6] A[5] A[4] A[3] A[2] A[1] A[0] |
R[7] R[6] R[5] R[4] R[3] R[2] R[1] R[0] |
G[7] G[6] G[5] G[4] G[3] G[2] G[1] G[0] |
B[7] B[6] B[5] B[4] B[3] B[2] B[1] B[0] |
ARGB8888 -> RGB888 |
R[7] R[6] R[5] R[4] R[3] R[2] R[1] R[0] |
G[7] G[6] G[5] G[4] G[3] G[2] G[1] G[0] |
B[7] B[6] B[5] B[4] B[3] B[2] B[1] B[0] |
|
ARGB8888 -> RGB565 |
R[7] R[6] R[5] R[4] R[3] |
G[7] G[6] G[5] G[4] G[3] G[2] |
B[7] B[6] B[5] B[4] B[3] |
|
ARGB8888 -> ARGB1555 |
A[7] |
R[7] R[6] R[5] R[4] R[3] |
G[7] G[6] G[5] G[4] G[3] |
B[7] B[6] B[5] B[4] B[3] |
ARGB8888 -> ARGB4444 |
A[7] A[6] A[5] A[4] |
R[7] R[6] R[5] R[4] |
G[7] G[6] G[5] G[4] |
B[7] B[6] B[5] B[4] |
裁剪窗口
裁剪窗口的图片如图 3.2 G2D 裁剪窗口示意图所示
图 3.2: G2D 裁剪窗口示意图
窗口的宽度为 x0-x1+1。
窗口的高度为 y0-y1+1。
G2D 目前支持 1-8 倍采样。
采样根据以下公式执行:
Cx = Sx/2 + Sx*x;
Cy = Sy/2 + Sy*y;
Cx 是 x 轴方向采样点的坐标。Sx 是 x 轴方向的采样率。x 是图片行中的像素坐标,范围为 [0, 图片宽度)。
Cy 是 y 轴方向采样点的坐标。Sy 是 y 轴方向的采样率。y 是图片中的行号,范围为 [0, 图片高度)。
G2D 配置
在启动任何传输之前,软件需要读取 TEN、FLLEN 和 BLLEN 位,以检查是否有 IPA 传输或 LUT 加载正在进行。如果有任何一项正在进行,则可以设置 TST 位来停止它,或等待它完成(G2D_INTF 寄存器中的 FTFIF 或 LLFIF 位被置位)。当 TEN、FLLEN 和 BLLEN 的值都为 0 时,可以启动新的传输。
加载前景层 LUT
启动新的前景层 LUT 加载时,建议遵循以下步骤:
配置 G2D_FLMADDR 寄存器以设置前景层 LUT 基地址。
配置 G2D_FPCTL 寄存器中的 FLPF 字段以设置像素格式。
配置 G2D_FPCTL 中的 FCNP 字段以设置要加载的像素数量。实际加载的像素数为 fcnp+1。
配置 G2D_CTL 寄存器中的中断使能字段。
配置 G2D_FPCTL 寄存器中的 FLLEN 位为 1 以启动 LUT 加载。
加载背景层 LUT
配置 G2D_BLMADDR 寄存器以设置背景层 LUT 基地址。
配置 G2D_BPCTL 寄存器中的 BLPF 字段以设置像素格式。
配置 G2D_BPCTL 中的 BCNP 字段以设置要加载的像素数量。实际加载的像素数为 bcnp+1。
配置 G2D_CTL 寄存器中的中断使能字段。
配置 G2D_BPCTL 寄存器中的 BLLEN 位为 1 以启动 LUT 加载。
G2D 传输
内存到内存
配置 G2D_FMADDR 和 G2D_DMADDR 寄存器以设置源基地址和目标基地址。
配置 G2D_FPCTL 寄存器的 FAVCA 和 FPF 字段,以设置前景层 alpha 值的计算方法和前景层像素格式。
配置 G2D_FPCTL 和 G2D_FPV 寄存器以设置预定义的像素值,包括 alpha、红、绿和蓝颜色值。
配置 G2D_DPCTL 寄存器的 DPF 字段以设置目标像素格式。
配置 G2D_FLOFF 和 G2D_DLOFF 寄存器的 FLOFF 和 DLOFF 字段以设置前景层和目标层的行偏移。
配置 G2D_LM 寄存器的 LM 字段以设置行水印。
配置 G2D_IMS 寄存器的 WIDTH 和 HEIGHT 字段以设置图像尺寸。
配置 G2D_CTL 中的中断使能字段。
配置 G2D_CTL 寄存器的 TEN 位为 1 以启动传输。
带像素格式转换的内存到内存
配置 G2D_FMADDR 和 G2D_DMADDR 寄存器以设置源基地址和目标基地址。
配置 G2D_FPCTL 寄存器的 FAVCA 和 FPF 字段,以设置前景层 alpha 值的计算方法和前景层像素格式。
配置 G2D_FPCTL 和 G2D_FPV 寄存器以设置预定义的像素值,包括 alpha、红、绿和蓝颜色值。
配置 G2D_DPCTL 寄存器的 DPF 字段以设置目标像素格式。
配置 G2D_FLOFF 和 G2D_DLOFF 寄存器的 FLOFF 和 DLOFF 字段以设置前景层和目标层的行偏移。
配置 G2D_LM 寄存器的 LM 字段以设置行水印。
配置 G2D_IMS 寄存器的 WIDTH 和 HEIGHT 字段以设置图像尺寸。
配置 G2D_CTL 中的中断使能字段。
配置 G2D_CTL 寄存器的 TEN 位为 1 以启动传输。
带像素格式转换和混合的内存到内存
配置 G2D_FMADDR、G2D_BMADDR 和 G2D_DMADDR 寄存器以设置前景层、背景层和目标内存基地址。
配置 G2D_FPCTL 寄存器的 FAVCA 和 FPF 字段,以设置前景层 alpha 值的计算方法和前景层像素格式。
配置 G2D_FPCTL 和 G2D_FPV 寄存器以设置预定义的像素值,包括 alpha、红、绿和蓝颜色值。
配置 G2D_BPCTL 寄存器的 BAVCA 和 BPF 位,以设置背景层 alpha 值的计算方法和背景层像素格式。
配置 G2D_BPCTL 和 G2D_BPV 寄存器以设置预定义的像素值,包括 alpha、红、绿和蓝颜色值。
配置 G2D_DPCTL 寄存器的 DPF 字段以设置目标像素格式。
配置 G2D_FLOFF、G2D_BLOFF 和 G2D_DLOFF 寄存器的 FLOFF、BLOFF 和 DLOFF,设置背景层、前景层和目标层的行偏移。
配置 G2D_LM 寄存器的 LM 字段以设置行水印。
配置 G2D_IMS 寄存器的 WIDTH 和 HEIGHT 字段以设置图像尺寸。
配置 G2D_CTL 中的中断使能字段。
配置 G2D_CTL 寄存器的 TEN 位为 1 以启用 G2D 传输。
寄存器到内存
配置 G2D_DMADDR 寄存器以设置目标内存区域的基地址。
配置 G2D_DPCTL 寄存器的 DPF 以设置目标像素格式。
配置 G2D_DPV 寄存器以设置目标区域中预定义的像素值,包括 alpha、红、绿和蓝颜色值。
配置 G2D_DLOFF 寄存器的 DLOFF 以设置目标的行偏移。
配置 G2D_LM 寄存器的 LM 字段以设置行标志。
配置 G2D_IMS 寄存器的 WIDTH 和 HEIGHT 字段以设置图像尺寸。
配置 G2D_CTL 中的中断使能字段。
配置 G2D_CTL 寄存器的 TEN 位为 1 以启用 G2D 传输。
为确保 G2D 传输的正确性,需要遵循一些规则:
启用前景 LUT 自动加载时:
当 G2D_FPCTL 寄存器的 FLPF 位等于 0 时,G2D_FLMADDR 寄存器的 FLMADDR 位必须为 32 位对齐。
启用背景层 LUT 自动加载时:
当 G2D_BPCTL 寄存器的 BLPF 位等于 0 时,G2D_BLMADDR 寄存器的 BLMADDR 位必须为 32 位对齐。
启用 G2D 传输时:
当 G2D_FPCTL 寄存器的 FPF 字段为 ‘ARGB8888’ 时,G2D_FMADDR 寄存器的 FMADDR 字段必须为 32 位对齐。当 FPF 为 ‘RGB565’、’ARGB1555’、’ARGB4444’ 或 ‘AL88’ 时,必须为 16 位对齐。
当 G2D_FPCTL 寄存器的 FPF 字段为 A4 或 L4 时,G2D_FLOFF 寄存器的 FLOFF 字段必须为偶数。
当 G2D_BPCTL 寄存器的 BPF 字段为 ‘ARGB8888’ 时,G2D_BMADDR 寄存器的 BMADDR 字段必须为 32 位对齐。当 BPF 为 ‘RGB565’、’ARGB1555’、’ARGB4444’ 或 ‘AL88’ 时,必须为 16 位对齐。
当 G2D_BPCTL 寄存器的 BPF 字段为 A4 或 L4 时,G2D_BLOFF 寄存器的 BLOFF 字段必须为偶数。
G2D_FPCTL 寄存器的 FPF 字段必须小于或等于 ‘0b1010’。
G2D_BPCTL 寄存器的 BPF 字段必须小于或等于 ‘0b1010’。
G2D_DPCTL 寄存器的 DPF 字段必须小于或等于 ‘0b100’。
当 G2D_DPCTL 寄存器的 DPF 字段为 ‘ARGB8888’ 时,G2D_DMADDR 寄存器的 DMADDR 字段必须为 32 位对齐。当 DPF 为 ‘RGB565’、’ARGB1555’、’ARGB4444’ 或 ‘AL88’ 时,必须为 16 位对齐。
当 G2D_FPCTL 寄存器的 FPF 字段为 A4 或 L4 时,G2D_DLOFF 寄存器的 DLOFF 字段必须为偶数。
当 G2D_FPCTL 寄存器的 FPF 字段为 A4 或 L4 时,G2D_IMS 寄存器的 WIDTH 字段必须为偶数。
当 G2D_BPCTL 寄存器的 BPF 字段为 A4 或 L4 时,G2D_IMS 寄存器的 WIDTH 字段必须为偶数。
G2D_IMS 寄存器的 WIDTH 字段必须大于 0。
G2D_IMS 寄存器的 HEIGHT 字段必须大于 0。
当 PFCM 字段等于 ‘00’ 时,只考虑规则 1、2、5、9、10、12、13。
当 PFCM 字段等于 ‘01’ 时,只考虑规则 1、2、5、7、8、10、12、13。
当 PFCM 字段等于 ‘10’ 时,考虑所有规则。
当 PFCM 字段等于 ‘11’ 时,只考虑规则 12、13。
当上述任何规则未满足时,将产生配置错误中断,传输或 LUT 加载将自动复位,并且 G2D_INTF 寄存器中的 WCFIF 字段将立即被设置。
4. 中断
G2D 提供六个可屏蔽中断。中断源可以通过 G2D_CTL 寄存器单独启用或禁用。将相应的屏蔽位设置为 1 可启用相应的中断。这六个中断在以下事件上产生:
配置错误中断。
CLUT 传输完成中断。
CLUT 访问错误中断。
传输水印到达中断。
传输完成中断。
传输错误中断。
图 4.1: G2D 中断事件
中断请求如下表:
中断事件 |
事件标志 |
使能控制位 |
|---|---|---|
配置错误 |
WCFIF |
WCFIE |
CLUT 传输完成 |
LLFIF |
LLFIE |
CLUT 访问错误 |
LACIF |
LACIE |
传输水印 |
TLMIF |
TLMIE |
传输完成 |
FTFIF |
FTFIE |
传输错误 |
TAEIF |
TAEIE |
配置错误中断
如果在启用 LUT 加载或 G2D 传输后立即违反任何配置规则,配置错误中断状态位将被设置。LUT 加载或 G2D 传输将自动停止,不进行任何访问。
当配置错误中断状态位被设置且相应的使能位被启用时,将产生 G2D 中断。
LUT 加载完成中断
当最后一个像素数据写入前景或背景 LUT 时,LUT 加载完成中断状态位将立即被设置,加载过程中的停止操作无法设置 LUT 加载完成中断状态位。
当 LUT 加载完成中断状态位被设置且相应的使能位被启用时,将产生 G2D 中断。
LUT 访问冲突中断
通过软件访问前景和背景 LUT 时,必须遵循以下规则:
当前景 LUT 自动加载时,禁止软件访问前景 LUT;
当背景层 LUT 自动加载时,不允许软件访问背景层 LUT;
当配置 G2D 传输模式 PFCM 字段等于 ‘01’/’10’ 时,如果前景层像素格式是间接的,在 G2D 传输进行期间禁止软件访问前景层 LUT;
当配置 G2D 传输模式 PFCM 字段等于 ‘10’ 时,如果背景层像素格式是间接的,在 G2D 传输进行期间禁止软件访问背景层 LUT。
当违反上述任一规则时,LUT 访问冲突中断状态位被设置,并且软件访问无效(写访问不执行,读访问返回无效值)。
当 LUT 访问冲突中断状态位寄存器被设置且相应的使能位被启用时,将产生 G2D 中断。
行水印中断
在标记行的最后一个像素写入目标内存区域后,传输行标记中断状态位立即被设置。如果 G2D_LM 的 LM 字段等于 0,则在 G2D 传输期间不会设置传输行标记中断状态位。
传输完成中断
在最后一个像素写入目标内存区域后,传输完成中断状态位立即被设置。G2D 传输期间的停止操作不会设置传输完成中断状态位。
当传输完成中断状态位被设置且相应的使能位被启用时,将产生 G2D 中断。
传输错误中断
当 G2D 访问超出允许地址的地址时,G2D 将收到错误反馈;LUT 加载或 G2D 传输将立即被禁用,并且不会设置 LUT 加载完成中断状态位或传输完成中断状态位。
5. 寄存器
G2D 中的寄存器及其对应的偏移地址如 表 5.1 G2D 中的寄存器偏移地址所示。
偏移地址 |
寄存器名称 |
功能描述 |
|---|---|---|
0x0 |
G2D_CTL |
G2D 控制寄存器 |
0x4 |
G2D_INTF |
G2D 中断状态寄存器 |
0x8 |
G2D_INTC |
G2D 中断标志清除寄存器 |
0xC |
G2D_FMADDR |
G2D 前景内存地址寄存器 |
0x14 |
G2D_FLOFF |
G2D 前景偏移寄存器 |
0x18 |
G2D_BMADDR |
G2D 背景内存地址寄存器 |
0x20 |
G2D_BLOFF |
G2D 背景偏移寄存器 |
0x24 |
G2D_FPCTL |
G2D 前景像素格式转换控制寄存器 |
0x28 |
G2D_FPV |
G2D 前景颜色寄存器 |
0x2C |
G2D_BPCTL |
G2D 背景像素格式转换控制寄存器 |
0x30 |
G2D_BPV |
G2D 背景颜色寄存器 |
0x34 |
G2D_FLMADDR |
G2D 前景 CLUT 内存地址寄存器 |
0x3C |
G2D_BLMADDR |
G2D 背景 CLUT 内存地址寄存器 |
0x44 |
G2D_DPCTL |
G2D 输出像素格式转换控制寄存器 |
0x48 |
G2D_DPV |
G2D 输出颜色寄存器 |
0x4C |
G2D_DMADDR |
G2D 输出内存地址寄存器 |
0x54 |
G2D_DLOFF |
G2D 输出偏移寄存器 |
0x58 |
G2D_IMS |
G2D 图像尺寸寄存器 |
0x5C |
G2D_LM |
G2D 行水印寄存器 |
0x64 |
G2D_MIRMOD |
G2D 镜像控制寄存器 |
0x68 |
G2D_CWCTL0 |
G2D 裁剪窗口控制寄存器 |
0x6C |
G2D_CWCTL1 |
G2D 裁剪窗口控制寄存器 |
0x70 |
G2D_SAMCTL |
G2D 采样控制寄存器 |
0x74 |
G2D_RGB |
G2D 像素格式顺序 |
0x80 |
G2D_VER |
G2D 版本寄存器 |
控制寄存器(G2D_CTRL)
地址偏移:0x0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
TEN |
0 |
读/写 |
0x0 |
|
THU |
1 |
读/写 |
0x0 |
|
TST |
2 |
读/写 |
0x0 |
|
保留 |
7:3 |
/ |
0x0 |
/ |
TAEIE |
8 |
读/写 |
0x0 |
|
FTFIE |
9 |
读/写 |
0x0 |
|
TLMIE |
10 |
读/写 |
0x0 |
|
LACIE |
11 |
读/写 |
0x0 |
|
LLFIE |
12 |
读/写 |
0x0 |
|
WCFIE |
13 |
读/写 |
0x0 |
|
保留 |
15:14 |
/ |
0x0 |
/ |
PFCM |
17:16 |
读/写 |
0x0 |
|
保留 |
31:18 |
/ |
0x0 |
/ |
中断状态寄存器(G2D_INTF)
地址偏移:0x4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
TAEIF |
0 |
只读 |
0x0 |
传输错误中断标志。当 DMA 传输(数据传输或自动 CLUT 加载)期间发生错误时,此位被设置。 |
FTFIF |
1 |
只读 |
0x0 |
传输完成中断标志。当 G2D 传输操作完成(仅数据传输)时,此位被设置。 |
TLMIF |
2 |
只读 |
0x0 |
传输完成中断标志。当 G2D 传输操作完成(仅数据传输)时,此位被设置。 |
LACIF |
3 |
只读 |
0x0 |
CLUT 访问错误中断标志。当 CPU 在 CLUT 正从系统内存自动复制到内部 G2D 期间访问 CLUT 时,此位被设置。 |
LLFIF |
4 |
只读 |
0x0 |
CLUT 传输完成中断标志。当从系统内存区域复制 CLUT 到内部 G2D 内存完成时,此位被设置。 |
WCFIF |
5 |
只读 |
0x0 |
配置错误中断标志。当配置错误时,此位被设置。 |
保留 |
31:6 |
/ |
0x0 |
/ |
中断标志清除寄存器(G2D_INTC)
地址偏移:0x8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
TAEIFC |
0 |
读/写 |
0x0 |
清除传输错误中断标志。将此位编程为 1 会清除 G2D_INTF 寄存器中的 TAEIF 标志。 |
FTFIFC |
1 |
读/写 |
0x0 |
清除传输完成中断标志。将此位编程为 1 会清除 G2D_INTF 寄存器中的 FTFIF 标志。 |
TLMIFC |
2 |
读/写 |
0x0 |
清除传输水印中断标志。将此位编程为 1 会清除 G2D_INTF 寄存器中的 TLMIF 标志。 |
LACIFC |
3 |
读/写 |
0x0 |
清除 CLUT 访问错误中断标志。将此位编程为 1 会清除 G2D_INTF 寄存器中的 LACIF 标志。 |
LLFIFC |
4 |
读/写 |
0x0 |
清除 CLUT 传输完成中断标志。将此位编程为 1 会清除 G2D_INTF 寄存器中的 LLFIF 标志。 |
WCFIFC |
5 |
读/写 |
0x0 |
清除配置错误中断标志。将此位编程为 1 会清除 G2D_INTF 寄存器中的 WCFIF 标志。 |
保留 |
31:6 |
/ |
0x0 |
/ |
前景内存地址寄存器(G2D_FMADDR)
地址偏移:0xC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
FMADDR |
31:0 |
读/写 |
0x0 |
|
前景偏移寄存器(G2D_FLOFF)
地址偏移:0x14
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
FLOFF |
13:0 |
读/写 |
0x0 |
|
保留 |
31:14 |
/ |
0x0 |
/ |
背景内存地址寄存器(G2D_BMADDR)
地址偏移:0x18
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
BMADDR |
31:0 |
读/写 |
0x0 |
|
背景偏移寄存器(G2D_BLOFF)
地址偏移:0x20
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
BLOFF |
13:0 |
读/写 |
0x0 |
|
保留 |
31:14 |
/ |
0x0 |
/ |
前景像素格式转换控制寄存器(G2D_FPCTL)
地址偏移:0x24
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
FPF |
3:0 |
读/写 |
0x0 |
|
FLPF |
4 |
读/写 |
0x0 |
|
FLLEN |
5 |
读/写 |
0x0 |
|
保留 |
7:6 |
/ |
0x0 |
/ |
FCNP |
15:8 |
读/写 |
0x0 |
这些位定义用于前景图像的 CLUT 大小。一旦 CLUT 传输开始,此字段为只读。CLUT 条目数等于 FCNP + 1 |
FAVCA |
17:16 |
读/写 |
0x0 |
|
保留 |
23:18 |
/ |
0x0 |
/ |
FPDAV |
31:24 |
读/写 |
0x0 |
|
前景颜色寄存器(G2D_FPV)
地址偏移:0x28
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
FPDBV |
7:0 |
读/写 |
0x0 |
|
FPDGV |
15:8 |
读/写 |
0x0 |
|
FPDRV |
23:16 |
读/写 |
0x0 |
|
保留 |
31:24 |
/ |
0x0 |
/ |
背景像素格式转换控制寄存器(G2D_BPCTL)
地址偏移:0x2C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
BPF |
3:0 |
读/写 |
0x0 |
|
BLPF |
4 |
读/写 |
0x0 |
|
BLLEN |
5 |
读/写 |
0x0 |
|
保留 |
7:6 |
/ |
0x0 |
/ |
BCNP |
15:8 |
读/写 |
0x0 |
这些位定义用于背景图像的 CLUT 大小。一旦 CLUT 传输开始,此字段为只读。CLUT 条目数等于 FCNP + 1 |
BAVCA |
17:16 |
读/写 |
0x0 |
|
保留 |
23:18 |
/ |
0x0 |
/ |
BPDAV |
31:24 |
读/写 |
0x0 |
|
背景颜色寄存器(G2D_BPV)
地址偏移:0x30
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
BPDBV |
7:0 |
读/写 |
0x0 |
|
BPDGV |
15:8 |
读/写 |
0x0 |
|
BPDRV |
23:16 |
读/写 |
0x0 |
|
保留 |
31:24 |
/ |
0x0 |
/ |
前景 CLUT 内存地址寄存器(G2D_FLMADDR)
地址偏移:0x34
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
FLMADDR |
31:0 |
读/写 |
0x0 |
|
背景 CLUT 内存地址寄存器(G2D_BLMADDR)
地址偏移:0x3C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
BLMADDR |
31:0 |
读/写 |
0x0 |
|
输出像素格式转换控制寄存器(G2D_DPCTL)
地址偏移:0x44
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
DPF |
2:0 |
读/写 |
0x0 |
|
保留 |
31:3 |
/ |
0x0 |
/ |
输出颜色寄存器(G2D_DPV)
地址偏移:0x48
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
DPDBV |
7:0 |
读/写 |
0x0 |
这些位定义输出图像的蓝色值。这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 |
DPDGV |
15:8 |
读/写 |
0x0 |
这些位定义输出图像的绿色值。这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 |
DPDRV |
23:16 |
读/写 |
0x0 |
这些位定义输出图像的红色值。这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 |
DPDAV |
31:24 |
读/写 |
0x0 |
这些位定义输出颜色的 alpha 通道。这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 |
输出内存地址寄存器(G2D_DMADDR)
地址偏移:0x4C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
DMADDR |
31:0 |
读/写 |
0x0 |
|
输出偏移寄存器(G2D_DLOFF)
地址偏移:0x54
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
DLOFF |
13:0 |
读/写 |
0x0 |
|
保留 |
31:14 |
/ |
0x0 |
/ |
图像尺寸寄存器(G2D_IMS)
地址偏移:0x58
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
HEIGHT |
15:0 |
读/写 |
0x0 |
要传输区域的行数。这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 |
WIDTH |
29:16 |
读/写 |
0x0 |
|
保留 |
31:30 |
/ |
0x0 |
/ |
行水印寄存器(G2D_LM)
地址偏移:0x5C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
LM |
15:0 |
读/写 |
0x0 |
|
保留 |
31:16 |
/ |
0x0 |
/ |
镜像控制寄存器(G2D_MIRMOD)
地址偏移:0x64
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
MIRMOD |
1:0 |
读/写 |
0x0 |
|
保留 |
31:2 |
/ |
0x0 |
/ |
裁剪窗口控制寄存器(G2D_CWCTL0)
地址偏移:0x68
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
保留 |
0 |
/ |
0x0 |
/ |
CW_Y0 |
16:1 |
读/写 |
0x0 |
右上角的 y 坐标 |
CW_X0 |
30:17 |
读/写 |
0x0 |
右上角的 x 坐标 |
保留 |
31 |
/ |
0x0 |
/ |
裁剪窗口控制寄存器(G2D_CWCTL1)
地址偏移:0x6C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
CWEN |
0 |
读/写 |
0x0 |
|
CW_Y1 |
16:1 |
读/写 |
0x0 |
左下角的 y 坐标 |
CW_X1 |
30:17 |
读/写 |
0x0 |
左下角的 x 坐标 |
保留 |
31 |
/ |
0x0 |
/ |
采样控制寄存器(G2D_SAMCTL)
地址偏移:0x70
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
SAMEN |
0 |
读/写 |
0x0 |
|
SAMY |
4:1 |
读/写 |
0x0 |
这些位定义 Y 轴的采样点数。 |
SAMX |
8:5 |
读/写 |
0x0 |
这些位定义 X 轴的采样点数。 |
保留 |
31:9 |
/ |
0x0 |
/ |
像素格式顺序寄存器(G2D_RGB)
地址偏移:0x74
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_RGB |
0 |
读/写 |
0x0 |
|
OUT_RGB |
1 |
读/写 |
0x0 |
|
保留 |
31:2 |
/ |
0x0 |
/ |
版本寄存器(G2D_VER)
地址偏移:0x80
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
G2D_VER |
31:0 |
只读 |
0x10102 |
g2d 版本 |