[X]关闭
0

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

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

软件版本:VIVADO2017.4

操作系统:WIN7/WIN10 64bit

硬件平台:XILINX FPGA MK7160FA

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

8.1概述

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

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

8.2 GUI 界面设计 

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

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

      QT 的好处就在于跨平台性,在 Linux 下设计的界面文件工程,几乎可以不做改动直接搬到 WIN 下使用(本教程里面稍微做了些改动,具体请参考工程代码)。

       其中 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” 下面的文本框里面显示帧率和饱和度信息。


路过

雷人

握手

鲜花

鸡蛋

最新评论

本文作者
2019-11-4 15:09
  • 1
    粉丝
  • 4015
    阅读
  • 0
    回复

关注uisrc网络

扫描关注,了解最新资讯

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