一种基于流水线的SpaceWire路由器研究

时间:2022-09-04 02:14:33

一种基于流水线的SpaceWire路由器研究

摘 要:SpaceWire路由器是面向Spacewire总线网路互联的设计,它解决了SpaceWire总线只能点对点连接的问题,并提供了通用标准接口和规范进行SpaceWire网络的建立。提出了一种基于流水线技术的SpaceWire路由器,它是利用FPGA设计来实现无阻塞的交换矩阵,并且利用流水线原理提高系统的并行工作速度,以提高SpaceWire路由器的交换速度。目前经过验证的速度已达200 Mb/s,且正在不断改进中。

关键词:SpaceWire路由器;流水线;FPGA;无阻塞交换网络;传输速度

中图分类号:TN915文献标识码:A

文章编号:1004-373X(2009)03-090-03

Study of SpaceWire Router Based on Pipeline

LI Xiao,GONG Longqing,TIAN Wei,NAN Xi

(Xi′an Micro-electronic Technology Institute,Xi′an,710054,China)

Abstract:SpaceWire router is a design for SpaceWire bus network,it has solved the problem that SpaceWire bus only can connect by point to point,and has provided an universal standard interface and criterion to establish the SpaceWire network.This article introduces a SpaceWire router based on pipelining technique,it achieves a non-blocking switch based on FPGA,and uses pipelining technique to improve the speed of parallel work,which advances the transmission rate of SpaceWire router.The rate has been proved is reach 200 Mb/s,and it is improving now.

Keywords:SpaceWire router;pipeline;FPGA;non-blocking switch;transmission rate

近年来,随着SpaceWire总线技术在航天航空领域的不断应用,SpaceWire路由器在理论和技术应用方面也得到了飞速发展。国外,欧洲航天局(ESA)已经将速度为200 Mb/s抗辐射的SpaceWire路由器应用到ESA的航天任务中。国内,目前对SpaceWire路由器的研究还处于初级阶段,设计的SpaceWire路由器最高速度也只能达到100 Mb/s。为了提高路由器的传输速度,这里提出了一种基于流水线技术的SpaceWire路由器。

1 SpaceWire路由器概述

SpaceWire路由器由一定数量链接接口单元和路由单元构成。接口单元主要负责连接各SpaceWire接点,路由单元负责数据的路由交换。

1.1 SpaceWire数据链路层接口单元

SpaceWire数据链路接口主要由连接器、LVDS驱动器、编码器、译码器、状态机、收发FIFO以及主机接口组成,其结构如图1所示。

发送器接收来自发送FIFO的数据,使用DS编码技术编码这些数据并且进行发送。

接收器负责解码DS(Din和Sin)信号产生N-Chars字符序列(data,EOP,EEP),这些字符序列通过接收FIFO传送给主机系统。

FIFO的使用简化了数据链路与主机系统之间的接口。在系统复位以后,发送和接收FIFO都是空的。在链路连接建立以后,如果接收到FCT表明链路另一端允许向它发送数据,那么被写入发送FIFO的数据将被发送。当接收FIFO内仍然有可用空间时,接收FIFO能够接收数据。主机系统从接收FIFO中读取数据。在FIFO全空或全满以前,FIFO的半空或半满标志会触发处理器干预对FIFO的读写操作。这种机制能够控制通过链路的数据流,使数据链路接口保持高速数据吞吐。

状态机用来负责控制接口单元的整体操作,它会提供链路初始化,普通操作和错误服务。

1.2 SpaceWire路由器单元

为了简化基于SpaceWire的通讯系统的复杂度,很重要的就是对SpaceWire路由单元的设计。如图2所示,在图中所设计的SpaceWire路由器中包括8个SpaceWire端口,即2个外部端口、1个内部配置端口、路由表、控制寄存器、状态/错误寄存器、控制逻辑、无阻塞交互开关等。

