首页 > 系统相关 >05 QT上位机读写FPGA内存

05 QT上位机读写FPGA内存

时间:2023-12-30 18:45:31浏览次数:38  
标签:cnt QT FPGA 05 error unsigned QString str arg

软件版本:vitis2021.1(vivado2021.1)

操作系统:WIN10 64bit

硬件平台:适用XILINX A7/K7/Z7/ZU/KU系列FPGA

登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!

5.1概述

如果读者对于前面demo还有一些疑惑,那么本节课的内容,可以让你更加简单地弄明白什么是BAR地址空间操作,什么是对开发板DDR内存地址空间操作。如果你掌握了如何通过XDMA读写BAR地址空间和DMA 内存地址空间操作,那么基于XMDA的所有原理性设计都会变的so easy!

5.2系统框图

本系统中通过XDMA IP将开发板及PCIE上位机识别连接。AXI Interconnect IP通过使用AXI-FULL及AXI-LITE总线将XDMA与内存部分DDR或者Bram连接。通过PCIE上位机发出读写指令控制XDMA对开发板内存进行读写操作。

5.3FPGA 代码

FPGA可以用任何一个章节的,这里就用"03基于XDMA实现PCIE通信方案"的代码,简单。具体就不重复了,不清楚的可以看"03基于XDMA实现PCIE通信方案"相关部分教程内容。本方案中的上位机没有使用中断功能。

5.4上位机程序设计

以下代码中on_TestDDR_clicked是上是对AXI4接口的DDR或者BRAM测试。on_TestBAR_clicked是对用户的BAR空间测试。

void MainWindow::on_TestDDR_clicked()

 

{

    unsigned int buf1[1024];

    unsigned int buf2[1024];

    unsigned int i=0;

 

    unsigned int error_cnt =0;

 

    for(i=0;i<1024;i++)

    {

        buf1[i]=i;

    }

 

    h2c_transfer(0,1024*4,(unsigned char *)buf1);

 

    c2h_transfer(0,1024*4,(unsigned char *)buf2);

 

    for(i=0;i<1024;i++)

    {

        if(buf1[i] != buf2[i])

            error_cnt++;

    }

    if(error_cnt)

    {

        QString str  =  QString("%1 %2").arg("DDR bad data = ").arg(error_cnt);

        ui->labelDDRPASS->setText(str);

    }

    else

    {

        m_pass1++;

        QString str  =  QString("%1 %2").arg("DDR PASS Times = ").arg(m_pass1);

        ui->labelDDRPASS->setText(str);

    }

 

}

 

void MainWindow::on_TestBAR_clicked()

{

    unsigned int val;

    unsigned int i=0;

 

    unsigned int error_cnt =0;

 

    for(i=0;i<1024;i++)

    {

        user_write(0x10000+i*4,4,(unsigned char *)&i);  

    }

 

    for(i=0;i<1024;i++)

    {

        user_read(0x10000+i*4,4,(unsigned char *)&val);

        if(i!= val)

            error_cnt++;

    }

 

 

    if(error_cnt)

    {

        QString str  =  QString("%1 %2").arg("DDR bad data = ").arg(error_cnt);

        ui->labelBARPASS->setText(str);

    }

    else

    {

        m_pass2++;

        QString str  =  QString("%1 %2").arg("DDR PASS Times = ").arg(m_pass2);

        ui->labelBARPASS->setText(str);

    }

}

 

 

5.5硬件安装

注意先下载程序,调试阶段下载bit文件,然后再开电脑。这样才能正确识别和后续测试工作正常开展。

5.6实验结果

 

标签:cnt,QT,FPGA,05,error,unsigned,QString,str,arg
From: https://www.cnblogs.com/milianke/p/17936645.html

相关文章

  • 05.常用测试平台
    常用的测试平台 测试用例管理与Bug管理平台。代码管理平台。流程管理平台。测试用例管理平台 JIRA:推荐方案,定制性很强。RedMine:推荐方案,开源,活跃,定制性很强。TestLink:流行的测试用例管理平台,体验不太好。其他:Tapd、云效、禅道、GitLab、在线协作文档。......
  • 05 AXI4总线axi-full-master
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!1概述使用XILINX的软件工具VIVADO以及XILINX的7代以上的FPGA或者SOC掌握AXI-4总线结束,并且可以灵活使用AXI-4总线技......
  • 3-1-04 FPGA使用fdma读写DDR
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!4.1概述    在前文的实验中我们详细介绍了FDMA的使用方法,前面一节课演示了FDMA读写AXI-BRAM,本文我们继续使用FDM......
  • matplotlib嵌入到pyqt中
    在pyqt5中使用matplotlib前言虽然,qt中也提供了绘图函数,但对于初学者并不是很容易掌握,众所周知,matplot提供了简单,易用,强大的绘图函数,结合mumpy基本可以达到matlb中的绘图体验,并且比matlab更加具有扩展性,也更自由。通过matplotlib提供的官方例程的修改,就可以很容易的绘制你想要的......
  • 05uifdma_dbuf 3.0 IP介绍
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!5.1概述        uifdma_dbufIP是米联客研发用于配合FDMA完成数据传输控制的IP模块。FDMA-DBUFIP代码采用"......
  • 3-1-05 Modesim软件安装
    1.1Modelsim软件版本选择不同的Vivado版本支持使用的Modesim版本不同,具体可查看Xilinx提供的文档UG973-vivado-release-notes-install-license。我们使用的Vivado软件版本是vivado2017.4,推荐使用版本是ModelSimSE/DE/PE(10.6b),经过安装发现,使用低于推荐的版本,在Vivado库......
  • 1-1-02 AMD(XILINX) FPGA开发工具Vitis(vivado)安装
    1.1Vitis概述Vitis统一软件平台可实现在Xilinx异构平台(包括FPGA、SoC和VersalACAP)上开发嵌入式软件和加速应用。它可为边缘、云和混合计算应用加速提供统一编程模型。利用与高层次框架的集成,通过加速库采用C、C++或Python进行开发,或者使用基于RTL的加速器和低层次......
  • 37 基于FPGA的LVDS信号环路测试
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述LVDS(LowVoltageDifferentialSignalin)是一种低振幅差分信号技术。它使用幅度非常低的信号(约350mV)通......
  • 【充电管理】TP4056引脚定义
    1.引脚定义:TEMP(引脚1):电池温度检测输入端,实现电池温度检测功能。将TEMP管脚接到电池的NTC传感器的输出端。如果TEMP管脚的电压小于输入电压的45%或者大于输入电压的80%,意味着电池温度过低或过高,则充电被暂停。如果TEMP直接接GND,电池温度检测功能取消,其他充电功能正常。......
  • 31 基于FPGA简易示波器显示驱动设计
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述FPGA在数据采集,数据处理,图像视频领域都有广泛的应用。很多FPGA工程师苦恼,如何让FPGA采集的数据可以直......