9.3.6. PNG寄存器描述
9.3.6.1. 0x0100 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时,产生中断请求,否则不产生中断 
请求。是否产生中断请求,不影响相应状态标志位的产生。 
 | 
9.3.6.2. 0x0104 INFLATE_STATUS
默认值:0x00000000  | 
Inflate 解码状态 (Inflate Status)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:5  | 
-  | 
-  | 
- 
 | 
4  | 
R  | 
0x0  | 
ERROR 
0: 解码正确 
1:解码出错,具体错误原因参考0x10C PNG_ERROR_STATE 寄存器 
 | 
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则清除相应中断。 
 | 
9.3.6.3. 0x0108 INFLATE_START
默认值:0x00000006  | 
Inflate 解码开始 (Inflate START)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:3  | 
-  | 
-  | 
- 
 | 
2  | 
R/W  | 
0x1  | 
STOP_DMA_EN 
0: PNG解码出错后,直接向CPU发送error中断,不等待dma数据请求完成 
1: PNG解码出错后,拦截dma数据请求后再向CPU发送error中断 
 | 
1  | 
R/W  | 
0x1  | 
WAIT_DMA_EN 
0: PNG解码出错后,直接向CPU发送error中断 
1: PNG解码出错后,等待256个cycle再向CPU发送error中断 
 | 
0  | 
R/W  | 
0x0  | 
START 
0: 未开始解码 
1: 开始解码 
写“1”会自动清零 
 | 
9.3.6.4. 0x010C PNG_ERROR_STATE
默认值:0x00000000  | 
PNG 解码错误状态 (PNG Error State)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:3  | 
-  | 
-  | 
- 
 | 
26  | 
RO  | 
0x0  | 
DEFILTER_ERR 
0: defilter 处理正确 
1: defilter 处理错误 
 | 
25  | 
RO  | 
0x0  | 
INFLATE_ERR 
0: inflate 解码正确 
1: inflate 解码错误 
 | 
24  | 
RO  | 
0x0  | 
BS_LAST_ERR 
0: 码流数据可以正确解码 
1: 码流数据不够导致出错 
 | 
23:16  | 
RO  | 
0x0  | 
DEFILTER_FSM_STATE 
defilter 模块当前所处状态 
 | 
15:8  | 
RO  | 
0x0  | 
INFLATE_BLOCK_NUM 
当前正在解码的 inflate 块序号 
 | 
7:4  | 
RO  | 
0x0  | 
INFLATE_ERROR_STATE 
inflate 解码出错状态 
 | 
3:0  | 
RO  | 
0x0  | 
INFLATE_FSM_STATE 
inflate 模块当前所处状态 
 | 
9.3.6.5. 0x0110 INFLATE_CTRL
默认值:0x00000000  | 
Inflate 解码控制 (Inflate Control)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:13  | 
-  | 
-  | 
- 
 | 
12:11  | 
R/W  | 
0x0  | 
BIT_DEPTH 
位宽 
0: 8 bits 
当COLOR_TYPE为3时的索引位宽,只支持 8bit 
 | 
10:8  | 
R/W  | 
0x6  | 
COLOR_TYPE 
格式类型 
0: reserved 
1: reserved 
2: PNG24 
3:索引彩色图像 
4: reserved 
5: reserved 
6: PNG32 
 | 
7:4  | 
-  | 
-  | 
- 
 | 
3:2  | 
R/W  | 
0x0  | 
CHECK_FUNCTION 
0: 无 
1: ADLER32 
2: CRC32 
当CHECK_FUNCTION为1时,Inflate解码同时输出ADLER32校验值, 
当CHECK_FUNCTION为2时,Inflate解码同时输出CRC32校验值 
 | 
1:0  | 
R/W  | 
0x0  | 
DEC_TYPE_FLAG 
解码类型 
0: Inflate(gzip) 
1: Inflate and png defilter 
此标记用来指示解码类型,当解码类型为Inflate and png 
defilter,需要设置PNG相关参数 
 | 
9.3.6.6. 0x0114 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图片宽度 
 | 
9.3.6.7. 0x0118 PNG_OUTPUT_STRIDE
默认值:0x00000000  | 
PNG 输出线宽 (PNG Line Stride)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:15  | 
-  | 
-  | 
- 
 | 
14:0  | 
R /W  | 
0x0  | 
STRIDE 
PNG输出对齐 
 | 
9.3.6.8. 0x011C PNG_OUTPUT_FORMAT
默认值:0x00000000  | 
PNG解码输出颜色格式 (PNG Output Format)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:4  | 
-  | 
-  | 
- 
 | 
4  | 
R/W  | 
0x0  | 
DEFILTER_TYPE_CHECK_EN 
0: 检测到 defilter type 超出数值范围后不报错,继续解码 
1: 检测到 defilter type 超出数值范围后报错 
 | 
3  | 
R/W  | 
0x0  | 
PNG8_PALETTE_BYPASS 
0: PNG8解码得到索引值后,通过palette表索引得到最终的像素值 
1: PNG8解码得到索引值后直接输出,跳过palette表映射 
 | 
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设置无效 
 | 
9.3.6.9. 0x0120 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 
 | 
9.3.6.10. 0x0124 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 
 | 
