华为 海思22AP10(SS524)H.265 编解码处理器用户指南
1.1
概述
22AP10
是针对多路高清
/
超高清(
1080p/4M/5M/4K
)
DVR
产品应用开发的新一代专
业
SoC
芯片。
22AP10
集成了
ARM Cortex-A7
四核处理器和性能强大的
图像分析工具
推理引擎,支持多种智能算法应用。同时,
22AP10
还集成了多路
MIPI D-PHY
接口输
入,突破了数字接口的视频输入性能瓶颈,提供两倍于前代产品的视频输入能力。另
外,
H.265
视频编解码引擎、视频图像处理的算法效果及性能得到了进一步提升。结
合丰富的外围设备及高速接口,该
SoC
芯片为客户产品提供了高性能、优异图像质量
的模拟高清
DVR
解决方案,广泛用于模拟高清
视频采集
市场。
1.2 应用场景
22AP10 的典型应用场景如 图 1-1 所示。
22AP10 的典型应用场景如 图 1-1 所示。
1.3
架构
1.3.1
概述
22AP10
芯片逻辑框图如
图
1-2
所示。
1.3.2
处理器内核
ARM Cortex A7
四核
@1.2GHz
● 32KB L1 I-Cache
,
32KB L1 D-Cache
● 256KB L2 Cache
●
支持 NEON/FPU
1.3.3
多协议视频编解码
● H.265 Main Profile, Level 5.0
编码
● H.265 Main Profile, Level 5.0
解码
● H.264 Baseline/Main/High Profile
,
Level 5.1
编码
● H.264 Baseline/Main/High Profile
,
Level 5.1
解码
● MJPEG/JPEG Baseline
编解码
1.3.4
视频编解码处理
● H.265/H.264&JPEG
多码流编解码性能:
−
4x1080p@30fps H.265/H.264
编码
+4xD1@30fps H.265/H.264
编码
+6x1080p@30fps H.265/H.264
解码
+4x1080p@2fps JPEG
编码
−
8x1080p@15fps H.265/H.264
编码
+8xD1@30fps H.265/H.264
编码
+12x1080p@15fps H.265/H.264
解码
+8x1080p@2fps JPEG
编码
●
支持
CBR/VBR/AVBR/CVBR/FIXQP/QPMAP/QVBR
七种码率控制模式
●
输出码率最高
20Mbps
●
支持感兴趣区域(
ROI
)编码
●
支持彩转灰编码
1.3.5 SVP
(
Smart Vision Processing
)
●
图像分析工具
推理引擎(
NNIE
)
−
支持多种
图像分析工具
−
1.0Tops
运算性能
−
支持完整的
API
和工具链
−
支持
图像分析
、目标检测
/
跟踪等多种应用
●
智能视觉引擎(
IVE
)
−
支持目标跟踪
●
矩阵运算单元(
MAU
)
−
支持单精度
/
半精度浮点
− 支持特征向量比对
1.3.6
视频与图形处理
●
支持
de-interlace
、锐化、
3D
去噪、动态对比度增强、马赛克处理等前、后处理
●
支持视频、图形输出抗闪烁处理
●
支持视频
1/15
~
16x
缩放
●
支持图形
1/2
~
2x
缩放
●
支持
4
个遮挡区域
●
支持
8
个区域
OSD
叠加
1.3.7
视频接口
●
视频输入接口
−
支持
4
个
MIPI D-PHY
接口
◼
MIPI0/1
支持
4
条
lane
◼
MIPI2/3
支持
2
条
lane
◼
支持
2*4lane
和
4*2lane
两种工作模式
◼
每条
lane
最高速率为
1.5Gbps
◼
支持单路输入或
2
路复用
/4
路复用输入
◼
可复用为
4
个
8bit BT.656
接口
−
每
2
个
BT.656
接口可组成
1
个
16bit BT.1120
接口
−
BT.656
和
BT.1120
均支持
148.5MHz
双沿采样
−
支持
16
个视频输入通道
−
支持
8
路在线视频缩放
−
支持同时输出原始图像和缩放后图像
−
最大输入性能:
8
路
1080p@30fps
(或相同数据量的
4M/5M/4K
图像)
●
视频输出接口
−
支持
1
个
HDMI 1.4b
高清输出接口,最大输出
4096x2160@30fps
−
支持
1
个
VGA
高清输出接口,最大输出
2560x1600@60fps
−
支持
1
个
BT.1120/BT.656
数字输出接口,最大输出能力分别为
1080p@60fps/1080p@30fps
−
支持
1
个
CVBS
标清输出接口,支持
PAL/NTSC
制式输出
−
支持
2
个独立高清输出通道(
DHD0
、
DHD1
)
◼
支持任意两个高清接口非同源显示
◼
DHD0
支持
16
画面分割
◼
DHD1
支持
16
画面分割
−
支持
1
个独立标清输出通道(
DSD0
)
−
支持
1
个
PIP
层,可与
DHD0
或
DHD1
叠加
−
支持
2
个
GUI
图形层,支持
ARGB1555
、
ARGB4444
或
ARGB8888
格式,
分别用于
DHD0
和
DHD1
−
支持
1
个特殊图形层,支持
CLUT2/CLUT4
,可绑定
DHD0
、
DHD1
或
DSD0
−
支持
1
个硬件鼠标层,格式为
ARGB1555
、
ARGB4444
或
ARGB8888
可配
置,最大分辨率为
256x256
1.3.8
音频接口
● 3
个单向
I
2
S/PCM
接口
−
2
个输入,支持
20
路复合输入
−
1
个输出,支持双声道输出
1.3.9
网络接口
●
1
个千兆以太网接口
−
支持
RGMII
、
RMII
两种接口模式
−
支持
10/100Mbit/s
半双工或全双工
−
支持
1000Mbit/s
全双工
−
支持
TSO
,降低
CPU
开销
● 1
个百兆以太网接口
−
集成
FE PHY
−
支持
10/100Mbit/s
半双工或全双工
−
支持
TSO
,降低
CPU
开销
1.3.10
安全引擎
●
支持
AES 128/192/256 bit
加解密算法
●
支持
RSA 2048/4096 bit
加解密算法
●
支持 SHA256/HMAC_SHA256
●
支持
OTP
,提供
28Kbit
用户可烧写空间
●
支持硬件真随机数发生器
●
支持安全启动
●
支持安全内存隔离
1.3.11
外围接口
●
支持
2
个
SATA3.0
接口
●
支持
3
个
USB 2.0 Host
接口
●
支持
5
个
UART
接口,其中
1
个支持
4
线
●
支持
2
个
SPI
接口
●
支持
1
个
IR
接口
●
支持
2
个
I
2
C
接口
●
支持多个
GPIO
接口
1.3.12
存储器接口
● 1
个
32bit DDR4/DDR3
接口
−
DDR4
最高时钟频率
1333MHz
−
DDR3
最高时钟频率
1066MHz
−
最大容量支持
3GB
● 1
个
SD/MMC
接口
−
支持
eMMC5.0
−
支持
HS400
(
150MHz
双沿)
−
支持
SDIO2.0
和
SDIO 3.0
−
支持
SD2.0
卡
● SPI NOR Flash/ SPI NAND Flash
接口
−
支持
2
个片选,可分别接不同类型的
Flash
−
对于
SPI NOR Flash
◼
支持
1
、
2
、
4
线模式
◼
支持
3Byte
、
4Byte
地址模式
◼
支持最大容量:
256MB
−
对于
SPI NAND Flash
◼
支持
SLC Flash
◼
支持
2KB/4KB
页大小
◼
支持
8/24bit ECC
(
ECC
以
1KB
为单位)
◼
支持最大容量:
2GB
1.3.13
独立供电
RTC
RTC
可通过电池独立供电
1.3.14
多种启动模式
●
支持从
BootROM
启动
●
支持从
SPI NOR Flash
启动
●
支持从
SPI NAND Flash
启动
●
支持从
eMMC
启动
1.3.15 SDK
●
支持
Linux SMP 32bit
●
提供多种协议的音频编解码库
●
提供
H.265/H.264
的高性能
PC
解码库
1.3.16
芯片物理规格
●
功耗
−
典型场景(
4
路
1080p@30fps
编码
+ 4
路
1080p@30fps
解码
+
图像分析方
法
智能算法)功耗:
3.3W
−
支持多级功耗控制
●
工作电压
−
内核电压为
0.9V
−
CPU
电压为
1.0V
−
IO
电压为
1.8V/3.3V
−
DDR4
接口电压为
1.2V
−
DDR3
接口电压为
1.5V
●
封装
−
RoHS
,
TFBGA
−
管脚间距:
0.8mm
−
封装大小:
19mmx19mm
−
工作温度:
0
°
C ~ 70
°
C
1.4
启动模式
1.4.1
概述
芯片中内置启动
ROM
(
BOOTROM
),芯片复位撤销后由
BOOTROM
开始执行启动
引导程序。
芯片支持安全启动和非安全启动两种启动模式,启动模式由
OTP
进行控制。
启动介质选择
支持从以下两种介质启动:
●
从
SPI NAND/NOR Flash
存储空间启动
●
从
eMMC
存储空间启动
烧写模式
芯片还可以通过串口来对启动介质进行烧写
(
升级
)
。
1.4.2
启动介质和对应的信号锁存值对应关系
当芯片上电复位时,启动介质由
SFC_EMMC_BOOT_MODE/FAST_BOOT_MODE/BOOT_SEL1/BOOT_SEL0
信号的
值决定。
说明:
说明:
●
BOOT_SEL0
信号为芯片管脚
GPIO1_2
的上电锁存值;
●
BOOT_SEL1
信号为芯片管脚
GPIO1_1
的上电锁存值;
●
FAST_BOOT_MODE
信号为芯片管脚
GPIO1_3
的上电锁存值。
●
SFC_EMMC_BOOT_MODE
信号为芯片管脚
GPIO1_4 的上电锁存值。
通过系统控制寄存器
SYSSTAT[11]
和
SYSSTAT[4:2]
可以获取当前的
SFC_EMMC_BOOT_MODE/FAST_BOOT_MODE/BOOT_SEL1/BOOT_SEL0
的状
态。请参考“系统”章节的
SYSSTAT
寄存器中的描述。
启动介质和这些信号的关系如
表
1-1
所示。
1.4.3
启动模式
芯片支持安全启动模式和非安全启动模式,安全启动模式和非安全启动模式由系统控
制寄存器
SYSSTAT[31]
的值来决定
(
此值来源于
OTP
中的安全启动标志位
)
。
●
在安全启动模式下,芯片将对
uBoot
进行验签。验签通过,则系统启动;验签不
通过,则系统不能启动。
●
非安全启动模式下,芯片不对
uBoot 进行验签。
2.1
封装与管脚分布
2.1.1
封装
22AP10
芯片采用
TFBGA
封装,封装尺寸为
19mm x 19mm
,管脚间距为
0.8mm
,
管脚总数为
424
个。详细封装请参见
图
2-1
~
图
2-4
,封装尺寸参数请参见
表 2-1
2.6
接口时序
2.6.1 DDR
接口时序
2.6.1.1
写操作时序
dqs_out
相对于
dq_out
的写操作时序
dqs_out
相对于
dq_out
的写操作时序的主要时序参数是
tDS
和
tDH
。
图
2-8 DDR3
中
dqs_out
相对于 dq_out 的写操作时序图
dqs_out
相对于
ck
的写操作时序
dqs_out
相对于
ck
的写操作时序。
DDR3
的时序如
图
2-9
所示。
图
2-9 DDR3
中
dqs_out
相对于 ck 的写操作时序图
CS
和
ADDR/CMD
相对于
ck
的写操作时序
CS
是
1T
信号,
ADDR/CMD
是
2T
信号,
CS
和
ADDR/CMD
相对于
ck
的写操作时序
如
图
2-10
和
图
2-11
所示。
图
2-10 CS
(
1T
信号)相对于 ck 的写操作时序图
2.6.1.2
读操作时序
命令和地址相对于
ck
的读操作时序
“命令和地址相对于
ck
的读操作时序”与“
CS
和
ADDR/CMD
相对于
ck
的写操作时
序
”相同。
dqs_in
相对于
dq_in
的读操作时序
dqs_in
相对于
dq_in
的读操作时序分为
DDR3/DDR4 SDRAM
输出时序和
DDRPHY
端
dqs_in
和
dq_in
时序。
对于
DDR SDRAM
输出时序,理想情况下,
DQS
和
ck
是同相位的,实际情况下,
DQS
相对于
CK
有
tDQSCK
的偏斜。
tDQSQ
是
dq
和
dqs
之间的抖动,是最晚有效
的
dq
相对于
dqs
的抖动,
tQHS
是最早有效的
dq
相对于
dqs
的抖动。
DDR3/DDR4 SDRAM
输出时序如
图
2-12
所示。
2.6.1.3
时序参数
DDR
接口时序满足
JEDEC
(
JESD79-3F
)标准协议,本文中描述的时序都是
DDR
PHY
侧输出的时序。
DDR3-2133 SDRAM
时钟参数如
表
2-24
和
表
2-25
所示。
表2-24 DDR3 时钟参数表
3.6 DMA
控制器
3.6.1
概述
DMA(Direct Memory Access)
是一种高速的数据传输操作,允许不通过
CPU
在外部设
备和存储器之间直接读写数据。
DMAC
(
DMA Controller
)直接在存储器和外设、外设
和外设、存储器和存储器之间进行数据传输,避免
CPU
干涉并减少了
CPU
中断处理
开销。
芯片只支持一个
DMAC
。
3.6.2
特点
DMAC
有如下特点:
●
提供
8
个
DMA
通道,每个通道可配置用于一种单向传输。
●
支持内存到内存、内存到外设、外设到内存之间的传输。
●
支持
DMA
链表传输。
●
支持通道优先级可配。
●
支持软件配置
DMA
请求。
●
支持
DMA BURST
长度软件可配。
●
支持
8bit
、
16bit
、
32bit
、
64bit
数据位宽方式传输。
●
各个通道均支持安全属性配置。
● 只支持小端模式。
3.6.3
功能描述
3.6.3.1
外设请求线
DMAC
的硬件请求和相应设备的对应关系如
表
3-9
所示。
表3-9 DMAC 外设硬件请求线编号说明
3.7
定时器
3.7.1
概述
Timer
模块主要实现定时、计数功能,可以供操作系统用作系统时钟,也可以供应用程
序用作定时和计数。系统提供
12
个
Timer
,其中
4
个仅支持安全
OS
访问。
3.7.2
特点
Timer
具有以下特点:
●
带可编程
8
位预分频器的
32bit/16bit
减法定时器
/
计数器。
●
计数时钟可配置:
主
SOC
子系统
Timer
的计数时钟可以选择为总线时钟(
50MHz
)或
3MHz
时钟。
●
支持
3
种计数模式:自由运行模式、周期模式和单次计数模式。
●
有
2
种载入计数初值的方法,分别通过
TIMERx_LOAD
和
TIMERx_BGLOAD
寄
存器实现。
● 当前的计数值可随时读取
●
当计数值减到
0
时会产生一个中断。
3.7.3
功能描述
Timer
基于一个
32bit/16bit
(可配置)减法计数器。计数器的值在每个计数时钟的上升
沿减
1
。当计数值递减到零,
Timer
将产生一个中断。
Timer
有以下
3
种计数模式:
●
自由运行模式
定时器持续计数,当计数值减到
0
时又自动回转到其最大值,并继续计数。当计
数长度为
32bit
时,最大值为
0xFFFF_FFFF
。当计数长度为
16bit
时,最大值为
0xFFFF
。在自由模式下,也可以载入计数值,并立即从载入值递减计数,但计到
0
时回转到其最大值。
●
周期模式
定时器持续计数,当计数值减到
0
时从
TIMERx_BGLOAD
寄存器中再次载入初
值并继续计数。
●
单次计数模式
向定时器中载入计数初值。当定时器的计数值减到
0
时就停止计数,直到重新被
载入新值且定时器处于使能状态,才再次开始计数。
每个
Timer
具有一个预分频计数器(
prescaler
),可将其工作时钟在
Timer
内部再次进
行
1
分频、
16
分频或
256
分频。进一步提高计数时钟频率的选择灵活性。
对定时器载入计数初值的方法如下:
●
通过写
TIMERx_LOAD
寄存器可对定时器载入计数初值。当定时器处于工作状态
时,如果向
TIMERx_LOAD
寄存器写入值,会导致定时器立刻从新值开始重新计
数。适用于所有计数模式。
●
通过写
TIMERx_BGLOAD
寄存器可以设定周期计数模式的计数周期。写该寄存
器不会立刻影响定时器的当前计数,定时器会继续计数直到计数值减到
0
。然后
载入
TIMERx_BGLOAD
寄存器中的新值开始计数。
3.7.4
工作方式
初始化
系统初始化时应对
Timer
进行初始化。初始化
TimerX
(
TimerX
中的“
X
”取值为
0~11)时应按以下步骤进行配置:
步骤
1
写
TIMERx_LOAD
寄存器,为
Timer
载入计数初值。
步骤
2
当需要
Timer
工作在周期计数模式下、且计数周期与载入
Timer
的计数初值不同时,
写
TIMERx_BGLOAD
寄存器,设置
Timer
的计数周期。
步骤
3
配置
SC_CTRL
寄存器,设置
Timer
的时钟使能信号的参考时钟。
步骤
4
配置
TIMERx_CONTROL
寄存器,设置
Timer
的计数模式、计数器长度、预分频因子
及中断屏蔽,同时启动
Timer
计数。
----
结束
中断处理
Timer
主要用于定时产生中断,因此
Timer
的中断处理主要是激活等待定时中断的进程。
操作步骤如下:
步骤
1
配置
TIMERx_INTCLR
寄存器,清除
Timer
中断。
步骤
2
激活等待该中断的进程,使其继续执行。
步骤
3
当所有等待该中断的进程完成或再次执行到等待中断的休眠状态时,恢复中断现场,
继续执行当前被中断的程序。
----
结束
时钟选择
每个
Timer
均有
2
种计数时钟可选择。下面以
Timer0
为例,时钟选择配置流程如下:
选择总线时钟进行计数的步骤如下:
步骤
1
配置系统控制器的
SC_CTRL
[timeren0ov]=1
。
步骤
2
初始化
Timer
,开始计数。
----
结束
选择
3MHz
时钟进行计数的步骤如下:
步骤
1
配置系统控制器的
SC_CTRL
[timeren0ov]=0
。
步骤
2
初始化
Timer
,开始计数。
----结束
3.7.5 Timer
寄存器概览
Timer
模块自有一组寄存器,每个
Timer
的寄存器除基址不相同外其他特性都相同。
● Timer0
基地址:
0x1100_0000
● Timer1
基地址:
0x1100_0020
● Timer2
基地址:
0x1100_1000
● Timer3
基地址:
0x1100_1020
● Timer4
基地址:
0x1100_2000
● Timer5
基地址:
0x1100_2020
● Timer6
基地址:
0x1100_3000
● Timer7
基地址:
0x1100_3020
● Sec_Timer0
基地址:
0x1100_4000
● Sec_Timer1
基地址:
0x1100_4020
● Sec_Timer2
基地址:
0x1100_5000
● Sec_Timer3
基地址:
0x1100_5020
14.1
概述
安全子系统支持以下安全特性:
●
支持硬件产生真随机数,产生的真随机数符合
SP800-22
的随机测试标准。
●
支持
OTP
(
One Time Programmable
),用户可用空间达
28Kbit
。
●
支持硬件对称加解密算法和
HASH
算法:
−
对称加解密算法
支持
AES128
、
AES192
、
AES256
,
AES
算法的实现符合
FIPS 197
标准。
AES
的工作模式符合
NIST special800-38a
标准。
−
HASH
算法
支持
SHA256
、
HMAC-SHA256
。
●
支持硬件非对称加解密算法,支持
RSA 2048/4096
,符合
PKCS#1 V1.5/2.1
标
准;
●
支持
JTAG
保护;
●
支持
KeyLadder
,用于一级密钥加解密管理,增加安全强度。
●
支持
ARM TrustZone
。
●
支持安全内存隔离。
●
支持安全启动。支持
bootloader
的签名校验和加解密。