05 QT上位机读写FPGA内存
软件版本: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实验结果
本文来米联客(milianke),作者:米联客(milianke),转载请注明原文链接:https://www.cnblogs.com/milianke/p/17936645.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)