基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架

项目:基于A7板卡的PCIE 2.0共享屏幕

章节:RIFFA框架

本章目的:介绍RIFFA框架如何修改到自己项目使用

前言

Pcie 总线是相对比较复杂的总线协议,并且需要设计硬件、驱动、软件API 等才能真正调试运行起来,由于以上复杂度不能每个公司都设计开发自己的驱动和 API 这样耗时耗力,那么就有了开源框架 如同RIFFA,XDMA

RIFFA框架干了什么?

上一讲讲解了PCIE,有需要的可以去看看,再PCIE中有多层架构,而我们需要关心的只有应用层,这是因为,其他所有层都已经有RIFFA框架给我们解析好了
在通俗易懂一点,上位机发送信息到PCIE接口上之后,所有的信号全部转移到RIFFA框架中,最后到达我们用户端的时候就已经是数据了,这些数据是通过RIFFA框架的用户端接口传输的。

RIFFA框架的用户端接口有哪些呢?都是什么作用呢?

接口和作用如下
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第1张图片
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第2张图片其实非常类似于AXI协议,下面给出仿真波形图

RX接收端波形仿真

基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第3张图片
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第4张图片
上图为用户接收端的波形,首先当有数据发给用户后,RIFFA 会把 CNHL_RX拉高,CHNL_RX_LEN[31:0]有效。等待用户回应,即用户将 CHNL_RX_ACK 拉高,之后只要 RIFFA 收 到数据后,检测到 CHNL_RX_DATA_REN 位 1,开始将CHNL_RX_DATA_VALID 拉高同时数据有效,拉高 CHNL_RX_LEN 个时钟后CHNL_RX_DATA_VALID 拉低,数据无效,这样就完成一次 RX 事务。CHNL_RX_OFF一直给0即可

TX接收端波形仿真

基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第5张图片
上图为用户发送端的波形,首先用户把CHNL_TX拉高,同时给,RIFFA会把CNHL_RX、CHNL_TX_LAST 和 CHNL_TX_DATA_VALID 拉高,同时给 CHNL_TX_LEN[31:0]、CHNL_TX_OFF[30:0]有效数据。等待 RIFFA 回应,当检测到 CHNL_TX_ACK 为 1,就表示 RIFFA 已经准备好接收用户的数据了。之后当 CHNL_TX_DATA_VALID 位 1时,将 CHNL_TX_DATA[DWIDTH-1:0]数值有效。当数据全部给 RIFFA 后,用户的发送事务便完成了。

如何修改RIFFA代码以供自己项目使用

(1)移植 Riffa 到自己的项目中

基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第6张图片
我们所需要的是以下2个部分
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第7张图片
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第8张图片
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第9张图片

将这两个部分的文件复制到自己的工程design中

(2)生成PCIE 的IP(重要!!!)

双击 IP Catalog,搜索 PCIe,双击 7 Series Integrated Block for PCI Express
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第10张图片

首先在 model 里选择 ADVANCED 模式,这样用户就有更多选项可选择。

在定义选项中我们不用以下选项:
LinkRegisters,PowerMangement,Ext.Capabilities,Ext.Capabilities2,TL Settings and DL/PL Settings.
设备端口类型选择 PCI Express 端点设备
线宽选择 x2
速率选择 5.0Gt/s 即 PCIE2.0
axi 时钟选择 62.5,也可以选择更高时钟
数据位宽选择 64
PIPE 模式仿真选择 none,我们没有仿真模型,不能进行仿真
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第11张图片
设置设备 ID 有助于识别不同的 FPGA 在多 FPGA 系统中,可以设置也可以默认不修改。其他选项,特别是供应商 ID,必须保持不变。
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第12张图片
必须配置下图选项,让BAR0启用。将类型设置为Memory和单位KiloByters,
并从下拉菜单中将“大小”值设置为 1。如果这些值没设置正确,RIFFA 的驱动将不能识别 FPGA 器件
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第13张图片
在此选项卡中选择“优化总线主控应用程序”和“扩展标签字段。 .从下拉列表中选择最大有效载荷大小 ,用于设置 RIFFA C MAX PAYLOAD BYTES 参数。
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第14张图片
在下图所示的中断选项卡中,清除 Enable INTx(禁用)的复选框的 INTx) 即不用传统带中断管脚的中断模式。选择消息中断,64 位地址信息。
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第15张图片
在下图所示的共享逻辑选项卡中,清除显示的所有复选框。 这些设置不会影响生成的核心,但会影响 Vivado 生成的示例设计。生成的示例设计将为RIFFA提供一个镜像设计。
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第16张图片
在“接口参数”选项卡中,选择与下图一样的选项,简化生成的核心接口
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第17张图片

(3)将RIFFA顶层中的IP改成自己IP的name,并删除无效文件

(4)更改顶层中的参数

基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第18张图片

(5)生成bit,下载板卡

如何绑定引脚,PCIE和RIFFA框架的接口呢是通过GTP这种高速接口连接的,在我的板卡上是这样的
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第19张图片

(6)Riffa 官方提供了c测试文件

基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第20张图片
为了使用这个测试,我们需要安装驱动,官方驱动没有数字签名所以必须先要关闭
Win10关闭数字签名的方法:

管理员运行 cmd,输入bcdedit.exe /set nointegritychecks on 重启电脑
准备安装驱动
打开设备管理器,查看是否有 PCI 位置设备,如果没有请重复检查是否 FPGA 程
序下载然后重启,重启后查看是否有 PCI 未知设备,如果没有需要检查 FPGA 程
序是否正确了。
找到 riffa_2.2.2\install\windows\win7 下的
带有 dbg 结尾的是带有调试薪资打印功能的,请安装此版本。
把此文件拷贝到目标需要安装的计算机中
Win7 直接右键管理员安装即可(注意必须已经关闭数字签名,也就之前的 CMD
的操作)
如果是 WIN10 操作系统,需要右键更改兼容模式为 win7 模式,再进行安装。
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第21张图片
如果是 win10 需要设置兼容模式,在安装前设置注意注意!
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第22张图片
再进入设备管理器查看已经有个 Riffa device,然后需要重启计算机,这步必须做

基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第23张图片
最后测试结果
基于A7板卡的PCIE 2.0共享屏幕(二)RIFFA框架_第24张图片

你可能感兴趣的:(基于A7板卡的PCIE共享屏幕,fpga开发)