DPU 寄存器块(Data Processing Unit)

基址CORE_BASE + 0x4000 | 地址范围0x4000 ~ 0x4FFF

来源:RK3588 TRM §36.4.3 Detail Registers Description

DPU 负责后处理运算,包含三级流水线核心:BS CORE(Bias/Scale)→ BN CORE(Batch Norm)→ EW CORE(Element-Wise),以及输出转换器、LUT 引擎、转置/重组等功能。


RKNN_dpu_s_status(0x4000)

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

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

RKNN_dpu_s_pointer(0x4004)

寄存器组指针与 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_dpu_operation_enable(0x4008)

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

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

RKNN_dpu_feature_mode_cfg(0x400C)

特征模式配置:flying mode、输出目标、卷积模式、burst、非对齐、转置、重组。

Bit属性复位值字段名描述
31RW0x0comb_use组合使用,同 DPU_RDMA comb_use[0]
30RW0x0tp_en转置使能
29:26RW0x0rgp_type重组类型。0:全部 128bit;1:4bit;2:8bit;3:16bit;4:32bit;5:64bit
25RW0x0nonalign非对齐模式使能(输出数据流与输入相同时可用)
24:9RW0x0surf_len非对齐模式下存储的 8 字节数
8:5RW0x0burst_lenBurst 长度。3:Burst4;7:Burst8;15:Burst16
4:3RW0x0conv_mode卷积模式。0:普通卷积;3:Depthwise
2:1RW0x0output_mode输出目标。[0]:输出到 PPU;[1]:输出到外部
0RW0x0flying_modeFlying 模式。0:主数据来自卷积输出;1:主数据来自 MRDMA

RKNN_dpu_data_format(0x4010)

数据格式配置:输入/输出/处理精度、负数移位值。

Bit属性复位值字段名描述
31:29RW0x0out_precision输出精度。0:int8;1:int16;2:fp16;3:bf16;4:int32;5:fp32;6:int4
28:26RW0x0in_precision输入精度(同 DPU_RDMA)。编码同上
25:16RW0x0ew_truncate_negEW CORE 负数移位值
15:10RW0x0bn_mul_shift_value_negBN CORE 负数移位值
9:4RW0x0bs_mul_shift_value_negBS CORE 负数移位值
3RW0x0mc_surf_out多 surface 输出。0:每像素 16 字节对齐;1:可输出 2/4 surface 串行
2:0RW0x0proc_precision处理精度。编码同 out_precision

RKNN_dpu_offset_pend(0x4014)

额外通道填充值。

Bit属性复位值字段名描述
31:16RO0x0保留
15:0RW0x0offset_pend额外通道设置值

RKNN_dpu_dst_base_addr(0x4020)

目标基址。

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

RKNN_dpu_dst_surf_stride(0x4024)

输出 surface 步长。

Bit属性复位值字段名描述
31:4RW0x0dst_surf_stride输出 shape 的 surface 步长
3:0RO0x0保留

RKNN_dpu_data_cube_width(0x4030)

输入 cube 宽度。

Bit属性复位值字段名描述
31:13RO0x0保留
12:0RW0x0width输入 cube 宽度

RKNN_dpu_data_cube_height(0x4034)

输入 cube 高度 + minmax 控制。

Bit属性复位值字段名描述
31:25RO0x0保留
24:22RW0x0minmax_ctlMinMax 配置。[0]:使能;[1]:类型;[2]:仅概率
21:13RO0x0保留
12:0RW0x0height输入 cube 高度

RKNN_dpu_data_cube_notch_addr(0x4038)

Notch 地址(宽度末尾到 shape 行末的像素数)。

Bit属性复位值字段名描述
31:29RO0x0保留
28:16RW0x0notch_addr_1Notch 地址 1
15:13RO0x0保留
12:0RW0x0notch_addr_0Notch 地址 0

RKNN_dpu_data_cube_channel(0x403C)

输入 cube 通道数。

Bit属性复位值字段名描述
31:29RO0x0保留
28:16RW0x0orig_channel原始输出通道数
15:13RO0x0保留
12:0RW0x0channelCube 通道数

RKNN_dpu_bs_cfg(0x4040)

BS CORE 配置:ALU 算法、操作数来源、ReLU/PRELU/RELUX 控制。