9.3.6.11. 0x0128 INPUT_BS_OFFSET
默认值:0x00000000  | 
输入码流偏移 (Input Bitstream Offset)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:30  | 
-  | 
-  | 
- 
 | 
29:0  | 
R/W  | 
0x0000_0000  | 
BIT_OFFSET 
当前有效配置数据开始的位置,该位置是相对于 
INPUT_BS_START_ADDR计算的,以bit为单位。最大128MB, 
也就是说码流缓冲区最大128MB。 
 | 
9.3.6.12. 0x012C INPUT_BS_LENGTH
默认值:0x00000000  | 
输入码流长度 (Input Bitstream Length)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:30  | 
-  | 
-  | 
- 
 | 
29:0  | 
R/W  | 
0x0000_0000  | 
BIT_LENGTH 
当前配置的有效数据长度,以bit为单位 
 | 
9.3.6.13. 0x0130 OUTPUT_BUF_ADDR
默认值:0x00000000  | 
解码输出地址 (Output Buffer Address)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:0  | 
R/W  | 
0x000_0000  | 
解码输出buffer地址 
 | 
9.3.6.14. 0x0134 OUTPUT_BUF_END_ADDR
默认值:0x00000000  | 
解码输出缓存结束地址 (Output Buffer End Address)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:0  | 
R/W  | 
0x000_0000  | 
解码输出 buffer 结束地址 
 | 
9.3.6.15. 0x0138 OUTPUT_COUNT
默认值:0x00000000  | 
解码输出数据长度 (Output Data Count)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:0  | 
RO  | 
0x000_0000  | 
解码输出到OUTPUT_BUF_ADDR的数据,以byte为单位的计数, 
启动解码后将从零开始计数 
 | 
9.3.6.16. 0x013C INFLATE_CHECK
默认值:0x00000000  | 
解码输出数据校验码 (Inflate CheckSum)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:0  | 
RO  | 
0x000_0000  | 
当打开Inflate解码校验功能时候,解码结束后,可以从此寄存器 
读取ADLER32或者CRC32校验值 
 | 
9.3.6.17. 0x0140 INFLATE_WINDOW_BUF_ADDR
默认值:0x00000000  | 
LZ77 窗口缓存地址 (Inflate Window Buffer Address)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:3  | 
R/W  | 
0x000_0000  | 
LZ77窗口buffer地址的高29bits 
LZ77的DICT Buffer大小为32K Bytes 
 | 
2:0  | 
RO  | 
0x00  | 
LZ77窗口buffer地址低3bits固定为0 
 | 
9.3.6.18. 0x0144 PNG_PAL_BUF_ADDR
默认值:0x00000000  | 
PNG索引色缓存地址 (PNG Pallete Buffer Address)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:3  | 
R/W  | 
0x000_0000  | 
PNG索引色缓存buffer地址的高29bits 
 | 
2:0  | 
RO  | 
0x00  | 
缓存buffer地址低3bits固定为0 
 | 
备注
索引色缓存地址在以下两种情况下使用:
1)索引色图片解码时,需要使用该 buffer 缓存上一行索引数据(index),buffer 大小为图像宽;
2)图像 crop 输出时,需要使用该 buffer 缓存上一行的像素数据(RGB/RGBA),buffer 大小为图像宽*4(RGBA)或图像宽*3(RGB)
9.3.6.19. 0x0148 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则表示当前配置的数据不是一个完整解码的第一笔数据, 
当前解码任务需要承接前一次的解码继续完成一个完整解码。 
 | 
9.3.6.20. 0x014C PNG_PALETTE_ADDR
默认值:0x00000000  | 
PNG 索引表地址 (PNG Palette Buffet Address)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:3  | 
R/W  | 
0x000_0000  | 
PNG调色板地址的高29bits 
PNG调色板空间的大小为1K Bytes,按照索引顺序排列,包含 
A,R, G, B四个通道,总共可以索引256色 
 | 
2:0  | 
RO  | 
0x00  | 
PNG调色板地址低3bits固定为0 
 | 
9.3.6.21. 0x0160 PNG_CROP_BASE
默认值:0x00000000  | 
PNG CROP 的起始坐标 (Png Crop Base Position)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31:29  | 
-  | 
-  | 
- 
 | 
28:16  | 
R/W  | 
0x0  | 
CROP_BASE_X 
图片 CROP 输出的起始 x 坐标(以像素为单位) 
 | 
15:13  | 
-  | 
-  | 
- 
 | 
12:0  | 
R/W  | 
0x0  | 
CROP_BASE_Y 
图片 CROP 输出的起始 y 坐标(以像素为单位) 
 | 
9.3.6.22. 0x0164 PNG_CROP_SIZE
默认值:0x00000000  | 
PNG CROP 的窗口大小 (Png Crop Size)  | 
||
|---|---|---|---|
位域  | 
类型  | 
默认值  | 
描述  | 
31  | 
R/W  | 
0x0  | 
CROP_EN 
CROP 功能使能 
 | 
30:29  | 
-  | 
-  | 
- 
 | 
28:16  | 
R/W  | 
0x0  | 
CROP_SIZE_X 
图片 CROP 窗口的宽(以像素为单位) 
 | 
15:13  | 
-  | 
-  | 
- 
 | 
12:0  | 
R/W  | 
0x0  | 
CROP_SIZE_Y 
图片 CROP 窗口的高(以像素为单位) 
 |