.. _ip_ls_intf_g2d: 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 框图所示: .. _G2D 框图: .. figure:: /assets/images/g2d_block.png :alt: G2D 框图 :align: center **图 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 的索引。 前景和背景的像素格式如下表: .. list-table:: 表3.1 物理接口 :widths: 20 15 :header-rows: 1 * - 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 各像素格式的存储地址如下表: .. list-table:: 表 3.2 存储地址 :widths: 20 20 20 20 20 :header-rows: 1 * - 像素格式 - 字节3 bit31~24 - 字节2 bit23~16 - 字节1 bit15~8 - 字节0 bit7~0 * - ARGB8888 - - 基地址 + 3 - Ax[7:0] - - 基地址 + 2 - Rx[7:0] - - 基地址 + 1 - Gx[7:0] - - 基地址 + 0 - Bx[7:0] * - RGB888 - - 基地址 + 3 - Bx+1[7:0] - - 基地址 + 2 - Rx[7:0] - - 基地址 + 1 - Gx[7:0] - - 基地址 + 0 - Bx[7:0] * - RGB565 - - 基地址 + 3 - Rx+1[4:0]Gx+1[5:3] - - 基地址 + 2 - Gx+1[2:0]Bx+1[4:0] - - 基地址 + 1 - Rx[4:0]Gx[5:3] - - 基地址 + 0 - Gx[2:0]Bx[4:0] * - ARGB1555 - - 基地址 + 3 - Ax+1[0]Rx+1[4:0]Gx+1[4:3] - - 基地址 + 2 - Gx+1[2:0]Bx+1[4:0] - - 基地址 + 1 - Ax[0]Rx[4:0]Gx[4:3] - - 基地址 + 0 - Gx[2:0]Bx[4:0] * - ARGB4444 - - 基地址 + 3 - Ax+1[3:0]Rx+1[3:0] - - 基地址 + 2 - Gx+1[3:0]Bx+1[3:0] - - 基地址 + 1 - Ax[3:0]Rx[3:0] - - 基地址 + 0 - Gx[3:0]Bx[3:0] * - L8 - - 基地址 + 3 - Lx+3[7:0] - - 基地址 + 2 - Lx+2[7:0] - - 基地址 + 1 - Lx+1[7:0] - - 基地址 + 0 - Lx[7:0] * - AL44 - - 基地址 + 3 - Ax+3[3:0]Lx+3[3:0] - - 基地址 + 2 - Ax+2[3:0]Lx+2[3:0] - - 基地址 + 1 - Ax+1[3:0]Lx+1[3:0] - - 基地址 + 0 - Ax[3:0]Lx[3:0] * - AL88 - - 基地址 + 3 - Ax+1[7:0] - - 基地址 + 2 - Lx+1[7:0] - - 基地址 + 1 - Ax[7:0] - - 基地址 + 0 - Lx[7:0] * - L4 - - 基地址 + 3 - Lx+7[3:0]Lx+6[3:0] - - 基地址 + 2 - Lx+5[3:0]Lx+4[3:0] - - 基地址 + 1 - Lx+3[3:0]Lx+2[3:0] - - 基地址 + 0 - Lx+1[3:0]Lx[3:0] * - A8 - - 基地址 + 3 - Ax+3[7:0] - - 基地址 + 2 - Ax+2[7:0] - - 基地址 + 1 - Ax+1[7:0] - - 基地址 + 0 - Ax[7:0] * - A4 - - 基地址 + 3 - Ax+7[3:0]Ax+6[3:0] - - 基地址 + 2 - Ax+5[3:0]Ax+4[3:0] - - 基地址 + 1 - Ax+3[3:0]Ax+2[3:0] - - 基地址 + 0 - Ax+1[3:0]Ax[3:0] 像素格式扩展 ------------------------ 如果格式是 RGB888,则 alpha 通道将设置为 0xFF。 .. list-table:: 表3.3 RGB888 转 ARGB8888 :widths: 15 40 40 40 40 :header-rows: 1 * - - 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。 .. list-table:: 表3.4 RGB565 转 ARGB8888 :widths: 15 40 40 40 40 :header-rows: 1 * - - 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] .. list-table:: 表3.5 ARGB1555 转 ARGB8888 :widths: 15 40 40 40 40 :header-rows: 1 * - - 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] .. list-table:: 表3.6 ARGB4444 转 ARGB8888 :widths: 15 40 40 40 40 :header-rows: 1 * - - 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 位决定。 .. list-table:: 表3.7 alpha 通道值算法 :widths: 20 15 :header-rows: 1 * - 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。 像素压缩 ------------------------ .. list-table:: 表3.8 目标像素格式 :widths: 20 15 :header-rows: 1 * - DPF - 像素格式 * - 3'b000 - ARGB8888 * - 3'b001 - RGB888 * - 3'b010 - RGB565 * - 3'b011 - ARGB1555 * - 3'b0100 - ARGB4444 .. list-table:: 表3.9 ARGB8888 压缩 :widths: 15 40 40 40 40 :header-rows: 1 * - - 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 裁剪窗口示意图所示 .. _G2D 裁剪窗口示意图: .. figure:: /assets/images/g2d_cut_window.png :alt: G2D 裁剪窗口示意图 :align: center **图 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 加载时,建议遵循以下步骤: 1. 配置 G2D_FLMADDR 寄存器以设置前景层 LUT 基地址。 2. 配置 G2D_FPCTL 寄存器中的 FLPF 字段以设置像素格式。 3. 配置 G2D_FPCTL 中的 FCNP 字段以设置要加载的像素数量。实际加载的像素数为 fcnp+1。 4. 配置 G2D_CTL 寄存器中的中断使能字段。 5. 配置 G2D_FPCTL 寄存器中的 FLLEN 位为 1 以启动 LUT 加载。 * 加载背景层 LUT 1. 配置 G2D_BLMADDR 寄存器以设置背景层 LUT 基地址。 2. 配置 G2D_BPCTL 寄存器中的 BLPF 字段以设置像素格式。 3. 配置 G2D_BPCTL 中的 BCNP 字段以设置要加载的像素数量。实际加载的像素数为 bcnp+1。 4. 配置 G2D_CTL 寄存器中的中断使能字段。 5. 配置 G2D_BPCTL 寄存器中的 BLLEN 位为 1 以启动 LUT 加载。 * G2D 传输 1. 内存到内存 a. 配置 G2D_FMADDR 和 G2D_DMADDR 寄存器以设置源基地址和目标基地址。 b. 配置 G2D_FPCTL 寄存器的 FAVCA 和 FPF 字段,以设置前景层 alpha 值的计算方法和前景层像素格式。 c. 配置 G2D_FPCTL 和 G2D_FPV 寄存器以设置预定义的像素值,包括 alpha、红、绿和蓝颜色值。 d. 配置 G2D_DPCTL 寄存器的 DPF 字段以设置目标像素格式。 e. 配置 G2D_FLOFF 和 G2D_DLOFF 寄存器的 FLOFF 和 DLOFF 字段以设置前景层和目标层的行偏移。 f. 配置 G2D_LM 寄存器的 LM 字段以设置行水印。 g. 配置 G2D_IMS 寄存器的 WIDTH 和 HEIGHT 字段以设置图像尺寸。 h. 配置 G2D_CTL 中的中断使能字段。 j. 配置 G2D_CTL 寄存器的 TEN 位为 1 以启动传输。 2. 带像素格式转换的内存到内存 a. 配置 G2D_FMADDR 和 G2D_DMADDR 寄存器以设置源基地址和目标基地址。 b. 配置 G2D_FPCTL 寄存器的 FAVCA 和 FPF 字段,以设置前景层 alpha 值的计算方法和前景层像素格式。 c. 配置 G2D_FPCTL 和 G2D_FPV 寄存器以设置预定义的像素值,包括 alpha、红、绿和蓝颜色值。 d. 配置 G2D_DPCTL 寄存器的 DPF 字段以设置目标像素格式。 e. 配置 G2D_FLOFF 和 G2D_DLOFF 寄存器的 FLOFF 和 DLOFF 字段以设置前景层和目标层的行偏移。 f. 配置 G2D_LM 寄存器的 LM 字段以设置行水印。 g. 配置 G2D_IMS 寄存器的 WIDTH 和 HEIGHT 字段以设置图像尺寸。 h. 配置 G2D_CTL 中的中断使能字段。 j. 配置 G2D_CTL 寄存器的 TEN 位为 1 以启动传输。 3. 带像素格式转换和混合的内存到内存 a. 配置 G2D_FMADDR、G2D_BMADDR 和 G2D_DMADDR 寄存器以设置前景层、背景层和目标内存基地址。 b. 配置 G2D_FPCTL 寄存器的 FAVCA 和 FPF 字段,以设置前景层 alpha 值的计算方法和前景层像素格式。 c. 配置 G2D_FPCTL 和 G2D_FPV 寄存器以设置预定义的像素值,包括 alpha、红、绿和蓝颜色值。 d. 配置 G2D_BPCTL 寄存器的 BAVCA 和 BPF 位,以设置背景层 alpha 值的计算方法和背景层像素格式。 e. 配置 G2D_BPCTL 和 G2D_BPV 寄存器以设置预定义的像素值,包括 alpha、红、绿和蓝颜色值。 f. 配置 G2D_DPCTL 寄存器的 DPF 字段以设置目标像素格式。 g. 配置 G2D_FLOFF、G2D_BLOFF 和 G2D_DLOFF 寄存器的 FLOFF、BLOFF 和 DLOFF,设置背景层、前景层和目标层的行偏移。 h. 配置 G2D_LM 寄存器的 LM 字段以设置行水印。 j. 配置 G2D_IMS 寄存器的 WIDTH 和 HEIGHT 字段以设置图像尺寸。 k. 配置 G2D_CTL 中的中断使能字段。 l. 配置 G2D_CTL 寄存器的 TEN 位为 1 以启用 G2D 传输。 4. 寄存器到内存 a. 配置 G2D_DMADDR 寄存器以设置目标内存区域的基地址。 b. 配置 G2D_DPCTL 寄存器的 DPF 以设置目标像素格式。 c. 配置 G2D_DPV 寄存器以设置目标区域中预定义的像素值,包括 alpha、红、绿和蓝颜色值。 d. 配置 G2D_DLOFF 寄存器的 DLOFF 以设置目标的行偏移。 e. 配置 G2D_LM 寄存器的 LM 字段以设置行标志。 f. 配置 G2D_IMS 寄存器的 WIDTH 和 HEIGHT 字段以设置图像尺寸。 g. 配置 G2D_CTL 中的中断使能字段。 h. 配置 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 传输时: 1. 当 G2D_FPCTL 寄存器的 FPF 字段为 'ARGB8888' 时,G2D_FMADDR 寄存器的 FMADDR 字段必须为 32 位对齐。当 FPF 为 'RGB565'、'ARGB1555'、'ARGB4444' 或 'AL88' 时,必须为 16 位对齐。 2. 当 G2D_FPCTL 寄存器的 FPF 字段为 A4 或 L4 时,G2D_FLOFF 寄存器的 FLOFF 字段必须为偶数。 3. 当 G2D_BPCTL 寄存器的 BPF 字段为 'ARGB8888' 时,G2D_BMADDR 寄存器的 BMADDR 字段必须为 32 位对齐。当 BPF 为 'RGB565'、'ARGB1555'、'ARGB4444' 或 'AL88' 时,必须为 16 位对齐。 4. 当 G2D_BPCTL 寄存器的 BPF 字段为 A4 或 L4 时,G2D_BLOFF 寄存器的 BLOFF 字段必须为偶数。 5. G2D_FPCTL 寄存器的 FPF 字段必须小于或等于 '0b1010'。 6. G2D_BPCTL 寄存器的 BPF 字段必须小于或等于 '0b1010'。 7. G2D_DPCTL 寄存器的 DPF 字段必须小于或等于 '0b100'。 8. 当 G2D_DPCTL 寄存器的 DPF 字段为 'ARGB8888' 时,G2D_DMADDR 寄存器的 DMADDR 字段必须为 32 位对齐。当 DPF 为 'RGB565'、'ARGB1555'、'ARGB4444' 或 'AL88' 时,必须为 16 位对齐。 9. 当 G2D_FPCTL 寄存器的 FPF 字段为 A4 或 L4 时,G2D_DLOFF 寄存器的 DLOFF 字段必须为偶数。 10. 当 G2D_FPCTL 寄存器的 FPF 字段为 A4 或 L4 时,G2D_IMS 寄存器的 WIDTH 字段必须为偶数。 11. 当 G2D_BPCTL 寄存器的 BPF 字段为 A4 或 L4 时,G2D_IMS 寄存器的 WIDTH 字段必须为偶数。 12. G2D_IMS 寄存器的 WIDTH 字段必须大于 0。 13. 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 访问错误中断。 * 传输水印到达中断。 * 传输完成中断。 * 传输错误中断。 .. _G2D 中断事件: .. figure:: /assets/images/g2d_interrupt.png :alt: G2D 中断事件 :align: center **图 4.1: G2D 中断事件** 中断请求如下表: .. list-table:: 表 4.1:G2D 中断请求 :widths: 20 20 20 :header-rows: 1 * - 中断事件 - 事件标志 - 使能控制位 * - 配置错误 - 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 时,必须遵循以下规则: 1. 当前景 LUT 自动加载时,禁止软件访问前景 LUT; 2. 当背景层 LUT 自动加载时,不允许软件访问背景层 LUT; 3. 当配置 G2D 传输模式 PFCM 字段等于 '01'/'10' 时,如果前景层像素格式是间接的,在 G2D 传输进行期间禁止软件访问前景层 LUT; 4. 当配置 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 中的寄存器偏移地址所示。 .. list-table:: 表 5.1:G2D 中的寄存器偏移地址 :widths: 20 25 40 :header-rows: 1 * - 偏移地址 - 寄存器名称 - 功能描述 * - 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`` .. list-table:: 表 5.2:G2D_CTRL 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - TEN - 0 - 读/写 - 0x0 - 启动使能 此位可用于根据各种配置寄存器中加载的参数启动 G2D。此位在以下事件中自动复位 - 传输结束时 - 当用户应用程序通过设置 G2D_CTL 中的 TST 位中止数据传输时 - 当发生数据传输错误时 - 当由于配置错误或另一个传输操作(自动 CLUT 加载)已在运行而导致数据传输未启动时 * - THU - 1 - 读/写 - 0x0 - 暂停使能 此位可用于暂停当前传输。此位由软件设置和复位。当 TEN 位复位时,由硬件自动复位。 - 1'b0: 传输未暂停 - 1'b1: 传输已暂停 * - TST - 2 - 读/写 - 0x0 - 中止使能 此位可用于中止当前传输。此位由软件设置,当 START 位复位时由硬件自动复位 - 1'b0: 未请求传输中止 - 1'b1: 请求传输中止 * - 保留 - 7:3 - / - 0x0 - / * - TAEIE - 8 - 读/写 - 0x0 - 传输错误中断使能。此位由软件设置和清除。传输进行中无法修改。 - 1'b0: 中断禁用 - 1'b1: 中断使能 * - FTFIE - 9 - 读/写 - 0x0 - 传输完成中断使能。此位由软件设置和清除。传输进行中无法修改。 - 1'b0: 中断禁用 - 1'b1: 中断使能 * - TLMIE - 10 - 读/写 - 0x0 - 传输水印中断使能。此位由软件设置和清除。传输进行中无法修改。 - 1'b0: 中断禁用 - 1'b1: 中断使能 * - LACIE - 11 - 读/写 - 0x0 - CLUT 访问错误中断使能。此位由软件设置和清除。传输进行中无法修改。 - 1'b0: 中断禁用 - 1'b1: 中断使能 * - LLFIE - 12 - 读/写 - 0x0 - CLUT 传输完成中断使能。此位由软件设置和清除。传输进行中无法修改。 - 1'b0: 中断禁用 - 1'b1: 中断使能 * - WCFIE - 13 - 读/写 - 0x0 - 配置错误中断使能。此位由软件设置和清除。传输进行中无法修改。 - 1'b0: 中断禁用 - 1'b1: 中断使能 * - 保留 - 15:14 - / - 0x0 - / * - PFCM - 17:16 - 读/写 - 0x0 - 像素格式转换模式。此位由软件设置和清除。传输进行中无法修改。 - 2'b00: 内存到内存(仅获取前景) - 2'b01: 带像素格式转换的内存到内存(仅获取前景,并启用前景像素格式转换) - 2'b10: 带混合的内存到内存(获取前景和背景,并进行像素混合) - 2'b11: 寄存器到内存(无前景也无背景,仅输出级激活) * - 保留 - 31:18 - / - 0x0 - / 中断状态寄存器(G2D_INTF) --------------------------------------------- 地址偏移:``0x4`` .. list-table:: 表 5.3:G2D_INTF 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - 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`` .. list-table:: 表 5.4:G2D_INTC 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - 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`` .. list-table:: 表 5.5:G2D_FMADDR 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FMADDR - 31:0 - 读/写 - 0x0 - - 用于前景图像的数据的地址。此寄存器仅在数据传输禁用时可写。一旦数据传输开始,此寄存器变为只读。 - 地址对齐必须与所选图像格式匹配,例如每像素 32 位的格式必须 32 位对齐,每像素 16 位的格式必须 16 位对齐,每像素 4 位的格式必须 8 位对齐。 - 注意:当启用 Y 镜像或 XY 镜像时,此地址是图片最后一行的起始地址。 前景偏移寄存器(G2D_FLOFF) ------------------------------------------------------ 地址偏移:``0x14`` .. list-table:: 表 5.6:G2D_FLOFF 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FLOFF - 13:0 - 读/写 - 0x0 - - 用于前景的行偏移(以像素为单位)。此值用于生成地址。它在每行末尾相加,以确定下一行的起始地址。 - 这些位仅在数据传输禁用时可写。一旦数据传输开始,它们变为只读。 - 如果图像格式为每像素 4 位,则行偏移必须为偶数。 * - 保留 - 31:14 - / - 0x0 - / 背景内存地址寄存器(G2D_BMADDR) ------------------------------------------------------- 地址偏移:``0x18`` .. list-table:: 表 5.7:G2D_BMADDR 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - BMADDR - 31:0 - 读/写 - 0x0 - - 用于背景图像的数据的地址。此寄存器仅在数据传输禁用时可写。一旦数据传输开始,此寄存器变为只读。 - 地址对齐必须与所选图像格式匹配,例如每像素 32 位的格式必须 32 位对齐,每像素 16 位的格式必须 16 位对齐,每像素 4 位的格式必须 8 位对齐。 - 注意:当启用 Y 镜像或 XY 镜像时,此地址是图片最后一行的起始地址。 背景偏移寄存器(G2D_BLOFF) ---------------------------------------------------- 地址偏移:``0x20`` .. list-table:: 表 5.8:G2D_BLOFF 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - BLOFF - 13:0 - 读/写 - 0x0 - - 用于背景的行偏移(以像素为单位)。此值用于生成地址。 - 它在每行末尾相加,以确定下一行的起始地址。 - 这些位仅在数据传输禁用时可写。一旦数据传输开始,它们变为只读。 - 如果图像格式为每像素 4 位,则行偏移必须为偶数。 * - 保留 - 31:14 - / - 0x0 - / 前景像素格式转换控制寄存器(G2D_FPCTL) ------------------------------------------------------- 地址偏移:``0x24`` .. list-table:: 表 5.9:G2D_FPCTL 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FPF - 3:0 - 读/写 - 0x0 - 这些位定义前景图像的颜色格式。它们仅在数据传输禁用时可写。传输开始后,它们为只读。 - 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 - 其他:无意义 * - FLPF - 4 - 读/写 - 0x0 - 此位定义 CLUT 的颜色格式。它仅在传输禁用时可写。一旦 CLUT 传输开始,此位为只读 - 1'b0: ARGB8888 - 1'b1: RGB888 * - FLLEN - 5 - 读/写 - 0x0 - 可以设置此位以启动 CLUT 的自动加载。它在以下情况下自动复位 - 传输结束时 - 当用户应用程序通过设置 G2D_CTL 中的 ABORT 位中止传输时 - 当发生传输错误时 - 当由于配置错误或另一个传输操作(数据传输或自动背景 CLUT 传输)已在运行而导致传输未启动时 * - 保留 - 7:6 - / - 0x0 - / * - FCNP - 15:8 - 读/写 - 0x0 - 这些位定义用于前景图像的 CLUT 大小。一旦 CLUT 传输开始,此字段为只读。CLUT 条目数等于 FCNP + 1 * - FAVCA - 17:16 - 读/写 - 0x0 - 这些位选择用于前景图像的 alpha 通道值。它们仅在数据传输禁用时可写。传输开始后,它们变为只读 - 2'b00: 不修改前景图像 alpha 通道值 - 2'b01: 用 ALPHA[7:0] 替换原始前景图像 alpha 通道值 - 2'b10: 用 ALPHA[7:0] 乘以原始 alpha 通道值替换原始前景图像 alpha 通道值 - 其他配置无意义 * - 保留 - 23:18 - / - 0x0 - / * - FPDAV - 31:24 - 读/写 - 0x0 - - 这些位定义一个固定的 alpha 通道值,该值可以根据通过 FPDAV 位选择的 alpha 模式替换原始 alpha 值或与原始 alpha 值相乘。 - 这些位仅在数据传输禁用时可写。传输开始后,它们变为只读。 前景颜色寄存器(G2D_FPV) -------------------------------------- 地址偏移:``0x28`` .. list-table:: 表 5.10:G2D_FPV 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FPDBV - 7:0 - 读/写 - 0x0 - - 这些位定义前景图像的 A4 或 A8 模式的蓝色值。 - 它们仅在数据传输禁用时可写。传输开始后,它们为只读。 * - FPDGV - 15:8 - 读/写 - 0x0 - - 这些位定义前景图像的 A4 或 A8 模式的绿色值。 - 它们仅在数据传输禁用时可写。传输开始后,它们为只读。 * - FPDRV - 23:16 - 读/写 - 0x0 - - 这些位定义前景图像的 A4 或 A8 模式的红色值。 - 它们仅在数据传输禁用时可写。传输开始后,它们为只读。 * - 保留 - 31:24 - / - 0x0 - / 背景像素格式转换控制寄存器(G2D_BPCTL) ------------------------------------------------------------ 地址偏移:``0x2C`` .. list-table:: 表 5.11:G2D_BPCTL 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - BPF - 3:0 - 读/写 - 0x0 - 这些位定义背景图像的颜色格式。它们仅在数据传输禁用时可写。传输开始后,它们为只读。 - 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 - 其他:无意义 * - BLPF - 4 - 读/写 - 0x0 - 此位定义 CLUT 的颜色格式。它仅在传输禁用时可写。一旦 CLUT 传输开始,此位为只读 - 1'b0: ARGB8888 - 1'b1: RGB888 * - BLLEN - 5 - 读/写 - 0x0 - 可以设置此位以启动 CLUT 的自动加载。它在以下情况下自动复位 - 传输结束时 - 当用户应用程序通过设置 G2D_CTL 中的 ABORT 位中止传输时 - 当发生传输错误时 - 当由于配置错误或另一个传输操作导致传输未启动时 * - 保留 - 7:6 - / - 0x0 - / * - BCNP - 15:8 - 读/写 - 0x0 - 这些位定义用于背景图像的 CLUT 大小。一旦 CLUT 传输开始,此字段为只读。CLUT 条目数等于 FCNP + 1 * - BAVCA - 17:16 - 读/写 - 0x0 - 这些位选择用于背景图像的 alpha 通道值。它们仅在数据传输禁用时可写。传输开始后,它们变为只读 - 2'b00: 不修改前景图像 alpha 通道值 - 2'b01: 用 ALPHA[7:0] 替换原始前景图像 alpha 通道值 - 2'b10: 用 ALPHA[7:0] 乘以原始 alpha 通道值替换原始前景图像 alpha 通道值 - 其他配置无意义 * - 保留 - 23:18 - / - 0x0 - / * - BPDAV - 31:24 - 读/写 - 0x0 - - 这些位定义一个固定的 alpha 通道值,该值可以根据通过 BPDAV 位选择的 alpha 模式替换原始 alpha 值或与原始 alpha 值相乘。 - 这些位仅在数据传输禁用时可写。传输开始后,它们变为只读。 背景颜色寄存器(G2D_BPV) -------------------------------------------------------------------- 地址偏移:``0x30`` .. list-table:: 表 5.12:G2D_BPV 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - BPDBV - 7:0 - 读/写 - 0x0 - - 这些位定义背景图像的 A4 或 A8 模式的蓝色值。 - 它们仅在数据传输禁用时可写。传输开始后,它们为只读。 * - BPDGV - 15:8 - 读/写 - 0x0 - - 这些位定义背景图像的 A4 或 A8 模式的绿色值。 - 它们仅在数据传输禁用时可写。传输开始后,它们为只读。 * - BPDRV - 23:16 - 读/写 - 0x0 - - 这些位定义背景图像的 A4 或 A8 模式的红色值。 - 它们仅在数据传输禁用时可写。传输开始后,它们为只读。 * - 保留 - 31:24 - / - 0x0 - / 前景 CLUT 内存地址寄存器(G2D_FLMADDR) ------------------------------------------------------------ 地址偏移:``0x34`` .. list-table:: 表 5.13:G2D_FLMADDR 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FLMADDR - 31:0 - 读/写 - 0x0 - - 用于前景图像专用 CLUT 地址的数据地址。 - 此寄存器仅在无传输进行时可写。一旦 CLUT 传输开始,此寄存器为只读。 - 如果前景 CLUT 格式为 32 位,则地址必须为 32 位对齐。 背景 CLUT 内存地址寄存器(G2D_BLMADDR) ------------------------------------------------------------ 地址偏移:``0x3C`` .. list-table:: 表 5.14:G2D_BLMADDR 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - BLMADDR - 31:0 - 读/写 - 0x0 - - 用于背景图像专用 CLUT 地址的数据地址。 - 此寄存器仅在无传输进行时可写。一旦 CLUT 传输开始,此寄存器为只读。 - 如果背景 CLUT 格式为 32 位,则地址必须为 32 位对齐。 输出像素格式转换控制寄存器(G2D_DPCTL) ----------------------------------------------------------------------------- 地址偏移:``0x44`` .. list-table:: 表 5.15:G2D_DPCTL 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DPF - 2:0 - 读/写 - 0x0 - 这些位定义输出图像的颜色格式。这些位仅在数据传输禁用时可写。传输开始后,它们为只读 - 3'b000: ARGB8888 - 3'b001: RGB888 - 3'b010: RGB565 - 3'b011: ARGB1555 - 3'b100: ARGB4444 - 其他:无意义 * - 保留 - 31:3 - / - 0x0 - / 输出颜色寄存器(G2D_DPV) ------------------------------------------------------------ 地址偏移:``0x48`` .. list-table:: 表 5.16:G2D_DPV 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DPDBV - 7:0 - 读/写 - 0x0 - 这些位定义输出图像的蓝色值。这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 * - DPDGV - 15:8 - 读/写 - 0x0 - 这些位定义输出图像的绿色值。这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 * - DPDRV - 23:16 - 读/写 - 0x0 - 这些位定义输出图像的红色值。这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 * - DPDAV - 31:24 - 读/写 - 0x0 - 这些位定义输出颜色的 alpha 通道。这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 输出内存地址寄存器(G2D_DMADDR) ------------------------------------------------------------ 地址偏移:``0x4C`` .. list-table:: 表 5.17:G2D_DMADDR 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DMADDR - 31:0 - 读/写 - 0x0 - - 输出数据的地址。 - 这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 - 地址对齐必须与所选图像格式匹配,例如每像素 32 位的格式必须 32 位对齐,每像素 16 位的格式必须 16 位对齐。 输出偏移寄存器(G2D_DLOFF) ------------------------------------------------------------ 地址偏移:``0x54`` .. list-table:: 表 5.18:G2D_DLOFF 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DLOFF - 13:0 - 读/写 - 0x0 - - 用于输出的行偏移(以像素为单位)。 - 此值用于地址生成。它在每行末尾相加,以确定下一行的起始地址。 - 这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 * - 保留 - 31:14 - / - 0x0 - / 图像尺寸寄存器(G2D_IMS) ------------------------------------------------------------ 地址偏移:``0x58`` .. list-table:: 表 5.19:G2D_IMS 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - HEIGHT - 15:0 - 读/写 - 0x0 - 要传输区域的行数。这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 * - WIDTH - 29:16 - 读/写 - 0x0 - - 要传输区域每行的像素数。 - 这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 - 如果任何输入图像格式为每像素 4 位,则每行像素数必须为偶数。 * - 保留 - 31:30 - / - 0x0 - / 行水印寄存器(G2D_LM) ------------------------------------------------------------ 地址偏移:``0x5C`` .. list-table:: 表 5.20:G2D_LM 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LM - 15:0 - 读/写 - 0x0 - - 这些位允许配置用于中断生成的行水印。 - 当水印行的最后一个像素被传输时,会产生中断。 - 这些位仅在数据传输禁用时可写。传输开始后,它们为只读。 * - 保留 - 31:16 - / - 0x0 - / 镜像控制寄存器(G2D_MIRMOD) ------------------------------------------------------------ 地址偏移:``0x64`` .. list-table:: 表 5.21:G2D_MIRMOD 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - MIRMOD - 1:0 - 读/写 - 0x0 - 这些位允许配置镜像模式。这些位仅在数据传输禁用时可写。传输开始后,它们为只读 - 2'b00: 无镜像 - 2'b01: X 镜像模式 - 2'b10: Y 镜像模式 - 2'b11: XY 镜像模式 * - 保留 - 31:2 - / - 0x0 - / 裁剪窗口控制寄存器(G2D_CWCTL0) ------------------------------------------------------------ 地址偏移:``0x68`` .. list-table:: 表 5.22:G2D_CWCTL0 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - 保留 - 0 - / - 0x0 - / * - CW_Y0 - 16:1 - 读/写 - 0x0 - 右上角的 y 坐标 * - CW_X0 - 30:17 - 读/写 - 0x0 - 右上角的 x 坐标 * - 保留 - 31 - / - 0x0 - / 裁剪窗口控制寄存器(G2D_CWCTL1) ------------------------------------------------------------ 地址偏移:``0x6C`` .. list-table:: 表 5.23:G2D_CWCTL1 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CWEN - 0 - 读/写 - 0x0 - 裁剪窗口的使能信号 - 1'b0: 禁用 - 1'b1: 启用 * - CW_Y1 - 16:1 - 读/写 - 0x0 - 左下角的 y 坐标 * - CW_X1 - 30:17 - 读/写 - 0x0 - 左下角的 x 坐标 * - 保留 - 31 - / - 0x0 - / 采样控制寄存器(G2D_SAMCTL) ------------------------------------------------------------ 地址偏移:``0x70`` .. list-table:: 表 5.24:G2D_SAMCTL 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - SAMEN - 0 - 读/写 - 0x0 - 采样的使能信号 - 1'b0: 禁用 - 1'b1: 启用 * - SAMY - 4:1 - 读/写 - 0x0 - 这些位定义 Y 轴的采样点数。 * - SAMX - 8:5 - 读/写 - 0x0 - 这些位定义 X 轴的采样点数。 * - 保留 - 31:9 - / - 0x0 - / 像素格式顺序寄存器(G2D_RGB) ------------------------------------------------------------ 地址偏移:``0x74`` .. list-table:: 表 5.25:G2D_RGB 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - IN_RGB - 0 - 读/写 - 0x0 - - 这些位定义输入像素顺序。 - 它们仅在数据传输禁用时可写。传输开始后,它们为只读。 - 当 pfcm 不等于 2’b00 时激活 - 1'b0: RGB - 1'b1: BGR * - OUT_RGB - 1 - 读/写 - 0x0 - - 这些位定义输出像素顺序。 - 它们仅在数据传输禁用时可写。传输开始后,它们为只读。 - 当 pfcm 不等于 2’b00 时激活 - 1'b0: RGB - 1'b1: BGR * - 保留 - 31:2 - / - 0x0 - / 版本寄存器(G2D_VER) ------------------------------------------------------------ 地址偏移:``0x80`` .. list-table:: 表 5.26:G2D_VER 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - G2D_VER - 31:0 - 只读 - 0x10102 - g2d 版本