关灯
请选择 进入手机版 | 继续访问电脑版
米联客uisrc 首页 2019版本 Zynq-Soc 6|PCIE通信 查看内容
0

(LINUX)S06-CH08 使用QT5进行传图GUI设计(基于VDMA)

摘要: 前面课程介绍了在FPGA端搭建XDMA,DDR3,VDMA视频处理系统的硬件设计,以及对应的上位机终端软件设计,但是终端软件毕竟不够直观,尤其是针对视频图像应用来说,因此设计一个GUI界面显得很有必要。由于是在Linux操作 ...

软件版本:VIVADO2017.4

操作系统:Ubuntu16.4 64bit

硬件平台:适用米联客 ZYNQ系列开发板

米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!!

8.1概述

       前面课程介绍了在FPGA端搭建XDMA,DDR3,VDMA视频处理系统的硬件设计,以及对应的上位机终端软件设计,但是终端软件毕竟不够直观,尤其是针对视频图像应用来说,因此设计一个GUI界面显得很有必要。由于是在Linux操作系统下,QT可以说是最好的GUI界面库了,这一课时就主要介绍在Ubuntu下使用QT库以及QT Creator工具来设计GUI界面,并且与XDMA进行通信,实现PCIE测速,图像传输等功能。

      本教程里面传图测试方法是在主机里面选择一张图像,通过PCIE传输到FPGA DDR里面,MM2S VDMA则反复读取这个图像并发送给图像处理模块进行饱和度调节,之后图像再通过S2MM VDMA进入FPGA DDR,并且产生中断通知主机取数据,主机通过PCIE获取图像进行显示,然后修改饱和度设置,如此反复,就可以看见图像饱和度一直在进行调整状态。

8.2 GUI 界面设计 

      根据我们要实现的功能,主要就是测速和图像显示,因此需要一个区域来显示图像,我们使用 label 来做画布,往这上画图。针对测速,应该提供给用户要传输的数据大小,以及开始结束操作, 并且要显示出测速结果,选择传输大小,可以使用复选框,开始结束使用按钮,测速结果显示使 用文本编辑器。

      关于如何在QT Creator 里面设计界面,教程里面就不提了,因为网上有太多的资料可查了。下 面来展示一下我们最终的设计结果。

其中 Transfer Test 区域是进行测速的,Display 区域是进行图像选取和控制显示的,左侧一大 片区域是用来显示图像的。

8.3 QT 程序设计流程

       在设计完成界面之后,下面要做的事情就是针对各种操作响应实现。QT 是使用信号和槽函数 来进行界面响应的,主要软件设计任务就是实现对应的槽函数,关于这点,这里也不做过多的介 绍,网上资料很多。

       针对本教程里面的 QT 程序以及需要与 PCIE 进行通信的设计,做出以下两点主要说明: 

       第一:QT 界面用于图像的显示操作,而图像的获取过程是需要检查 S2MM VDMA 的中断信 号,在第二课时的设计里面采用了多线程的方式,即一个线程监测中断,另外一个线程来进行图 像获取操作,那么 QT 程序也参考这个结构,我们使用 QThread 同样来创建一个线程,这个线程的 工作就是监控中断,并且提供一个信号函数,与用于图像显示的槽函数相连接,当接收到中断以 后,发送信号给槽函数,槽函数获取图像进行显示。下面是中断监控线程主要代码

void event_thread::run()

{

    while(1)

    {

  wait_for_s2mm_intr();

  emit sig_inform_disp();

    }

}

      第二,将界面操作与底层操作分离,这可以说是软件设计的基本思路,为此,我们的参考设计 将所有关于底层的操作都封装在 pcie_func.c 里面,并提供接口给 QT 调用即可,这样做出来的设 计会显得很简洁,同时增加可移植性。

8.4 QT 软件测试

      下面进行软件测试操作,软件并没有自动加载驱动操作,所以用户需要首先手动加载 xdma 驱 动,然后打开软件程序。首先进行测速测试,读写操作可以同时测试也可以分别测试,每次测试 传输数据的大小可以随时更改,并且可以发现一次传输的数据量越大,性能越高。同时在后面的 文本框里面会出现测速结果。注意:测速不包括内存申请,内存是提前申请好的,不检测数据是 否正确,只是计量传输时间,然后根据传输大小和时间计算出速度,也就是说这个速度是包括除 了内存申请的应用程序开销,驱动开销,传输速度,FPGA 板级延迟因素。

 

下面进行传图测试,在传图测试过程中,可以打开测试功能,但是还是建议先停止测速功能。

点击“Select Pic”按钮,选择一张图像

      然后点击“PLAY”就可以看到饱和度一直变化的图像了,饱和度变化规律是先递增,再递减, 再递增,如此反复。在“Select Pic”下面的文本框里面显示当前图像的分辨率,在“PLAY/STOP” 下面的文本框里面显示帧率和饱和度信息。


路过

雷人

握手

鲜花

鸡蛋

说点什么...

已有0条评论

最新评论...

本文作者
2019-9-20 14:24
  • 6
    粉丝
  • 866
    阅读
  • 0
    回复

关注米联客

扫描关注,了解最新资讯

联系人:汤经理
电话:0519-80699907
EMAIL:270682667@qq.com
地址:常州溧阳市天目云谷3号楼北楼201B
热门评论
排行榜

关注我们:微信公众号

官方微信

官方微信

客服热线:

0519-80699907

公司地址:常州溧阳市天目云谷3号楼北楼2楼

运营中心:常州溧阳市天目云谷3号楼北楼2楼

邮编:213300 Email:270682667#qq.com

Copyright   ©2019-2026  米联客uisrc内容版权归©UISRC.COM技术支持:UISRC.COM  备案号:苏ICP备19046771号