一种基于fpga的片上网络路由器的制作方法

文档序号:7853077阅读:307来源:国知局
专利名称:一种基于fpga的片上网络路由器的制作方法
技术领域
本发明涉及片上多处理器核间通信技术领域,具体涉及ー种基于FPGA的片上网络路由器。
背景技术
片上系统是目前较为成熟的集成电路设计方法,其设计思想是从系统的整体出发,在单个芯片上完成整个系统的功能。随着半导体エ艺技术的不断进步,芯片也朝着小型化、复杂化的方向迅速发展。片上系统规模的进ー步增大使得集成在単一芯片上IP核的数量越来越多,需要更高的带宽来满足系统的要求。然而金属线宽和间距的减小,不仅带来线上寄生电阻的増加,同时导致线间耦合电容的増大,严重限制了总线带宽并使功耗急剧增カロ。使片上系统在设计过程中遇到了通信能力难以满足系统需求、全局时钟难以同步等问题,制约了集成在単一芯片上IP核的规模和数量。 片上网络(Network-on-chip, NoC)借鉴了计算机网络通信的思想,用路由和分组交换技术代替传统的总线通讯方式,组成具有计算、通信功能的完整系统。同时,使用全局异步局部同步(Globally Asynchronous Locally Synchronous—GALS)机制,姆一个资源节点都工作在自己的时钟域,而不同的资源节点之间则通过OCN进行异步通讯,很好地解决了总线结构的単一时钟同步问题,从而彻底解决了庞大的时钟树所帯来的功耗和面积问题。路由节点作为片上网络的重要组件,负责根据源节点与目标节点的地址,按照一定的路由算法分配路径,实现源节点与目的节点之间的数据通信。路由节点是构建片上网络的基础,其性能的好坏对片上系统的设计和性能起着至关重要的作用。与并行计算机、互联网络以及计算机网络相比,片上网络有着严格的功耗和资源的限制,所以要设计结构简单、资源使用率低、高效、低功耗和可复用的片上网络路由器对组建片上网络系统至关重要。

发明内容
本发明所要解决的技术问题是提供一种基于FPGA的片上网络路由器,其具有结构简单、资源使用率低、低功耗和可复用的特点,并可以通过IP复用技术组成通信网络,应用在片上网络系统中。为解决上述问题,本发明所设计的一种基于FPGA的片上网络路由器,通过IP复用将多个路由器连接在一起,组成通信网络。上述每个路由器主要由交换开关和n+1个方向的端ロ链路模块组成,其中η是与当前路由器相邻路由器的个数;交换开关,负责路由器内部各端ロ链路模块之间的数据交换;每个方向的端ロ链路模块均包括输入虚通道缓存模块、虚通道控制器、路由译码器和请求仲裁器;其中,输入虚通道缓存模块,包括虚通道写选择器、虚通道、虚通道读选择器;虚通道写选择器,根据虚通道控制器给出的虚通道号选择要写的虚通道;虚通道读选择器,根据路由译码器给出的虚通道号选择要要读的虚通道;虚通道由至少2个并接在虚通道写选择器和虚通道读选择器之间的异步先进先出数据缓存器组成,用以缓存上个路由器转发过来的数据;虚通道控制器,在收到上个路由器的相邻方向请求仲裁器发出的请求信号后,根据当前网络拥塞状况选择一条虚通道同时给上个路由器应答信号;路由译码器,在虚通道中有数据时,根据虚通道使用情况选择由虚通道控制器送来的头微片信息,调用路由计算函数并得出下一跳的方向,向对应方向发送请求信号,建立输入与输出方向的链路;请求仲裁器,当有多个方向的路由译码器向同一个方向发请求信号时,用轮询的方式,选择其中ー个方向的请求信号作为最终请求信号,拥有输出通道的使用权,井向下个 路由器发送申请。上述方案中,所述交换开关由n+1个η选I的多位多路选择器构成。上述方案中,所述虚通道写选择器和虚通道读选择器最好均由ー个多路选择开关构成。上述方案中,虚通道最好由4个并接在虚通道写选择器和虚通道读选择器之间的异步先进先出数据缓存器组成。上述方案中,所述多个路由器最好采用规则ニ维网格即2D_Mesh拓扑结构相互连接。上述方案中,与当前路由器相邻路由器的个数为4个(n=4),即每个路由器包括5个方向的端ロ链路模块组成,这5个方向的端ロ链路模块分别为东方向端ロ链路模块、南方向端ロ链路模块、西方向端ロ链路模块、北方向端ロ链路模块和本地方向端ロ链路模块。本发明采用规则的2D_Mesh拓扑结构,基于虚通道技术的虫洞数据交换方式以及无死锁的确定性XY维路由算法实现。每个路由器包含ー个交换开关和五个方向的端ロ链路模块。每个方向采用相同的电路结构,即包括虚通道控制器、输入虚通道缓存模块、路由译码器和请求仲裁器。虚通道控制器负责根据网络拥塞状况分配使用虚通道并完成对输入请求的响应,每个方向配置ー个。路由译码器用来选择路由的方向,每个方向配置ー个。请求仲裁器采用轮询的方式响应应答信号,每个方向在输出通道配置ー个。用硬件描述语言Verilog完成各部分的功能设计,在ModeSim仿真软件下进行功能仿真,并且在基于FPGA的NoC系统上实现了路由器的功能。与现有技术相比,本发明具有如下特点(I)使用了无死锁的确定性XY路由算法,简化了路由译码器的电路,节省了资源的使用;(2)使用了虚通道技术,虚通道由四个异步FIFO组成,降低了网络的拥塞程度,同时实现了 GALS技术;( 3)每个输入虚通道配置一个虚通道控制器和路由译码器,输出通道不使用缓存,只需要配置请求仲裁器,数据由ー个方向的输入虚通道通过交换开关,直接交換到下个路由器的输入虚通道中,降低了缓存的使用;(4)采用ASIC设计流程方法,将路由器分模块设计,用Verilog硬件描述语言实现功能设计,并在FPGA芯片上实现路由器,应用在片上网络系统中,具有一定的实际意义。


