基于RIFFA的PCIE

RIFFA 要想用起来,不仅要有FPGA 代码, 还需要有PC  的驱动和代码。下面描述Linux 环境下怎么安装驱动和运行代码。

 驱动安装    

 

  1. 打开终端,进入riffa  驱动所在路径

   cd(空格)(riffa路径拖入 xx\riffa_2.2.2\source\driver\linux)

2)安装内核头文件

    $ sudo make setup 

这将尝试使用系统的包管理器安装内核头文件。你如果已经安装了内核头文件,可以跳过此步骤。如果内核头文件安装失败,请联网重试。如果最后提示不需要任何操作,说明内核头文件已经安装成功。

3)编译驱动和C++ 库

  $ make

or

$ make debug

4)安装驱动和库

  $ sudo make install

5 ) 替换源码中头文件

找到C/C++ 源代码路径(xx\riffa_2.2.2\source\c_c++\linux\x64\sample_app),把驱动安装时生成的 riffa.h(原本驱动的文件夹下面就有,但是在驱动安装过程中被更新、覆盖)复制到源代码路径下。并确认代码中是否包含改头文件(默认代码里是包含的)

  1. 建立链接库

   用- lriffa 来连接riffa库,运行指令:

$ gcc -g -c -lriffa -o testutil.o testutil.c   

make

  1. 编译

  $ make 生成输出文件

  $ make clean  删除输出文件

  1. 验证驱动是否安装成功

   a ) 电脑关机

   b ) 插入板卡到PC的PCIE卡槽,上紧螺丝

   c ) 板卡上电,下载带有PCIE的FPGA代码

   d ) 电脑开机

   c ) 输入查询命令 lspci

命令lspci可以识别PC上所有的PCI外设,如果下面列表中没有Xilinx corporation Device说明驱动安装失败。下图中的7024是FPGA端配置IP核时候的设备ID号,根据设置不同会有差异。

RIFFA 代码运行 

  1.  找到C/C++ 源代码路径,把驱动安装时生成的 riffa.h(原本驱动的文件夹下面就有,但是在驱动安装过程中被更新、覆盖)复制到源代码路径下。并确认代码中是否包含改头文件(默认代码里是包含的)
  2. 编译,用- lriffa 来连接riffa库。

$ gcc -g -c -lriffa -o test.o test.c

  1. 编译代码,后面如果代码有改动,都用这句话

 $ make

清除编译生成文件用

$ make clean

 

使用riffa用到的语句

第一句话   ./testutil 0

查看被测设备的信息,

第二句话 ./testutil 2 0 0 128

其中 2 表示 代码中的OPTION  选择用那种数据协议传输并打印出来;第一个 0 表示 ID ;第二个0表示通道号,0 表示用通道1 ,和FPGA代码中第一个通道对应, 1表示用通道2 ,和FPGA代码中第二个通道对应;128 表示PCIE收发数据量的大小,表示的是byte。

 

原始代码中,main.c 函数中的NUM_TEST  5   , 表示整个数据要循环发送6 次,  0 代码只发送一次

代码中还有另外一个循环,

minwords = 4 ,      

 for (numWords = minWords; numWords <= maxWords; numWords = numWords*2)

这里数据从4 开始发, 4 16 32 64 …… 一直到maxWords (也就是上面说的,输入命令时的./testutil 2 0 0 128 中的 128 )。如果不想让代码这样循环发送,就把最小值设置的和maxWords 一样。

https://blog.csdn.net/long_fly/article/details/79150820   PCIE 协议

 我们用的是 riffa,这样就不用自己写驱动和FPGA端传输层的打包协议,            

riffa 可以先从下面这个博客开始了解

https://blog.csdn.net/vacajk/article/details/79073125 

riffa分两部分,一部分是PC 端,PC 上带riffa 原代码用于数据接收  发送和一些仲裁处理,还有一部分是驱动。另一部分在FPGA里面,从IP 核出来的数据,经过riffa以后,通过简单的AXI 总线应答机制就可以收发数据。也就是更改chnl_test模块即可。riffa 支持的数据位宽有32bit  64bit  128bit。

      对riffa的描述,网上资料还是很少,可以看这篇论文 《  RIFFA 2.0: A REUSABLE INTEGRATION FRAMEWORK FOR FPGA ACCELERATORS》 一遍看不懂多看几遍,就理解差不多了。另外,riffa 目前官网是上不去了,要想下载代码就从其他资源下载,CSDN上面很多人有上传。

          RIFFA 下行链路带宽

基于RIFFA的PCIE_第1张图片

你可能感兴趣的:(FPGA,高速接口)