PNG 寄存器描述
0x0100 INFLATE_INT
默认值:0x00000000 |
Inflate 中断使能 (Inflate Interrupt Enable) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:3 |
- |
- |
- |
2 |
R/W |
0x0 |
BIT_REQ_INT_EN 请求 bitsteam 中断控制
DEC_REQ_INT_EN 用于控制解码所需要的原始码流不够需要请求下笔数据时是否向 CPU 发出中断请求。 当 DEC_REQ_INT_EN 为 1 时,产生中断请求,否则不产生中断请求。是否产生中断请求,不影响相应状态标志位的产生。 |
1 |
R/W |
0x0 |
DEC_ERR_INT_EN 解码 error 中断控制
DEC_ERR_INT_EN 用于控制解码发生错误结束后是否向 CPU 发出中断请求。 当 DEC_ERR_INT_EN 为 1 时,产生中断请求,否则不产生中断请求。是否产生中断请求,不影响相应状态标志位的产生。 |
0 |
R/W |
0x0 |
DEC_FINISH_INIT 解码结束中断控制
DEC_FINISH_INT_EN 用于控制正常解码结束后是否向 CPU 发出中断请求。当 DEC_FINISH_INT_EN 为 1 时,产生中断请求,否则不产生中断请求。是否产生中断请求,不影响相应状态标志位的产生。 |
0x0104 INFLATE_STATUS
默认值:0x00000000 |
Inflate 解码状态 (Inflate Status) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:5 |
- |
- |
- |
4 |
R |
0x0 |
ERROR
|
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 则清除相应中断。 |
默认值:0x00000000 |
Inflate 解码状态 (Inflate Status) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:24 |
- |
- |
- |
23:22 |
R |
0x0 |
DEFILTER_ERR
|
21:19 |
R |
0x0 |
WDMA_ERR 写 DMA 出错 |
18:15 |
R |
0x0 |
RDMA_ERR 读 DMA 出错 |
14:11 |
R |
0x0 |
LZ77_ERR LZ77 解码 error
|
10:8 |
R |
0x0 |
HUFF_ERR huffman 解码 error
|
7:5 |
R |
0x0 |
PC_ERR PNG 文件头解码错误
|
4 |
R |
0x0 |
OUT_BUF_OVERFLOW
|
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 则清除相应中断。 |
0x0108 INFLATE_START
默认值:0x00000006 |
Inflate 解码开始 (Inflate START) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:3 |
- |
- |
- |
2 |
R/W |
0x1 |
STOP_DMA_EN
|
1 |
R/W |
0x1 |
WAIT_DMA_EN
|
0 |
R/W |
0x0 |
START
写 1 会自动清零 |
0x010C PNG_ERROR_STATE
默认值:0x00000000 |
PNG 解码错误状态 (PNG Error State) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:3 |
- |
- |
- |
26 |
RO |
0x0 |
DEFILTER_ERR
|
25 |
RO |
0x0 |
INFLATE_ERR
|
24 |
RO |
0x0 |
BS_LAST_ERR
|
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 模块当前所处状态 |
0x0110 INFLATE_CTRL
默认值:0x00000600 |
Inflate 解码控制 (Inflate Control) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:13 |
- |
- |
- |
12:11 |
R/W |
0x0 |
BIT_DEPTH 位宽 0: 8 bits 当 COLOR_TYPE 为 3 时的索引位宽, 只支持 8 bits。 |
10:8 |
R/W |
0x6 |
COLOR_TYPE 格式类型
|
7:4 |
- |
- |
- |
3:2 |
R/W |
0x0 |
CHECK_FUNCTION
当 CHECK_FUNCTION 为 1 时,Inflate 解码同时输出 ADLER32 校验值,当 CHECK_FUNCTION 为 2 时,Inflate 解码同时输出 CRC32 校验值 |
1:0 |
R/W |
0x0 |
DEC_TYPE_FLAG 解码类型标记
当解码类型为 Inflate and pngdefilter,需要设置 PNG 相关参数。 |
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 图片宽度 |
0x0118 PNG_OUTPUT_STRIDE
默认值:0x00000000 |
PNG 输出线宽 (PNG Line Stride) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:15 |
- |
- |
- |
14:0 |
R /W |
0x0 |
STRIDE PNG 输出对齐 |
0x011C PNG_OUTPUT_FORMAT
默认值:0x00000000 |
PNG 解码输出颜色格式 (PNG Output Format) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:6 |
- |
- |
- |
5 |
R/W |
0x0 |
LINEBUF_EN
|
4 |
R/W |
0x0 |
DEFILTER_TYPE_CHECK_EN
|
3 |
R/W |
0x0 |
PNG8_PALETTE_BYPASS
|
2:0 |
R/W |
0x0 |
OUTPUT_FORMAT
PNG8、PNG24 和 PNG32 都可以设置以上任意像素格式:
|
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 |
0x0124 INPUT_BS_END_ADDR
默认值:0x0000000F |
输入码流结束地址 (Input Bitstream End Address) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:4 |
R/W |
0x000_0000 |
INPUT_BS_END_ADDR[31:4] 原始码流缓冲区结束位置 |
3:0 |
RO |
0xF |
固定为全 1 |
0x0128 INPUT_BS_OFFSET
默认值:0x00000000 |
输入码流偏移 (Input Bitstream Offset) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:30 |
- |
- |
- |
29:0 |
R/W |
0x0000_0000 |
BIT_OFFSET 当前有效配置数据开始的位置,该位置是相对于 ADDR 计算的,以 bit 为单位。最大 128 MB,即码流缓冲区最大 128 MB。 |
0x012C INPUT_BS_LENGTH
默认值:0x00000000 |
输入码流长度 (Input Bitstream Length) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:30 |
- |
- |
- |
29:0 |
R/W |
0x0000_0000 |
BIT_LENGTH 当前配置的有效数据长度,以 bit 为单位。 |
0x0130 OUTPUT_BUF_ADDR
默认值:0x00000000 |
解码输出地址 (Output Buffer Address) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x000_0000 |
解码输出 buffer 地址 |
0x0134 OUTPUT_BUF_END_ADDR
默认值:0x00000000 |
解码输出缓存结束地址 (Output Buffer End Address) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x000_0000 |
解码输出 buffer 结束地址 |
0x0138 OUTPUT_COUNT
默认值:0x00000000 |
解码输出数据长度 (Output Data Count) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
RO |
0x000_0000 |
解码输出到 OUTPUT_BUF_ADDR 的数据,以 byte 为单位的计数,启动解码后将从零开始计数。 |
0x013C INFLATE_CHECK
默认值:0x00000000 |
解码输出数据校验码 (Inflate CheckSum) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
RO |
0x000_0000 |
当打开 Inflate 解码校验功能时候,解码结束后,可以从此寄存器读取 ADLER32 或者 CRC32 校验值。 |
0x0140 INFLATE_WINDOW_BUF_ADDR
默认值:0x00000000 |
LZ77 窗口缓存地址 (Inflate Window Buffer Address) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:3 |
R/W |
0x000_0000 |
LZ77 窗口 buffer 地址的高 29 bits LZ77 的 DICT Buffer 大小为 32K bytes。 |
2:0 |
RO |
0x00 |
LZ77 窗口 buffer 地址低 3 bits 固定为 0。 |
0x0144 PNG_PAL_BUF_ADDR
默认值:0x00000000 |
PNG 索引色缓存地址 (PNG Pallete Buffer Address) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:3 |
R/W |
0x000_0000 |
PNG 索引色缓存 buffer 地址的高 29 bits。 |
2:0 |
RO |
0x00 |
缓存 buffer 地址低 3 bits 固定为 0。 |
- 索引色图片解码时,需要使用该 buffer 缓存上一行索引数据 (index),buffer 大小为图像宽。
- 图像 crop 输出时,需要使用该 buffer 缓存上一行的像素数据 (RGB/ RGBA),buffer 大小为图像宽 * 4 (RGBA) 或图像宽 * 3 (RGB)。
- 当图像宽小于或等于 1024 时,可以开启 0x11c 寄存器的 linebuf_en 位,使能内部 SRAM 用于 存放缓存数据,此时不会使用 PNG_PAL_BUF 配置的地址。
- 当图像大于 1024 时,内部 SRAM 不够用, 此时必须配置 PNG_PAL_BUF 地址,将数据缓存于外部 DRAM。
0x0148 DATA_VALID
默认值:0x00000000 |
输入码流数据有效标志 (Data Valid Flag) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31 |
R/W |
0x0 |
DATA_VALID
|
30:2 |
- |
- |
- |
1 |
R/W |
0x0 |
DATA_LAST
|
0 |
R/W |
0x0 |
DATA_FIRST
|
0x014C PNG_PALETTE_ADDR
默认值:0x00000000 |
PNG 索引表地址 (PNG Palette Buffet Address) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:3 |
R/W |
0x000_0000 |
PNG 调色板地址的高29bits PNG 调色板空间的大小为 1K 调色板空间的大小为 1K bytes,按照索引顺序排列,包含 A、R、G 和 B 四个通道,总共可以索引 256 色。 |
2:0 |
RO |
0x00 |
PNG 调色板地址低 3 bits 固定为 0。 |
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 坐标(以像素为单位) |
0x0164 PNG_CROP_SIZE
默认值:0x00000000 |
PNG CROP 的窗口大小 (Png Crop Size) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31 |
R/W |
0x0 |
CROP_ENCROP 功能使能 |
30:29 |
- |
- |
- |
28:16 |
R/W |
0x0 |
CROP_SIZE_X 图片 CROP 窗口的宽(以像素为单位) |
15:13 |
- |
- |
- |
12:0 |
R/W |
0x0 |
CROP_SIZE_Y 图片 CROP 窗口的高(以像素为单位) |