Bit属性复位值字段名描述
31:20RO0x0保留
19:16RW0x0bs_alu_algoBS ALU 运算类型。2:Add;4:Minus
15:9RO0x0保留
8RW0x0bs_alu_srcALU 操作数来源。0:寄存器;1:外部
7RW0x0bs_relux_enRELUX 使能
6RW0x0bs_relu_bypass旁路 BS RELU。0:不旁路;1:旁路
5RW0x0bs_mul_preluMUL PRELU 使能
4RW0x0bs_mul_bypass旁路 BS MUL
3:2RO0x0保留
1RW0x0bs_alu_bypass旁路 BS ALU
0RW0x0bs_bypass旁路整个 BS CORE

RKNN_dpu_bs_alu_cfg(0x4044)

BS ALU 操作数。

Bit属性复位值字段名描述
31:0RW0x0bs_alu_operandBS CORE ALU 操作数

RKNN_dpu_bs_mul_cfg(0x4048)

BS MUL 配置:操作数、移位值、来源。

Bit属性复位值字段名描述
31:16RW0x0bs_mul_operandBS MUL 操作数
15:14RO0x0保留
13:8RW0x0bs_mul_shift_valueBS 正数移位值
7:2RO0x0保留
1RW0x0bs_truncate_src移位值来源。0:寄存器;1:外部
0RW0x0bs_mul_srcMUL 操作数来源。0:寄存器;1:外部

RKNN_dpu_bs_relux_cmp_value(0x404C)

BS RELUX 比较值。

Bit属性复位值字段名描述
31:0RW0x0bs_relux_cmp_datRELUX 比较值

RKNN_dpu_bs_ow_cfg(0x4050)

BS OW(CPEND)配置 + 重组计数器 + 转置。

Bit属性复位值字段名描述
31:28RW0x0rgp_cnter重组计数器。0:全选;1:每 2 选 1;2:每 4 选 1;3:每 8 选 1
27RW0x0tp_org_en原始转置使能
26:11RO0x0保留
10:8RW0x0size_e_2最后一行输出每行 8 通道数(−1)
7:5RW0x0size_e_1中间行输出每行 8 通道数(−1)
4:2RW0x0size_e_0第一行输出每行 8 通道数(−1)
1RW0x0od_bypass旁路 CPEND
0RW0x0ow_srcCPEND 操作数来源。0:寄存器;1:外部

RKNN_dpu_bs_ow_op(0x4054)

CPEND 操作数。

Bit属性复位值字段名描述
31:16RO0x0保留
15:0RW0x0ow_opCPEND 操作数

RKNN_dpu_wdma_size_0(0x4058)

DPU WDMA 尺寸 0:转置精度、通道。

Bit属性复位值字段名描述
31:28RO0x0保留
27RW0x0tp_precision转置精度。0:8bit;1:16bit
26:16RW0x0size_c_wdmaWDMA 的 size_c
15:13RO0x0保留
12:0RW0x0channel_wdmaWDMA 通道数

RKNN_dpu_wdma_size_1(0x405C)

DPU WDMA 尺寸 1:宽高。

Bit属性复位值字段名描述
31:29RO0x0保留
28:16RW0x0height_wdmaWDMA 高度
15:13RO0x0保留
12:0RW0x0width_wdmaWDMA 宽度

RKNN_dpu_bn_cfg(0x4060)

BN CORE 配置:ALU 算法、操作数来源、ReLU/PRELU/RELUX 控制。

Bit属性复位值字段名描述
31:20RO0x0保留
19:16RW0x0bn_alu_algoBN ALU 运算类型。2:Add;4:Minus
15:9RO0x0保留
8RW0x0bn_alu_srcALU 操作数来源。0:寄存器;1:外部
7RW0x0bn_relux_enRELUX 使能
6RW0x0bn_relu_bypass旁路 BN RELU
5RW0x0bn_mul_preluMUL PRELU 使能
4RW0x0bn_mul_bypass旁路 BN MUL
3:2RO0x0保留
1RW0x0bn_alu_bypass旁路 BN ALU
0RW0x0bn_bypass旁路整个 BN CORE

RKNN_dpu_bn_alu_cfg(0x4064)