低延迟、虫洞路由和无阻塞交换开关使数据包能够到达任意一个SpaceWire端口和外部端口,或者也可以由配置端口直接访问任意一个SpaceWire端口和外部端口。所设计SpaceWire端口完全支持SpaceWire标准,提供高速的、双向的通讯。每个外部端口包括一个发送FIFO和一个接收FIFO,可以发送接收字符和包结束标志。

Time-code端口会和计数器一起被提供用来方便Time-code的传播。当一个有效的Time-code到达一个路由端口时,它也会被发送到其他SpaceWire端口,一个TICK_OUT信号会在Time-code端口被产生。路由器可以用Time-code端口提供的TICK_IN信号做为Time-code的操作管理。

配置端口可以配置任何SpaceWire端口和外部端口。它包括可以控制SpaceWire端口、外部端口和交换开关的寄存器。配置端口为各种端口和交换开关都设置了状态寄存器。用配置端口的读命令可以读这些寄存器,从而来读出路由器的状态和错误信息,而且一些状态引脚上的状态和错误信息可以被选择输出。

路由表可以通过配置端口来访问。逻辑地址端口映射和优先位都可以在路由表中进行设置,路由表常常用来控制组适应路由和交互开关中的优先仲裁。

1.3 虫洞路由

SpaceWire路由器是基于虫洞路由上进行设计的。虫洞路由是包路由的一种形式。每一个包的包头包含着目的地的地址信息。每当有一个包到达路由器时,它就立即检测这个包的目的地址,然后按照该地址转发这个包到相应的输出端口。如果要求的输出端口是“空闲”(free)状态,则这个包会被立即转发到这个输出端口。这时,该端口就会被打上“忙”(busy)状态标记,直到这个包的最后一个字符即“包尾”(EOP)通过路由器转发出去。

虫洞路由如图3所示,图中一个包从一个节点发出,通过路由器到达另外一个节点。包头标记为黑色,其余部分为灰色。路由器负责在输入端口和空闲的输出端口之间建立连接,当检测到EOP或EEP时,断开连接,释放输出端口为空闲状态,准备接收其他端口来的包。输出端口忙时,输入端口阻塞输入包,直到其空闲。通过输入端口相远节点发送FCT来实现,直到输出端口空闲时,路由器才取消阻塞。以上是虫洞路由和流量控制之间的关系。

2 基于流水线的SpaceWire路由器

SpaceWire路由器将数据从输入端传递到输出端的过程一般需要进过三个阶段:首先,从输入端读数据,将数据包中包头所包含的目标地址发送给路由查找表;再次,由路由查找表对目标地址进行查找,确定该数据包所要发送的输出端;最后,将数据包发送到目标地址所指的输出端。具体结构如图4所示。

如果路由器中有两个以上输入端向同一个输出端发送数据时,就会对路由器内部的读写操作产生争夺。这时,路由器应提供仲裁机制进行发送优先级的确定。仲裁后,得到发送权的输入端向输出端口发送一个包。也就是说,在同一时间内,路由器中只能有一个输入端进行数据的发送。当这个输入端发送完毕后,其他输入端再进行数据的发送。这样极大地降低了路由器的工作效率。

为了改善路由器的传输速度,研究设计了一种基于流水线技术的SpaceWire路由器。关键技术是设计一个基于流水线技术的无阻塞的并行交换开关(如图5)。

对于SpaceWire路由器内部数据流包头的检测和数据重排电路的设计复杂、规模较大。为了简化电路设计的复杂度、降低电路功耗、提高系统工作可靠性,针对输入数据流的包头检测及数据重排电路,采用事务处理流水线技术实现电路方案设计。图6为采用事务处理流水线技术实现包头检测及数据重排电路方案框图。采用此设计方案进行电路设计的实验结果表明,采用流水线设计技术实现的电路其规模比原来电路减少了50%。

