Xilinx RapidIO仿真[SRIO仿真笔记一]

1 篇文章 0 订阅
1 篇文章 0 订阅

 

1、使用官方的SRIO核,base模式,默认参数不做任何修改,生成IP后点击生成example工程,不改动任何源码,直接run simulation。第一次使用ARTIX7的FPGA,不能初始化成功,现在改成K7的FPGA.型号是

2、log_wave -r /*  记录所有波形

 

 

只用了160us就把全部事务仿真测试完了:

3、调试SRIO的第一步是去检测SRIO顶层模块(srio_example_top_primary)中的各个关键的控制信号是否正确切换。这些信号包括:复位信号、时钟锁定信号(clk_lock)、端口初始化信号(port_initialized)、链路初始化信号(link_initialized),端口错误信号(port_error),mode_1x信号(在2x和4x模式下,这个信号为高表示SRIO核已经被训练为1x模式,在1x模式下,这个信号一直为高,当port_initialized为高时,这个信号才有效)与端口解码错误信号(port_decode_error)等(除了这几个信号以外,其他信号也可以观察一下)。

 

4、如下图所示,在第60us左右的时候,两个关键信号,最关键的两个信号是port_initialized信号与link_initialized信号,当它们为高时,分别表示端口和链路被成功初始化。

下图显示port_initalized 和link_initalized 信号的捕获。port_initalized link_initalized都有效时,用户应用程序可以发送/接收数据包。link_initalized 表示已接收到七个连续的无差错控制符号,并且已发送了15 个连续符号。图中的圆圈区域是控制符号port_initalized link_initalized.

 

 

5、下面把控制符号波形放大观察控制符号各个字段的细节,发送与接收总线上的控制符号分别如下图所示(gttx_charisk与gtrx_charisk对应的位为0时, gttx_data与gtrx_data上的数据为控制符号)。

 

当gttx_charisk与gtrx_charisk对应的位为1时,gttx_data与gtrx_data上的数据为/K/,/R/,/A/组成的空闲随机序列(前面几篇文章解释过这个知识点),它们分别为特殊字符/K28.5/,/K29.7/,/K27.7/,转化为16进制为bc,fd,fb

 

6、在link_initialized拉高之前,发送与接收的控制符号为80f713,控制符号80f713前面的1c是/K28.0/,表示控制符号的起始位置。由于SRIO核默认使用的是短控制符号,所以这里控制符号为24-bit。把80f713转化为二进制:80f713 = 1000_0000_1111_0111_0001_0011,各个字段的对应关系如下图所示:

 

 

4.2 SWRITE事务

4.2.1、上篇文章已经分析过,例子工程会把instruction_list.vh中定义的事务按顺序依次发出去。其中最先发送的是37个SWRITE事务,然后是19个NWRITE_R事务、 19个NWRITE事务、26个NREAD事务,2个DOORBELL事务,最后是17个MESSAGE事务。其中第一个发送的事务是instruction_list.vh中第50行定义的SWRITE事务。如下图所示

4.2.2、下面以上图第50行的SWRITE事务为例来说明整个SWRITE事务的传输过程。这个事务表示的是利用SWRITE事务往地址36’hCD0000600发送16个字节的数据。

 

第11行到50行是37个SWRITE事务(流写事务),其中第1列的12位数据是由8-bit的保留位(SWRITE事务没有srcTID字段),1-bit的保留位,2-bit的prio和1-bit的CRF组成下图黄色标记部分字段,第2列是FTYPE字段【蓝色字段】,第3列是保留字段(SWRITE事务没有TTYPE字段)【紫色字段】,第4列的36-bit数据是由最高2-bit的保留位和34-bit的address字段组成第5列是8-bit保留字段(SWRITE事务没有size字段)【下图青色部分】,不管这个字段的值为多少,目标设备都会把这个值当做0来处理。源代码如下图所示

 本地设备(Local Device)生成的请求(Requests)通过ireq通道发送,远程设备(Remote Device)产生的响应包通过iresp通道接收来完成整个事务的交互过程。

 远程设备(Remote Device)生成的请求(Requests)通过treq通道接收,本地设备(Local Device)产生的响应包通过tresp通道发送来完成整个事务的交互过程。

在顶层模块中,变量名与通道的对应关系如下:

s_axis_ireq* 对应于ireq通道

m_axis_iresp* 对应于iresp通道

m_axis_treq* 对应于treq通道

s_axis_tresp* 对应于tresp通道

我们这里找到请求事务的传输通道ireq,并抓出事务的波形如下图所示

由于仅当tvalid和tready同时为高时,tdata上的数据才为有效数据,所以这个SWRITE一共消耗了三个有效时钟周期,其中第一个时钟周期发送的是HELLO包头,后面两个时钟周期分别发送8个字节的数据(第一个时钟发送的数据是0000000000000000第二个时钟发送的数据是0101010101010101),一共16个字节的数据,和instruction_list.vh中第50行定义完全一致,整个时序也与HELLO格式的时序完全吻合。【在后面分析数据是如何产生的】

Step3、对照HELLO格式解析包头。包头为006020fcd0000600,转化为二进制后与HELLO格式各个字段对应关系如下所示:

 

Step4、分析数据的来源

 

9A0000600这个地址发送的数据是0404040404040404-,,,分析这些数据的由来。在文件srio_request_gen_srio_gen2_0.v里面,现在发送的是,val_ireq_tdata  <= {8{data_beat}}

Step5、分析为什么第一个地址传了2个数据,第2的地址传了2个数据,第三个地址的数据个数明显增多,这个参数是怎么传进来的。

------------------------------------------------------------------

 

Step6SWRITE事务通道ireq通道(接口1)传输给SRIO核以后进入SRIO的逻辑层,逻辑层会给包添加传输层的信息发送给Buffer(接口3),然后Buffer会把数据发送给物理层(接口5)。

       选中srio_gen2_0_block_inst,把中间的buft_*通道、phyt_*通道与gttx_*通道的信号拖到右边的波形窗口中,如下图所示

 

 

参考文章:6、Xilinx RapidIO核仿真与包时序分析

  • 4
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SRIO(Serial RapidIO)和RapidIO(Rapid Input/Output)是两种不同的串行高速数据传输接口标准。 首先,SRIOSRIO工作组(Serial RapidIO Working Group)创建的一种串行高速数据传输协议,用于在多种应用中实现低延迟、高带宽和可靠性的数据传输。SRIO通常用于连接网络处理器、数字信号处理器和其他高性能计算设备,例如用于运算密集型应用的服务器和通信设备。 而RapidIO是一种用于构建高性能互连组件和系统的开放式标准。它是从Motorola公司的一种内部总线技术发展而来,并由RapidIO Trade Association(简称RTA)进行管理。RapidIO设计旨在构建低延迟、高带宽和高可靠性的数据传输系统,广泛应用于通信基础设施、数据中心和高性能计算等领域。 两者的区别主要在于以下几个方面: 1. 出处:SRIOSRIO工作组创造的,而RapidIO最初是Motorola公司的内部总线技术,后来被RTA接管。 2. 标准化机构:SRIOSRIO工作组进行管理,而RapidIO由RTA进行管理。 3. 应用领域:SRIO通常用于连接网络处理器、数字信号处理器和高性能计算设备,而RapidIO广泛应用于通信基础设施、数据中心和高性能计算领域。 4. 特性和性能:虽然SRIO和RapidIO都是用于构建低延迟、高带宽和高可靠性的数据传输系统,但两者在具体的特性和性能上可能有所不同,具体取决于实际的设计和实现。 综上所述,SRIO和RapidIO虽然都是用于实现高速数据传输的串行接口标准,但它们有着不同的出处、标准化机构、应用领域和具体特性。对于具体的应用需求,选择适合的标准有助于实现更好的数据传输性能和系统可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值