H264 ENCODER RTL V2.0仿真教程
-
-
Download the H264 Video Encoder RTL IP Core V2.0
-
解压后将得到四个文件夹, 其中“
sw
”用于产生测试向量,“sim
”是仿真文件,“rtl
”是IP Core的所有代码,“lib
”是memory行为级模型
-
进入“
sw
”文件夹中,通过命令行修改参数,示例如下:
f264.exe -i BlowingBubbles_416x240_50.yuv -o BlowingBubbles_416x240_50.264 -r BlowingBubbles_416x240_50_rec.yuv -w 416 -h 240 -g 5 -f 10 -q 27
其中,
-i
:待编码的YUV文件位置
-o
:输出码流文件位置
-r
:输出重建帧位置
-w
:YUV序列宽
-h
:YUV序列高
-g
:GOP长度
-f
:编码帧数
-q
:QP值 -
在windows下执行
f264.exe
文件,运行结果如下:
除了码流文件和重建帧文件外,还将产生cur_mb_p4.dat
和bs_check.dat
两个文件。前者作为硬件编码器的YUV输入,后者作为软硬件交叉验证的测试输入。
将上述两个文件放到“/sim/top_testbench/tv
”下。 -
修改“
tb_top.v
”中的参数,确保与软件参数一致,示例如下:
`define FRAMEWIDTH 416
`define FRAMEHEIGHT 240
`define GOP_LENGTH 5
`define FRAME_TOTAL 100
`define INIT_QP 27
根据需要,可以打开“tb_top.v
”中的dump开关。 -
运行仿真,命令行输入“
vsim -c -do sim.do
”,仿真正确应如下图所示:
若软硬件参数不一致或出现其他bug,仿真会停止,如下:
-
-
@KAol bs_check.dat对应到H264标准中,是什么格式。bs_check.dat是如何转成BlowingBubbles_416x240_50.264, 不仅仅是加上sps,pps,slice_header这些吧,将BlowingBubbles_416x240_50.264第一个mb的编码结果提取出来,感觉跟bs_check.dat没有什么关系。也就是说,如何将bs_check.dat转成图片,进行可视化?
-
@yafei 我也有这个疑问。这个问题解决了吗?麻烦问下有没有将码流转换成 NAL 包的软件啊?谢谢!
-
@KAol 您好,有成功仿真,非常感謝!也有想請教的地方是,我有嘗試使用JM來進行編碼,但發現使用此encoder(V2.0)的結果與JM編碼結果有差異,想詢問會是有哪些原因?謝謝!
-
@KAol 我有个小疑问,执行f264.exe 后面参数 -f 给了10。 但是tb_top.v这个文件确实`define FRAME_TOTAL 100。这个地方是不是没有完全匹配上?
-
@Jett 应该是两者统一就好了,不然仿真会报错