Edit online

PNG 寄存器描述

0x0C00 INFLATE_INT

默认值:0x00000000 Inflate 中断使能 (Inflate Interrupt Enable)
位域 类型 默认值 描述
31:3 - - -
2 R/W 0x0 BIT_REQ_INT_EN
请求bitsteam中断控制
  • 0:不使能
  • 1:使能

DEC_REQ_INT_EN 用于控制解码所需要的原始码流不够需要请求下笔数据时是否向CPU发出中断请求。当DEC_REQ_INT_EN为1时,产生中断请求,否则不产生中断请求。是否产生中断请求,不影响相应状态标志位的产生。

1 R/W 0x0 DEC_ERR_INT_EN
解码error中断控制
  • 0:不使能
  • 1:使能

DEC_ERR_INT_EN用于控制解码发生错误结束后是否向CPU发出中断请求。当DEC_ERR_INT_EN为1时,产生中断请求,否则不产生中断请求。是否产生中断请求,不影响相应状态标志位的产生。

0 R/W 0x0 DEC_FINISH_INIT
解码结束中断控制
  • 0:不使能
  • 1:使能

DEC_FINISH_INT_EN用于控制正常解码结束后是否向CPU发出中断请求。当DEC_FINISH_INT_EN为1时,产生中断请求,否则不产生中断请求。是否产生中断请求,不影响相应状态标志位的产生。

0x0C04 INFLATE_STATUS

默认值:0x00000000 Inflate 解码状态 (Inflate Status)
位域 类型 默认值 描述
31:24 - - -
23:22 R 0x0 DEFILTER_ERR
  • [23]:
    • 0表示defilter解码数据足够
    • 1表示defilter解码数据不足
  • [22]:
    • 0表示filter类型正确
    • 1表示filter类型错误
    ;
21:19 R 0x0 WDMA_ERR

写 DMA 出错

18:15 R 0x0 RDMA_ERR

读 DMA 出错

14:11 R 0x0 LZ77_ERR
LZ77解码error
  • [14]:
    • 0:LZ77解码数据足够
    • 1:LZ77解码数据不足
  • [13]:
    • 0:LZ77 huffman 码值正确
    • 1:LZ77 huffman 码值错误
  • [12]:
    • 0:LZ77 huffman码表1解码正确
    • 1:LZ77 huffman码表1解码错误;
  • [11]:
    • 0:LZ77 huffman码表2解码正确
    • 1:LZ77 huffman码表2解码错误
10:8 R 0x0 HUFF_ERR
huffman解码 error
  • [8]:0表示cl 个数正确;1表示cl 个数不匹配;
  • [9]:0表示cl huffman解码正确;1表示cl huffman解码错误
  • [8]:0表示ccl解码数据足够;1表示ccl解码数据不足;
7:5 R 0x0 PC_ERR
png文件头解码错误
  • [7]: 0表示deflate文件头解码数据足够;1表示deflate文件头解码数据不足
  • [6]:0表示deflate文件头参数正确;1表示deflate文件头参数错误
  • [5]:0表示deflate文件头解码正确;1表示deflate文件头解码错误
4 R 0x0 OUT_BUF_OVERFLOW
  • 0: 无
  • 1:当前error的原因是输出buffer已满
3 - - -
2 R/W1C 0x0 BIT_REQ_INT_FLAG

请求bitstream标记状态当执行当前任务过程中发现码流不够,则暂停当前任务并向CPU发送中断信号后,该位置1。软件向该位写1则清除相应中断

1 R/W1C 0x0 ERR_INIT_FLAG

解码error标记状态当执行当前任务过程中发现码流错误,则停止当前任务并向CPU发送中断信号后,该位置1。软件向该位写1则清除相应中断

0 R/W1C 0x0 FINISH_INIT_FLAG

解码结束标记状态当完成当前任务并向CPU发送中断信号后,该位置1。主控向该位写1则清除相应中断。

0x0C08 INFLATE_START

默认值:0x00000000 Inflate 解码开始 (Inflate START)
位域 类型 默认值 描述
31:1 - - -
0 R/W 0x0 START
  • 0: 未开始解码
  • 1: 开始解码

写“1”会自动清零

0x0C10 INFLATE_CTRL

默认值:0x00000000 Inflate 解码控制 (Inflate Control)
位域 类型 默认值 描述
31:13 - - -
12:11 R/W 0x0 BIT_DEPTH

位宽

0: 8 bits

只支持 8bit

10:8 R/W 0x6 COLOR_TYPE
格式类型
  • 0: reserved
  • 1: reserved
  • 2: PNG24
  • 3:索引彩色图像
  • 4: reserved
  • 5: reserved
  • 6: PNG32
7:2 - - -
1:0 R/W 0x0 DEC_TYPE_FLAG
解码类型
  • 0: Inflate(gzip)
  • 1: Inflate and png defilter

此标记用来指示解码类型,当解码类型为Inflate and pngdefilter,需要设置PNG相关参数

0x0C14 PNG_SIZE

默认值:0x00000000 PNG 图像大小 (PNG Picture Size)
位域 类型 默认值 描述
31:29 - - -
28:16 R/W 0x0 HEIGHT

PNG图片高度

15:13 - - -
12:0 R/W 0x0 WIDTH

PNG图片宽度

0x0C18 PNG_OUTPUT_STRIDE

默认值:0x00000000 PNG 输出线宽 (PNG Line Stride)
位域 类型 默认值 描述
31:15 - - -
14:0 R /W 0x0 STRIDE

