CN110708252B - 一种具有高数据带宽的SpaceWire路由器装置 - Google Patents
一种具有高数据带宽的SpaceWire路由器装置 Download PDFInfo
- Publication number
- CN110708252B CN110708252B CN201910833414.5A CN201910833414A CN110708252B CN 110708252 B CN110708252 B CN 110708252B CN 201910833414 A CN201910833414 A CN 201910833414A CN 110708252 B CN110708252 B CN 110708252B
- Authority
- CN
- China
- Prior art keywords
- spacewire
- unit
- routing
- fpga
- data
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种具有高数据带宽的SpaceWire路由器装置,包括:FPGA主处理单元、SpaceWire路由单元、PCI接口单元、电源单元、晶振复位单元;FPGA时序逻辑模块和API函数模块。FPGA主处理单元,作为整个SpaceWire路由器装置的核心处理器,完成对SpaceWire路由单元、PCI接口单元的配置,控制并协调各单元工作,连接电源单元、PCI接口单元、SpaceWire路由单元、晶振、复位单元,处理从SpaceWire路由单元、PCI接口单元接收和发送到的数据;SpaceWire路由单元,实现SpaceWire路由器装置的SpaceWire路由功能;实现各主机之间的通信过程的路由;本发明具有数据带宽高,模块化程度高,数据传输可靠性强,充分满足航空航天数据传输要求的优点。
Description
技术领域
本发明涉及航空航天SpaceWire总线技术,尤其涉及一种能在SpaceWire链路实现上位机和SpaceWire节点装置、SpaceWire路由器装置之间数据传输的具有路由功能的装置,可用于各种航天器及通用飞机、无人机等。
背景技术
国内外传统的航天飞行器系统通常采用典型基于点到点互连(如RS-232、RS-422、RS-485)、基于共享总线互连(MIL-STD1553B,CAN,IEEE1394)的电子系统体系架构,信息系统综合化的程度较低,数据带宽低,开放性差,模块化程度低。因此,必须开展航天飞行器新一代综合电子互连技术的研究,SpaceWire空间总线技术应运而生。
SpaceWire是欧空局(ESA)提出的一种面向空间应用的高速、点对点、全双工的串行总线标准,单线最高传输速率可达400Mbps,SpaceWire网络在可靠性、重量、体积等方面具有绝对优势。然而目前国内没有完全技术自主的与SpaceWire路由芯片配套的外围电路及软件。
发明内容
本发明技术解决的问题:克服现有技术的滞后,提供一种具有高数据带宽的SpaceWire路由器装置,实现了总线传输速率200Mbps,系统时钟大于30MHz,路由器装置具有PCI接口,满足航空航天数据传输的要求。
一种具有高数据带宽的SpaceWire路由器装置,包括FPGA主处理单元、SpaceWire路由单元、PCI接口单元、电源单元、晶振复位单元;FPGA时序逻辑模块和API函数模块;SpaceWire路由器装置连接其它SpaceWire节点装置或其它SpaceWire路由器装置,通过PCI接口单元与上位机进行双向的数据通信。
FPGA主处理单元,作为整个SpaceWire路由器装置的核心处理器,完成对SpaceWire路由单元、PCI接口单元的配置,控制并协调各单元工作,连接电源单元、上位机接口单元、SpaceWire接口单元、晶振、复位单元,处理从PCI单元、SpaceWire路由单元接收和发送到的数据;
SpaceWire路由单元,实现SpaceWire路由器装置的SpaceWire路由功能;实现各主机之间的通信过程的路由;
PCI接口单元,用于SpaceWire路由器装置实现与上位机数据的交互、控制命令的传输以及上位机对路由器板FPGA主处理单元工作状态的获取;
电源单元,为整个SpaceWire路由器装置电源;
晶振复位单元,为整个SpaceWire路由器装置提供时钟和复位;
FPGA时序逻辑模块,实现所有芯片的接口时序逻辑,FPGA时序逻辑模块具体包含PCI读写状态机、SpaceWire路由器芯片读写、SRAM读写三个部分,通过在PCI的接口读写状态机当中完成对SpaceWire路由器芯片和SRAM的访问;
API函数模块,实现对SpaceWire路由器装置状态与联网环境的控制;
API函数模块配合FPGA时序逻辑模块通过PCI接口单元向FPGA主处理单元收发数据,FPGA主处理单元处理从处理从PCI接口单元和SpaceWire路由单元接收到的数据并发送到相应的PCI接口单元和SpaceWire路由单元,SpaceWire路由单元对外部SpaceWire路由器装置和FPGA主处理单元进行收发数据,并解编码。
所述FPGA主处理单元部分包括:FPGA芯片、SRAM缓存和FPGA配置电路;FPGA芯片作为控制器,起到控制协调的作用;SRAM缓存用于缓存FPGA芯片来不及处理的数据或者FPGA芯片和上位机之间通信需要传递的高速数据流,已达到减小数据丢失的概率;FPGA配置电路用于提供通信端口和存储设备。
所述SpaceWire路由单元实现SpaceWire路由器装置的路由功能,包括:8个SpaceWire双向系列接口,2个外部平行输入/输出端口,一个与任何输入或输出端口相连的交叉开关矩阵路由交换机,一个内部配置端口,路由表,控制逻辑,控制寄存器,一个外部时间码接口,内部状态/错误寄存器。
8个SpaceWire双向系列接口,每个SpaceWire接口都有一个预制相连的控制寄存器和路由控制逻辑,当SpaceWire链路检测到SpaceWire标准中定义的错误时,网络层的错误恢复将会启动,SpaceWire链路上的接受包通过路由控制逻辑可以被发送到配置端口、其它SpaceWire链路接口或者外部FIFO接口,地址无效的数据包将会被SpaceWire路由器装置丢弃,SpaceWire链路的状态将会被与之相连的链路寄存器记录,错误状态将会被与之相连的链路寄存器记录,错误状态将被记录在路由器中直到配置命令将其清除;
2个外部平行输入/输出端口,每一个端口由输入FIFO和一个输出FIFO组成。此二外部接口可以用来连接外部主机系统,外部端口FIFO的深度是两个字符,每个FIFO的读写时钟为30Mhz,每个FIFO接口的数据宽度为8位,并在字符末尾为其增加一位冗余位供字符使用,外部端口接收的数据通过路由控制逻辑被路由到配置端口、SpaceWire链路接口或者剩下的外部端口接收的数据包含无效地址的数据包将会被丢弃;
一个可与任何输入或输出端口相连的交叉开关矩阵路由交换机;
一个内部配置端口,来自平行输入/输出端口或SpaceWire输入/输出端口的数据可通过路由交开关对该端口进行访问,通过该配置寄存器可以执行对内部寄存器的读写操作,当收到一个地址为0的数据包的时候数据包被路由到配置寄存器,如果收到一个无效的命令数据包,则相应状态寄存器的错误位被置位,而且数据包将会被丢弃;
路由表,包含输入端口逻辑地址与输出端口逻辑地址映射信息,路由表中的信息通过外部端口对路由表访问,该路由表通过路由命令包来设置,作用是为路由装置上的物理目标端口分配地址,在一张路由表里,设置一组目的地址,用以实现群适应路由;在分组适应路由方式中数据包通过一组输出端口来到达数据包目的端口,输出端口的选择是根据当前端口是否空闲来决定的,当收到一个带有逻辑地址的数据包,而且所述逻辑地址还能通过路由表的检测时,目的地址在准备好时,所述数据包被路由到查路由表表所确定的端口,路由表在复位或上电时会被设置为无效,无效的路由表引起传递来的数据包被控制逻辑溢出,高优先级的数据包会比低优先级的数据包先传递;
控制逻辑,对路由开关的交换机制进行控制,包括选择仲裁机制或分组适应路由机制,路由控制逻辑负责输出端口仲裁、分组自适应路由、交叉矩阵,当2个以上的产生通信数据的源端口同时请求使用同一个输出端口的时候输出端口仲裁机制被执行;仲裁机制包含两个优先级:高优先级和低优先级,高优先级的数据包先于低优先级的数据包被传输;
控制寄存器,包含链接运行速度的控制信息,控制信息通过配置端口进行读写操作;
一个外部时间码接口,由输入时钟,输出时钟和当前时钟数值组成,应用于路由装置上的内部时钟寄存器允许路由器成为时间码主机和时间码从机;在时间码主机的模式下,时间码接口提供一个Tick_in信号给SpaceWire路由器装置广播时间码到整个网络,该时间码主机的模式支持两个时间主机同时运行,一个是时间码被广播到每一个外部tick_in信号的自动模式,另一个是时间码广播到独立于外部tick_in信号的正常模式;
内部状态/错误寄存器,通过配置端口访问,SpaceWire中的控制和状态寄存器为路由装置执行提供控制机制,设置路由配置和参数,并监视SpaceWire路由器装置中各单元器件的状态。
本发明与现有技术相比的优点在于:本发明以SpaceWire路由芯片为基础设计出一种能实现对SpaceWire链路数据进行快速收发,并且实现与上位机双向数据通信的路由器装置,实现了SpaceWire路由器装置的纯国产化,可用于各种航天器及通用飞机、无人机等。
附图说明
图1为本发明的SpaceWire路由器装置总体框图;
图2为本发明的SpaceWire路由器装置模块整体架构图;
图3为本发明的SpaceWire路由器装置硬件整体架构图;
图4为本发明的部分API函数模块;
图5为PlxPci_PciRegisterWrite的参数列表;
图6为PlxPci_PciRegisterRead的参数列表;
图7为PlxPci_DmaBlockChannelOpen的参数列表;
图8为PlxPci_DmaBlockChannelOpen的返回值列表;
图9为PlxPci_DmaBlockTransfer的参数列表;
图10为PlxPci_DmaBlockTransfer的返回值列表;
图11为DMA_TRANSFER_ELEMENT的结构体成员;
图12为PlxPci_DmaControl的参数列表;
图13为PlxPci_DmaControl的返回值列表;
图14为PlxPci_DmaBlockChannelClose的参数列表;
图15为PlxPci_DmaBlockChannelClose的返回值列表。
具体实施方式
下面结合附图及实施例对本发明进行详细说明。
如图1所示,本发明以SpaceWire路由芯片为基础,设计出一种能实现对SpaceWire链路数据进行快速收发,并且实现与上位机双向数据通信的路由装置,实现了spacewire路由器装置的纯国产化。
为详细说明本发明的技术内容、构造特征、所达成的目的及功效,下面将结合配图,进行详细说明。
SpaceWire路由器装置硬件实现:
SpaceWire路由器装置硬件设计的方式如图3。可以将其主要分为以下几个单元:FPGA主处理单元、SpaceWire路由单元、PCI接口单元、电源单元、晶振复位单元。
1、FPGA主处理单元:
功能:作为整个系统的核心处理器,完成对路由芯片以及其他芯片的配置,控制并协调各单元工作,处理从各接口接收到的数据并发送到相应的目的接口。
实现:采用Xilinx公司的Virtex-5系列FPGA芯片中的XC5LX50-1FF676C作为整个节点板的主处理器。
2、SpaceWire路由单元:
功能:实现路由装置的SpaceWire路由功能。
实现:由SpaceWire路由芯片和SpaceWire路由芯片外围电路完成。
3、PCI接口单元:
功能:用于实现上下位机数据的交互、控制命令的传输以及上位机对路由装置工作状态的获取。
实现:接口单元包含PCI接口单元,采用PCI接口芯片PCI9054在加以相关外围电路来实现。
4、电源单元:
功能:为整个SpaceWire路由器装置提供电源解决方案。
实现:采用TI公司的PTH系列变压芯片实现5V到各所需电压的转换。
5、晶振复位单元:
功能:为整个路由装置提供合适的时钟和复位。
实现:采用合适的石英晶振为整个路由装置提供精准时钟信号,采用MAX708R芯片为整个路由装置提供稳定的复位信号。
6、FPGA主处理单元主要包含以下3个部分:
FPGA芯片:作为整个SpaceWire路由器装置的控制器,起到控制协调的作用。
SRAM缓存:用于缓存FPGA来不及处理的数据或者FPGA和上位机之间通信需要传递的高速数据流,已达到减小数据丢失的概率。
FPGA配置电路:为整个路由装置提供程序下载端口和程序存储设备。
本发明采用PLX公司的主模式芯片PCI9054作为此次开发的PCI总线接口芯片。PCI9054具有三种工作模式:M模式、J模式和C模式,它们可以通过MODE[1:0]两个管脚来设定,M模式是为在LOCAL端连接MPC850或者MPC860微处理器而设定的专用模式,此时LOCAL端管脚定义为对这两个处理器的接口。J模式和C模式则是针对一般应用的模式,它们之间的区别不大。J模式下,32位地址线和32位数据线是复用的,但在C模式下它们是非复用的。显而易见,C模式下的时序和逻辑控制相对简单,所以本次设计选择9054工作在C模式下。
FPGA芯片
此系统的主处理芯片采用XILINX公司Virtex-5芯片系列的XC5VLX50-1FF676C芯片,其最高运行时钟为550MHz。负责为系统所有芯片提供工作时序和相关配置信息,同时还实现数据在SpaceWire总线和上位机之间的交互。
SRAM缓存电路
考虑到路由装置的高速的要求以及FPGAFIFO深度有限的现实,在FPGA有大量待处理数据或者和上位机进行大数据量通信的时候需要添加大容量存储器以实现缓存从而达到降低数据丢失的概率的目的。又因为考虑到DPRAM的成本较高、硬件电路较复杂等问题,故此设计当中选择一片SRAM作为片上缓存。
此设计中采用的是ISSI公司的IS61WV51232BLL芯片,该芯片是一款高速静态RAM,芯片的数据总线为32位,从而其总容量为512K×32=16Mb。由于其作用是对收发的数据起缓存作用,故其电路设计为将其数据线、地址线及相关控制线与FPGA通用IO口直接相连即可。
FPGA配置电路
FPGA配置电路作为FPGA主控芯片的程序下载模块,是FPGA主处理单元不可或缺的部分。
Xilinx公司的Virtex-5系列的FPGA具有片上SRAM结构,因此每次在芯片启动,系统初始化或者当需要更新配置数据的时候,配置数据必须被重载。在此设计中采用JTAG配置模式。在JTAG模式中,PC和FPGA通信的时钟为JTAG接口的TCLK,数据直接从TDI进入FPGA,完成相应功能的配置。
FPGA配置电路的实现为:FPGA具有片上SRAM结构,每次在芯片启动,系统初始化或者当需要更新配置数据的时候,配置数据必须被重载。在此设计中采用JTAG配置模式。在JTAG模式中,路由器板上的FPGA配置电路为从并行模式,PC和FPGA通信的时钟为JTAG接口的TCLK,数据直接从TDI进入FPGA,完成相应功能的配置。将PROM作为JTAG链的第一级JTAG设备,即PROM在前,FPGA在后,JTAG接口的DTI连接至PROM的DTI,PROM的DTO连接至FPGA的DTI,FPGA的DTO连接至JTAG接口的DTO。
SpaceWire路由单元
SpaceWire路由单元的主要构成是SpaceWire路由芯片及其SpaceWire路由芯片外围电路。
SpaceWire路由芯片介绍
路由芯片的内部结构,其内部主要由以下部分组成:
(1)8个SpaceWire双向系列接口,每个SpaceWire接口都有一个预制相连的控制寄存器和路由控制逻辑。当SpaceWire链路检测到SpaceWire标准中定义的错误时,网络层的错误恢复将会启动。SpaceWire链路上的接受包通过路由控制逻辑可以被发送到配置端口、其它SpaceWire链路接口或者外部FIFO接口。地址无效的数据包将会被SpaceWire路由器装置丢弃。SpaceWire链路的状态将会被与之相连的链路寄存器记录,错误状态将会被与之相连的链路寄存器记录,错误状态将被记录在路由器中直到配置命令将其清除。
(2)2个外部平行输入/输出端口,每一个端口由输入FIFO和一个输出FIFO组成。此两个外部接口可以用来连接外部主机系统。外部端口FIFO的深度是两个字符,每个FIFO的读写时钟为30Mhz。每个FIFO接口的数据宽度为8位,并在其末尾为其增加一位冗余位供其使用。外部端口接收的数据可以通过路由控制逻辑被路由到配置端口、SpaceWire链路接口或者剩下的外部端口。包含无效地址的数据包将会被丢弃。
(3)一个可与任何输入或输出端口相连的交叉开关矩阵路由交换机。
(4)一个内部配置端口,来自平行输入/输出端口或SpaceWire输入/输出端口的数据可通过路由交开关对该端口进行访问。通过该配置寄存器可以执行对内部寄存器的读写操作。当收到一个地址为0的数据包的时候数据包被路由到配置寄存器。如果收到一个无效的命令数据包,则相应状态寄存器的错误位被置位,而且数据包将会被丢弃。
(5)路由表,包含输入端口逻辑地址与输出端口逻辑地址映射信息,该路由表信息可通过外部端口对其访问。该路由表通过路由命令包来设置,作用是为路由装置上的物理目标端口分配地址。在一张路由表里,可以设置一组目的地址,用以来实现群适应路由。在分组适应路由方式中数据包可以通过一组输出端口来到达其目的端口,输出端口的选择是根据当前端口是否空闲来决定的。当收到一个带有逻辑地址的数据包,而且该逻辑地址还能通过路由表的检测时,在目的地址在准备好了的时候该数据包被路由到该端口。路由表在复位或上电时会被设置为无效。无效的路由表会引起传递来的数据包被控制逻辑溢出。高优先级的数据包会比低优先级的数据包先传递,逻辑地址的包头删除技术可用于实现分区逻辑寻址。
(6)控制逻辑,可对路由开关的交换机制进行控制(选择仲裁机制或分组适应路由机制)。路由控制逻辑负责输出端口仲裁、分组自适应路由、交叉矩阵。当2个以上的源端口同时请求使用同一个输出端口的时候输出端口仲裁机制被执行。仲裁机制包含两个优先级:高优先级和低优先级,高优先级的数据包先于低优先级的数据包被传输。
(7)控制寄存器,该寄存器包含例如链接运行速度的控制信息,其控制信息通过配置端口进行读写操作。
(8)一个外部时间码接口,由输入时钟,输出时钟和当前时钟数值组成。应用于路由器上的内部时钟寄存器允许路由器成为时间码主机和时间码从机。在时间码主机的模式下,时间码接口提供一个Tick_in信号给SpaceWire路由器装置广播时间码到整个网络。该模式支持两个时间主机同时运行,一个是时间码被广播到每一个外部tick_in信号的自动模式,另一个是时间码广播到独立于外部tick_in信号的正常模式。
(9)内部状态/错误寄存器,可通过配置端口访问。SpaceWire中的控制和状态寄存器为路由装置执行提供控制机制,设置路由配置和参数,并监视器件的状态。
SpaceWire路由单元电路
SpaceWire路由芯片的外围电路设计主要分为以下几部分:
(1)SpaceWire端口:路由芯片的SpaceWire端口用于和SpaceWire电缆连接。所以8个SpaceWire端口分别和用于和SpaceWire电缆线连接的9针D型连接器相连,9针D型连接。
(2)外部端口:路由芯片的外部接口用于连接外部主机系统用以传递控制信息或数据信息。在此设计中路由芯片通过外部芯片和FPGA连接,FPGA通过此2外部端口读取路由芯片内部寄存器状态、写路由芯片的内部寄存器、接收来自SpaceWire端口的数据信息和向SpaceWire端口发送数据。
(3)时间码接口:SpaceWire网络中时间码的作用是协调、同步各部分的工作。路由芯片的时间码接口有输入输出两个FIFO以及相关的控制信号。
(4)状态输出/访问接口:该接口用于访问内部的一些状态信息,接口包含地址线和数据线。
PCI接口单元
PCI接口总线实现方法
针对200Mbps总线传输速率的传输要求,在硬件设计之前需对PCI接口的实现方法进行必要的研究,调研后选择采用专用的PCI接口芯片。这种芯片具有通用性,而且成本低。芯片开发商已经作过严格的测试,使其完全符合PCI规范。开发人员只需要设计接口芯片和用户逻辑的接口电路,从而大大减少了开发人员的工作量。
综合购买的方便、成本、开发的难易、技术资料的多少,并考虑项目的实际需要(需要DMA传输),最终选定PLX公司的主模式芯片PCI9054作为此次开发的PCI总线接口芯片。
SpaceWire路由器装置数据模块
如图2所示。主要包括:FPGA时序逻辑模块和API函数模块。两者相互配合来实现对板级模块状态与联网环境的监控。API软件接口函数集的功能越完备,系统软件的功能也就越强。
SpaceWire路由器装置FPGA内主要实现各个芯片的接口时序逻辑,具体包括PCI读写状态机、路由芯片读写和SRAM读写操作三个部分。
SpaceWire路由器装置上位机软件配合路由装置硬件系统、FPGA时序逻辑以及相关API函数模块实现以下功能:对SpaceWire链路数据的收发、对路由装置状态信息的读取并显示、配置路由装置。具体功能如下:
(1)写命令,通过PCI接口向SpaceWire路由器装置写指令;
(2)读状态,通过PCI接口读取SpaceWire路由器装置的状态信息并显示;
(3)读接收SpaceWire链路发来的数据并保存,通过PCI接口读取来自SpaceWire链路的数据并将数据存入指定的文件;
(4)写发送数据到SpaceWire链路,通过PCI接口,将从指定文件中读出的数据发送到相应的SpaceWire链路中。
按照FPGA时序逻辑,上位机应用软件和底层板级驱动软件分别展开描述。
SpaceWire路由器装置FPGA时序逻辑
SpaceWire路由器装置FPGA内主要实现各个芯片的接口时序逻辑,具体包括PCI读写状态机、路由芯片读写和SRAM读写操作三个部分。
PCI读写状态机
PCI读写状态机试节点板FPGA逻辑的核心部分,该状态机完成了PCI9054的本地时序控制逻辑。PCI读写操作的区分是通过读写控制信号LWR来实现的,当LWR为1时表示PCI写操作,当LWR为0时表示PCI读操作。除了读写控制位之外,其他的状态跳转条件完全一致。PCI读写操作分为IO读写操作和DMA读写操作,IO读写操作只维持一个周期,DMA读写操作维持多个周期。
路由芯片读写操作
路由芯片所需要实现的接口时序有两个外部FIFO端口、一个状态查询端口和一个时间码端口。
外部FIFO端口
外部FIFO读写模块需要实现对两个外部FIFO端口的状态查询、读取和写入功能。
外部端口写操作:检测EXT_IN_FULL_N(FPGA:ext_in_full)信号是否为高,时钟cycle2开始,该信号电平为高表示路由芯片内部有空间从外部端口接收数据。在下一个系统时钟上升沿cycle 3时,外部端口模块通过ext_in_data<8:0>将数据传输到路由芯片的EXT_IN_DATA<8:0>总线上,同时使能EXT_IN_WRITE_N(FPGA:ext_in_wrn)信号为低电平,将数据写入路由芯片芯片的FIFO中。只要FIFO仍然有空间接收数据(EXT_IN_FULL_N信号电平为高),写使能信号EXT_IN_WRITE_N(FPGA:ext_in_wrn)有效,写操作就持续进行。当FIFO中无空间时,写操作被忽略,如cycle 9和10。当FIFO中重新有空间且写使能信号EXT_IN_WRITE_N(FPGA:ext_in_wrn)仍然有效,写操作会继续进行,因此,数据信号在此时须保持有效。
外部端口读操作:当路由芯片外部端口的FIFO数据就绪时,就会呈现在EXT_OUT_DATA<8:0>总线(FPGA:ext_out_data<8:0>)上,同时设置EXT_OUT_EMPTY_N(FPGA:ext_out_empty)为高电平,通知FPGA的外部端口模块数据就绪,该步骤是在系统时钟sysclk的同步操作下完成的。此时当外部端口模块发出EXT_OUT_READ_N(FPGA:ext_out_rdn)读低电平信号时(cycle 3),数据在下一个时钟上升沿(cycle 4)被读取到FPGA中。若FIFO中数据被读取后,无数据时,EXT_OUT_EMPTY_N(FPGA:ext_out_empty)变为低电平。若FIFO中有多个数据待传送,EXT_OUT_EMPTY_N(FPGA:ext_out_empty)就保持高电平,数据依次更新出现在EXT_OUT_DATA<8:0>总线(FPGA:ext_out_data<8:0>)上,若无数据,EXT_OUT_EMPTY_N(FPGA:ext_out_empty)变为低电平,读操作被忽略。
状态查询端口
路由芯片的状态端口有四位地址总线和八位数据总线,在复位信号解除之后的第四个周期,状态端口开始作为输出端口工作,只需要在FPGA内部访问给定的地址就可得到寄存器的数据。在FPGA内部设置状态查询端口用计数器控制,循环读取每一个寄存器,并将寄存器的值保存到FPGA内部设置的寄存器,应用软件可以通过PCI接口来访问FPGA内部的寄存器而实现对状态端口的访问。
时间码端口
Router根据与之互联的外部系统的请求来产生Time-codes。当Router检测到EXT_TICK_IN的上升沿时,就产生一个time-code。待传的time-code值要么来自EXT_TIME_IN<7:0>接口,要么来自Router内部的time-code计数器。所使用的time-codes值来源取决于在EXT_TICK_IN上升沿时,SEL_EXT_TIME信号电平的高低。在EXT_TICK_IN上升沿时,若SEL_EXT_TIME为高电平,EXT_TIME_IN<7:0>的接口值被写入内部time_code寄存器,若SEL_EXT_TIME为低电平,待传的time_code值来自于路由器内部的time_code计数器,其中time_code的高2位控制位(bits 7:6)来自EXT_TIME_IN<7:0>的bits 7:6。
SRAM读写操作
SRAM的读写操作是异步模式,且根据控制信号的不同有多种控制方式。使用CE#和WE#共同控制SRAM的读写,OE#不使用,置位为0。读SRAM模式下,CE#始终低有效,WE#在整个读取期间为1,给定地址即可读取数据。在写SRAM模式下,写操作在CE#和WE#同时有效时发生。
路由装置监控功能
路由装置的监控功能是通过配置路由芯片内部的寄存器来实现,路由芯片的寄存器包含端口控制/状态寄存器、组自适应路由寄存器和路由器控制/状态寄存器。界面切换到当前功能之后,软件开始在状态查询线程中按照周期读取路由芯片的所有端口控制/状态寄存器和路由器控制/状态寄存器,并实时显示SpaceWire端口状态、内部控制端口状态和路由装置状态。同时,还可以根据需要查询对应地址的状态寄存器或者修改状态寄存器,也可以查询或修改当前路由表。
路由装置配置
路由芯片的配置方式不同于节点芯片,路由芯片采用RMAP协议配置或查询寄存器,对路由芯片寄存区的查询与修改均需要按照RMAP协议定义的包格式逐字节发送到路由芯片的内部配置端口。此外,寄存器状态查询RMAP数据包不带校验,直接发送到路由芯片即可获得查询数据包,路由芯片按照RMAP协议包格式返回数据;寄存器写入RMAP数据包带CRC校验,写入数据包之后路由芯片会返回校验信息。
API函数模块:
本发明中PCI驱动由PLX公司提供的开发工具包PLX SDK6.0实现。PLX SDK是为使用PLX芯片开发PCI或PCIe设备的用户提供的软件包,包括开发工具和调试工具。PLX SDK有三个主要的部分组成:驱动内核、API和应用程序。SDK为用户提供了完善的底层函数,用户可以专注于上层应用开发。
PLXAPI Library是用来和PLX驱动通信的接口函数库。当应用软件调用API函数模块时,经API库处理并翻译成IO控制信息然后发送到驱动程序。驱动程序完成请求后将控制返回API,再由API将控制返回应用程序。PLXAPI库内的函数覆盖了芯片的所有功能,包括DMA访问、数据直接访问及中断处理等。在Windows环境下PLXAPI Library以动态链接库(DLL)的形式实现,因此在调用API函数模块时必须在应用程序开始时将DLL载入。PLX驱动包含了所支持器件的API函数模块的实现和操作系统下的通用基本功能。SDK为其支持的所有芯片类型提供了驱动。驱动通过PCI总线访问芯片。
在Visual C++环境下开发应用程序之前,首先需要完成以下几步:
1、安装PLX SDK开发工具包,插入SpaceWire PCI板卡自动查找安装驱动;
2、将PLX SDK的“include”文件夹添加到新建应用程序工程的目录中;
3、在需要调用API函数模块的文件中引入“PlxApi.h”;
4、将“PlxApi.lib”文件插入到工程之中。经过这些步骤,则可以在工程中任意调用需要的PLXAPI函数了。在本发明中使用到的部分API函数模块如图4所示。下面分别对其进行详细描述。
PlxPci_PciRegisterWrite:
寄存器写函数参数列表见图5,返回值为ApiSuccess表示写寄存器成功,否则表示失败。
PlxPci_PciRegisterRead:
读寄存器函数参数列表见图6,返回值为所读寄存器的类容。通过对寄存器的读写函数可以实现对DMA传输方式的设定,即实现设置DMA传输为块DMA传输或者散/聚传输。
PlxPci_DmaBlockChannelOpen:
块DMA传输通道打开函数参数列表见图7,返回值列表见图8。
PlxPci_DmaBlockTransfer:
启动DMA数据传输函数参数列表见图9,参数列表DMA_TRANSFER_ELEMENT为一结构体,其成员见图10,返回列表见图11。
PlxPci_DmaControl:
DMA传输控制函数参数列表见图12,返回值列表见图13。
PlxPci_DmaBlockChannelClose:
块DMA传输通道关闭函数参数列表见图14,返回值见图15。
以上的函数操作都必须是在PCI设备打开的前提下。通过以上函数,再加上一些文件操作函数就基本能实现上下位机的通过PCI的DMA传输。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (4)
1.一种具有高数据带宽的SpaceWire路由器装置,其特征在于,包括:
FPGA主处理单元、SpaceWire路由单元、PCI接口单元、电源单元、晶振复位单元;FPGA时序逻辑模块和API函数模块;SpaceWire路由器装置连接其它节点装置或其它路由器,通过PCI接口单元与上位机进行双向的数据通信;
FPGA主处理单元,作为整个SpaceWire路由器装置的核心处理器,完成对SpaceWire路由单元、PCI接口单元的配置,控制并协调各单元工作,连接电源单元、PCI接口单元、SpaceWire路由单元、晶振复位单元;
SpaceWire路由单元,实现SpaceWire路由器装置的SpaceWire路由功能;实现各主机之间的通信过程的路由;
PCI接口单元,用于连接上位机和FPGA主处理单元,实现与上位机和FPGA主处理单元的双向通信;
电源单元,为整个SpaceWire路由器装置提供电源;
晶振复位单元,为整个路由器装置提供时钟和复位;
FPGA时序逻辑模块,实现所有芯片的接口时序逻辑,FPGA时序逻辑模块具体包含PCI读写状态机、SpaceWire路由器芯片读写、SRAM读写三个部分,通过在PCI读写状态机当中完成对SpaceWire路由器芯片和SRAM的访问;
API函数模块,实现对SpaceWire路由器装置状态与联网环境的控制;
API函数模块配合FPGA时序逻辑模块通过PCI接口单元向FPGA主处理单元收发数据,FPGA主处理单元处理从PCI接口单元和SpaceWire路由单元接收到的数据并发送到相应的PCI接口单元和SpaceWire路由单元,SpaceWire路由单元对外部路由器装置和FPGA主处理单元进行收发数据,并解编码。
2.根据权利要求1所述的一种具有高数据带宽的SpaceWire路由器装置,其特征在于:所述FPGA主处理单元包括:FPGA芯片、SRAM缓存和FPGA配置电路;FPGA芯片作为控制器,起到控制协调的作用;SRAM缓存用于缓存FPGA芯片来不及处理的数据或者FPGA芯片和上位机之间通信需要传递的高速数据流,已达到减小数据丢失的概率;FPGA配置电路用于提供通信端口和存储设备。
3.根据权利要求2所述的一种具有高数据带宽的SpaceWire路由器装置,其特征在于:所述FPGA配置电路实现的功能如下:
(1)写命令,通过PCI接口向SpaceWire路由器装置写指令;
(2)读状态,通过PCI接口读取SpaceWire路由器装置的状态信息并显示;
(3)读接收SpaceWire链路发来的数据并保存,通过PCI接口读取来自上位机的数据并将数据存入指定的文件;
(4)写发送数据到SpaceWire路由单元,通过PCI接口,将从指定文件中读出的数据发送到相应的SpaceWire链路中。
4.根据权利要求1所述的一种具有高数据带宽的SpaceWire路由器装置,其特征在于:所述SpaceWire路由单元通过SpaceWire路由芯片实现SpaceWire路由器装置的路由功能,包括:8个SpaceWire双向系列接口,2个外部平行输入/输出端口,一个与任何输入或输出端口相连的交叉开关矩阵路由交换机,一个内部配置端口,路由表,控制逻辑,控制寄存器,一个外部时间码接口,内部状态/错误寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910833414.5A CN110708252B (zh) | 2019-09-04 | 2019-09-04 | 一种具有高数据带宽的SpaceWire路由器装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910833414.5A CN110708252B (zh) | 2019-09-04 | 2019-09-04 | 一种具有高数据带宽的SpaceWire路由器装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110708252A CN110708252A (zh) | 2020-01-17 |
CN110708252B true CN110708252B (zh) | 2020-08-21 |
Family
ID=69194095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910833414.5A Active CN110708252B (zh) | 2019-09-04 | 2019-09-04 | 一种具有高数据带宽的SpaceWire路由器装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110708252B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760801A (zh) * | 2021-09-28 | 2021-12-07 | 理工雷科电子(西安)有限公司 | 一种基于FPGA和MBS架构的spacewire总线控制器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180157255A1 (en) * | 2015-05-12 | 2018-06-07 | Precision Autonomy Pty Ltd | Systems and methods of unmanned vehicle control and monitoring |
CN108234337B (zh) * | 2017-12-06 | 2021-01-08 | 北京时代民芯科技有限公司 | 一种支持主机接口的SpaceWire总线路由器 |
-
2019
- 2019-09-04 CN CN201910833414.5A patent/CN110708252B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110708252A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108234337B (zh) | 一种支持主机接口的SpaceWire总线路由器 | |
EP0676695B1 (en) | Clock fault detection circuit | |
US7363396B2 (en) | Supercharge message exchanger | |
US5664223A (en) | System for independently transferring data using two independently controlled DMA engines coupled between a FIFO buffer and two separate buses respectively | |
EP3762830B1 (en) | Debug controller circuit | |
US11971446B2 (en) | Interface system for interconnected die and MPU and communication method thereof | |
US4490788A (en) | Well-logging data processing system having segmented serial processor-to-peripheral data links | |
AU675501B2 (en) | Apparatus, method and network adapter with host interrupt and indication management | |
US5732094A (en) | Method for automatic initiation of data transmission | |
US5448558A (en) | Method and apparatus for managing packet FIFOS | |
IL95445A (en) | Supervising direct memory transfer in base / target data explosion at high speed and flexibility | |
JP4903801B2 (ja) | FlexRay通信モジュールとFlexRay加入者装置とを繋ぐ加入者インタフェース、およびFlexRay通信モジュールとFlexRay加入者装置とを繋ぐ加入者インタフェースを経由するメッセージの伝送方法 | |
CN114443170B (zh) | Fpga动态并行加卸载系统 | |
CN109165178B (zh) | 一种基于RapidIO的弹上系统SoC芯片间高速通信方法 | |
CN111290986B (zh) | 一种基于神经网络的总线互联系统 | |
US10896119B1 (en) | Common input/output interface for application and debug circuitry | |
CN110708252B (zh) | 一种具有高数据带宽的SpaceWire路由器装置 | |
CN110704349B (zh) | 一种用于数据可靠传输的SpaceWire节点装置 | |
US6959376B1 (en) | Integrated circuit containing multiple digital signal processors | |
US6633927B1 (en) | Device and method to minimize data latency and maximize data throughput using multiple data valid signals | |
CN115328832B (zh) | 一种基于pcie dma的数据调度系统与方法 | |
US6279044B1 (en) | Network interface for changing byte alignment transferring on a host bus according to master and slave mode memory and I/O mapping requests | |
US6216193B1 (en) | Apparatus and method in a network interface for recovering from complex PCI bus termination conditions | |
US6317847B1 (en) | Software read and write tracing using hardware elements | |
CN115134187A (zh) | 一种灵活扩展接口的分布式通信芯片及通信系统 |
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 |