CN114297124A - 一种基于fpga的srio高速总线的通讯系统 - Google Patents
一种基于fpga的srio高速总线的通讯系统 Download PDFInfo
- Publication number
- CN114297124A CN114297124A CN202111636646.5A CN202111636646A CN114297124A CN 114297124 A CN114297124 A CN 114297124A CN 202111636646 A CN202111636646 A CN 202111636646A CN 114297124 A CN114297124 A CN 114297124A
- Authority
- CN
- China
- Prior art keywords
- data
- srio
- transaction
- module
- destination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004891 communication Methods 0.000 title claims abstract description 37
- 230000004044 response Effects 0.000 claims abstract description 39
- 230000008859 change Effects 0.000 claims abstract description 9
- 230000000977 initiatory effect Effects 0.000 claims abstract description 3
- 230000009466 transformation Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 230000009191 jumping Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000000034 method Methods 0.000 description 5
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 101150098958 CMD1 gene Proteins 0.000 description 2
- 101100382321 Caenorhabditis elegans cal-1 gene Proteins 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Communication Control (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请提供了一种基于FPGA的SRIO高速总线的通讯系统,具体包括寄存器和中断控制模块,用于对事务类型和数据信息进行配置,给出反馈信号;SRIO源端模块,用于解析事务类型和数据信息,并发起对应的事务,产生NREAD中断和读写寄存器状态变化,产生事务请求,以及接收NREAD事务和DOORBELL事务请求接收端发来的响应;SRIO目的端模块,用于接收SRIO源端模块的事务请求并发送响应数据,产生DOORBELL寄存器状态变化和DOORBELL中断;Serial RapidIO Gen2 Endpoint IP模块,用于实现SRIO源端模块和SRIO目的端模块的SRIO逻辑层、物理层、传输层协议;DMA模块,用于对数据进行存取。通过本申请的处理方案,最大限度的发挥SRIO串行数据总线的速度,提高系统实时性。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种基于FPGA的SRIO高速总线的通讯系统。
背景技术
高速串行接口SRIO作为RapidIO的一个重要分支,是面向嵌入式系统开发提出的高可靠、高性能、基于包交换的新一代高速互联技术,已于2004年被国际标准化组织和国际电工协会批准为ISO/IECDIS 18372标准,可以实现最低引脚数量,支持复杂的可扩展拓扑,多点传输。十分适合用于芯片间及板间大规模数据的传输。SRIO高速串行总线因其低功耗、节省引脚、高带宽、高稳定性等特征,越来越多的被应用于芯片间或板间通讯,如广泛的应用于面向串行背板、DSP和相关串行数据平面连接应用的串行RapidIO接口,但SRIO协议最大支持单包256B的数据,并且无法直接对数据进行存取操作,如果使用软件对大量的数据进行分包、组包、收发、存取等操作会极大的限制SRIO总线的数据传输速率和实时性。
发明内容
有鉴于此,本申请实施例提供一种基于FPGA的SRIO高速总线的通讯系统,用以实现大量数据的自动、快速、准确的组包、拆包和数据的高速DMA存取,以最大限度的发挥SRIO串行数据总线的速度,提高系统实时性。
本申请实施例提供一种基于FPGA的SRIO高速总线的通讯系统,包括:
寄存器和中断控制模块,用于对事务类型和数据信息进行配置,给出反馈信号;
SRIO源端模块,与所述寄存器和中断控制模块通信连接,用于解析所述事务类型和数据信息,并发起对应的事务,产生NREAD中断和读写寄存器状态变化;产生事务请求,以及接收NREAD事务和DOORBELL事务请求接收端发来的响应;
SRIO目的端模块,与所述SRIO源端模块通信连接,用于接收所述SRIO源端模块的事务请求并发送响应数据,产生DOORBELL寄存器状态变化和DOORBELL中断;
Serial RapidIO Gen2 Endpoint IP模块,与所述SRIO源端模块和所述SRIO目的端模块分别通讯连接,用于实现SRIO逻辑层、物理层、传输层协议;
DMA模块,分别与所述SRIO源端模块和所述SRIO目的端模块通信连接,用于对数据进行存取。
根据本申请实施例的一种具体实现方式,所述事务请求包括带数据的事务请求和不带数据的事务请求,所述带数据的事务请求包括SWRITE事务和NWRITE事务,所述不带数据的事务请求包括NREAD事务和DOORBELL事务。
根据本申请实施例的一种具体实现方式,所述DMA模块采用赛灵思AXI_DATAMOVERIP,数据长度位最大23bit,地址位支持32bit-64bit,用户接口均为AXIS数据总线,一次命令最大读写7MB数据,并通过AXI_STREAM总线的握手信号实现数据流控制。
根据本申请实施例的一种具体实现方式,所述AXI_DATAMOVER IP设有两套用户接口,其中一套用户接口是写内存接口,所述写内存接口包括写数据接口、写数据命令接口;另一套用户接口是读内存接口,所述读内存接口包括读数据接口、读数据命令接口;所述Serial RapidIO Gen2 Endpoint IP与所述SRIO源端模块通过源端请求端口和源端响应端口通信连接,所述SerialRapidIO Gen2 Endpoint IP与所述SRIO目的端模块通过目的端请求端口和目的端响应端口。
根据本申请实施例的一种具体实现方式,当所述SRIO源端模块的事务请求是带数据的事务请求时,按照寄存器设置向DMA模块的所述读数据命令接口发送命令,通过读数据接口读出数据,并将其拆分为不大于256Byte的数据包,在数据前加上对应地址变换后的包头,最后按照时序要求将数据放在SRIO源端模块的源端请求端口。
根据本申请实施例的一种具体实现方式,当事务请求为NREAD事务时,将读数据命令拆分为请求接收端每次读取不大于256Byte数据包的命令,并按每包需要读取数据的个数准确的进行数据源地址和目的地址的变换,并按照时序要求将请求放在SRIO源端模块的源端请求端口。
根据本申请实施例的一种具体实现方式,当事务请求为DOORBELL事务时,将DOORDELL包头按照时序要求放到SRIO源端模块的源端请求端口。
根据本申请实施例的一种具体实现方式,当SRIO目的端模块接收带数据的事务请求时,在目的端请求端口接收数据包并将包头和数据分离同时统计单包数据的个数,将包头和个数组合产生AXI_DATAMOVER IP的数据写命令,单包数据和命令接收完毕后,将数据写入外部缓存。
根据本申请实施例的一种具体实现方式,当SRIO目的端模块接收DOORBELL事务请求时,接收并辨别目的端请求端口的DOORBELL数据,并将其存入DOORBELL缓存中。
根据本申请实施例的一种具体实现方式,当SRIO目的端模块接收NREAD事务请求时,接收、辨别、解析目的端请求端口的NREAD命令,使用所述DMA模块按照命令长度和地址读取相应内存中特定长度的数据,并将数据组包按照时序要求放在目的端响应端口。
有益效果
本申请实施例中的基于FPGA的SRIO高速总线的通讯系统,用户端口均使用赛灵思AXI标准总线,可以兼容赛灵思FPGA、ZYNQ、MPSoPC等使用AXI总线的产品。将AXI_DATAMOVERIP与Serial RapidIO Gen2 Endpoint IP使用逻辑配合使用,可以实现一次7MB的数据读写,同时极大的发挥了SRIO的效率,并且实现了自动组包、拆包、DMA数据存取等功能,突破了SRIO局限性同时也简化可SRIO的操作降低了开发难度。
本发明给出了对外配置寄存器、状态寄存器、中断等信号,可以供PS端使用,兼容多种操作系统。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为根据本发明一实施例的基于FPGA的SRIO高速总线的通讯系统的框架图;
图2为根据本发明一实施例的SRIO源端模块的REQ用户端口操作状态跳转图;
图3为根据本发明一实施例的SRIO源端模块的RESP用户端口操作状态跳转图;
图4为根据本发明一实施例的SRIO目的端模块的RESP用户端口操作状态跳转图;
图5为根据本发明一实施例的SRIO目的端模块的RESP用户端口操作状态跳转图;
图6为根据本发明一实施例的SRIO源端模块的原理图;
图7为根据本发明一实施例的SRIO目的端模块的原理图;
图8为根据本发明一实施例的SRIO源端寄存器列表;
图9为根据本发明一实施例的SRIO目的端寄存器列表。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本申请,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
本申请实施例提供了一种基于FPGA的SRIO高速总线的通讯系统,下面参照图1-7对本系统进行详细描述。
参照图1、图6和图7,基于FPGA的SRIO高速总线的通讯系统包括DMA模块(AXI_DATAMOVER IP)、Serial RapidIO Gen2 Endpoint IP模块、SRIO源端模块、SRIO目的端模块、寄存器和中断控制模块,寄存器和中断控制模块包括SRIO源端寄存器单元、目的端寄存器单元;SRIO源端模块包括源端寄存器解析单元、DMA数据存取单元、SRIO源端请求发送单元、SRIO源端响应接收单元;SRIO目的端模块,包括DMA数据存取单元、目的端请求接收单元、目的端响应发送单元、目的端寄存器解析单元。
源端模块和目的端模块是基于赛灵思提供的Serial RapidIO Gen2 Endpoint IP模块,以实现SRIO逻辑层、物理层、传输层协议。DMA模块使用赛灵思提供的AXI_DATAMOVERIP,Serial RapidIO Gen2 Endpoint IP与AXI_DATAMOVER IP的结合再加上本发明的处理逻辑,可以实现一次最多7MB的数据读写,支持多种类型事务的SRIO数据收发,并且提升SRIO数据收发的效率。本发明使用的赛灵思Serial RapidIO Gen2 Endpoint IP,该IP提供了两套用户接口:与SRIO源端模块通信的IREQ(源端请求端口)和IRESP(源端响应端口);与SRIO目的端模块通信的TERQ(目的端请求端口)和TRESP(目的端响应端口),四个接口均是AXI_STREAM(AXIS)数据总线。Serial RapidIO Gen2 Endpoint IP在使用时,需要将数据拆分成最大256B的数据包,并且在数据包前加上用于辨别不同事务或同事务不同包的包头(header)。
DMA模块的数据存取功能使用赛灵思AXI_DATAMOVER IP,该IP数据长度位最大23bit,地址位支持32bit—64bit,用户接口均为AXIS数据总线,一次命令最大可以读写7MB的数据,并且通过AXI_STREAM总线的握手信号可以实现数据流控制,也避免了操作复杂的AXI_FULL总线来实现数据存取。AXI_DATAMOVER IP有两套用户接口分别是写内存接口包括写数据(S2MM)接口、写数据命令(S2MM_CMD)接口和读内存接口包括读数据(MM2S)接口、读数据命令(MM2S_CMD)接口,本系统使用时总体原理图如图1所示。
SRIO源端模块的原理图如图6所示,寄存器写过来的数据首先通过寄存器解析单元,生成寄存器命令和DMA命令(如有需求),将寄存器命令状态信号给源端请求发送单元,源端请求发送单元检测到当前有任务则出发图2的状态机,图6中各个功能配合完成请求发送,同时反馈请求发送状态给寄存器解析单元,源端响应接收单元主要是接收NREAD数据,并将信号反馈给寄存器解析单元。
具体的,SRIO源端模块的主要作用是:第一,解析源端寄存器(如图8所示)设置的事务类型、数据源地址、数据目的地址、数据长度发起对应的事务并且产生NREAD中断和读写寄存器状态变化;第二,通过操作Serial RapidIO Gen2 Endpoint IP的IREQ接口产生事务请求,事务请求包括带数据的请求(SWRITE/NWRITE)和不带数据的请求(NREAD/DOORBELL),如果是带数据的事务请求,需要按照寄存器设置向DMA模块的MM2S_CMD端口发送命令,通过DMA模块的MM2S端口读出数据,并将其拆分为不大于256Byte的数据包,在数据前加上对应地址变换后的包头(header),最后按照时序要求将数据放在IREQ用户端口;在NREAD事务中,需要将读数据命令拆分为请求接收端每次读取不大于256Byte数据包的命令,并按每包需要读取数据的个数准确的进行数据源地址和目的地址的变换,之后按照时序将请求在源端的IREQ端口;在DOORBELL事务中,由于DOORBELL事务每次只有1个数据(即1个DOORBELL包头),因此只需将DOORDELL包头按照时序放到源端IREQ端口即可;第三,接收NREAD事务和DOORBELL事务请求接收端发来的响应,其中NREAD响应为带数据的响应,DOORBELL响应为不带数据的响应。NREAD响应中,将源端IRESP端口的数据按照时序进行拆包,并提取其中的有效数据并分离每一包响应的header,同时统计数据个数,将统计的数据个数与header中的信息组合产生DMA模块写内存命令最终将数据和命令按照DMA模块的时序要求放在DMA模块的S2MM和S2MM_CMD端口。
SRIO源端模块通过图2和图3两个状态机实现上述功能,图2是srio请求发送状态机,该状态主要完成请求类型的判断、srio分/组包、操作DMA读取数据和操作IREQ端口实现请求发送。上电之初,系统处于空闲状态(IDLE)该状态下,系统不断的判断当前是否有需要执行的事务,当有需要执行的事务后,状态跳转至检查DMA命令是否可以发送(send_cmd_check)状态,该状态下会检查需要发起的事务是否带数据,若带数据状态跳转至发送命令(send_cmd)状态,否则状态跳转至srio_div_package1;在send_cmd状态下,系统操作MM2S_CMD端口,实现数据读取,之后跳转至srio分包(srio_div_package)状态;在srio_div_package下,系统会确定发送srio数据包的长度,之后跳转至srio_div_package1;在srio_div_package1下,会生成srioheader中需要的地址等信息,之后跳转至检查数据是否准备完毕(send_data_start)状态,数据准备好后状态机状态跳转至srio包头生成(srio_generate_header)状态;在srio_generate_header状态下,本发明中的逻辑会吧之前生成的地址等信息按照要求进行组合,组合完毕后状态跳转至srio数据发送(srio_send_data)状态;该状态下,源端模块操作IREQ端口实现SRIO单包请求的发送,完毕后跳转至srio发送完毕(srio_send_end)状态;srio_send_end下,源端模块会判断一次事务是否完毕,例如,寄存器配置需要从某个地址读取1MB数据,由于每次最多只能读取256B,读1MB数据需要读4096次,因此每读完一次,源端模块将判断事务是否已经执行完毕,完毕的话状态跳转至IDLE,否则当执行带数据的请求时,状态跳转至srio_div_package,执行不带数据的请求时状态跳转至srio_div_package1。
图3是srio源端响应接收状态机,该状态机将接收到的IRESP端数据经DMA存储至内存。系统初始化完成后,状态机状态处于空闲(iresp_idle)状态,该状态下源端模块不断查询当前是否有需要执行的任务,当有任务时,状态跳转至S2MM_CMD发送(iresp_send_cmd)状态;在iresp_send_cmd状态下源端模块会根据上一包数据的个数产生S2MM_CMD命令,以及控制该端口的时序,命令发送成功后状态继续跳转;iresp_send_cmd1、iresp_register1为预留状态,在本发明中没有应用;检查DMA写内存数据是否可用(iresp_send_data_check)状态,该状态检查DMA的S2MM端口的准备信号,当DMA准备好接收数据后,状态跳转至DMA写数据(iresp_send_data)状态;在iresp_send_data下,将产生S2MM端口时序,将数据通过DMA写入内存,之后跳转至结束(iresp_send_end)状态紧接着又回到空闲态开始新一轮数据搬运。
SRIO目的端模块的原理图如图7所示,在目的请求接收单元对数据包进行分离,并判断请求类型,响应发送单元则对求情接收单元的分类作出响应,寄存器解析则主要针对DOORBELL事务的。
具体的,SRIO目的端模块的主要作用是:第一,接收源端的请求包括带数据的请求(NWRITE/SERITE)和不带数据的请求(NREAD/DOORBELL)。SWRITE/NWRITE事务中,在TREQ端口接收数据包并将header和数据分离同时统计单包数据的个数,将header和个数组合产生AXI_DATAMOVER IP的数据写命令,单包数据和命令接收完毕后,将数据写入外部缓存(DDR3等);在DOORBELL事务中,接收并辨别目的端TREQ端口的DOORBELL数据,并将其存入DOORBELL缓存如FIFO;在NREAD事务中,接收、辨别、解析TREQ端口的NREAD命令,使用DMA按照命令长度和地址读取相应内存中特定长度的数据,并将数据组包按照时序要求放在目的端TRESP端口;第二发送响应数据,如前所述,NREAD和DOORBELL事务目的端需要给请求发送端的源端发送响应。如果是NREAD响应,则需带有响应数据;如果是DOORBELL响应则只需将一个DOORBELL响应header按时序放在TRESP端口即可。第三,生成表2的状态寄存器和DOORBELL中断,将DOORBELL FIFO的数据个数端口和数据读取端口引出到寄存器,同时当DOORBELL FIFO内数据个数增加则产生一个DOORBELL中断。
SRIO目的端模块通过图4和图5两个状态机实现上述功能,图4是目的端请求接收状态转移图,该状态机的作用是接收发送端的源端发来的带数据请求(SWRITE/NWRITE事务),并将数据经DMA存储至内存。如图7所示,收到请求后,本发明的逻辑首先会对请求(数据和包头)进行分离,并对包头所请求的事务作出判断,当确定接收到的是带数据的请求后,状态机会触发,由空闲(idle)跳转至命令发送(send_cmd),在send_cmd状态下,将控制DMA的S2MM_CMD端口的时序,将写内存命令发送给DMA发送成功后,跳转至下一个状态。Send_cmd1、send_state为预留状态,这两个状态下不进行操作,直接无条件跳转;DMA写数据端口是否可用检查(send_data_check)状态,该状态下判断S2MM端口的准备好信号是否可用,可用时跳转至发送数据(send_data)状态;在send_data状态下,将操作DMA的S2MM端口按照时序要求将数据通过DMA写入内存,当数据写入的熟练达到CMD中设定的数值后,状态跳转至下一个;发送完成send_end状态表明一包数据写入内存完毕,之后状态回到空闲,等待下一次。
图5是目的端响应发送状态转移图,该状态机需要图7中数据和包头分离以及包头判断单元的配合,主要作用是对收到的请求作出响应包括带数据的响应(Nread)和不带数据(DOORBELL)的响应。系统复位后,状态机处于空闲,当检测到有需要进行响应的请求后,则出发该状态机,状态跳转至tresp数据包包头生成1(tresp_generate_header1)状态,该状态下将判断当前执行的响应是否需要数据并生成一些参数(包括响应包数据长度,包头结构等),紧接着状态跳转至tresp包头生成(tresp_generate_header)状态。在tresp_generate_header下,将根据上一个状态生成的参数生成header,紧接着跳转至数据时候准备好检查(tresp_send_data_start)状态;在tresp_send_data_start下本发明的逻辑会判断需要响应的数据时候准备好(本模块中,图7中的包头判断单元判断当前执行的事务需要数据后,将立刻通过DMA将数据读出),准备好后,状态跳转至tresp数据发送状态(tresp_send_data);在tresp_send_data下会按照TRESP端口的时序要求将数据写入SerialRapidIO Gen2 Endpoint IP,完成后跳转至tresp发送完成(tresp_send_done)状态,紧接着会到空闲,开始下一次循环。
寄存器模块和中断模块的主要作用是实现:1)对事务类型和数据信息的配置;2)给出反馈信号;3)给出NREAD和DOORBELL中断。其中的寄存器单元使用AXI_LITE总线对内部寄存器进行读写操作,根据实际需要,本单元给出了2组共11个寄存器,功能如图8和图9所示。其中的中断单元给出NREAD中断和DOORBEEL中断,NREAD中断通过统计读到数据的个数获得,DOORBEEL中断通过BOORBELL数据个数的变化获得。
下面对基于FPGA的SRIO高速总线的通讯系统的收发的工作过程进行详细描述。
寄存器和中断控制模块,PS端通过AXI总线配置寄存器模块中的相关寄存器(如图8所示),使能不同模式对应的使能信号使能后,源端模块根据寄存器中的值开始相应的事务。NREAD事务执行完毕后,对应的使能状态位会置为初始值,采用轮训方式读取数据时,可以轮训该状态位的变化确定是否可以开始下一次传输,读完数据后,紧接着发送一个门铃给被读取端,被读取端通过中断或轮训DOORBELL寄存器读取门铃数据,通知其可以向特定地址放数据,被读取端放数据完毕后使用doorbell通知读取数据方数据可读,数据读取方同样的方式通过本模块得知门铃事务,然后开始下一次NREAD事务。对于NWRITE/SWRITE事务,发送方通过配置图8中的寄存器开始事务,同时通过中断或写使能位的变化得知事务是否执行完毕,完毕后发送方设置寄存器发送门铃给数据接收端,接收端通过本模块读出门铃可知对方数据发送完毕现在可以读数据,接收方读完数据后通过本模块再发送一个门铃,通知数据发送方可以开始下一次写事务。
所述源端模块,执行NREAD事务时,在模式寄存器中写入NREAD模式,在数据长度寄存器中写入读取的数据长度,在源地值寄存器中写入读数据的基地值,在数据目的地址寄存器中写入读到数据后需要存入的地址,使能后读取方的源端自动将数据长度和源地址进行分包,并通过REQ端口发送读数据命令,在RESP端口接收读取方源端发来的数据,对数据进行提取、统计数据个数、分离包头信息产生AXI_DATAMOVER命令将数据写入外部存储器,读数据完毕后,发送方源端会置位相应的状态位和产生中断,通知PS端数据读取完毕。在执行SWRITE/NWRITE时,与NREAD类似方法配置寄存器,使能后,数据发送方的源端会自动读出数据源地址寄存器中设置的数据并将其按照SRIO协议的要求进行组包,生成对应的header,将数据包和header放在发送方源端的REQ端口。DOORBELL与上述类似,配置寄存器,源端即可发送门铃给接收方,本模块的作用在DOORBELL中与NREAD类此,不同之处在于DOORBELL只有单个数据。
目的端当发送方SWRITE/NWRITE执行后,数据接收方的目的端会自动接收数据,对数据进行拆包,提取数据和header,统计数据个数,并将数据按照数据发送方的目的寄存器的配置将数据写入数据接收方相应的缓存中。NREAD时被读取方的目的端收到读命令后会自动读取相应内存中的数据并将数据按照时序放在被读取数据方的目的端模块的RESP端口。
本发明的一种基于FPGA的SRIO高速总线的通讯系统,支持多种SRIO事务包括NREAD、NWRITE、SWRITE、DOORBELL;支持多种速率和线宽,需要在SerialRapidIO Gen2Endpoint IP进行进行配置,速率可选1.25Gpbs、2.5Gpbs、3.125Gpbs、6.25Gpbs和5Gpbs,数据线宽可选×1、×2、×4,可以满足不同需求;支持多种PS端操作系统。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种基于FPGA的SRIO高速总线的通讯系统,其特征在于,包括:
寄存器和中断控制模块,用于对事务类型和数据信息进行配置,给出反馈信号;
SRIO源端模块,与所述寄存器和中断控制模块通信连接,用于解析所述事务类型和数据信息,并发起对应的事务,产生NREAD中断和读写寄存器状态变化;产生事务请求,以及接收NREAD事务和DOORBELL事务请求接收端发来的响应;
SRIO目的端模块,用于接收所述SRIO源端模块的事务请求并发送响应数据,产生DOORBELL寄存器状态变化和DOORBELL中断;
Serial RapidIO Gen2 Endpoint IP模块,与所述SRIO源端模块和所述SRIO目的端模块分别通讯连接,用于实现SRIO逻辑层、物理层、传输层协议;
DMA模块,分别与所述SRIO源端模块和所述SRIO目的端模块通信连接,用于对数据进行存取。
2.根据权利要求1所述的基于FPGA的SRIO高速总线的通讯系统,其特征在于,所述事务请求包括带数据的事务请求和不带数据的事务请求,所述带数据的事务请求包括SWRITE事务和NWRITE事务,所述不带数据的事务请求包括NREAD事务和DOORBELL事务。
3.根据权利要求2所述的基于FPGA的SRIO高速总线的通讯系统,其特征在于,所述DMA模块采用赛灵思AXI_DATAMOVER IP,数据长度位最大23bit,地址位支持32bit-64bit,用户接口均为AXIS数据总线,一次命令最大读写7MB数据,并通过AXI_STREAM总线的握手信号实现数据流控制。
4.根据权利要求3所述的基于FPGA的SRIO高速总线的通讯系统,其特征在于,所述AXI_DATAMOVER IP设有两套用户接口,其中一套用户接口是写内存接口,所述写内存接口包括写数据接口、写数据命令接口;另一套用户接口是读内存接口,所述读内存接口包括读数据接口、读数据命令接口;所述Serial RapidIO Gen2 Endpoint IP与所述SRIO源端模块通过源端请求端口和源端响应端口通信连接,所述Serial RapidIO Gen2 Endpoint IP与所述SRIO目的端模块通过目的端请求端口和目的端响应端口。
5.根据权利要求4所述的基于FPGA的SRIO高速总线的通讯系统,其特征在于,当所述SRIO源端模块的事务请求是带数据的事务请求时,按照寄存器设置向DMA模块的所述读数据命令接口发送命令,通过读数据接口读出数据,并将其拆分为不大于256Byte的数据包,在数据前加上对应地址变换后的包头,最后按照时序要求将数据放在SRIO源端模块的源端请求端口。
6.根据权利要求4所述的基于FPGA的SRIO高速总线的通讯系统,其特征在于,当事务请求为NREAD事务时,将读数据命令拆分为请求接收端每次读取不大于256Byte数据包的命令,并按每包需要读取数据的个数准确的进行数据源地址和目的地址的变换,并按照时序要求将请求放在SRIO源端模块的源端请求端口。
7.根据权利要求4所述的基于FPGA的SRIO高速总线的通讯系统,其特征在于,当事务请求为DOORBELL事务时,将DOORDELL包头按照时序要求放到SRIO源端模块的源端请求端口。
8.根据权利要求4所述的基于FPGA的SRIO高速总线的通讯系统,其特征在于,当SRIO目的端模块接收带数据的事务请求时,在目的端请求端口接收数据包并将包头和数据分离同时统计单包数据的个数,将包头和个数组合产生AXI_DATAMOVER IP的数据写命令,单包数据和命令接收完毕后,将数据写入外部缓存。
9.根据权利要求4所述的基于FPGA的SRIO高速总线的通讯系统,其特征在于,当SRIO目的端模块接收DOORBELL事务请求时,接收并辨别目的端请求端口的DOORBELL数据,并将其存入DOORBELL缓存中。
10.根据权利要求4所述的基于FPGA的SRIO高速总线的通讯系统,其特征在于,当SRIO目的端模块接收NREAD事务请求时,接收、辨别、解析目的端请求端口的NREAD命令,使用所述DMA模块按照命令长度和地址读取相应内存中特定长度的数据,并将数据组包按照时序要求放在目的端响应端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111636646.5A CN114297124B (zh) | 2021-12-29 | 2021-12-29 | 一种基于fpga的srio高速总线的通讯系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111636646.5A CN114297124B (zh) | 2021-12-29 | 2021-12-29 | 一种基于fpga的srio高速总线的通讯系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114297124A true CN114297124A (zh) | 2022-04-08 |
CN114297124B CN114297124B (zh) | 2024-03-29 |
Family
ID=80971713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111636646.5A Active CN114297124B (zh) | 2021-12-29 | 2021-12-29 | 一种基于fpga的srio高速总线的通讯系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114297124B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896189A (zh) * | 2022-05-07 | 2022-08-12 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种高速总线数据的缓存方法、装置、设备及存储介质 |
CN115658574A (zh) * | 2022-10-26 | 2023-01-31 | 杭州芯正微电子有限公司 | 一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090228733A1 (en) * | 2008-03-06 | 2009-09-10 | Integrated Device Technology, Inc. | Power Management On sRIO Endpoint |
KR101385439B1 (ko) * | 2013-04-03 | 2014-04-15 | 주식회사 이노와이어리스 | Srio 인터페이스로 연결된 fpga와 dsp간 데이터 전송 방법 |
CN103986931A (zh) * | 2014-04-25 | 2014-08-13 | 北京航空航天大学 | 一种fpga+dsp结构上基于srio总线传输视频数据的实现方法 |
CN107203484A (zh) * | 2017-06-27 | 2017-09-26 | 北京计算机技术及应用研究所 | 一种基于FPGA的PCIe与SRIO总线桥接系统 |
CN112783810A (zh) * | 2021-01-08 | 2021-05-11 | 国网浙江省电力有限公司电力科学研究院 | 一种面向应用的多通道srio dma传输系统及方法 |
-
2021
- 2021-12-29 CN CN202111636646.5A patent/CN114297124B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090228733A1 (en) * | 2008-03-06 | 2009-09-10 | Integrated Device Technology, Inc. | Power Management On sRIO Endpoint |
KR101385439B1 (ko) * | 2013-04-03 | 2014-04-15 | 주식회사 이노와이어리스 | Srio 인터페이스로 연결된 fpga와 dsp간 데이터 전송 방법 |
CN103986931A (zh) * | 2014-04-25 | 2014-08-13 | 北京航空航天大学 | 一种fpga+dsp结构上基于srio总线传输视频数据的实现方法 |
CN107203484A (zh) * | 2017-06-27 | 2017-09-26 | 北京计算机技术及应用研究所 | 一种基于FPGA的PCIe与SRIO总线桥接系统 |
CN112783810A (zh) * | 2021-01-08 | 2021-05-11 | 国网浙江省电力有限公司电力科学研究院 | 一种面向应用的多通道srio dma传输系统及方法 |
Non-Patent Citations (1)
Title |
---|
许家麟;韩思齐;孙宁霄;吴琼之: "硬件加速系统中的PCIe-SRIO桥技术", 《电子设计工程》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896189A (zh) * | 2022-05-07 | 2022-08-12 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种高速总线数据的缓存方法、装置、设备及存储介质 |
CN114896189B (zh) * | 2022-05-07 | 2023-09-26 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种高速总线数据的缓存方法、装置、设备及存储介质 |
CN115658574A (zh) * | 2022-10-26 | 2023-01-31 | 杭州芯正微电子有限公司 | 一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 |
Also Published As
Publication number | Publication date |
---|---|
CN114297124B (zh) | 2024-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107203484B (zh) | 一种基于FPGA的PCIe与SRIO总线桥接系统 | |
CN110213143B (zh) | 一种1553b总线ip核及监视系统 | |
CN114297124B (zh) | 一种基于fpga的srio高速总线的通讯系统 | |
CN108234337B (zh) | 一种支持主机接口的SpaceWire总线路由器 | |
CN109165178B (zh) | 一种基于RapidIO的弹上系统SoC芯片间高速通信方法 | |
CN108228492B (zh) | 一种多通道ddr交织控制方法及装置 | |
US20020136220A1 (en) | Apparatus and method for an interface unit for data transfer between data processing units in the asynchronous transfer mode and in the I/O mode | |
CN101317364A (zh) | 一种实现业务板和主控板通信的装置和方法 | |
CN102841871B (zh) | 基于高速串行总线的DMA结构的pipeline读写方法 | |
CN102841870B (zh) | 基于高速串行总线的通用dma结构及预读方法 | |
CN107861893B (zh) | I3c验证从设备、主从设备的通信验证系统及方法 | |
WO2023160192A1 (zh) | 一种用于总线的互联装置 | |
CN112749113A (zh) | 一种数据交互的方法、系统、设备及介质 | |
CN111931442A (zh) | Fpga内嵌flash控制器及电子装置 | |
CN107908587A (zh) | 基于usb3.0的实时数据采集传输装置 | |
CN114443170B (zh) | Fpga动态并行加卸载系统 | |
CN111092830B (zh) | 一种pcie交换芯片端口配置系统和方法 | |
CN110932922A (zh) | 基于fpga的金融数据二层网络采集系统及其测试方法 | |
CN111679935A (zh) | 一种基于dma与中断融合的组态监控容错通信方法 | |
CN107153412A (zh) | 一种具有发送fifo的can总线控制器电路 | |
CN114327975A (zh) | 片上系统 | |
CN114185830A (zh) | 基于mailbox的多处理器通信方法、设备、系统和存储介质 | |
CN218068843U (zh) | 一种axi主端口转apb从端口的桥接电路结构及一种soc系统 | |
CN116166581A (zh) | 用于pcie总线的队列式dma控制器电路及数据传输方法 | |
CN112579478B (zh) | 一种基于srio的fpga接收引擎设计 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |