验证环境

window 10 系统

vivado 2017.4

KC705 开发板

验证目的

1)通过xilinx 提供的PIO example 入门pcie。

2)抓取pcie tlp报文,学习TLP报文。

背景知识

首先了解一下pcie的应用,在PCIE中有两种数据传输方式:

DMA(Direct Memory Access),直接内存访问,在该模式下,数据传送不是由CPU负责处理,而是由一个特殊的处理器DMA控制器来完成,因此占用极少的CPU资源。

PIO(Programmed Input-Output),可编程输入输出,在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。举例老说,在DMA方式下,如果copy文件的同时在播放mp3音乐,则不受丝毫影响;如果在PIO模式下,则会发现音乐声时断时续,这是因为大部分CPU资源被文件传输占用。

目前笔者也在研究pcie dma实现(毫无头绪),这里先记录下PIO学习过程。

工程搭建

如下图所示,选择KC705开发板,通道数X8, 速度5.0GT/s, 其他保持默认就行。

然后生成example例程如下

直接综合,实现,生成mcs文件下载到板卡。

exampe 的逻辑框图如下

PIO example 工程的功能是FPGA内部开辟了4 * (512 *32)的RAM区,可以通过pcie接口做读写测试,地址范围 0x000- 0x7ff, 位宽32bit。

仿真流程

PIO工程提供了完整的PIO仿真模型及testbench文件,直接在vivado菜单栏点击 run simulation 就可开始仿真。

上机调试

将开发板插在主机的pcie插槽上,然后打开windriver软件,可以发现开发板被找到,显示设备如下:

可以看到当前开发板pcie的配置信息,而且申请了bar0空间,接下来对bar0空间读写测试

读写地址0 ,写入0x11223344 ,读出来0x11223344 , 读写正确

读写地址0x7fc, 写入0xaabbccdd, 读出来0xaabbccdd, 读写正确

读写地址0x800, 写入0x01020304 ,读出来0xffffffff, 读写错误。

因为PIO example工程申请的ram地址空间为0x000-0x7ff,所以无法对0x800地址做读写操作。

通过ILA抓取pcie报文,这里不记录了。

工程案例

最近在做一个PCIE相关的项目,用的altera的FPGA, 简单的PIO模式访问,逻辑也很简单,就是读写一下RAM和register, 结果上板之后,操作系统可以扫描到板卡, DEVICE ID /VERDOR ID都是对的,枚举到bar0 memory空间, 但是就是无法读写bar0,通过signaltap抓取avalon-st报文,发现经过pcie core后没有任何报文发出, bar_hit也一直显示0,实在摸不到头脑。 最后查到pcie的配置寄存器有问题,

cmd寄存器读到的值为0 ,

不知道为什么altera pcie的 command register初始化为0,还是我工程的问题, 最后软件将 command register 写为7 , 终于可以正常读写,avalon-st上也可以抓取到报文了。

参考文档

pg054

xilinx PCIe PIO工程仿真及验证相关推荐

  1. Xilinx PCIE CORE学习

    目录 前言 1.概述 1.1PCIE 学习入门概述 1.2 本文内容概述 2.IP CORE user interface接口说明 3.TLP包格式 3.1 .3DW/4DW相关说明 3.2 .TLP ...

  2. Xilinx PCIE DMA--Sparten6/Kintex-7 BMD 搭建

    目录 前言 1.DMA数据流简介 1.1 FPGA发DMA数据到PC 1.2 数据从PC搬到FPGA 2.PCIE 软件开发环境 3.Xapp1052下载 4.Kintex-7 BMD工程搭建 5.S ...

  3. ModelSim SE 10.0a建立并调用Xilinx ISE 13.1仿真库详解

    从网上搜到的有很多,实践过其中几种,其中一种较简单的方法如下: 1)安装ModelSim 和ISE 并注册破解: 2)将ModelSim根目录下的modelsim.ini文件的只读属性去掉. 3)将c ...

  4. 【毕业设计】65-基于单片机的智能抢答器系统设计(原理图工程+仿真工程+源代码+答辩论文+visio流程图+实物图)

    typora-root-url: ./ [毕业设计]65-基于单片机的智能抢答器系统设计(原理图工程+仿真工程+源代码+答辩论文+visio流程图+实物图) 文章目录 typora-root-url: ...

  5. 理工科学子,从事工程仿真所需的知识结构和学习方法

    附赠仿真学习包,包含结构.流体.电磁.热仿真等多学科视频教程,点击领取: ​​​​​​仿真秀粉丝专属礼包 作者:尚晓江 当前,仿真技术已经成为工程行业不可或缺的计算和设计创新的手段,因此工科专业同学将 ...

  6. matlab adams 机械臂,基于ADAMS与MATLAB/SIMULINK的二杆机械臂动力学仿真与验证

    川七 一 , , , 乓 基于 与 的二杆机械臂动力学仿真与验证 贾雪峰' , 宋洪军' , 荣学文 , 李贻斌 山东农业大学机械与电子工程学院 , 山东泰安 , 一 ] 」 山东大学控制科学与工程学 ...

  7. modelsim的工程仿真流程--2

    文章目录 引言 创建工程及工程库 加载设计文件 运行仿真 保存波形文件wlf 基本仿真流程与工程仿真流程方法对比 附录 引言 首先建立一个工程,然后向工程中添加设计文件,接下来编译设计文件,之后运行仿 ...

  8. 系统建模、分析、仿真和验证软件工具ModelCodoer

    在安全关键领域,基于模型的软件工程已逐渐进入了我国的装备研制过程中.使用SimuLink或者SCADE等嵌入式软件建模工具进行可视化建模,然后生成高可靠的二进制代码逐渐成为了安全关键领域的主流软件开发 ...

  9. Xilinx PCIE IP核接口介绍

    1.1 Xilinx PCIE IP核接口介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Xilinx PCIE IP核接口介绍: 5)结束语. 1.1.2 本节引 ...

  10. 基于FPGA实现PCIE IP功能仿真

    基于FPGA实现PCIE IP功能仿真 1 开发工具 modelsim simulator或vivado simulator,本设计采用modelsim进行仿真. 2 参数配置

最新文章

  1. 使用访问控制列表预防IP地址欺骗(IP Address Spoofing Prevention with ACLs)
  2. boost::hana::capture用法的测试程序
  3. Linux 命令之 set -- 显示或设置 shell 特性及 shell 变量
  4. Jquery屏蔽回车键
  5. 计算机修复画笔结果分析,Photoshop
  6. Oracle 9i 的安装(图解)
  7. 学习php开发步骤,学习php设计模式 php实现模板方法模式
  8. Python机器学习:SVM001什么是支撑向量机
  9. 如何用wdcp面板创建网站(转百度经验)
  10. IT服务管理领域的最佳实践知识体系ITIL4
  11. php无限分类算法,php递归算法 php递归函数无限级分类
  12. 快速实现远程控制Android手机
  13. 不要说话 -- 陈奕迅/小柯
  14. vue引入 wps在线编辑版,可进行 预览,编辑, 打印等功能。
  15. 高校计算机系统提升班,计算机学院举行“康继昌智能系统班”选拔宣讲会
  16. 搜狗如何打特殊符号 - 搜狗特殊符号的打法!!
  17. 4G LTE各band对应的频率一览表
  18. matlab只读改为可修改,matlab – 获取绘图的只读属性名称列表
  19. js 递归树根据子节点获取所有父节点
  20. Vue项目在ie浏览器打不开的解决办法

热门文章

  1. 网页里面嵌入视频代码
  2. linux 目录为空 删不掉,空文件夹删不掉怎么办 空文件夹删不掉解决方法
  3. 【Android动画九章】-帧动画
  4. 计算机在线使用高级,2017高会《职称计算机》Internet应用:Internet高级选项
  5. Ubuntu终端中字体颜色含义
  6. rhel7添加静态路由
  7. 摄影焦距和物距的关系_摄影的焦距是多少?
  8. Azylee.Utils 工具组
  9. 区块链+边缘计算应用研究与探讨
  10. html标题和段落标记,Chap 03 HTML文字与段落标记