PPU 寄存器块(Planar Processing Unit)

基址CORE_BASE + 0x6000 | 地址范围0x6000 ~ 0x6FFF

来源:RK3588 TRM §36.4.3 Detail Registers Description

PPU 负责池化运算,支持平均池化、最大池化、最小池化,可与 DPU 流水线级联或独立 flying 模式运行。


RKNN_ppu_s_status(0x6000)

执行器状态寄存器(只读)。

Bit属性复位值字段名描述
31:18RO0x0保留
17:16RO0x0status_1执行器 1 状态。0:空闲;1:正在执行;2:正在执行且等待执行;3:保留
15:2RO0x0保留
1:0RO0x0status_0执行器 0 状态。编码同 status_1

RKNN_ppu_s_pointer(0x6004)

寄存器组指针与 ping-pong 控制。

Bit属性复位值字段名描述
31:17RO0x0保留
16RO0x0executer当前使用的寄存器组。0:组 0;1:组 1
15:6RO0x0保留
5W1C0x0executer_pp_clear清除执行器组指针,写 1 清零
4W1C0x0pointer_pp_clear清除寄存器组指针,写 1 清零
3RW0x0pointer_pp_modePing-pong 模式。0:按执行器切换;1:按指针切换
2RW0x0executer_pp_en执行器组 ping-pong 使能
1RW0x0pointer_pp_en寄存器组 ping-pong 使能
0RW0x0pointer当前待设置的寄存器组。0:组 0;1:组 1

RKNN_ppu_operation_enable(0x6008)

操作使能。写入触发 PPU 执行,此寄存器及之后均为 ping-pong 影子寄存器。

Bit属性复位值字段名描述
31:1RO0x0保留
0RW0x0op_enPPU 操作使能。0:禁用;1:使能

RKNN_ppu_data_cube_in_width(0x600C)

池化输入 cube 宽度。

Bit属性复位值字段名描述
31:13RO0x0保留
12:0RW0x0cube_in_width池化输入宽度(需减 1)

RKNN_ppu_data_cube_in_height(0x6010)

池化输入 cube 高度。

Bit属性复位值字段名描述
31:13RO0x0保留
12:0RW0x0cube_in_height池化输入高度(需减 1)

RKNN_ppu_data_cube_in_channel(0x6014)

池化输入 cube 通道数。

Bit属性复位值字段名描述
31:13RO0x0保留
12:0RW0x0cube_in_channel池化输入通道数(需减 1)

RKNN_ppu_data_cube_out_width(0x6018)

池化输出 cube 宽度。

Bit属性复位值字段名描述
31:13RO0x0保留
12:0RW0x0cube_out_width池化输出宽度(需减 1)

RKNN_ppu_data_cube_out_height(0x601C)

池化输出 cube 高度。

Bit属性复位值字段名描述
31:13RO0x0保留
12:0RW0x0cube_out_height池化输出高度(需减 1)

RKNN_ppu_data_cube_out_channel(0x6020)

池化输出 cube 通道数。

Bit属性复位值字段名描述
31:13RO0x0保留
12:0RW0x0cube_out_channel池化输出通道数(需减 1)

RKNN_ppu_operation_mode_cfg(0x6024)

操作模式配置:池化方法、flying mode、notch、索引输出。

Bit属性复位值字段名描述
31RO0x0保留
30RW0x0index_en使能输出每个 kernel 的位置索引
29RO0x0保留
28:16RW0x0notch_addr宽度末尾到 shape 行末的像素数
15:8RO0x0保留
7:5RW0x0use_cntuse_cnt
4RW0x0flying_mode池化 cube 来源。0:DPU;1:外部
3:2RO0x0保留
1:0RW0x0pooling_method池化方法。0:平均池化;1:最大池化;2:最小池化;3:保留

RKNN_ppu_pooling_kernel_cfg(0x6034)

池化 kernel 大小与步长。

Bit属性复位值字段名描述
31:24RO0x0保留
23:20RW0x0kernel_stride_heightKernel 步长高度(需减 1)
19:16RW0x0kernel_stride_widthKernel 步长宽度(需减 1)
15:12RO0x0保留
11:8RW0x0kernel_heightKernel 高度(需减 1)
7:4RO0x0保留
3:0RW0x0kernel_widthKernel 宽度(需减 1)

RKNN_ppu_recip_kernel_width(0x6038)

Kernel 宽度倒数(用于平均池化计算)。

Bit属性复位值字段名描述
31:17RO0x0保留
16:0RW0x0recip_kernel_widthShape kernel 宽度的倒数 × 2^16

RKNN_ppu_recip_kernel_height(0x603C)

Kernel 高度倒数。

Bit属性复位值字段名描述
31:17RO0x0保留
16:0RW0x0recip_kernel_heightShape kernel 高度的倒数 × 2^16

RKNN_ppu_pooling_padding_cfg(0x6040)

池化四边 padding。

Bit属性复位值字段名描述
31:15RO0x0保留
14:12RW0x0pad_bottom底部 pad
11RO0x0保留
10:8RW0x0pad_right右侧 pad
7RO0x0保留
6:4RW0x0pad_top顶部 pad
3RO0x0保留
2:0RW0x0pad_left左侧 pad

RKNN_ppu_padding_value_1_cfg(0x6044)

Pad 填充值低 32 位。

Bit属性复位值字段名描述
31:0RW0x0pad_value_0pad_value×1 [31:0]

RKNN_ppu_padding_value_2_cfg(0x6048)

Pad 填充值高 3 位。

Bit属性复位值字段名描述
31:3RO0x0保留
2:0RW0x0pad_value_1pad_value×1 [34:32]

RKNN_ppu_dst_base_addr(0x6070)

输出 cube 目标基址。

Bit属性复位值字段名描述
31:4RW0x0dst_base_addr输出 cube 目标基址
3:0RO0x0保留

RKNN_ppu_dst_surf_stride(0x607C)

输出 surface 步长。

Bit属性复位值字段名描述
31:4RW0x0dst_surf_stride输出 shape 面积
3:0RO0x0保留

RKNN_ppu_data_format(0x6084)

数据格式配置。

Bit属性复位值字段名描述
31:4RW0x0index_addindex_en 使能,值为 dst_surface_stride × cube surface 数(每 surface 8 字节),否则等于 dst_surface_stride
3RW0x0dpu_flyin数据来自 DPU 且 DPU 数据来自外部时置 1
2:0RW0x0proc_precision处理精度

RKNN_ppu_misc_ctrl(0x60DC)

杂项控制:非对齐模式、多 surface 输出、burst。

Bit属性复位值字段名描述
31:16RW0x0surf_lenSurface 计数长度
15:9RO0x0保留
8RW0x0mc_surf_out多 surface 输出使能
7RW0x0nonalign非对齐模式使能
6:4RO0x0保留
3:0RW0x0burst_lenBurst 长度。3:Burst4;7:Burst8;15:Burst16