精华内容
下载资源
问答
  • SRIO学习笔记之SRIO简介与Xilinx SRIO ip核例程详解

    万次阅读 多人点赞 2019-10-03 11:22:50
    3. SRIO协议介绍 3.1 SRIO的数据流 3.2 SRIO的数据协议 3.3 SRIO常用FPGA支持的模式 3.4 SRIO例程代码的时钟计算 4. SRIO的例程代码结构 4.1 SRIO发送模块详解 4.1.1 发送数据部分代码功能说明 4.1.2 接收...

    目录

    1. 概述

    2. 参考文件

    3. SRIO协议介绍

    3.1 SRIO的数据流

    3.2 SRIO的数据协议

    3.3 SRIO常用FPGA支持的模式

    3.4 SRIO例程代码的时钟计算

    4. SRIO的例程代码结构

    4.1 SRIO发送模块详解

    4.1.1 发送数据部分代码功能说明

    4.1.2 接收响应部分的代码功能详解

    4.2 SRIO接收模块详解

    4.2.1 接收数据部分的代码功能说明

    4.2.2 发送响应部分的代码功能说明

    5. 疑点

    疑点1:

    疑点2:


    1. 概述

    本文是用于记录srio的学习情况,以及一些对xilinx的vivado 2017.4中生成srio例程代码的解释。

    2. 参考文件

    《pg007_srio_gen2》

    3. SRIO协议介绍

    本处将从SRIO的数据流,数据协议,常用FPGA支持模式,以及IP例程中的时钟大小计算等部分介绍SRIO的情况。

     

    3.1 SRIO的数据流

    SRIO通过生成IP后,通常情况下主要使用的接口为四组:ireq,iresp,treq,tresp。每个IP生成后都有这四组接口,即可以同时用于发送数据,接收数据,发送响应数据,接收响应数据。而这些接口间的信号流向如下图所示:

     

    即其信号流为IREQ发出给TREQ,TRESP发出给IRESP。

     

    3.2 SRIO的数据协议

    SRIO传输与响应的包类型很多,具体看手册P73-P74页。

     

    在使用Xilinx的ip核时,通常用的都是HELLO包,所以这里指给HELLO包的格式。如下图所示。Packet 中的具体符号表示意义请查看手册P76-P77页。其中的size为一包传输byte的数据量,范围为1-256 bytes。

        其典型的传输数据的用户接口代码的波形协议如下图所示:

     

    3.3 SRIO常用FPGA支持的模式

     

     

    3.4 SRIO例程代码的时钟计算

    refclk可使用时钟如下图table3-3所示。其中典型的时钟计算如Table3-4表头所示。:

    gt_clk     = line_rate/20;

    gt_pcs_clk = line_rate/40;

    phy_clk    = (gt_clk*link_width)/4;

    log_clk    = phy_clk;

    cfg_clk    = phy_clk;

     

    4. SRIO的例程代码结构

    SRIO生成例程后,其例程结构如下图所示。看着有8个文件,但常规情况下与我们相关的只有只有两个文件,即下图高亮的两个文件:

    1. srio_request_gen_srio_gen2_0(发送数据模块);
    2. srio_response_gen_srio_gen2_0(接收数据模块)

     

     

    4.1 SRIO发送模块详解

    SRIO发送模块中主要有两部分代码,发送数据部分(ireq),发送响应数据部分(iresp)。接收部分端口如下图所示:

     

     

     

    4.1.1 发送数据部分代码功能说明

    发送的包头数据的来源为“request_data_out = instruction[request_ address]”,即数据是从`include "instruction_list.vh"文件中调入的。而选择其文件中的哪些数据则是根据request_address算来的,具体如下图部分所示。

     

    最终包头的格式为:

     

        而包中去掉包头后传输的数据为每8位递增数据数据,具体如下图所示。

     

    重点:发送用户自己的数据与包头时设置,将go的值设置为0x01。

     

     

     

    4.1.2 接收响应部分的代码功能详解

    接收响应部分主要功能是在期望的得到回应的包类型时,检查是否回应的对应包头类型。

    而判断包头类型是否正确主要是根据预判的ftype(expected_ftype)时,检查接收到的ttype是否为协议规定的类型。判断的方式为下图位置:

     

    4.2 SRIO接收模块详解

    SRIO接收模块中主要有两部分代码,接收数据部分(treq),接收响应数据部分(tresp)。接收部分端口如下图所示:

     

     

    4.2.1 接收数据部分的代码功能说明

    接收部分主要是通过解析接收端口的信号,实时的解析如下图的信息,以及first_beat(beat为1个时钟的*_data),之后将每包数据去掉包头后丢入“RAMB36SDP(local_data_store)”中,但是每一包丢入数据时的首地址是current_addr[10:3]。

     

     

     

    4.2.2 发送响应部分的代码功能说明

    响应部分的代码分两部分,第一部分是响应的包头信号部分,第二部分是响应的数据部分。

    包头信号部分信息与响应的包类型相关,如下图所示,详细信息参考《pg007》的p76页。

     

    数据部分的信息主要是提取treq中输入的信号。但提取的方式是根据starting_read_addr = {1'b0, response_data_out[29:22]}开始提取数据输出,即是根据current_addr[10:3]的地址提取数据。也就是说这个提取数据的位置是根据输入数据包中的地址中的一部分作为首地址来定位的数据开始地方。

    当然是否需要反馈数据部分得根据接收到的包头类型而定,有些包只需要反馈包头不需要数据,有些包不需要进行反馈,详情参考手册P73页。

    保证存入“RAMB36SDP(response_queue_inst)”的包头判断信息无误的依据是RAMB36SB的写使能WREN(generate_a_response),generate_a_response是在接收到的first_beat时,且这个包头是需要反馈数据的包头时才会拉高使能。需要反馈的依据在《pg007》的Table 3-1,具体信息如下图所示:

     

     

    5. 疑点

    疑点1:

    虽然理论上来说反馈的数据提取数据是根据包头信息在同一个位置提取的,那么反馈的数据就和接收的对应包数据相同。但是由于接收到的数据包头的地址可能相同,至少current_addr[10:3]有很大几率相同,那么就会存在数据覆盖的现象,那么就会导致反馈的数据不是想要的数据,即返回的数据与接收到的数据不同。

     

    疑点2:

        为何把“current_addr[23:16] == 8'h12”作为pull_from_store(从存储地址开始拉高)?

       

        答:这个只是对应SRIO例程的发射数据,发射数据自定义的“真实起始地址”,参考手册P161,如下图所示。在自己使用时可以屏蔽掉与这个相关的信号。

     

     

     

    展开全文
  • Xilinx Srio详解&IP核使用

    万次阅读 多人点赞 2018-06-26 10:53:05
    虽然说这个是可选的,可是在xilinx 的IP core配置上,这个好像是一定存在的,并且还被推荐配置成AXI4-Liteinterface,当然也可以配置成AXI4-Stream。这2种interface的区别主要在于AXI4-Lite interface不仅可以让用户...

    一.简介

    RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能、 低引脚数、 基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放式互连技术标准。RapidIO主要应用于嵌入式系统内部互连,支持芯片到芯片、板到板间的通讯,可作为嵌入式设备的背板(Backplane)连接。
    RapidIO协议由逻辑层、传输层和物理层构成。逻辑层定义了所有协议和包格式。这是对终端进行初始化和完成传送的很有必要的信息。传输层为数据包从一个终端到另一个终端通道的必要信息。物理层描述了设备之间接口协议,例如包传装置,流量控制,电特性及低级错误管理等。Rapid IO分为并行Rapid IO标准和串行Rapid IO标准,串行RapidIO是指物理层采用串行差分模拟信号传输的RapidIO标准。
    RapidIO行业协会成立于2000年,其宗旨是为嵌入式系统开发可靠的、 高性能、 基于包交换的互连技术,2001 年正式发表其基本的规范。2003 年10 月,国际标准组织(ISO)和国际电工委员会(IEC)一致通过了RapidIO互连规范,即ISO/IEC DIS 18372,这使RapidIO(ISO)成为嵌入式互连技术方面得到授权的唯一标准。RapidIO 的规范发布历史如下:
    2001年3月,发布RapidIO 1.1规范;
    2002年6月,发布RapidIO 1.2规范;
    2005年2月,发布RapidIO 1.3规范;
    2007年6月,发布RapidIO 2.0规范;
    2009年8月,发布RapidIO 2.1规范;
    2011年5月,发布RapidIO 2.2规范。
    RapidIO 1.x标准支持的信号速率为1.25GHz、2.5GHz和3.125GHz;RapidIO 2.x标准在兼容Rapid IO 1.x标准基础上,增加了支持5GHz和6.25GHz的传输速率 。
    RapidIO 已有超过10 年的历史,仍然生机勃勃,它还在继续为开发人员提供高速、先进的通讯技术:可对许多集成电路、板卡、背板及计算机系统供应商提供支持,支持RapidIO 标准的厂商有:Mercury Computer Systems、Freescale Semiconductor、Lucent-Alcatel、PMC-Sierra、Texas Instruments、Tundra Semiconductor、WindRiver、AMCC、Curtiss-Wright Controls、GE Fanuc 等,也就是说世界上几乎所有的嵌入式主流厂商都已经支持RapidIO 技术,显然,RapidIO 势在必行。发展至今,开发人员有100 多种基于RapidIO 的产品可供选择,这些产品涵盖了各种开发工具、嵌入式系统、IP、软件、测试与测量设备及半导体(ASIC、DSP、FPGA)等。

     二.其他协议相比较

                随着高性能嵌入式系统的不断发展,芯片间及板间互连对带宽、成本、灵活性及可靠性的要求越来越高,传统的互连方式,如处理器总线、PCI总线和以太网,都难以满足新的需求 。

    处理器总线主要用作外部存储器接口,如德州仪器(TI) C6000系列DSP的外部存储器接口,可支持外接同步SDRAM、SBSRAM及FIFO,也可支持异步SRAM、FLASH等。外部存储器接口也可用作与板内FPGA或ASIC芯片互连,这种情况下,FPGA或ASIC模拟一个DSP支持的存储器接口,DSP则把FPGA或ASIC当作存储器来访问。这类同步接口带宽可达10Gbps,如德州仪器TMS320C6455 DSP的DDR2接口最大带宽为17.066Gbps,SBSRAM接口最大带宽为8.533Gbps。然而,这种接口也存在一些局限性:

    1. 接口管脚多,硬件设计困难。常见的DDR2接口有70~80个管脚;
    2. 只能用于板内互连,无法用于板间互连;
    3. 不是点对点的对等互连,DSP始终是主设备,其它器件只能做从设备。

    PCI是广泛用于计算机内器件互连的技术。传统PCI技术也采样类似于上述存储器接口的并行总线方式,如TMS320C6455 DSP的PCI接口,有32bits数据总线,最高时钟速度为66MHz,共有42个管脚。最新的串行PCI Express技术采用与串行RapidIO(SRIO, Serial RapidIO)类似的物理层传输技术,使得带宽达到10Gbps左右。但由于其主要的应用仍是计算机,而且为了兼容传统PCI技术,使得它在嵌入式设备方面的应用具有一定的局限性,如不支持点对点对等通信等。
    众所周知,以太网是使用最广泛的局域网互连技术,它也被扩展应用到嵌入式设备互连,但它的局限性也是显而易见的:

    1. 不支持硬件纠错,软件协议栈开销较大;
    2. 打包效率低,有效传输带宽因此而减小;
    3. 只支持消息传输模式,不支持对对端设备的直接存储器访问(DMA, Direct Memory Access)。

    针对嵌入式系统的需求以及传统互连方式的局限性,RapidIO标准按如下目标被制定:

    1. 针对嵌入式系统机框内高速互连应用而设计。
    2. 简化协议及流控机制,限制软件复杂度,使得纠错重传机制乃至整个协议栈易于用硬件实现。
    3. 提高打包效率,减小传输时延。
    4. 减少管脚,降低成本。
    5. 简化交换芯片的实现,避免交换芯片中的包类型解析。
    6. 分层协议结构,支持多种传输模式,支持多种物理层技术,灵活且易于扩展。

    三.协议的三层结构

    为了满足灵活性和可扩展性的要求,RapidIO协议分为三层:逻辑层、传输层和物理层。



    和以太网一样,RapidIO也是基于包交换的互连技术。如图3所示,RapidIO包由包头、可选的载荷数据和16bits CRC校验组成。包头的长度因为包类型不同可能是十几到二十几个字节。每包的载荷数据长度不超过256字节,这有利于减少传输时延,简化硬件实现。

    上述包格式定义兼顾了包效率及组包/解包的简单性。RapidIO交换器件仅需解析前后16bits,以及源/目地器件ID,这简化了交换器件的实现。

    逻辑层协议

    逻辑层定义了操作协议和相应的包格式。RapidIO支持的逻辑层业务主要是:直接IO/DMA (Direct IO/Direct Memory Access)和消息传递(Message Passing)。

    直接IO/DMA模式是最简单实用的传输方式,其前提是主设备知道被访问端的存储器映射。在这种模式下,主设备可以直接读写从设备的存储器。直接IO/DMA在被访问端的功能往往完全由硬件实现,所以被访问的器件不会有任何软件负担。从功能上讲,这一特点和德州仪器DSP的传统的主机接口(HPI, Host Port Interface)类似。但和HPI口相比,SRIO(Serial RapidIO)带宽大,管脚少,传输方式更灵活。

    对上层应用来说,发起直接IO/DMA传输主要需提供以下参数:目地器件ID、数据长度、数据在目地器件存储器中的地址。

    直接IO/DMA模式又可进一步分为以下几种传输格式:

    1. NWRITE: 写操作,不要求接收端响应。
    2. NWRITE_R: 带响应的NWRITE(NWRITE with Response),要求接收端响应。
    3. SWRITE:流写(Stream Write),数据长度必须是8字节的整数倍,不要求接收端响应。
    4. NREAD: 读操作。

    SWRITE是最高效的传输格式;带响应的写操作或读操作效率则较低,一般只能达到不带响应的传输的效率的一半。
    消息传递(Message Passing)模式则类似于以太网的传输方式,它不要求主设备知道被访问设备的存储器状况。数据在被访问设备中的位置则由邮箱号(类似于以太网协议中的端口号)确定。从设备根据接收到的包的邮箱号把数据保存到对应的缓冲区,这一过程往往无法完全由硬件实现,而需要软件协助,所以会带来一些软件负担。
    对上层应用来说,发起消息传递主要需提供以下参数:目地器件ID、数据长度、邮箱号。


    传输层协议

    RapidIO是基于包交换的互连技术,传输层定义了包交换的路由和寻址机制。

    RapidIO网络主要由两种器件,终端器件(End Point)和交换器件(Switch)组成。终端器件是数据包的源或目的地,不同的终端器件以器件ID来区分。RapidIO支持8 bits 或 16 bits器件ID,因此一个RapidIO网络最多可容纳256或65536个终端器件。与以太网类似,RapidIO也支持广播或组播,每个终端器件除了独有的器件ID外,还可配置广播或组播ID。交换器件根据包的目地器件ID进行包的转发,交换器件本身没有器件ID。

    RapidIO的互连拓扑结构非常灵活,除了通过交换器件外,两个终端器件也可直接互连。以德州仪器(TI)的TMS320C6455 DSP为例,它有4个3.125G的SRIO口,它可支持的拓扑结构


    物理层协议

    RapidIO 1.x 协议定义了以下两种物理层接口标准:

    1. 8/16 并行LVDS协议
    2. 1x/4x 串行协议 (SRIO)

    并行RapidIO由于信号线较多(40~76)难以得到广泛的应用,而1x/4x串行RapidIO仅4或16个信号线,逐渐成为主流,所以本文仅介绍串行RapidIO。

    串行RapidIO基于现在已广泛用于背板互连的SerDes(Serialize Deserialize)技术,它采用差分交流耦合信号。差分交流耦合信号具有抗干扰强、速率高、传输距离较远等优点。差分交流耦合信号的质量不是由传统的时序参数来衡量,而是通过眼图来衡量,眼图中的“眼睛”张得越开则信号质量越好。下图是一个典型的串行RapidIO信号的眼图。

    差分信号的强弱由一对信号线的电压差值表示,串行RapidIO协议规定信号峰-峰值的范围是200mV-2000mV。信号幅度越大,则传输距离越远,RapidIO协议按信号传输距离定义两种传输指标:

    1. 短距离传输(Short Run),<=50厘米,主要用于板内互连,推荐的发送端信号峰-峰值为500mV-1000mV
    2. 长距离传输(Long Run),>50厘米,主要用于板间或背板互连,推荐的发送端信号峰-峰值为800mV-1600mV

    为了支持全双工传输,串行RapidIO收发信号是独立的,所以每一个串行RapidIO口由4根信号线组成。标准的1x/4x 串行RapidIO接口,支持四个口,共16根信号线。这四个口可被用作独立的接口传输不同的数据;也可合并在一起当作一个接口使用,以提高单一接口的吞吐量。

    德州仪器TMS320C6455 DSP上集成了标准的1x/4x串行RapidIO接口,如图


    发送时,逻辑层和传输层将组好的包经过CRC编码后被送到物理层的FIFO中,“8b/10b编码”模块将每8bit数据编码成10bits数据,“并/串转换”模块将10bits并行数据转换成串行bits,发送模块把数字bit转换成差分交流耦合信号在信号线上发送出去。这里的8b/10编码的主要作用是:

    1. 保证信号有足够的跳变,以便于接收方恢复时钟。串行RapidIO没有专门的时钟信号线,接收端靠数据信号的跳变恢复时钟。所以需要把信号跳变少的8bits数据(如全0或全1)编码成有一定跳变的10bits数据。另外,也使得总体数据中0和1的个数均衡,以消除直流分量,保证交流耦合特性;
    2. 8b/10编码可扩大符号空间,以承载带内控制符号。10bits能表示1024个符号,其中256个表示有效的8bits数据,剩下的符号中的几十个被用作控制符号。控制符号可被用作包分隔符,响应标志,或用于链路初始化,链路控制等功能;
    3. 8b/10编码能实现一定的检错功能。1024个符号中,除了256个有效数据符号和几十个控制符号外,其它符号都是非法的,接收方收到非法符号则表示链路传输出错。

    接收的过程则正好相反,首先接收方需要根据数据信号的跳变恢复出时钟,用这个时钟采样串行信号,将串行信号转换为10bits的并行信号,再按8b/10b编码规则解码得到8bits数据,最后做CRC校验并送上层处理。

    数据被正确的接收时,接收端会发送一个ACK响应包给发送端;如果数据不正确(CRC错或非法的10bits符号),则会送NACK包,要求发送方重传。这种重传纠错的功能由物理层完成,而物理层功能往往由硬件实现,所以不需要软件干预。

    串行RapidIO支持的信号速率有三种:1.25GHz,2.5GHz,3.125GHz。但由于8b/10b编码,其有效数据速率分别为:1Gbps, 2Gbps, 2.5Gbps。 4个1x端口或一个4x端口支持的最高速率为10Gbps。

    四.xlinx srio ip介绍

    Endpoint IP由物理层、传输层及逻辑层组成,自带可配置buffer design、reference clock module、reset module及configuration fabric referencedesign。支持1x、2x、4x lane widths,支持per-lane speeds of 1.25、2.5、3.125、5.0及6.25Gbaud。SRIO Gen2使用AXI4-Stream接口用于高速数据传输。

    逻辑层定义了操作协议和包格式。

    传输层提供端点器件间传输包所需的路由信息。

    物理层定义器件级接口的细节,如包传输机制、流量控制、电气特性和低级错误管理。

    1.1SRIO系统预览

    图一  Serial RapidIOSystem Overview



    2.逻辑层接口介绍

    由图一可以看到逻辑层有三种接口:ConfigurationFabric Interface,具体如下:

    图二    逻辑层接口

    User Interface

    主要包含一系列I/O ports和三类可选的ports,主要是用来发包和收包解析。对于使用哪些接口,在FPGA开发过程中,可以在IP core进行配置,实现时,每种事物根据事物的类型接入对应的port中。

    其中,任何支持I/O事物传输的都将在I/O ports收发,如NWRITEs、NWRITE_Rs、SWRITEs、NREADs和RESPONSEs等事物;MESSAGE事物则可以在I/O ports传输,也可以在专用的messaging port传输;DOORBELL事物不管有没有message port,都将使用IO port进行传输;如果定义了maintenance接口,那么maintenance事物将通过maintenance接口进行传输;如果使用了User-defined接口的话,那么用户自定义的、系统不支持的或者未指明接口的事物将可以采用这种User-defined接口,如果未使能User-defined接口,那么上面提到这3种事物包将被丢弃。

    必备的I/O Port

    IO port支持2种格式:HELLO format 和SRIOstream。对于模式和包格式的选择都需要在创建IPcore的时候选定好,并且IO ports里面所有的channels都必须使用相同的包格式。

    IO ports配置成condensedIO模式主要是为了减少channels数,此时只有一个AXI4-stream 用来收发数据。在这种模式下,SRIO的IO port很接近于PCIE的AXI总线。(注意端口命名的参考是LOG层).

    initiator/Target允许在远端的initiator发起事物并把本地的endpoint作为事物传送目标。从下面其接口图可以看出,其实感觉有点类似IIC,规定什么时候谁为master,向slave发起操作,故具备了2套独立的AXI4-stream用来收发数据。





    s_axis_ireq* are associated with INITIATOR_IREQ.

    m_axis_iresp* are associated with INITIATOR_IRESP.

    m_axis_treq* are associated with TARGET_TREQ.

    s_axis_tresp* are associated with TARGET_TRESP.

    可选的Messaging Port

    为什么是可选的呢,因为message也可以作为普通的wrtie事物通过I/O prot进行传输,IP core 产生时可以对这个进行选择。默认是和I/O port复用的,但是如果作为独立的port也是可以的,接口类型和initiator/Target一样。

    可选的Maintenance Port

    虽然说这个是可选的,可是在xilinx的IP core配置上,这个好像是一定存在的,并且还被推荐配置成AXI4-Liteinterface,当然也可以配置成AXI4-Stream。这2种interface的区别主要在于AXI4-Lite interface不仅可以让用户app target本地的配置空间,还可以target远端的配置空间,而AXI4-Stream interface只能配置远端的配置空间。

    可选的User-Defined Port

    User-definedport采用的是SRIO stream format,并且拥有2个AXI4-Stream channels。





    3.BUF接口

    BUF层夹杂在LOG层和PHY层中间,为包的传送和流控制提供了保证。当然收发的buffer大小是可配的,值得注意的是,这里说的大小不是说fifo size或深度之类的,而是max sized packets的个数,即按最大size包的个数进行管理的。




    上面的和LOG和PHY层的interface是AXI4-Stream,而cfgb则是AXI4-Liteinterface接口,实现进入BUF层的配置空间。

    该层主要包含以下一些接口:

    (1)clock andresetinterface

    (2)transport interface

    (3)link interface

    (4)BUF configurationfabric interface

    4.物理层接口

    RapidIO串行物理层,通常称为串行RapidIO,针对板上或通过背板的器件间的电气连接。串行物理层定义器件间的全双工串行链路,在每个方向上使用单向差分信号。RapidIO串行物理层支持RapidIO器件间的包传送,包括包和控制符号的传送、流量控制、错误管理和其他器件到器件的功能。

    由于串行RapidIO规范仅在物理层定义(RapidIO技术定于物理层为电气接口和器件到器件的链路协议),多数RapidIO控制器的逻辑是相同的。因此,串行RapidIO规范保留了许多已有的设计经验和经过证实的基础结构,简化了并行与串行链路间的系统级交换操作。

    RapidIO串行物理层有如下特征:

    (1)采用8B/10B编码方案将发送时钟嵌入到数据中;

    (2)在每个方向上支持一个串行差分对,称为1通道;或支持四个并列的串行差分对,称为4通道;

    (3)使用专用的8B/10B码来管理链路,管理内容包括流量控制、包定界和错误报告;

    (4)允许在RapidIO1x/4xLP-Serial(串行RapidIO)端口和RapidIO物理层8/16 LP-LVDS(并行RapidIO)端口之间进行包传输而无需包处理;

    (5)使用与并行RapidIO物理层相似的重传和错误恢复协议;

    (6)支持每通道1.25G、2.5G和3.125G波特率(数据流为1.0Gbps、2.0Gbps和2.5Gbps)的传送速率。(现在支持的应该更多了,可以高达6.25G了)




    该层主要包含以下一些接口:

    (1)clock and reset interface

    (2)link interface

    (3)serial interface

    (4)control and statusinterface

    (5)configuration fabricinterface

    (6)serial transceiversinterface

    (7)configuration fabricreference design interface

    五.xlinx srio ip 

    在利用Xilinx的IP进行开发时,为了简化报文的解析和组包,SRIO Gen2 usesAXI4-Stream,Xilinx推出了一种简化的报文格式,这样一来,我们可以发现,这样又很接近PCIE的TLP报文格式了。

    HELLO format









    引脚示意:

    引脚名称

    方向

    备注

    sys_clkp

    input

    差分时钟(直连板子)

    sys_clkn

    input

    差分时钟(直连板子)

    sys_rst

    input

    可连板或拉低一阵子再拉高

     

     

     

    log_clk_out

    output

    给用户使用always里的时钟

    buf_rst_out

    output

     

    log_rst_out

    output

     

    gt_pcs_rst_out

    output

     

    gt_pcs_clk_out

    output

     

    cfg_rst_out

    output

     

    deviceid

    output

    存储在Base DeviceID CSR中的当前值

    port_decode_error

    output

    表示收到不支持的事务,并且由于未启用用户定义的端口而被删除。 当下一个支持的数据包类型到达任何用户界面时,该信号无效。 该信号在log_clk中同步。

     

     

     

    s_axis_ireq_tvalid

    input

    发送数据有效信号

    s_axis_ireq_tready

    output

    IP核准备好接收数据

    s_axis_ireq_tlast

    input

    发送的最后一行数据

    s_axis_ireq_tdata

    input

    数据位

    s_axis_ireq_tkeep

    input

    keep

    s_axis_ireq_tuser

    input

    由源ID(31:16)和目标ID(15:0)组成

     

     

     

    m_axis_iresp_tvalid

    output

    上面的数据线反向使用,这是回应通道!

    m_axis_iresp_tready

    Input

    m_axis_iresp_tlast

    output

    m_axis_iresp_tdata

    output

    m_axis_iresp_tkeep

    output

    m_axis_iresp_tuser

    output

     

     

     

    m_axis_treq_tvalid

    output

    用户接收数据使用的axi-stream协议,含义同上,只是方向问题

    m_axis_treq_tready

    input

    m_axis_treq_tlast

    output

    m_axis_treq_tdata

    output

    m_axis_treq_tkeep

    output

    m_axis_treq_tuser

    output

     

     

     

    s_axis_tresp_tvalid

    input

    作为回应通道

    s_axis_tresp_tready

    output

    s_axis_tresp_tlast

    input

    s_axis_tresp_tdata

    input

    s_axis_tresp_tkeep

    input

    s_axis_tresp_tuser

    input

     

     

     

    s_axi_maintr_rst

    input

    给维护接口复位

    s_axi_maintr_awvalid

    input

    写地址的有效信号

    s_axi_maintr_awready

    output

    写地址的ip核准备好信号线

    s_axi_maintr_awaddr

    input

    写地址的具体地址

    s_axi_maintr_wvalid

    input

    写数据的有效信号

    s_axi_maintr_wready

    output

    写数据的ip核准备好信号线

    s_axi_maintr_wdata

    input

    写数据

    s_axi_maintr_bvalid

    output

    Ip核的回应信号

    s_axi_maintr_bready

    input

    和写数据一起拉高,valid拉高以后,一起再高一个时钟后拉低

    s_axi_maintr_bresp

    output

    可以不看

    s_axi_maintr_arvalid

    input

    要读的地址有效信号

    s_axi_maintr_arready

    output

    Ip核准备好信号

    s_axi_maintr_araddr

    input

    要读的地址是多少

    s_axi_maintr_rvalid

    output

    读出来的数据的有效信号

    s_axi_maintr_rready

    input

    用户准备好要读数据

    s_axi_maintr_rdata

    output

    读出来的数据

    s_axi_maintr_rresp

    output

     

     

     

     

    gt_clk_out

    output

     

    drpclk_out

    output

     

    refclk_out

    output

     

    buf_lcl_response_only_out

    output

     

    buf_lcl_tx_flow_control_out

    output

     

    idle2_selected

    output

     

    idle_selected

    output

     

    buf_lcl_phy_buf_stat_out

    output

     

    phy_clk_out

    output

     

    gt0_qpll_clk_out

    output

     

    gt0_qpll_out_refclk_out

    output

     

    phy_rst_out

    output

     

    sim_train_en

    input

    给0

    phy_mce

    input

    给0

    phy_link_reset

    input

    给0

    force_reinit

    input

    给0

    phy_lcl_phy_next_fm_out

    output

     

    phy_lcl_phy_last_ack_out

    output

     

    link_initialized

    output

    Link初始化成功信号

    phy_lcl_phy_rewind_out

    output

     

    phy_lcl_phy_rcvd_buf_stat_out

    output

     

    phy_rcvd_mce

    output

     

    phy_rcvd_link_reset

    output

     

    port_error

    output

     

    port_initialized

    output

    端口初始化成功信号

    clk_lock_out

    output

     

    mode_1x

    output

     

    port_timeout

    output

     

    srio_host

    output

     

    phy_lcl_master_enable_out

    output

     

    phy_lcl_maint_only_out

    output

     

    gtrx_disperr_or

    output

    来自串行收发器的每字节不一致错误指示符。 如果位0置位,则gtrx_data [7:0]存在差异错误,依此类推。

    gtrx_notintable_or

    output

    来自串行收发器的每字节不在表错误指示符。 如果位0是

    断言,gtrx_data [7:0]有8b / 10b解码错误,依此类推。

    phy_debug

    output

    看手册这个信号200+bits包括了之前所有的输出信号线

     

     

     

    srio_txn0

    output

    直接连板子的数据差分信号

     

     

     

     

    直接连板子的数据差分信号

     

     

     

     

    直接连板子的数据差分信号

     

     

    直接连板子的数据差分信号

    srio_txp0

    output

    srio_rxn0

    Input

    srio_rxp0

    Input

     

     

    srio_txn1

     

    srio_txp1

     

    srio_rxn1

     

    srio_rxp1

     

     

     

    srio_rxn2

     

    srio_rxp2

     

    srio_txn2

     

    srio_txp2

     

     

     

    srio_rxn3

     

    srio_rxp3

     

    srio_txn3

     

    srio_txp3

     

     

     

     

     

     

     

     


    展开全文
  • SRIO简单应用指南。

    SRIO简单应用指南。


    汇总篇:

    Xilinx平台SRIO介绍(汇总篇)


    目录

    前言

    一、HELLO格式

    二、收发测试

    后记


    前言

            Example Design一堆.v文件看着很不爽怎么办,删掉删掉!

            使用我们自己的发送/接收模块,两个字:清爽,简单!

    一、HELLO格式

    在讲之前,我们需要回顾两个内容:

    1. HELLO格式的包头
    2. HELLO格式的发送时序图

    HELLO格式的包如下图所示不需要背诵,查阅就好。但是多写两遍,基本也就记住了。。

     再来回顾一下HELLO包格式发送请求的基本时序图:

             HELLO格式数据的包头(Header)在用户接口的第一个有效时钟上,如果发送的事务携带数据负载,那么数据负载紧接着包头(Header)后面进行连续发送。包的Source ID和Destination ID放在tuser信号中并与包头(Header)一样,在第一个有效时钟下进行发送,发送完毕以后,tuser信号的数据被忽略。

             图是携带有数据负载HELLO格式包在用户接口上传输的时序图,这个传输有4个双字(32个字节)的数据负载,加上包头,整个传输一共花费了5个时钟周期。用户只需要把想要发送的数据按照图的时序图送入RapidIO核的AXI4-Stream接口,RapidIO核就能把它转化为标准的RapidiO串行物理层的包发出去从而完成一次事务的交互。

            先发个包头,再发你想要发送的数据,按照AXI4-S接口格式给出去就OK!

            超级简单,有木有!忍不住给Xilinx官方大大点个赞!

     

     

    二、收发测试

            OK,基于上面的时序图,我们发送模块只需要设计自己的包头和数据放到ireq_*端口就好。而接收模块,则通过treq_*端口将数据解析出来,没什么好说的。

            老规矩,仿真收发测试,TX / RX管脚直接短接。

            对了,仿真时记得将sim_train_en信号置1 ;加快仿真速度,不然有你受的。

    注:

            本次测试使用NWRITE事务类型:FTYPE =5, TTYPE =4;size=15;发送的数据为1,2,3,4;测试讲解嘛,意思下就行了~

            那么,我们的发送时序图设计如下:

     ①:包头,为了数据好看,我用的十进制显示,可是包头就不好辨认了...

    ②:负载:1,2,3,4

    tready&tvalid信号握手成功才能传输,tlast表示最后一个数据;

            仿真结束,我们来看仿真接收的数据:

             可以看到,treq也是先接收了包头①,然后数据②;注意,两个包头是不一样的,哈哈,为什么呢?

            数据②为:1,2,3,4; 与发送数据相等,测试完成。

            搞定,收工!

     

    后记

    又学会一个接口,是不是轻松+愉快~

    天天写接口,有点枯燥,后续开始写点别的吧。

    咱们下期见。

    展开全文
  • 这种格式可以使我们不按照srio协议格式编码组帧,而是采用xilinx提供的这种(HELLO)数据格式,这种格式更简单,更易编码,且与rapiodio协议有一定的映射关系,会在逻辑层自动完成,无需用户操心。这种格式把包的...

    总的目录在这哦~ 

    https://blog.csdn.net/z123canghai/article/details/114648658


    目录

     3.3 Xilinx的HELLO格式

    3.4 缓冲区的流控机制


     3.3 Xilinx的HELLO格式

    HELLOHeader Encoded Logical Layer Optimized。这种格式可以使我们不按照srio协议格式编码组帧,而是采用xilinx提供的这种(HELLO)数据格式,这种格式更简单,更易编码,且与rapiodio协议有一定的映射关系,会在逻辑层自动完成,无需用户操心。这种格式把包的包头(Header)域进行标准化,而且把包头和数据在接口上分开传输,这将简化控制逻辑并且允许数据与发送边界对齐,有助于数据的管理。

    HELLO格式的包如下图所示RapidIO协议定义了七种事务类型,每种事务类型执行不同的功能。RapidIO包格式中的FTYPE字段与TTYPE字段共同确定了事务的类型,与标准RapidIO协议不同的是,RapidIO核中定义了第9类事务(FTYPE=9——DATA STREAMING事务,它是一类带有数据负载的写事务,标准RapidIO协议中第9类事务是保留事务。

    我们可以和srio协议对比下,源协议是没有固定长度帧头的,这样编程就没有HELLO格式方便,当然我们也可以采用非HEIILO格式方式,在核配置中配置即可。

    其中HELLO格式的各个字段的定义如下表所示

    字段

    位置

    描述

    TID

    [63:56]

    包的事务ID(Transaction ID)

    FTYPE

    [55:52]

    包的事务类 (Format Type),可以理解为格式类型

    TTYPE

    [51:48]

    包的事务类型(Transaction Type),可以理解为功能类型

    Priority

    [46:45]

    包的优先级。请求包的优先级值为0~2,响应包的优先级值为请求包的优先级加1

    CRF

    [44]

    包的关键请求流标志(Critical Request Flow)与prio字段共同决定包的优先级

    Size

    [43:36]

    有效数据负载的字节数减1,如果这个字段的值为0xFF,那么表示有效数据为256(0xFF + 1)个字节,也就是最少会有一个数,这个数据就是帧头了。

    Error

    [35]

    当这个字段为1时表示包处于错误状态

    Address

    [33:0]

    事务的字节地址

    Info

    [31:16]

    信息域。仅在门铃事务(DOORBELL)中包含此字段

    Msglen-1

    [63:60]

    消息事务(MESSAGE)中包的个数。仅在消息事务(MESSAGE)中包含此字段

    Msgseg-1

    [59:56]

    包中的消息段,仅在消息事务(MESSAGE)中包含此字段,如果是单段(signal-segment)消息,此字段保留

    Mailbox

    [9:4]

    包的目标邮箱,仅在消息事务(MESSAGE)中包含此字段,除了单段(signal-segment)消息以外,此字段的高四位是保留位

    Letter

    [1:0]

    包的信件,仅在消息事务(MESSAGE)中包含此字段,指示了邮箱中的一个插槽

    S,E,R,xh,O,P

    [63:56]

    S:起始位,当此字段为1时表示这个包是新PDU(Protocol Data Unit)的第一个分段。

    E:结束位,当此字段为1时表示这个包是新PDU(Protocol Data Unit)的最后一个分段。当SE均为1时表示PDU仅包含一个包。

    R:保留位。

    Xh:扩展头(Extended Header)。目前版本不支持

    O:奇数(Odd),当此字段为1时表示数据负载有奇数个半字。

    P:填充位(Pad)。当此字段为1时,一个填充字节用于去填充数据到半字(half-word)边界

    Cos

    [43:36]

    服务类(Class of service)

    StreamID

    [31:16]

    点到点的数据流标识符

    Length

    [15:0]

    协议数据单元(Procotol Data Unit,PDU)长度

    FTYPETTYPE的理解可参考下图所示,FTYPEFormat Type的缩写,是按格式分类的方式进行大类区分,TTYPE是Transaction Type的缩写,是按照功能分类,这种分类方式便于编程。

    HELLO格式的包中Size域的值等于传输的字节的总数减1Size域的有效值范围为0~255,对应于实际传输的字节数量1~256HELLO格式中的sizeaddress域是对应于RapidIO包中有效的sizeaddresswdptr域,所以HELLO格式的sizeaddress字段的值存在一些限制条件。RapidIO核不能把Size域中的非法值修正为实际RapidIO包中Size域的有效值,所以需要对HELLO格式包的Size域提供一个正确的值。由于AXI4-Stream协议中tdata信号为8个字节,也就是一个双字(Double Word),所以Size域的值需要分两种情况讨论:传输的数据量小于8字节和传输的数据量大于8字节。

    1、传输的数据量小于8字节(Sub-DWORD Accesses):

    对于传输的数据量小于8字节的情况,address字段和size字段用来决定有效的字节位置(tkeep信号必须为0xff),但是仅仅能导致RapidIO包中rdsize/wrsizewdptr为有效值的addresssize值组合才是被允许的,下图是HELLO格式中addresssize两个字段与有效字节位置的对应关系示意图(图中灰色部分为有效字节位置)

     

    也就是说,HELLO格式的地址是以字节为单位不允许出现跨行情况的出现,例如,对size=2address=34’h1_1234_5675这两个组合来说,由于size=2,所以往address中写入的数据个数为3size+1)个字节,而address的最低3位为5(3’b101),通过上图可知,有效字节的位置是第765三个字节。对于sizeaddress[2:0]值的组合不在上图中的情况都是非法的,这是应该避免的,比如,size=2 address=34’h1_1234_5673这种组合就属于非法的组合。

    2、传输的数据量大于8字节(Large Accesses):

    对于传输的数据量大于8字节,并且地址的起始字节偏移不为0的情况必须把数据分成多次进行传输,其中未对齐的小于8字节的段就可以通过上图中sizeaddress的有效组合来确定有效字节的位置。或者可以通过将读取大小增加到下一个支持的大小并从相应的响应中提取必要的数据来处理读取

    因此,对于数据量为1个双字(8个字节)或更大的情况,address的最低3位必须为0RapidIO手册给读写事务定义了范围从1256个字节的可支持的数据量。请求事务的数据量如果大于一个双字(8个字节),那么数据量应该通过四舍五入到最接近的支持的值。读写事务有效的HELLO格式的数据量为:715,31,63,95(仅支持读事务),127,159(仅支持读事务),191(仅支持读事务),223(仅支持读事务)和255

    对于写事务的数据量介于以上这些支持的数据量中间的情况,在通道的tlast信号为1之前应该给RapidIO核提供必要的数据量,仅仅提供的数据才能被发送。同理,用户的设计提供的数据可能少于期望的数据量,那么实际数据量应该被写入,传输应该假设完成。

    RapidIO协议不支持传输的数据量大于256字节的情况,并且逻辑层(Logical)也不能把大于256字节的数据量分割为小的数据量进行发送。如果不满足这个要求可能会导致致命的链路错误,在这种错误情况下,链路可能会不断重传数据量大于256字节的包。

    HELLO格式数据的包头(Header)在用户接口的第一个有效时钟上,如果发送的事务携带数据负载,那么数据负载紧接着包头(Header)后面进行连续发送。包的Source IDDestination ID放在tuser信号中并与包头(Header)一样,在第一个有效时钟下进行发送,发送完毕以后,tuser信号的数据被忽略。

    下图是携带有数据负载HELLO格式包在用户接口上传输的时序图,这个传输有4个双字(32个字节)的数据负载,加上包头,整个传输一共花费了5个时钟周期。用户只需要把想要发送的数据按照下图的时序图送入RapidIO核的AXI4-Stream接口,RapidIO核就能把它转化为标准的RapidiO串行物理层的包发出去从而完成一次事务的交互。

    下图是一种更复杂的传输示意图。首先,有两个背靠背(back-to-back)单周期包(包不带数据负载,仅包含一个包头)。包的边界通过拉高tlast信号进行指示。在单周期包传输完毕以后,主机等待了一个时钟周期才开始发送下一个包。在发送第三个包的过程中,主机(Master)和从机(Slave)分别通过拉低tvalidtready信号一个时钟周期来暂停数据的发送,由于第三个包的数据负载为2个双字,所以传输第三个包一共消耗了3个有效时钟,加上2个无效的时钟周期,一共消耗了5个时钟周期。

    SRIO Stream包格式

    用户接口也能配置为SRIO Stream格式,在这种格式下,用户接口的包格式各个字段的定义与RapidIO手册中标准的RapidIO包中逻辑层和传输层各个字段的定义完全相同,但用户接口的包格式中还包括标准RapidIO包物理层的prio字段,整个SRIO Stream的包格式如下图所示

    下图是SRIO Stream格式的包在用户接口上传输的时序图,整个传输的数据负载为5个双字,一共消耗5个有效时钟周期,CRF/Response位在第一个有效时钟周期进行传输。

    SRIO Stream格式用的不多,所以并非本文的重点,更多详细的内容请查看《PG007》的第80页到82页。


    3.4 缓冲区的流控机制

    注:本节内容为《PG007P110的翻译。

    串行RapidIO缓冲区设计(BUF)设计提供了可配置的缓冲区解决方案以处理时钟域交叉,重传,流控制和响应优先级。TXRX缓冲区大小可分别配置为容纳81632个数据包。串行RapidIO是一种无损协议。BUF使用重传来保证数据包的传递。当数据包从BUF传输到PHY时,它们会用确认标识符(ackID)进行标记。PHY在传输之前将ackID附加到数据包上,以供链接伙伴进行跟踪。如果链接伙伴有足够的空间容纳接收到的数据包,并且发现它没有错误,那么它将发出一个数据包接受(PA)控制符号。否则,链接伙伴会指示该数据包应重试或错误。

    PHYBUF提供phy_next_fm,指示哪个ackID应该与发送数据包相关联。当PHY接收到PA控制符号时,phy_last_ack总线会更新,指示已成功发送数据包,并且可以从发送缓冲区中删除该数据包。在链路伙伴出于某种原因不接受数据包的情况下,PHY会中断当前传输并倒回数据包计数器。为了向BUF发出倒带事件信号,PHY在更新phy_next_fmphy_last_ack指针时会断言phy_rewind。无论是否正在传输帧,都会发生phy_rewind断言。但是,当在数据包中时,phy_rewind信号保持有效,直到BUF在接口上完成该数据包为止。不在数据包中时,phy_rewind可以保持断言至少两个周期在释放phy_rewind之后,更新phy_last_ack值将用于确定可以从缓冲区中删除哪些数据包,然后开始传输/重新传输数据包。

    当发生倒带事件时,不能保证BUF以与倒带事件之前相同的顺序发出数据包。当数据包在BUF设计中累积时,它将根据优先级和事务类型对数据包进行仲裁,如下所示:

    正常操作条件下,SRIO Gen2端点以与接收数据包相同的速率传输数据包,因此缓冲区中的数据包之间的仲裁不会发挥作用。但是,当发生错误或缓冲区开始填充并且流控制开始起作用时,BUF开始备份,必须仲裁多个数据包。

    重要说明:在考虑系统设计问题(例如如何确定数据包的优先级)时,必须考虑仲裁机制及其对使用模型的影响。

    如果系统使用SRIO Gen2端点作为启动器来生成稳定的流量,则建议对所有请求流量使用相同的优先级,以使没有一个流量饿死。但是,如果系统使用12个高优先级流中的数据突发,则分层优先级方法可能会有所帮助,因为较低优先级的流具有不活动状态,可以在其中完成。串行RapidIO规范[Ref 13]支持两种不同形式的流控制,即发送器(TX)和接收器(RX)。BUF支持两种形式。此外,您可以选择生成仅RX控制的缓冲区,以节省资源,这可能会占用带宽。

    使用接收器控制的流量控制时,BUF依赖PHY重试协议来限制链路流量。串行RapidIO规范要求接收缓冲区为每个优先级跳转保留一个空间,为响应保留1个空间。随着接收缓冲区填满这些点,它应该开始重试表3-10中所示的较低优先级的数据包。

    当优先级太低的数据包被重试时,BUF通过重新排队所有内容进行仲裁来倒回它发送的数据包。如果重试的数据包是响应数据包,则重新发出相同的数据包;否则,将重新发出该数据包。但是,数据包优先级增加了1RapidIO协议允许端点使用此功能,以防止出现死锁情况,在死锁情况下,响应事务将备份并最终阻塞接收者队列。其余的数据包将被仲裁,如表3-10所示。

    3-223-26显示了重传如何影响数据包排队的示例。

    3-22显示了基本的优先级凹凸

    发送Buffer负责把将要发出去的事务放到队列中,并对发往物理层(PHY)的包流进行管理。接收Buffer和发送Buffer的大小可以在IP核中配置为81632个包的深度。发送Buffer是一个存储和转发缓冲区,它是用来降低包到包的延迟以最大化流吞吐量。发送Buffer必须保存每个包直到包被接收方成功接收,当接收方成功接收包以后,发送Buffer才会释放包来给其他包腾出空间。当流控(Flow Control)发生时,通常会有多个未发送的包滞留在发送Buffer中,发送Buffer会根据包的类型与优先级进行重新排序,然后按照响应包先发送,请求包后发送的顺序把发送Buffer中的包依次发出去。Buffer的另一个作用是处理跨时钟域的问题,当生成IP核的时候可以根据需求添加或者移除跨时钟域逻辑。对于多通道的RapidIO来说,由于物理层的时钟在start-up场景和traindown场景是动态的,所以推荐把跨时钟域逻辑加上,这样可以保证用户逻辑工作在已知的速率上。

    接收Buffer类似于一个FIFO,它用来存储和转发接收通路上发送给逻辑层的数据。接收Buffer也包含跨时钟域逻辑,这可以保证逻辑层和物理层工作在不同的速率上,和发送Buffer一样,对于多通道RapidIO,推荐加上跨时钟域逻辑。


    就关于官方的实例分析,不仅实现了对核的配置、仿真,还对信号进行了整理,如下所示

    开发软软件为vivado2016.4,打开工程点击“Flow”选择“open static simulation”打开静态仿真可直接查看信号波形


    相关程序可关注“沧小海的FPGA”微信公众号回复“SRIO”即可获取,感谢关注~  

    展开全文
  • xilinx srio协议中文版,涵盖协议原理,应用,仿真,example解析,是本完整的入门手册,看完之后完全可以上手
  • xilinx vivado srio license vivado 2015.4 vivado 2016.4 vivado 2017.4 vivado 2018.2 各版本亲测可用
  • 关于Xilinx spartan6系列FPGA的SRIO使用例程,内含使用说明,亲测可用
  • Xilinx SRIO详解.pptx

    2020-08-07 13:37:24
    第一篇 协议简介 产生背景 应用场景 协议构成 传输速率 电气接口 路由机制 与其他协议区别 第二篇 信息交换过程 Initiator Fabric responser 第三篇 RAPIDIO数据包的构成 Rapidio数据包的构成 ...控制时序
  • Xilinx Srio详解&IP核使用,还算比较有用的资料,尤其是对IP核接口各个信号的说明很有用,基本值得参考
  • xilinx srio应用

    2020-08-28 20:06:35
    srio数据收发,NWRITE或者SWRITE数据发送接收,在6.25Gx4的eg上进行修改而来,仅修改发送模块,接收模块可直接使用,内有说明,仅供参考,有用回复点赞
  • xilinx srio最权威资料

    2018-09-14 13:37:08
    xilinx srio最权威资料
  • 赛灵思xilinx serial RappidIo 破解license,vivado 2017.4版本亲测可用,其他版本未知,使用时请将最后一段文字删除
  • vivado IP核Rapidio可使用,无需修改MAC地址,但是需要修改PC机时间,是调试验证不错的选择,亲测2015.2和2018.1版本均可使用,其他版本没有尝试。
  • FPGA开发——SRIO

    2020-05-11 06:20:44
    srio基础知识 【高速接口-RapidIO】4、Xilinx RapidIO核详解 https://www.cnblogs.com/liujinggang/p/10072115.html srio官方例程(vivado环境) 【高速接口-RapidIO】5、Xilinx RapidIO核例子工程源码分析 ...
  • xilinx vivado SRIO license

    2018-01-17 15:32:46
    xilinx vivado SRIO license,亲自测试可以生成BIT文件,希望大家有用
  • 最详细【SRIOXilinx RapidIO核详解

    万次阅读 多人点赞 2019-08-13 09:22:09
    Buffer对于保证包发送和流控操作是非常有必要的,Xilinx提供了一个可配置的Buffer解决方案,可以在系统性能和资源利用率之间权衡选择。  发送Buffer负责把将要发出去的事务放到队列中,并对发往物理层(PHY)的...
  • xilinx vivado srio license

    千次阅读 2019-08-21 22:16:50
    xilinx vivado srio license 如上图所示打开 xilinx vivado srio core 时 显示 Bought IP license available 则表示当前使用的license 是购买的license,与官网申请的评估license 最大的区别是单次上电工作没有时间...
  • Xilinx FPGA RapidIO SRIO

    千次阅读 2018-06-10 20:46:11
    参考xilinx手册pg007《Serial RapidIO Gen2 Endpoint v4.1 LogiCORE IP Product Guide》 host初始化 直接看RapidIO的初始化,一些底层的比如物理层链路层之类的不需要关心,用到了再去看,毕竟都是基于芯片...
  • 汇总篇: Xilinx平台SRIO介绍(汇总篇) 目录 一、IP核时钟 二、时钟参考设计 三、复位 四、时钟与复位小结 一、IP核时钟 PHY(物理层)在两个时钟域上运行: phy_clk:核主要的时钟; gt_pcs_clk:用于串行收发器...
  • xilinx最新SRIO使用手册

    2013-03-14 09:46:31
    这是第二代SRIO的使用手册,希望对大家有用,从XILINX官网上下载的资源。
  • 【硬核】FPGA进阶之路( 二) 如何将Xilinx SRIO控制器自环-小风哥-电子技术应用-AET-中国科技核心期刊-最丰富的电子设计资源平台 这里面有详细介绍,不再重复。将原来的12'h0(我用的是SRIO 4X)改为你想要配置的...
  • Xilinx平台SRIO介绍(汇总篇)

    千次阅读 2021-11-29 20:06:25
    Xilinx平台SRIO介绍(一)RapidIO协议介绍 二、Xilinx平台SRIO - IP核基础知识 主要介绍IP核必须了解的东西: SRIO核概述 SRIO核组成架构 接口介绍 HELLO包格式及时序图(重点) 事务类型 Xilinx平台SRIO介绍(二)...
  • srio自回环设计.zip

    2020-03-15 11:13:27
    srio是面向嵌入式系统开发提出的高可靠、高性能、基于包交换的新一代高速互联技术,已于2004年被国际标准化组织(ISO)和国际电工协会(IEC)批准为ISO/IECDIS 18372标准。SRIO则是面向串行背板、DSP和相关串行数据平面...
  • 目录 原文链接:https://www.cnblogs.com/liujinggang/p/10072115.html 一、RapidIO核概述 二、RapidIO核接口说明 2.1 逻辑层接口 2.2 Buffer接口 2.3 物理层接口 ... RapidIO核的设计标准来源于
  • 汇总篇: Xilinx平台SRIO介绍(汇总篇) 目录: 一、示例工程架构组成 到了这一步,默认你已经生成IP并打开示例工程了。 首先,我们展开示例工程目录结构如下: 包含两个头文件和一堆子模块。我们列个表对这些子...
  • 4.5 “srio_request_*”模块分析 4.6 “srio_response_*”模块分析 4.4 核的物理层 原本不打算理会这部分内容的,但看《PG007》对这部分介绍很多,而且上问好多信号也涉及到了这部分内容,所以看来有必要对这...
  • 这里以Xilinx为例,在Vivado中使用SRIO高速串行协议的IP演示如何使用官方例程和手册进行快速使用,在仔细阅读参考官方例程后进行一些修改就可以应用在实际项目中。1. 导入IP点击“IP Catalog...
  • xilinx公司srio用户手册

    2011-10-09 23:30:26
    xilinx公司srio用户手册,详细介绍了xilinx公司产品提供的srio解决方案。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 468
精华内容 187
关键字:

srioxilinx