一种基于FPGA的多时钟片上网络研究与设计

时间:2010-09-14来源:网络

  2.2 输入端口

  路由器有5 个输入端口, 通过端口分别与内核及邻近的路由器通信, 这5 个端口按在方位可分为本地(L),北(N),东(E),南(S),西(W)。每个输入端口可以支持虚拟通道多路复用,相关联的仲裁器,以及头译码逻辑,从而作出路由决定。如图1,输入端口的3 个主要组成部分分别是虚拟通道选择器、FIFO bRAMs 以及bRAM 仲裁器。虚拟通道选择器:决定输入端缓存的使用空间的决定权在虚拟通道选择器。当数据包大小以编码形式传播时,虚拟通道选择器接收数据包的首部。当虚拟通道选择器收到来自上游路由器或者来自自身核心的数据时, 虚拟通道选择器就会拿数据包的大小跟虚拟通道目前可以容纳数据包的大小进行比较。这么做的目的是为了能够使输入的数据能够符合FIFO 中write_count 的大小。如果有足够的空间存在,则虚拟通道选择器将同意输入请求, 同时反馈信息。在此过程中,虚拟通道选择器还设置了输入端解复用器。解复用器的作用是使数据包从输入通道传输到正确的复用器的输入缓存中。FIFO bRAMs:在所设计的路由器中,缓冲区的深度将参数化,在试验时同时将其深度设置为16 。这些缓存区将被作为bRAM FIFO 的存储器,同时起到以下作用:

  (1)缓冲部分或者全部到来的数据包,以及当下游开关可以用时,传送头部及紧跟的flit。

  (2)划分路由器核心以及路由器的频率,从而支持一个多时钟的网络设计。

  (3)通过仲裁器监察write_count 端口的信息,来实现支持可变化大小的数据包。在缓冲区有单独时钟域的情况时, 就需要一种有效的方式实施完整的或者空的逻辑。通过以下方式使控制信号同步:

  (1)发送数据包粒度作为一小部分FIFO 的空间。

  (2) 在一个时钟周期内, 一个连接终止之前设置flit 的尾部位。在所使用的FPGA 设计中,由于支持FIFO 的最小深度是16, 所以它适合于在虚拟直通中缓冲整个数据包。write_count 的空和满状态信号将集成在FIFO 中。在一个多数据包的缓冲区中加大存储flit 的能力,将有助于提高FIFO 的利用率。此外,获得网络的吞吐量的增益,是由于上游连续包释放缓冲区所促成的。

  图1 输入端口设计图

  bRAM 仲裁器: 输入端口还包含了控制逻辑作出的仲裁决定。当选择一个非空的bRAM 时, 简单的Round-robin 的方式仲裁算法将会启用。当选择bRAM时,FSM 将会送出头部flit,解码出它的目的地址,并发送相应的要求。在所设计的路由器中采用XY 路由算法将大大简化了解码器的逻辑结构。根据XY 路由算法的通行路径许可,即将释放的请求线将会减少。

  头译码器:在XY 路由算法中,头数据片一开始往X 轴方向走,当到达X 轴所在的目标地址时,就会往Y方向走。所有紧随着的数据片将以流水线的方式跟着头数据片移动。这种简便的XY 路由算法适用于减化头解码器、交叉点矩阵以及中央仲裁器的逻辑结构。以上简化得逻辑结构将使FPGA 的芯片数显著减少。

1 2 3 4

关键词: FPGA 片上网络 多时钟 通信 Virtex

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版