BN ALU 操作数。

Bit属性复位值字段名描述
31:0RW0x0bn_alu_operandBN CORE ALU 操作数

RKNN_dpu_bn_mul_cfg(0x4068)

BN MUL 配置。

Bit属性复位值字段名描述
31:16RW0x0bn_mul_operandBN MUL 操作数
15:14RO0x0保留
13:8RW0x0bn_mul_shift_valueBN 正数移位值
7:2RO0x0保留
1RW0x0bn_truncate_src移位值来源。0:寄存器;1:外部
0RW0x0bn_mul_srcMUL 操作数来源。0:寄存器;1:外部

RKNN_dpu_bn_relux_cmp_value(0x406C)

BN RELUX 比较值。

Bit属性复位值字段名描述
31:0RW0x0bn_relux_cmp_datBN RELUX 比较数据

RKNN_dpu_ew_cfg(0x4070)

EW CORE 配置:ALU 算法(Max/Min/Add/Div/Minus/Abs/Neg/Floor/Ceil)、LUT、转换器、PRELU 等。

Bit属性复位值字段名描述
31RW0x0ew_cvt_typeEW 输入转换类型。0:先乘后加;1:先加后乘
30RW0x0ew_cvt_roundEW 输入转换舍入。0:奇入偶不入;1:0.5 向上进 1
29:28RW0x0ew_data_modeERDMA 数据模式
27:24RO0x0保留
23:22RW0x0edata_sizeERDMA cube 数据大小。0:4bit;1:8bit;2:16bit;3:32bit
21RW0x0ew_equal_enMinMax 相等使能
20RW0x0ew_binary_enMinMax 二值使能
19:16RW0x0ew_alu_algoEW ALU 运算。0:Max;1:Min;2:Add;3:Div;4:Minus;5:Abs;6:Neg;7:Floor;8:Ceil
15:11RO0x0保留
10RW0x0ew_relux_enRELUX 使能
9RW0x0ew_relu_bypass旁路 EW RELU
8RW0x0ew_op_cvt_bypass旁路 EW 输入转换器
7RW0x0ew_lut_bypass旁路 LUT
6RW0x0ew_op_src操作数来源。0:寄存器;1:外部
5RW0x0ew_mul_preluMUL PRELU 使能
4:3RO0x0保留
2RW0x0ew_op_type运算类型。0:ALU;1:MUL
1RW0x0ew_op_bypass旁路 EW ALU 和 MUL
0RW0x0ew_bypass旁路整个 EW CORE

RKNN_dpu_ew_cvt_offset_value(0x4074)

EW 输入转换偏移。

Bit属性复位值字段名描述
31:0RW0x0ew_op_cvt_offsetEW 转换偏移

RKNN_dpu_ew_cvt_scale_value(0x4078)

EW 转换缩放与移位。

Bit属性复位值字段名描述
31:22RW0x0ew_truncateEW CORE 移位值
21:16RW0x0ew_op_cvt_shiftEW 转换移位值
15:0RW0x0ew_op_cvt_scaleEW 转换缩放

RKNN_dpu_ew_relux_cmp_value(0x407C)

EW RELUX 比较值。

Bit属性复位值字段名描述
31:0RW0x0ew_relux_cmp_datEW RELUX 比较数据

RKNN_dpu_out_cvt_offset(0x4080)

输出转换偏移。

Bit属性复位值字段名描述
31:0RW0x0out_cvt_offset输出转换器偏移

RKNN_dpu_out_cvt_scale(0x4084)

输出转换缩放 + fp32→fp16 使能。

Bit属性复位值字段名描述
31:17RO0x0保留
16RW0x0fp32tofp16_en使能输出 fp32→fp16 转换
15:0RW0x0out_cvt_scale输出转换器缩放

RKNN_dpu_out_cvt_shift(0x4088)

输出转换移位、舍入、指数。

Bit属性复位值字段名描述
31RW0x0cvt_type输出转换类型。0:先乘后加;1:先加后乘
30RW0x0cvt_round输出转换舍入。0:奇入偶不入;1:0.5 向上进 1
29:20RO0x0保留
19:12RW0x0minus_exp输出 CVT 减指数
11:0RW0x0out_cvt_shift输出转换器移位

