FPGA实现MPEG2视频压缩PCIe传输 提供软硬件工程源码和技术支持

1、前言

MJPEG、MPEG2、MPEG4、H264 是流行且兼容性很高的 4 种视频编码格式。其中 MJPEG 对每帧独立进行 JPEG 图象压缩,而不利用帧间相关性,因此压缩效果较差。 MPEG2、MPEG4 和 H264 会进行帧间压缩,但后两者更复杂,效果也更好。MPEG2 虽然比较老 (1994年),但在低压缩率的条件下与 MPEG4 和 H264 没有明显劣势,因此 MPEG2 在高质量、低压缩率要求的应用场合仍然可堪一用。。。

PCIE(PCI Express)采用了目前业内流行的点对点串行连接,比起 PCI 以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到 PCI 所不能提供的高带宽,是目前各行业高速接口的优先选择方向,具有很高的实用价值和学习价值;

本设计使用Xilinx官方的XDMA方案搭建基于Xilinx系列FPGA的PCIE通信平台,该方案只适用于Xilinx系列FPGA,一并提供了XDMA的安装驱动和QT上位机源代码,省去了使用XDMA繁琐的驱动寻找和上位机软件开发的不知所措,并以搭建好vivado工程,省去了不知道如何使用XDMA的尴尬,使得PCIE的使用变得简单易上手,而不用关心其复杂的PCIE协议;由于我的开发板只支持PCIE X1,所以提供的代码是PCIE X1架构,若需要PCIE X1、 X2、 X8、 X16、 X32的朋友,可自行修改本工程,也可关注我,我会实时发布新的工程。

本文详细描述了FPGA基于XDMA搭建PCIE通信平台的设计方案,利用开发板逻辑资源大的特点,实现了MPEG2视频压缩后通过PCIe传输的功能试验;工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的高速接口领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

本设计与我之前写的PCIE工程区别在于,此XDMA的PCIE工程硬件和软件都运行于Linux系统,XDMA的驱动安装、API调用和应用软件都与运行于Windows系统的工程不一样,适用于运行在Linux系统的PCIE应用,当然,Windows系统的用户也可以参考,因为XDMA都是一样的,仅仅驱动安装不一样;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、MPEG2视频压缩实现

关于MPEG2视频压缩实现,我之前已经专门写过一篇文章,建议回头看看,一遍了解MPEG2视频压缩的实现原理和方法,文章链接:https://blog.csdn.net/qq_41667729/article/details/129998492

3、我已有的FPGA图像视频编解码方案

我的主页有FPGA图像视频编解码专栏,既有例如MPEG2、H264、H265等主流的视频编解码,也有JPEG、JPEG-LS、PNG等主流的图片编解码;全部采用FPGA硬件实现编解码加速;以下是专栏地址:https://blog.csdn.net/qq_41667729/category_12277772.html?spm=1001.2014.3001.5482

4、我已有的PCIE方案

我的主页有PCIE通信专栏,既有基于RIFFA实现的PCIE方案,也有基于XDMA实现的PCIE方案;既有简单的数据交互、测速,也有应用级别的图像采集传输,既有基于纯FPGA的PCIE工程,也有基于zynq架构的PCIE工程,以下是专栏地址:https://blog.csdn.net/qq_41667729/category_12252265.html?spm=1001.2014.3001.5482

5、MPEG2视频压缩PCIE传输设计方案

MPEG2视频压缩PCIE传输方案设计方案架构如下图:
在这里插入图片描述
设计共分两部分:FPGA设计和Linux软件设计;

FPGA硬件设计

MPEG2视频压缩:
采用systemverilog语言实现,属于为YUV422视频流,输出为256位宽的MPEG2视频流,可参考设计框图的箭头流向;在此基础上,将MPEG2视频压缩模块挂在于AXI4总线上,这里为AXI4从机,所以,MPEG2视频压缩最后的封装形式为AXI4接口,该接口可直接与XDMA对接交互;
PCIe:
直接调用官方的XDMA,由于我的板子只有PCIe X1的接口,所以将XDMA配置为X1模式,亦可配置为X2 X4 X8等其他模式;具体配置如下:
在这里插入图片描述
MPEG2视频压缩挂载AXI4接口后的顶层接口和例化部分如下如:
在这里插入图片描述
在这里插入图片描述

软件设计

直接调用XDMA官方API实现软件的功能,主函数xdma_mpeg2encode.c实现两个功能:
1:将.YUV格式文件发送到PCIe的发送端口,通过PCIe总线发送给FPGA板子,FPGA里面的XDMA接收后通过AXI4总线发送给MPEG2视频压缩作为视频输入;载入.YUV文件的功能子函数如图:
在这里插入图片描述
2:FPGA里面的MPEG2视频压缩收到输入视频后,实时的将视频压缩为MPEG2视频流,通过AXI4总线发送给XDMA,XDMA再通过PCIe总线发送给电脑,xdma_mpeg2encode.c的另一个功能就是接收MPEG2视频流,并将它转为.m2v格式的视频文件,该文件的视频可用VLC播放器播放;
读取MPEG2视频流的功能子函数如图:
在这里插入图片描述
至此,一个完整的FPGA实现MPEG2视频压缩PCIe传输的功能就搭建完成了。。。

6、Vivado工程详解

开发板FPGA型号:Xilinx–xc7vx690tffg1761-3;
开发环境:Vivado2019.1;
输入:软件程序喂入.YUV格式视频流;
输出:MPEG2视频流软件转为.m2v格式的视频文件;
应用:MPEG2视频压缩PCIe采集卡;

工程源码架构如下:
在这里插入图片描述
FPGA资源消耗和功耗预估如下:
在这里插入图片描述

7、Linux下的XDMA驱动安装

资料包里提供了XDMA驱动和驱动安装手册,可打开手册安装即可,位置如图:
在这里插入图片描述

8、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
在这里插入图片描述
3:如果你的vivado版本高于本工程vivado版本,解决如下:
在这里插入图片描述
打开工程后会发现IP都被锁住了,如下:
在这里插入图片描述
此时需要升级IP,操作如下:
在这里插入图片描述
在这里插入图片描述

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

9、上板调试验证

第一步:首先将FPGA板子插在电脑主板的PCIE插槽里,如下:
在这里插入图片描述
第二步:按照软件使用手册一步步执行命令即可,资料包里提供了MPEG2视频压缩运行软件和软件使用手册,按照软件使用手册一步步执行命令即可,位置如图:
在这里插入图片描述
第三步:执行完软件后,即可看到压缩后的MPEG2视频,然后用VLC播放器播放即可,生成的视频文件位置如图:
在这里插入图片描述
播放截图如下:
在这里插入图片描述

10、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:文章末尾的V名片。
网盘资料如下:
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9527华安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值