9.3.8. PNG寄存器描述
9.3.8.1. 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时,产生中断请求,否则不产生中断
请求。是否产生中断请求,不影响相应状态标志位的产生。
|
9.3.8.2. 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则清除相应中断。
|
9.3.8.3. 0x0C08 INFLATE_START
默认值:0x00000000 |
Inflate 解码开始 (Inflate START) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:2 |
- |
- |
-
|
0 |
R/W |
0x0 |
START
0: 未开始解码
1: 开始解码
写“1”会自动清零
|
9.3.8.4. 0x0C10 INFLATE_CTRL
默认值:0x00000000 |
Inflate 解码控制 (Inflate Control) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:13 |
- |
- |
-
|
12:11 |
R/W |
0x0 |
BIT_DEPTH
位宽
0: 8 bits
只支持 8 bit
|
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 png
defilter,需要设置PNG相关参数
|
9.3.8.5. 0x0C14 PNG_SIZE
默认值:0x00000000 |
PNG 图像大小 (PNG Picture Size) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:29 |
- |
- |
-
|
28:16 |
R/W |
0x0 |
HEIGHT
PNG图片高度
|
15:13 |
- |
- |
-
|
12:0 |
WIDTH
PNG图片宽度
|
9.3.8.6. 0x0C18 PNG_OUTPUT_STRIDE
默认值:0x00000000 |
PNG 输出线宽 (PNG Line Stride) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:15 |
- |
- |
-
|
14:0 |
R /W |
0x0 |
STRIDE
PNG输出对齐
|
9.3.8.7. 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信息丢失。
|
9.3.8.8. 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
|
9.3.8.9. 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
|
9.3.8.10. 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。
|
9.3.8.11. 0x0C2C INPUT_BS_LENGTH
默认值:0x00000000 |
输入码流长度 (Input Bitstream Length) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:30 |
- |
- |
-
|
29:0 |
R/W |
0x0000_0000 |
BIT_LENGTH
当前配置的有效数据长度,以bit为单位
|
9.3.8.12. 0x0C30 OUTPUT_BUF_ADDR
默认值:0x00000000 |
解码输出地址 (Output Buffer Address) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x000_0000 |
解码输出buffer地址的高22bits
|
9.3.8.13. 0x0C34 OUTPUT_MAX_LENGTH
默认值:0x00000000 |
解码输出缓存最大长度 (Output Buffer Max Length) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x000_0000 |
解码输出buffer最大长度,以byte为单位。当解码输出的长度大于
OUTPUT_BUF_ADDR的时候,将会停止解码,防止越界访问内存
|
9.3.8.14. 0x0C38 OUTPUT_COUNT
默认值:0x00000000 |
解码输出数据长度 (Output Data Count) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
RO |
0x000_0000 |
解码输出到OUTPUT_BUF_ADDR的数据,以byte为单位的计数,
启动解码后将从零开始计数
|
9.3.8.15. 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
|
9.3.8.16. 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
|
9.3.8.17. 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则表示当前配置的数据不是一个完整解码的第一笔数据,
当前解码任务需要承接前一次的解码继续完成一个完整解码。
|
9.3.8.18. 0x0C4C PNG_PALETTE_ADDR
默认值:0x00000000 |
PNG 索引表地址 (PNG Palette Buffet Address) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:10 |
R/W |
0x000_0000 |
PNG调色板地址的高22bits
PNG调色板空间的大小为1K Bytes,按照索引顺序排列,包含
A,R, G, B四个通道,总共可以索引256色
|
9:0 |
RO |
0x00 |
PNG调色板地址低10bits固定为0
|