基于Riffa框架的PCIE应用开发(三)——Riffa框架channel时序要求和初步驱动API搭建

一、概述

  1. 本篇文章介绍本设计的Riffa通道的时序,并且通过该时序建立设计的配置数据通道;

  2. 使用visual studio软件,基于Riffa API 初步开发上位机软件,建立好开发环境。

二、TLP包的接受发送时序

1. 在发送数据时(tx):Riffa是主机,pcie为从机;在接收数据(rx)时:pcie为主机,Riffa为从机;

2.1发送数据

图2-1 不带数据的TLP包(tx)

1. 图2-1中,一个H便是一个DW。一个clk传递两个H,完成 一个事物。

2. s_axis_tx_tkeep是用来控制DW是否有效;

2.2接收数据

图2-2 不带数据的TLP包(rx)

1. 时序与发送数据的时序类似。

三、用户channel接口

1. 该接口是用户和Riffa交互的接口,其端口定义如表3-1;

图3-1 用户channel接口

3.1 接收数据

1. 对于接收端,当有数据发给用户的时候,RIiffa会将CHNL_RX拉高,CHNL_RX_LEN[31:0]有效。用户作为回应将CHNL_RX_ACK拉高,之后只要RIFFA收到数据后,且CHNL_RX_DATA_REN 和CHNL_RX_DATA_VALID为1,表示数据有效;CHNL_RX_DATA_VALID拉低,数据无效。

2. 在图3-2中,我们发现在一次事物结束后CHNL_RX的拉低有延迟,这就会导致即使CHNL_RX_ACK拉低,但是CHNL_RX为高,所以CHNL_RX_ACK再次拉高。

这里我们在后续编写代码时,要利用data计数器和rx为低这个条件来来拉低ack,完成一次事物。

图3-2 RX接口波形

3.1 发送数据 

1.对于发送端,用户首先会将CHNL_RX拉高,同时Riffa会把CHNL_TX_LAST和CHNL_TX_DATA_VALID拉高,给CHNL_TX_LEN[31:0]、CHNL_TX_OFF有效的数据。当回应CHNL_TX_ACK为1时,表示已经准备好接收数据。之后当CHNL_TX_DATA_REN 和CHNL_TX_DATA_VALID为1,数据有效,当数据全部给Riffa后,用户的发送事务就完成了。

图3-3 TX接口波形

2. 波形是添加ILA后从中导出.vcd的波形文件,在modelsim中导入波形文件显示的。

四、使用Riffa API开发上位机软件

1. 虽然此部分为本设计的总要组成部分,但是不是我重点掌握的内容,这里了解即可。

2. 这里我使用MFC来进行开发,MFC 是微软为了简化程序员的开发工作所开发的一套C++类的集合,是一套面向对象的函数库,以类的方式提供给用户使用;

3.首先创建项目,在应用程序类型中,我们选择“基于对话框”的类型,其他保持默认即可;

4. 创建完项目之后,在“工具箱”里添加“button”控件在对话窗口,修改button的属性;

5. 然后更改调试环境为x64和debug,启动“本地windows调试器”;

6.将Riffa源文件的“sample_app”下的“riffa.dll”和“riffa.lib”文件添加到API的项目“debug”文件夹中;

7. 打开项目属性,设置lib库的位置;

8.将Riffa源文件的“sample_app”下的“riffa.h”和“timer.h”头文件导入到API的项目中,并在VS软件中添加两个头文件;

9. 然后在添加的button对应的函入口,在上面引入头文件:#include “riffa.h”;#include “timer.h”;

10. 添加测试代码,测试是否pcie板卡正常启动连接到PC中打开Riffa设备;

fpga_t* fpga;
	int a;
	fpga = fpga_open(0);
	if (fpga == (NULL) {
		MessageBox(TEXT("打开Riffa设备失败!"), TEXT("提示"), MB_YESNO);
	}
	else
	{
		MessageBox(TEXT("打开Riffa设备成功!"), TEXT("提示"), MB_YESNO);
	}

五、总结

至此,我们便掌握了Riffa框架channel时序和TLP包的接受发送时序,便搭建了Riffa上位机和pcie的环境,下一步我们将进行Riffa的fpga侧接收配置数据和图像数据的开发。

  • 25
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 为了更好的理解PCIEDMA测试分析,需要先了解Riffa架构。Riffa是一种基于FPGA的PCI Express总线实现框架,可用于支持高带宽、低延迟的数据传输和重新配置。 使用基于RiffaPCIEDMA测试分析,可以对PCIE总线进行全面的测试分析,以确保工作正常且数据传输无误。具体来说,可以通过以下步骤来执行测试: 首先,需要使用FPGA平台开发一个实际的数据传输应用程序。该应用程序可能包括PCIE DMA传输和其他FPGA实现的功能,如数字信号处理等。 之后,需要将该应用程序集成到Riffa框架中,并通过PCIe总线与主机进行连接。在运行应用程序之前,可以使用Riffa提供的一些工具来进行端口扫描、爬行和脉冲示波器捕获等测试和分析。 接下来,可以通过观察Riffa提供的吞吐量和时延数据等指标,来对应用程序的性能进行评估。同时,还可以使用一些诊断工具来检查是否存在数据包丢失或重复等问题。 最后,需要对测试结果进行分析和总结,并根据需要进行优化和修改,以确保应用程序能够高效、稳定地工作。 综上所述,通过使用基于Riffa架构的PCIEDMA测试分析,可以帮助用户对PCIE总线进行全面的测试和分析,从而确保数据传输的稳定性和可靠性。 ### 回答2: Riffa是一种基于FPGA的PCI Express(PCIe)通信架构,用于高速数据传输。PCIEDMA测试分析是对基于Riffa架构的PCIe DMA传输的测试和分析。 在PCIEDMA测试分析中,需要考虑传输性能、延迟、容错性等因素。首先,需要对DMA传输的带宽进行测试,以确保数据传输速度达到预期。其次,需要测试延迟情况,以确保DMA传输的实时性。同时,需要进行容错性测试,以确保数据传输的稳定性和可靠性。 PCIEDMA测试分析可以用于验证基于Riffa架构的PCIe DMA传输的性能和稳定性,同时也可以为使用该架构的应用提供参考。在实际应用中,可以根据测试分析结果对传输参数进行优化,以提高数据传输效率和可靠性。 综上,PCIEDMA测试分析是对基于Riffa架构的PCIe DMA传输进行测试和分析的过程,可以为数据传输的性能和稳定性提供参考和优化方案。 ### 回答3: 基于riffa架构的PCIEDMA测试分析是一项非常重要的技术领域,它可以帮助人们更好地了解数据传输的性能和效率,同时也可以为高速数据传输应用提供强有力的技术支持。 PCIEDMA是一种利用PCIe总线实现高速数据传输的技术,该技术可使计算机的DMA控制器直接传输数据而不需要CPU的干预,从而提高数据传输速度和效率。rifta架构是一种基于FPGA的高性能计算架构,可以通过提供丰富的硬件资源和可编程性来支持PCIE DMA的实现。 在进行基于riffa架构的PCIEDMA测试分析时,可以通过对传输数据的大小、传输速度、错误率以及吞吐量等进行评估和分析,来确定系统的性能和可靠性。通过对这些指标的测量和分析,可以全面了解系统的实际传输性能,并针对不同的应用场景进行优化和改进。 因此,基于riffa架构的PCIEDMA测试分析具有重要的意义,在高速数据传输领域具有广泛的应用前景和重要的研究价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲敲打打在创造

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值