PNG输出对齐

0x0C1C PNG_OUTPUT_FORMAT

默认值:0x00000000 PNG 解码输出颜色格式 (PNG Output Format)
位域 类型 默认值 描述
31:3 - - -
2:0 R/W 0x0 OUTPUT_FORMAT
  • 0: ARGB8888
  • 1: ABGR8888
  • 2: RGBA8888
  • 3: BGRA8888
  • 4: RGB888
  • 5: BGR888

PNG8, PNG24, PNG32都可以设置以上任意像素格式,当PNG原图中不包含alpha通道的时候,选择有alpha通道的格式,alpha值固定为0xFF。当PNG原图中包含alpha通道,输出格式中不含alpha,则alpha信息丢失。当PNG8_PALETTE_BYPASS为1时,输出格式OUTPUT_FORMAT设置无效

0x0C20 INPUT_BS_START_ADDR

默认值:0x00000000 输入码流起始地址 (Input Bitstream Start Address)
位域 类型 默认值 描述
31:4 R/W 0x000_0000 INPUT_BS_START_ADDR[31:4]

原始码流缓冲区起始位置,低4位固定为0。

3:0 RO 0x00 固定为0

0x0C24 INPUT_BS_END_ADDR

默认值:0x00000000 输入码流结束地址 (Input Bitstream End Address)
位域 类型 默认值 描述
31:4 R/W 0x000_0000 INPUT_BS_END_ADDR[31:4]

原始码流缓冲区结束位置

3:0 RO 0xF 固定为全1

0x0C28 INPUT_BS_OFFSET

默认值:0x00000000 输入码流偏移 (Input Bitstream Offset)
位域 类型 默认值 描述
31:30 - - -
29:0 R/W 0x0000_0000 BIT_OFFSET

当前有效配置数据开始的位置,该位置是相对于INPUT_BS_START_ADDR计算的,以bit为单位。最大128MB,也就是说码流缓冲区最大128MB。

0x0C2C INPUT_BS_LENGTH

默认值:0x00000000 输入码流长度 (Input Bitstream Length)
位域 类型 默认值 描述
31:30 - - -
29:0 R/W 0x0000_0000 BIT_LENGTH

当前配置的有效数据长度,以bit为单位

0x0C30 OUTPUT_BUF_ADDR

默认值:0x00000000 解码输出地址 (Output Buffer Address)
位域 类型 默认值 描述
31:0 R/W 0x000_0000 解码输出buffer地址

0x0C34 OUTPUT_MAX_LENGTH

默认值:0x00000000 解码输出缓存最大长度 (Output Buffer Max Length)
位域 类型 默认值 描述
31:0 R/W 0x000_0000 解码输出buffer最大长度,以byte为单位。当解码输出的长度大于OUTPUT_BUF_ADDR的时候,将会停止解码,防止越界访问内存

0x0C38 OUTPUT_COUNT

默认值:0x00000000 解码输出数据长度 (Output Data Count)
位域 类型 默认值 描述
31:0 RO 0x000_0000 解码输出到OUTPUT_BUF_ADDR的数据,以byte为单位的计数,启动解码后将从零开始计数

0x0C40 INFLATE_WINDOW_BUF_ADDR

默认值:0x00000000 LZ77 窗口缓存地址 (Inflate Window Buffer Address)
位域 类型 默认值 描述
31:10 R/W 0x000_0000

LZ77窗口buffer地址的高22bits

LZ77的DICT Buffer大小为32K Bytes

9:0 RO 0x00 LZ77窗口buffer地址

低10bits固定为0

0x0C44 PNG_PAL_BUF_ADDR

默认值:0x00000000 PNG索引色缓存地址 (PNG Pallete Buffer Address)
位域 类型 默认值 描述
31:10 R/W 0x000_0000 PNG索引色缓存buffer

地址的高22bits大小为图像宽

9:0 RO 0x00 LZ77窗口buffer地址

低10bits固定为0

0x0C48 DATA_VALID

默认值:0x00000000 输入码流数据有效标志 (Data Valid Flag)
位域 类型 默认值 描述
31 R/W 0x0 DATA_VALID

如果该位置1,则表示当前配置的码流数据已经有效写入原始码流缓冲区,VE可以预取码流数据到内部的缓冲区,等待启动解码;如果该位置0,则表示码流数据还没有正确写入原始码流缓冲区。

30:2 - - -
1 R/W 0x0 DATA_LAST

该位为1表示当前配置的数据是一个完整解码的最后一笔数据;该位为0则表示当前配置的数据不是一个完整解码的最后一笔数据,当前解码任务完成后需要硬件保持状态,待下笔数据配置后继续完成一个完整解码。

0 R/W 0x0 DATA_FIRST

该位为1表示当前配置的数据是一个完整解码的第一笔数据;该位为0则表示当前配置的数据不是一个完整解码的第一笔数据,当前解码任务需要承接前一次的解码继续完成一个完整解码。

0x0C4C PNG_PALETTE_ADDR

默认值:0x00000000 PNG 索引表地址 (PNG Palette Buffet Address)
位域 类型 默认值 描述
31:10 R/W 0x000_0000 PNG

调色板地址的高22bits

PNG调色板空间的大小为1K 调色板空间的大小为1K Bytes,按照索引顺序排列,包含A,R, G, B四个通道,总共可以索引256色

9:0 RO 0x00 PNG 调色板地址低10bits固定为0