图6所示的为并行交换体系结构,设计用FPGA实现K个M×M的无缓存的交叉开关作为交换模块。这个体系结构是由M个输入共享存储器模块、K个交叉开关和M个输出共享存储模块组成。每个输入/输出共享存储器模块有V个外部线路接口,同时与所有交叉开关相连接。

输入共享存储器模块包含(M*V)个VOQ(虚拟输出队列),保存输出到不同目的端口的信元。输出共享存储器模块包含V个输出队列,保存等待输出的信元。在每个仲裁周期,输入端口从(M*V)个VOQ队列中随机选择M个队列,向交换开关提交调度请求。交换开关以轮询方式为各队列提供服务,根据调度结果将授权信息反馈给输入端口。授权信息指定的VOQ队列头信元通过交换开关直接到达输出队列,完成报文重组等处理后,发送到外部链路。为了避免输出端发生缓冲区溢出,可采用反压机制及时阻止输入端发送过量信元。

在多个输入端向一个输出端发送数据时,在交换开关中利用流水线技术让多个输入端分时向输出端发送数据。也可以在每个输入端都复制一个路由查找表,这样在就不需要仲裁机制了。当数据流进入输入端后,根据包头地址查找路由表,确定要发送的输出端,然后进行发送,当多个输入端进行传送时,就会给每个输入端分配一个时间令牌,当自己的时间令牌有效时,就进行传输,当时间令牌失效时,停止传输,直到将所有数据传输完毕。而时间令牌的分配,由路由算法来控制。基本思想是利用流水线将时间令牌轮流分给每个输入节点,还可根据具体的一些情况对路由算法进行优化。此项工作目前正在进行中。基于这种流水线技术设计的SpaceWire路由器,速度将会达到200 Mb/s。从而使SpaceWire网络的数据传输更加快速,也会实现各输入端到输出端的同时访问。

3 结 语

介绍了SpaceWire路由器的基本原理,重点阐述了一种基于流水线技术的SpaceWire路由器的研究,关键技术是用FPGA设计一种基于流水线技术的交换开关。SpaceWire路由器符合未来航天航空领域的发展需求,所以SpaceWire路由器速度是非常关键的指标。本文就是介绍了一种改善SpaceWire路由器的速度的方法,具有很高的研究价值。目前此项研究正在实现过程中。

参考文献

[1]胡晓峰.并行路由器体系结构若干关键技术研究[D].长沙:国防科学技术大学,2004.

[2]孟李林.一种无阻塞的高阶电路交换方案设计[J].西安邮电学院学报,2007,12(5):1-3.

[3]白海斌,邵淼青.基于FPGA的数据无阻塞交换设计[J].无线电通信技术,2007,33(6):63-65.

[4]Steve Parkes,Chris McClements.SpaceWire Router\.Netherlands: International SpaceWire Seminar, 2003.

[5]UT200SpW4RTR 4-Port SpaceWire Router[EB/OL].,2007.

[6]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2004.

[7]田华.SpaceWire总线在遥测卫星数传系统中的设计应用[M].上海:上海交通大学出版社,2005.

[8]徐明伟,徐恪.路由查找算法研究综述[J].软件学报,2002,13(1):42-50.

[9]孙志刚,苏金树.高效的Crossbar仲裁算法――ISP[J].计算机学报,2000,23(10):1 078-1 082.

[10]胡晓锋,孙志刚,卢锡城.并行交换系统PSIQC的容错机制[J].计算机工程与科学,2004,26(10):1-4,10.

作者简介 李 潇 男,1984年出生,陕西人,在读硕士研究生。研究方向为计算机应用技术。

龚龙庆 男,1963年出生,吉林长春人,总工程师,研究生导师。研究方向为计算机应用。

田 卫 男,1969年出生,陕西人,研究员。研究方向为嵌入式计算机。

南 希 女,1983年出生,在读硕士研究生。研究方向为计算机应用技术。

上一篇:驱动芯片BCS1608及其在超声电机中的应用 下一篇:基于DDS驱动PLL结构的宽带频率合成器设计