图I为ー种基于FPGA的片上网络路由器结构模型(采用2D_Mesh拓扑结构的3 X 3片上网络,图中R表示路由节点,NI表示资源网络接ロ,S表示资源节点,IC内部通道,EC外部通道)。图2为ー个路由器的整体结构图。图3为数据格式图。图4为路由器的其中ー个方向端ロ链路模块组成结构。图5为交换开关示意图。
具体实施例方式
·
一种基于FPGA的片上网络路由器,通过IP复用将多个路由器连接在一起,组成通信网络。多个路由器之间可以采用ニ维甚至是三维拓扑结构,如网格型、蜂窝型、星型、或混合型等等。但在本发明中,所述多个路由器采用规则ニ维网格拓扑结构连接。图I所示的本实施例一种基于FPGA的片上网络路由器采用2D-Mesh拓扑结构的3X3片上网络,其中包括9个路由器,每个路由器功能和电路组成结构相同。上述9个路由器中,只有中间的路由器与周围4个路由器都相连,其他路由器只需连接2个或者3个路由器,剰余端ロ可以不用配置,从而节省芯片面积。图2为ー个路由器的结构图。每个路由器主要由交换开关和n+1个方向的端ロ链路模块组成,其中η为与当前路由器相邻路由器的个数。由于本实施例采用2D-Mesh拓扑结构,因此当前路由器相邻路由器的个数为4个(n=4),即每个路由器均包括交換开关(crossbar)、以及5个方向的端ロ链路模块即东(East)、南(South)、西(West)、北(North)、本地(Local )5个方向,每个方向的端ロ链路模块采用相同的电路结构。本地方向端ロ链路模块与本地的资源节点完成计算任务的各种形式的IP核,负责转发本地资源节点发出的以及接收到的数据;另外4个方向端ロ链路模块即东南西北4个方向端ロ链路模块与其它路由器连接。 交换开关,负责路由器内部各端ロ链路模块之间的数据交换,并将数据从ー个端ロ链路模块的输入缓冲中交换到另ー个端ロ链路模块的输入缓冲,以建立两个方向之间的链接。所述交换开关由n+1个η选I的多位多路选择器构成。在本实施例中,可认为是由5个4选I的多位多路选择器组成。每个方向的端ロ链路模块均包括输入虚通道缓存模块、虚通道控制器、路由译码器和请求仲裁器。其中,输入虚通道缓存模块,包括虚通道写选择器、虚通道、虚通道读选择器。虚通道写选择器和虚通道读选择器均由ー个多路选择开关构成。虚通道写选择器,根据虚通道控制器给出的虚通道号选择要写的虚通道。虚通道读选择器,根据路由译码器给出的虚通道号选择要要读的虚通道。虚通道由至少2个并接在虚通道写选择器和虚通道读选择器之间的异步先进先出数据缓存器(异步FIFO)组成。虚通道不仅用来缓存上个路由器转发过来的数据,而且异步FIFO的读、写时钟可以异步,这样路由器与路由器之间就可以使用不同步的时钟,资源节点与路由器也可使用不同步的时钟,实现GALS技木。在本实施例中,所述虚通道由4个并接在虚通道写选择器和虚通道读选择器之间的异步先进先出数据缓存器组成。虚通道控制器,在收到上个路由器的相邻方向请求仲裁器发出的请求信号后,根据当前网络拥塞状况选择一条虚通道同时给上个路由器应答信号。ー个方向端ロ链路模块上的所有虚通道由I个虚通道控制器控制。上述请求信号是与当前路由器相邻的路由器发出来的,比如说第一路由器和第二路由器相连,第一路由器在左边,第二路由器在右边。那么二者相邻的两个方向就是第一路由器的东方向和第二路由器的西方向,第二路由器的西方向虚通道控制器的请求信号只可能是第一路由器的东方向发来的,同样第一路由器的东方向的请求信号只可能是第二路由器的西方向发出来的。本发明中虚通道控制器的作用有两个第一,根据当前网络拥塞情况选择一条空闲的虚通道;第二,保证ー个完整的数据包不会乱序到达目的节点。当收到相邻节点请求仲裁器发出的请求信号后,虚通道控制器根据当前网络拥塞状况选择一条可写的虚通道用来 接收上个路由器发来的数据同时给相邻节点应答信号。虚通道共享物理通路的同时会竞争物理通路的使用权,而且在数据包传递过程中,可能要经过多个路由単元才能到达目的节点,这样ー个完整的数据包就会以微片形式存在于多个路由单元的缓存中。与此同时其他数据包的微片也可能会向这个方向的虚通道发申请,发生堵塞时,路由计算单元接收到数据时并不知道目前申请的帧是否与上个帧属于同一个数据包。若来自两个不同数据包的帧目的节点一致,接收端资源节点会误将这两个帧作为同一个数据包的数据进行处理,所以为了保证数据包的完整性本实施例采用以下处理方式虚通道控制器收到相邻路由器发出的请求信号后,先判断当前请求的数据帧与发生堵塞的数据帧是否属于同一个数据包,若来自同一个数据包,此次请求失败,说明上一个数据包传递过程中发生了堵塞;若不属于同一个数据包,给出应答信号,并选择其中一条虚通道用来接收相邻节点发来的数据。这样就可以保证一个数据包的多个帧在同一个虚通道中传递,发生堵塞时其他数据包的帧在其他虚通道中传递,接收端收到的将是ー个完整的数据包而不会再插入其他数据包的帧。每个方向端ロ模块仅用一个虚通道控制器来控制,而不是每个虚通道都是用ー个控制器,简化了电路的复杂度,节省了片上资源。路由译码器,是每个方向链路端ロ的核心部件,负责建立输入方向到输出方向之间的链路。在虚通道中有数据时,根据虚通道使用情况选择由虚通道控制器送来的头微片信息,调用路由计算函数,并得出下一跳的方向,向对应方向发送请求信号,建立输入与输出方向的链路。在本实施例中,路由译码器包括路由计算和控制两个模块,计算模块负责译码地址信息以确定要路由的方向;控制模块则依据计算模块确定的地址向向下一跳发送请求信号,当得到应答信号后根据当前虚通道使用情况控制虚通道读选择器,建立输入与输出之间的链路。同样每个方向只用ー个路由译码器,降低了资源的使用率。请求仲裁器,当有多个方向的路由译码器向同一个方向发请求信号时,用轮询的方式,选择其中ー个方向的请求信号作为最终请求信号,拥有输出通道的使用权,井向下个路由器发送申请。本发明是在基于FPGA硬件平台上实现的,所以路由器的设计采取ASIC的基本设计流程,使用自顶向下的设计策略。首先给出路由器的功能定义和子模块的划分,然后用Verilog硬件描述语言设计,功能验证正确后组成一个完整方向端ロ链路模块,由五个端ロ链路模块和交换开关一起组成ー个完整的路由器。再使用IP复用技术,用9个路由器组成通信网络,并在基于FPGA芯片上搭建的片上网络系统中实现了片上网络数据通信的功能。为了避免路由过程中死锁的发生,本发明采用虫洞路由交換方式,并加入虚通道技术,以减小通道的阻塞概率。使用最短路径的确定性源路由算法-XY维序路由算法,可以有效降低电路的复杂度和资源使用率。’一个完整的数据包被分成若干个微片(flit),为了能使数据包正确到达目的节点,将微片分为3种类型,即头微片、数据微片和尾微片。头微片携帯数据包源地址、目的地址、数据包长度等信息。尾微片代表着数据包的终结。数据微片存在于二者之间,是要传递的有效数据。数据结构图如图3所示。数据在网络中的流程如下首先由资源节点将打包好的数据以及ー些握手信号发送到资源网络接ロ,接ロ根据数据包信息给微片添加头类型信息,然后向本地方向发送申请,本地方向的虚通道控制器收到请求信号后,根据当前网络状况决定是否响应请求,若当前可以接收数据,则反馈给接ロ应答信号,令其将数据存入异步先进先出数据缓存器中;检测到有数据进入的头译码器根据头微片中携帯的地址信息向对应方向的请求仲裁器发送请求信号,得到请求仲裁器的应答信号后,将数据从异步先进先出数据缓存器中取出,通过交换开关,由请求的方向输出端ロ输出,进而进入到下个路由器的虚通道中,完成了一次从ー个方向转发到另ー个方向,也就是从ー个路由器交換到了下个路由器中。每个模块的工作过程和原理详细介绍如下数据进入一个路由器的某ー个方向时,在ー个方向的工作过程如下在图4中,当虚通道控制器收到相邻节点请求仲裁器发出的请求信号后,先判断是否有数据包在当前路由器中发生了堵塞,若发生堵塞,判断当前请求的数据帧与发生堵塞的数据帧是否属于同一个数据包,若来自同一个数据包,此次请求失败,说明上一个数据包传递过程中发生了堵塞;若没有发生堵塞或者当前请求的数据帧与发生堵塞的数据帧不属于同一个数据包,给出应答信号,并选择其中一条空的虚通道用来接收相邻节点发来的数据,由虚通道写选择器控制接收相邻节点发来的数据。发生堵塞时,来自同一个数据包的后续数据不会得到应答;来自不同的数据包的数据可以得到应答,这样就可以保证一个数据包的多个帧在同一个虚通道中传递,发生堵塞时其他数据包的帧在其他虚通道中传递,接收端收到的将是ー个完整的数据包而不会再插入其他数据包的帧。给出应答信号及虚通道选择号以后,由虚通道缓存模块将数据保存在本路由器中。虚通道写选择器是ー个多路选择开关,当接收到虚通道控制器发来的信号后,将输入即来自上ー节路由器的数据和FIFO写使能标志,根据虚通道控制器给出的相关控制信号,赋值给对应的虚通道,使数据顺序地写入某个异步先进先出数据缓存器。当检测到有可读虚通道时,路由译码器根据虚通道使用情况选择由虚通道控制器送来的头微片信息,调用路由计算函数,判断要转发的方向,向该方向请求仲裁器发送请求信号,一旦得到响应信号,译码器控制虚通道读选择器读出虚通道的数据并送到交換开关,从而建立链路,若得不到应答信号或输入虚通道读空时,断开与交换开关的链接并选择其他非空出入虚通道进行数据传输。路由计算函数的伪代码如下if (x_0的地址<x_当前地址)
向西方向前进else if(X_目的地址>X_当前地址)
向东方向前进 else if (X_目的地址==X—当前地址) if (Y_目的地址<Υ_当前地址)
向南北方向前进
else If (Y—目的地址〉Y—当前地址)
向北方向前进 else到达目的路由请求仲裁器要接收来自本地路由译码器其他4个方向的请求信号,但同一时间只能给ー个方向应答信号,所以采用轮询的机制处理四个方向的请求信号,选择ー个方向的请求信号井向下个路由发送申请,得到响应后,给该方向的路由译码器准许应答信号,待请求信号消失后继续轮询其他方向 的请求信号。交换开关的功能是将数据从ー个端ロ的输入缓冲中交換到另ー个端ロ的输入缓冲中。内部结构可认为是由5个4选I的多路选择器组成,其结构图如图5所示,数据进入交换开关的某一方向端ロ时,由选择器根据几个方向之间的选择信号选择输出的通道,使得输入与输出端ロ建立链路,将数据转发出到另ー个方向。几个选择器可以同时工作,也就是路由器内部可以同时进行多个方向之间的数据转发。按着上述过程可以完成数据从ー个路由转发到下ー个路由的过程,从而完成资源节点之间通过路由器组成的网络进行数据通信的目的。本发明采用的路由算法易实现,组成结构简単,占用资源少,并且可以应用在基于FPGA的NoC系统中。
权利要求
1.一种基于FPGA的片上网络路由器,包括多个连接在一起的路由器,其特征在于每个路由器主要由交换开关和n+1个方向的端口链路模块组成,其中η是与当前路由器相邻的路由器个数; 交换开关,负责路由器内部各端口链路模块之间的数据交换; 每个方向的端口链路模块均包括输入虚通道缓存模块、虚通道控制器、路由译码器和请求仲裁器;其中, 输入虚通道缓存模块,包括虚通道写选择器、虚通道、虚通道读选择器;虚通道写选择器,根据虚通道控制器给出的虚通道号选择要写的虚通道;虚通道读选择器,根据路由译码器给出的虚通道号选择要要读的虚通道;虚通道由至少2个并接在虚通道写选择器和虚通道读选择器之间的异步先进先出数据缓存器组成,用以缓存上个路由器转发过来的数据; 虚通道控制器,在收到上个路由器的相邻方向请求仲裁器发出的请求信号后,根据当前网络拥塞状况选择一条虚通道同时给上个路由器应答信号; 路由译码器,在虚通道中有数据时,根据虚通道使用情况选择由虚通道控制器送来的头微片信息,调用路由计算函数并得出下一跳的方向,向对应方向发送请求信号,建立输入与输出方向的链路; 请求仲裁器,当有多个方向的路由译码器向同一个方向发请求信号时,用轮询的方式,选择其中一个方向的请求信号作为最终请求信号,拥有输出通道的使用权,并向下个路由器发送申请。
2.根据权利要求I所述的一种基于FPGA的片上网络路由器,其特征在于所述交换开关由η+1个η选I的多位多路选择器构成。
3.根据权利要求I所述的一种基于FPGA的片上网络路由器,其特征在于所述虚通道写选择器和虚通道读选择器均由一个多路选择开关构成。
4.根据权利要求I所述的一种基于FPGA的片上网络路由器,其特征在于所述虚通道由4个并接在虚通道写选择器和虚通道读选择器之间的异步先进先出数据缓存器组成。
5.根据权利要求I 4所述的一种基于FPGA的片上网络路由器,其特征在于所述多个路由器采用规则二维网格拓扑结构连接。
6.根据权利要求5所述的一种基于FPGA的片上网络路由器,其特征在于与当前路由器相邻路由器的个数η=4,即每个路由器包括5个方向的端口链路模块组成,这5个方向的端口链路模块分别为东方向端口链路模块、南方向端口链路模块、西方向端口链路模块、北方向端口链路模块和本地方向端口链路模块。
全文摘要
本发明公开一种基于FPGA的片上网络路由器,通过IP复用将多个路由器连接在一起,组成通信网络。上述每个路由器主要由交换开关和n+1个方向的端口链路模块组成,其中n是与当前路由器相邻路由器的个数;每个方向的端口链路模块均包括输入虚通道缓存模块、虚通道控制器、路由译码器和请求仲裁器。本发明具有结构简单、资源使用率低、低功耗和可复用的特点,并可以通过IP复用技术组成通信网络,应用在片上网络系统中。
文档编号H04L12/56GK102685017SQ201210186400
公开日2012年9月19日 申请日期2012年6月7日 优先权日2012年6月7日
发明者任智新, 唐海, 胡聪, 莫玮, 许川佩 申请人:桂林电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1