admin 管理员组文章数量: 1184232
2023年12月23日发(作者:可以用来制作网页的软件有哪些)
H264_Lite 使用说明
H264 Lite
高清视频编解码(codec)器使用说明
———
Fully RTL Code Design
1 / 16
H264_Lite 使用说明
目 录
1.
2.
3.
4.
5.
5.1.
5.2.
6.
6.1.
6.2.
6.3.
6.3.1.
6.3.2.
6.4.
7.
8.
8.1.
8.2.
8.3.
8.4.
9.
10.
功能介绍 ..................................................................................................................................... 3
IP
特色 ......................................................................................................................................... 3
应用场景 ..................................................................................................................................... 3
本“使用说明”作用 .................................................................................................................. 3
主要功能 ..................................................................................................................................... 4
编码器功能 ............................................................................................................................. 4
解码器功能 ............................................................................................................................. 4
主要硬件指标 ............................................................................................................................. 5
编解码效率
(单核) ............................................................................................................ 5
面积 ......................................................................................................................................... 5
编解码带宽需求 ..................................................................................................................... 5
编码模式带宽需求 ............................................................................................................. 5
解码模式带宽需求 ............................................................................................................. 5
综合速度 ................................................................................................................................. 5
设计结构框图 ............................................................................................................................. 6
接口信号时序 ............................................................................................................................. 7
寄存器配置接口时序 ............................................................................................................. 7
DMA读写访问时序 ................................................................................................................ 7
中断信号时序 ......................................................................................................................... 7
软件复位 ................................................................................................................................. 7
配置寄存器 ................................................................................................................................. 8
原始帧数据在外部存储器(DDR)的格式 .............................................................................. 10
10.1.
亮度(Y)数据 ........................................................................................................................... 10
10.2.
亮度数据在内存的字节序 ................................................................................................... 11
10.3.
色度(UV)数据: .................................................................................................................... 11
10.4.
色度数据在内存的字节序 ................................................................................................... 12
10.5.
以1920X1088的图像为例: ................................................................................................ 12
11.
软件控制流程(参考) ....................................................................................................... 13
11.1.
编码器软件控制流程 ........................................................................................................... 13
11.2.
H264标准相关寄存器推荐配置(编码模式有效) .......................................................... 14
11.3.
解码器软件控制流程 ........................................................................................................... 15
12.
13.
设计交付 ............................................................................................................................... 16
FPGA综合结果 ...................................................................................................................... 16
2 / 16
H264_Lite 使用说明
1. 功能介绍
H264_Lite视频编解码器(encoder&decoder)由硬件描述语言verilog实现,此设计经过FPGA EDA工具编译后可集成于可编程逻辑器件(FPGA)平台;也可以使用Synopsys
Design Compiler综合后作为ASIC芯片的IP核使用。该视频编码器输出码流完全符合H.264视频编码标准;解码器能解码H264_Lite自己编码的码流。
该设计针对硬件面积,编码帧率,综合频率做了设计结构上的优化。
该设计对FPGA实现做了特别的时序优化,在Xilinx Zynq7020上可以综合到150MHZ,单核就能够实现1080P@30fps的FPGA应用场景,双核可以实现1080P@60fps的应用场景,三核可以实现4K@30fps的应用场景。
2. IP 特色
编解码帧率高:1080P30理论编解码最低时钟频率是110MHZ
硬件面积小:在zynq7020上,单核只占50%的逻辑资源
延时低:1080P30时,编码器硬件延时在1ms以内
码率控制:可以按MB为单位调整QP,码率更平滑
超高清图像支持:最大编解码图像尺寸为3840x2160
超长GOP支持:最大可以256帧才编码一个I frame,削减码流带宽高峰,仍保持优秀的容错性
编码器,解码器集成在一起,共享硬件逻辑,面积更小
误码控制:针对无线传输(如wifi,微波等)等不保证数据完整性的场合,做了特殊处理,如无人机应用
3. 应用场景
无人机航拍,图传
行车记录仪
网络摄像机(IP Camera)
……
4. 本“使用说明”作用
本说明书描述此编码器的用户接口及该设计的使用方法,方便用户的前期评估。
3 / 16
H264_Lite 使用说明
5. 主要功能
5.1. 编码器功能
H264 main profile level5.2
Maximal encoder/decoder frame size: 3840 x 2160
Support any frame size that x/y size is integer times of 16
1920x1088P@30fps clock frequency:110MHz(CAVLC)/130MHZ(CABAC)
Low CPU MIPS requirement: just configure some registers for each frame
I/P frame support
ME search range : X∈[-31, 32], Y∈[-23, 24]
1/4 sub-pixel interpolation support
Me full search algorithm
Intra_16x16 predict mode support
CAVLC/CABAC entropy bit stream
Input source is YUV 4:2:0 8bits resolution
Low latency encoding support, less than 1ms at 1080P30
5.2. 解码器功能
可以解码H264_Lite编码的码流。
注意:解码器功能不是H.264全标准兼容,只能解码H264_Lite自己编码的码流。
4 / 16
H264_Lite 使用说明
6. 主要硬件指标
6.1. 编解码效率 (单核)
1080P@30fps: 110MHZ(CAVLC)/130MHZ(CABAC)
720P@30fps: 50MHZ(CAVLC)/58MHZ(CABAC)
6.2. 面积
ASIC: About 1.5M gate, including SRAM area
FPGA: About 7.0K Slices (each slice has 4 LUTs and 8 DFFs) and 41 Block RAMs
on Xilinx Zynq7020 FPGA
6.3. 编解码带宽需求
6.3.1. 编码模式带宽需求
I frame: About 1.1 ~ 1.2倍原始帧带宽
P frame: About 5.5 ~ 5.8倍原始帧带宽
注:不含原始帧写入memory的带宽
6.3.2. 解码模式带宽需求
I frame: About 1.1 ~ 1.2倍原始帧带宽
P frame: About 4.2 ~ 4.5倍原始帧带宽
6.4. 综合速度
ASIC: TSMC 0.13um: 250MHZ(CAVLC); 220MHZ(CABAC)
Xilinx Zynq7020: 166MHZ(CAVLC); 150MHZ(CABAC)
注:在Xilinx 7系列fpga使用时,如果频率超过135MHZ,需要把Implementation的策略设置为:Performance_NetDelay_High。
5 / 16
H264_Lite 使用说明
7. 设计结构框图
axi_lite(cfg regs)master_axi_0master_axi_1frm_lcnt_capH264_Liteclkrstncore_int
1) clk: core运行的时钟;axi_lite/master_axi_0/master_lite_1/frm_lcnt_cap 都运行在这个时钟域。
2) rstn: core的异步复位信号;axi_lite/master_axi_0/master_lite_1 也用这个信号进行异步复位。
3) axi_lite: 这组信号对内部寄存器进行访问。
4) axi_master_0/axi_master_1: 访问内存的总线;读取原始图像;读取参考帧图像;写入重建图像;写入编码码流。
5) enc_int:core的中断信号,每编码(解码)一帧,一次中断。可以软件写寄存器“0E”清0;在软件启动新的一帧时也会自动清0。
6) frm_lcnt_cap:这个输入只有在编码器低延时模式下才有用。表示前端抓图模块已经往DDR里面写入多少行原始图像数据。如果是1080P格式,在一帧抓图结束后,这个值应该置1088。
6 / 16
H264_Lite 使用说明
8. 接口信号时序
8.1. 寄存器配置接口时序
配置寄存器接口:axi_lite,与AXI_Lite协议完全兼容;数据位宽是32bits。有些配置寄存器是16 bit位宽,但是占用4 Byte的地址空间。
具体访问时序,请参考AMBA AXI协议:AMBA® AXI Protocol Version: 2.0 “AXI4-Lite”章节。
8.2. DMA读写访问时序
读写图像数据,读写编码码流接口:master_axi_0/master_axi_1,与AXI4 协议完全兼容;数据位宽是32bits, 最大burst长度是32(arlen/awlen最大取值是0x1F)。
具体访问时序,请参考AMBA AXI协议:AMBA® AXI Protocol Version: 2.0。
注意:在跟Zynq HP口对接时,请使用AXI协议转换器IP,把H264_lite出来的AXI4协议转换为AXI3协议。
8.3. 中断信号时序
enc_int为编解码器中断输出,高电平有效。编解码完成一帧后变成高电平(1’b1),等软件往寄存器0E写0x00后,变低电平(1’b0)。
8.4. 软件复位
“rstn”是整个IP的复位信号,低有效。
在编码过程中,IP会正常结束每帧的编码。基本不需要软件控制这个复位信号。
在解码过程中,如果码流本身就是错误的(比如码流在传输,存储过程中发生错误,该帧码流本来就是一帧错误的码流),则IP可能无法正常结束一帧的解码,一直不给解码结束中断。这时需要软件做个timer,通常计时到50ms~80ms,如果启动解码后超时,则需要软件复位整个H264_Lite IP。
7 / 16
H264_Lite 使用说明
9. 配置寄存器
accaddr bit name
ess
00
0 enc_start r/w 软件写1开始一帧编码(解码)。
r
r
Reserved。
Reserved。
decription
15:1 NA
1:0 enc_type
3:2 NA
4
5
01
6
7
8
cavlc_mode
NA
low_latency_en
enc_mode
enc_str_swap
r/w 编码(解码)帧类型。2: I frame; 0: P frame
r/w 1:编码器模式;0:解码器模式.
0:码流写入DDR时:str[31:0]; 1:码流写入r/w DDR时:{str[7:0], str[15:8], str[23:16],
str[31:24]}.
r/w 0:CABAC模式;1:CAVLC模式。
r
r/w
r
r/w
Reserved。
1:使用编码器低延时模式。这个时候需要使用h264_lite的输入“frm_lcnt_cap”。
Reserved。 15:9 NA
02 15:0 enc_frm_width
03 15:0 enc_frm_height
7:0 enc_qp
R/W 编码(解码)图像的x-dir尺寸。例:1080P写:1920。
编码(解码)图像的y-dir尺寸。例:1080Pr/w 写:1088. 注意:图像的x/y size必须是16的整数倍。
r/w 编码(解码)帧Luma QP值,取值范围[12,50]。
r/w
r/w
r/w
r/w
编码(解码)帧Chroma QP相对于Luma QP的偏移。有符号数,取值:[-7,7]。
此寄存器用于编码slice header的"frame_num"语法,取值:[0,255]。
此寄存器用于编码slice header的"pic_order_cnt_lsb"语法,取值:[0,255]。
此寄存器用于编码slice header的"idr_pic_id"语法,取值:[0,7]。
编码原始图像在memory的起始位置,需要1K
原始帧的实际起始地址是:byte对齐的地址,dma_src_base*1024 Byte。空间大小为:enc_frm_width*enc_frm_height*1.5。
04
15:8
enc_ch_qp_offset
05
06
07
15:0 enc_frm_num
15:0 enc_frm_cnt_lsb
15:0 enc_frm_idrid
08 15:0 dma_src_base r/w
8 / 16
H264_Lite 使用说明
09 15:0 dma_lpf_base r/w
0A 15:0 dma_ref_base r/w
0B 15:0 dma_str_base r/w
0C
0D
0E
0F
10
15:0 enc_str_len_l
15:0 enc_str_len_h
0 enc_int
r/w
编码(解码)重建图像(用作下一帧的参考帧图像)在memory的起始位置,需要1K byte对齐的地址,重建图像的实际起始地址是:dma_lpf_base*1024 Byte。空间大小为:enc_frm_width*enc_frm_height*2。
编码(解码)P帧时,参考帧图像在memory的起始位置,需要1K byte对齐的地址,参dma_ref_base*1024
考帧的实际起始地址是:Byte。空间大小为:enc_frm_width*enc_frm_height*2。
编码(解码)码流在memory的起始位置,需要1K byte对齐的地址,码流的实际起始地址是:dma_str_base*1024 Byte。建议空间大小为:enc_frm_width*enc_frm_height*2。
编码(解码)码流的长度(byte)低16 bits。解码模式时,"enc_str_len"需要是2的整数倍(对齐到偶数byte长度)。
r/w 编码(解码)码流的长度(byte)高16 bits。
r/w 读取中断标志;写1'b0清除中断标志。
r
r
r/w
Reserved。
版本号,0x0028。测试版为:0x1234。
软件解码Header(SPS,PPS,slice_header)用掉的码流的bit数目。取值范围[0, 1023]。
15:1 NA
15:0 enc_version
15:0 dec_head_bnum
9 / 16
H264_Lite 使用说明
10.原始帧数据在外部存储器(DDR)的格式
编码器只支持YUV 4:2:0,8bits解析度的图像。如果是RGB输入,需要在前面加图像格式转换器,转换为YUV 4:2:0的格式。
原始帧图像按照光栅扫描的顺序,从左到右,从上到下的存储在连续的空间。图像的每行数据之间没有地址空隙,亮度(Y)数据跟色度数据(UV)之间没有地址空隙。首先从寄存器“dma_src_base”指向的地址开始按行存储亮度数据。UV数据按像素点混合在一起,紧接着色度数据,按行存储。
10.1. 亮度(Y)数据
如图所示:
h-4h-3h-2h-1y 亮度数据基地址:dma_src_lu_base = dma_src_base*1024。
Y(0,0)存放在:dma_src_lu_base地址
Y(0,1)存放在:dma_src_lu_base+1地址
Y(0, w-1)存放在:dma_src_lu_base+(enc_frm_width-1)地址
Y(1, 0)存放在:dma_src_lu_base+enc_frm_width地址
10 / 16
H264_Lite 使用说明
10.2. 亮度数据在内存的字节序
如果按32bits往内存写入亮度数据,其字节序如下:
241680addr_0Y024Y116Y28Y30addr_4Y4Y5Y6Y7
如果按64bits往内存写入亮度数据,其字节序如下:
56484032241680addr_0Y456Y548Y640Y732Y024Y116Y28Y30addr_8Y12Y13Y14Y15Y8Y9Y10Y11
10.3. 色度(UV)数据:
w/2-2w/2-1xVUVUVUVUVUVUVUV 色度数据基地址:dma_src_ch_base = dma_src_base*1024+ (enc_frm_width*
enc_frm_height)。
U(0,0)存放在:dma_src_ch_base地址
V(0,0)存放在:dma_src_ch_base+1地址
U(0,1)存放在:dma_src_ch_base+2地址
11 / 16
0123..h/2-2h/2-1y
如图所示:
H264_Lite 使用说明
V(0,1)存放在:dma_src_ch_base+3地址
U(0, w/2-1)存放在:dma_src_ch_base+(enc_frm_width-2)地址
V(0, w/2-1)存放在:dma_src_ch_base+(enc_frm_width-1)地址
U(1, 0)存放在:dma_src_ch_base+enc_frm_width地址
V(1, 0)存放在:dma_src_ch_base+enc_frm_width+1地址
10.4. 色度数据在内存的字节序
如果按32bits往内存写入色度数据,其字节序如下:
241680addr_0U024V016U18V10addr_4U2V2U3V3
如果按32bits往内存写入色度数据,其字节序如下:
56484032241680addr_0U256V248U340V332U024V016U18V10addr_8U6V6U7V7U4V4U5V5
10.5. 以1920x1088的图像为例:
1) 图像的Y(0,0)点存放在dma_src_base*1024地址;Y(0,1919)存放在dma_src_base*1024+0x77F地址;Y(1,0)存放在dma_src_base*1024+0x780地址;Y(1,1919)存放在dma_src_base*1024+0xEFF地址;Y(1087,0)存放在dma_src_base*1024+0x1FD880地址;Y(1087,1919)存放在dma_src_base*1024+0x1FDFFF地址。
2) 图像的U(0,0)存放在dma_src_base*1024+0x1FE000, V(0,0)存放在dma_src_base*1024+0x1FE001;U(0,1)存放在dma_src_base*1024+0x1FE002,
V(0,1)存放在dma_src_base*1024+0x1FE003;U(0,959)存放在dma_src_base*1024+0x1FE77E, V(0,959)存放在dma_src_base*1024+0x1FE77F;U(1,0)存放在dma_src_base*1024+0x1FE800, V(1,0)存放在dma_src_base*1024+0x1FE801;U(543,959)存放在dma_src_base*1024+0x2FCFFE,
V(543,959)存放在dma_src_base*1024+0x2FCFFF。
12 / 16
H264_Lite 使用说明
11.软件控制流程(参考)
11.1. 编码器软件控制流程
开始原始图像准备好NoYes配置寄存器:01~0B配置寄存器00写:0x01配置寄存器00写:0x00收到编码中断NoYes读寄存器0C/0D寄存器0E写0x00清除中断,从Memory读走编码码流
13 / 16
H264_Lite 使用说明
11.2. H264标准相关寄存器推荐配置(编码模式有效)
enc_frm_idrid: 第一个I frame时,取值为0, 以后每编码一个I frame,值增加1,在0~7之间循环。
enc_frm_num:编码I frame时,取值为0,以后每编码一帧,值增加1,最大取值255。所以每256帧必须编码一个I frame。
enc_frm_cnt_lsb:编码I frame时,取值为0,以后每编码一帧,值增加1,最大取值255。
例(N <=256):
1) 第0帧编码I frame:enc_type =2; enc_frm_num =0; enc_frm_cnt_lsb = 0;
enc_frm_idrid = 0;
2) 第1帧编码P frame: enc_type =0; enc_frm_num =1; enc_frm_cnt_lsb = 1;
enc_frm_idrid = 0;
3) 第2帧编码P frame: enc_type =0; enc_frm_num =2; enc_frm_cnt_lsb = 2;
enc_frm_idrid = 0;
...
4) 第N-1帧编码P frame: enc_type =0; enc_frm_num =N-1; enc_frm_cnt_lsb =
N-1; enc_frm_idrid = 0;
5) 第N帧编码I frame: enc_type =2; enc_frm_num =0; enc_frm_cnt_lsb = 0;
enc_frm_idrid = 1;
6) 第N+1帧编码P frame: enc_type =0; enc_frm_num =1; enc_frm_cnt_lsb = 1;
enc_frm_idrid = 1;
...
7) 第2N-1帧编码P frame: enc_type =0; enc_frm_num =N-1; enc_frm_cnt_lsb
= N-1; enc_frm_idrid = 1;
8) 第3N帧编码I frame: enc_type =2; enc_frm_num =0; enc_frm_cnt_lsb = 0;
enc_frm_idrid = 2;
...
14 / 16
H264_Lite 使用说明
11.3. 解码器软件控制流程
开始解码码流准备好NoYes软件解码PPS/SPS/Slice
Header配置寄存器:01~04,
09~0D,10配置寄存器00写:0x01配置寄存器00写:0x00收到解码中断NoYes寄存器0E写0x00清除中断,从Memory读走解码图像
15 / 16
H264_Lite 使用说明
12. 设计交付
1)
2)
3)
4)
5)
编码器C语言模型的可执行文件(Win32 EXE),编码效果评估
DCP(Xilinx) or EDIF (Altera)
RTL代码
RTL仿真的参考环境,基于Modelsim
技术支持,协助系统仿真,整合与调试
注:可以免费提供C语言模型的可执行文件。
13. FPGA综合结果
H264_Lite Area (Xilinx Zynq 7020)
stage
Synthesis
Synthesis
Synthesis
Synthesis
Config
CAVLC(enc)
CAVLC(enc+dec)
CABAC(enc)
CABAC(enc+dec)
DFFs
28474
29983
30143
32650
Luts
21510
23637
24037
28144
BRAMs
34
35
38
41
DSP48s
12
12
13
13
16 / 16
版权声明:本文标题:H.264编码器解码器IP使用说明_4K Main Profile 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1703301654a446080.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论