项目:基于A7板卡的PCIE 2.0共享屏幕
章节:RIFFA框架
本章目的:介绍RIFFA框架如何修改到自己项目使用
前言
Pcie 总线是相对比较复杂的总线协议,并且需要设计硬件、驱动、软件API 等才能真正调试运行起来,由于以上复杂度不能每个公司都设计开发自己的驱动和 API 这样耗时耗力,那么就有了开源框架 如同RIFFA,XDMA
RIFFA框架干了什么?
上一讲讲解了PCIE,有需要的可以去看看,再PCIE中有多层架构,而我们需要关心的只有应用层,这是因为,其他所有层都已经有RIFFA框架给我们解析好了
在通俗易懂一点,上位机发送信息到PCIE接口上之后,所有的信号全部转移到RIFFA框架中,最后到达我们用户端的时候就已经是数据了,这些数据是通过RIFFA框架的用户端接口传输的。
RIFFA框架的用户端接口有哪些呢?都是什么作用呢?
接口和作用如下
其实非常类似于AXI协议,下面给出仿真波形图
RX接收端波形仿真
上图为用户接收端的波形,首先当有数据发给用户后,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接收端波形仿真
上图为用户发送端的波形,首先用户把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 到自己的项目中
我们所需要的是以下2个部分
将这两个部分的文件复制到自己的工程design中
(2)生成PCIE 的IP(重要!!!)
双击 IP Catalog,搜索 PCIe,双击 7 Series Integrated Block for PCI Express
首先在 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,我们没有仿真模型,不能进行仿真
设置设备 ID 有助于识别不同的 FPGA 在多 FPGA 系统中,可以设置也可以默认不修改。其他选项,特别是供应商 ID,必须保持不变。
必须配置下图选项,让BAR0启用。将类型设置为Memory和单位KiloByters,
并从下拉菜单中将“大小”值设置为 1。如果这些值没设置正确,RIFFA 的驱动将不能识别 FPGA 器件
在此选项卡中选择“优化总线主控应用程序”和“扩展标签字段。 .从下拉列表中选择最大有效载荷大小 ,用于设置 RIFFA C MAX PAYLOAD BYTES 参数。
在下图所示的中断选项卡中,清除 Enable INTx(禁用)的复选框的 INTx) 即不用传统带中断管脚的中断模式。选择消息中断,64 位地址信息。
在下图所示的共享逻辑选项卡中,清除显示的所有复选框。 这些设置不会影响生成的核心,但会影响 Vivado 生成的示例设计。生成的示例设计将为RIFFA提供一个镜像设计。
在“接口参数”选项卡中,选择与下图一样的选项,简化生成的核心接口
(3)将RIFFA顶层中的IP改成自己IP的name,并删除无效文件
(4)更改顶层中的参数
(5)生成bit,下载板卡
如何绑定引脚,PCIE和RIFFA框架的接口呢是通过GTP这种高速接口连接的,在我的板卡上是这样的
(6)Riffa 官方提供了c测试文件
为了使用这个测试,我们需要安装驱动,官方驱动没有数字签名所以必须先要关闭
Win10关闭数字签名的方法:
管理员运行 cmd,输入bcdedit.exe /set nointegritychecks on 重启电脑
准备安装驱动
打开设备管理器,查看是否有 PCI 位置设备,如果没有请重复检查是否 FPGA 程
序下载然后重启,重启后查看是否有 PCI 未知设备,如果没有需要检查 FPGA 程
序是否正确了。
找到 riffa_2.2.2\install\windows\win7 下的
带有 dbg 结尾的是带有调试薪资打印功能的,请安装此版本。
把此文件拷贝到目标需要安装的计算机中
Win7 直接右键管理员安装即可(注意必须已经关闭数字签名,也就之前的 CMD
的操作)
如果是 WIN10 操作系统,需要右键更改兼容模式为 win7 模式,再进行安装。
如果是 win10 需要设置兼容模式,在安装前设置注意注意!
再进入设备管理器查看已经有个 Riffa device,然后需要重启计算机,这步必须做
最后测试结果