RKNN_dpu_ew_op_value_0~7(0x4090 ~ 0x40AC)

EW CORE 操作数寄存器,共 8 个,偏移 0x4090 + N×4(N = 0~7)。

Bit属性复位值字段名描述
31:0RW0x0ew_operand_N第 N+1 个 EW 操作数

RKNN_dpu_surface_add(0x40C0)

Surface 加法器。

Bit属性复位值字段名描述
31:4RW0x0surf_add一行中有多少个 surface
3:0RO0x0保留

RKNN_dpu_lut_access_cfg(0x4100)

LUT 访问配置。

Bit属性复位值字段名描述
31:18RO0x0保留
17RW0x0lut_access_type访问类型。0:读;1:写
16RW0x0lut_table_id访问 ID。0:LE LUT;1:LO LUT
15:10RO0x0保留
9:0RW0x0lut_addr访问地址

RKNN_dpu_lut_access_data(0x4104)

LUT 访问数据。

Bit属性复位值字段名描述
31:16RO0x0保留
15:0RW0x0lut_access_dataLUT 访问数据

RKNN_dpu_lut_cfg(0x4108)

LUT 配置。

Bit属性复位值字段名描述
31:8RO0x0保留
7RW0x0lut_cal_selLUT 计算选择(仅 lut_expand_en=1 时有效)
6RW0x0lut_hybrid_priority混合流优先级。0:LE LUT;1:LO LUT
5RW0x0lut_oflow_priority上溢优先级。0:LE;1:LO
4RW0x0lut_uflow_priority下溢优先级。0:LE;1:LO
3:2RW0x0lut_lo_le_muxLO/LE LUT 复用
1RW0x0lut_expand_en扩展两个小 LUT 为一个大 LUT
0RW0x0lut_road_selLUT 路径选择。0:第 1 路;1:第 2 路

RKNN_dpu_lut_info(0x410C)

LUT 索引选择。

Bit属性复位值字段名描述
31:24RO0x0保留
23:16RW0x0lut_lo_index_selectLO LUT 索引选择(索引生成器中选择哪些位作为索引)
15:8RW0x0lut_le_index_selectLE LUT 索引选择
7:0RO0x0保留

RKNN_dpu_lut_le_start(0x4110)

Bit属性复位值字段名描述
31:0RW0x0lut_le_startLE LUT 起始点

RKNN_dpu_lut_le_end(0x4114)

Bit属性复位值字段名描述
31:0RW0x0lut_le_endLE LUT 终止点

RKNN_dpu_lut_lo_start(0x4118)

Bit属性复位值字段名描述
31:0RW0x0lut_lo_startLO LUT 起始点

RKNN_dpu_lut_lo_end(0x411C)

Bit属性复位值字段名描述
31:0RW0x0lut_lo_endLO LUT 终止点

RKNN_dpu_lut_le_slope_scale(0x4120)

LE LUT 斜率缩放(上溢/下溢)。

Bit属性复位值字段名描述
31:16RW0x0lut_le_slope_oflow_scaleLE LUT 上溢斜率缩放
15:0RW0x0lut_le_slope_uflow_scaleLE LUT 下溢斜率缩放

RKNN_dpu_lut_le_slope_shift(0x4124)

LE LUT 斜率移位。

Bit属性复位值字段名描述
31:10RO0x0保留
9:5RW0x0lut_le_slope_oflow_shiftLE LUT 上溢斜率移位
4:0RW0x0lut_le_slope_uflow_shiftLE LUT 下溢斜率移位

RKNN_dpu_lut_lo_slope_scale(0x4128)

LO LUT 斜率缩放。

Bit属性复位值字段名描述
31:16RW0x0lut_lo_slope_oflow_scaleLO LUT 上溢斜率缩放
15:0RW0x0lut_lo_slope_uflow_scaleLO LUT 下溢斜率缩放

RKNN_dpu_lut_lo_slope_shift(0x412C)

LO LUT 斜率移位。

Bit属性复位值字段名描述
31:10RO0x0保留
9:5RW0x0lut_lo_slope_oflow_shiftLO LUT 上溢斜率移位
4:0RW0x0lut_lo_slope_uflow_shiftLO LUT 下溢斜率移位