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

(WIN)S06-CH03 PCIE 读写BAR和DDR

摘要: 如果读者对于CH02和CH03还有一些疑惑,那么本节课的内容,可以让你更加简单地弄明白什么是BAR地址空间操作,什么是对开发板DDR内存地址空间操作。如果你掌握了如何通过XDMA读写BAR地址空间和DMA 内存地址空间操作, ...

软件版本:VIVADO2017.4

操作系统:WIN10 64bit

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

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

3.1概述

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

3.2 FPGA 代码

     FPGA可以用任何一个章节的,这里继续CH01的代码,并且增加了在线逻辑分析仪IP方便观察FPGA的内部信号。具体就不重复了,不清楚的可以看CH01部分教程内容。

3.3 QT程序设计

       如果你足够细心,你会发现在CH01里面的BRAM 和DDR我们在前面的课程中没有用到。那么这节课就可以用起来了。测试的原理是分别往BAR地址空间和DDR地址空间写入测试数据,然后读出看看写入的和读出的十分一致。同理,。程序比较简单,读者可以自己阅读QT源码。

读写代码

void MainWindow::on_TestDDR_clicked()

{

    unsigned char buf1[4096];

    unsigned int i=0;


    unsigned int error_cnt =0;


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

    {

        buf1[i]=i;

    }


    put_data_to_fpga_ddr(FPGA_AXI_START_ADDR,buf1,4096);


    get_data_from_fpga_ddr(FPGA_AXI_START_ADDR,c2h_align_mem_tmp,4096);

    unsigned char *buf2= c2h_align_mem_tmp;

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

    {

        if(buf1[i]!=*buf2)

            error_cnt++;

        buf2++;

    }

    if(error_cnt)

    {

        m_ddrpass++;

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

        ui->labelDDRPASS->setText(str);

    }

    else

    {

        m_ddrpass++;

        QString str  =  QString("%1 %2").arg("AXI4 PASS Times = ").arg(m_ddrpass);

        ui->labelDDRPASS->setText(str);

    }


}

3.4 测试结果

我们可以采用断点调试方法,直观的观察每次的读写情况


路过

雷人

握手

鲜花

鸡蛋

说点什么...

已有0条评论

最新评论...

本文作者
2019-9-17 17:11
  • 6
    粉丝
  • 586
    阅读
  • 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号