首页> 中国专利> 用于集成电路的高带宽互连网络

用于集成电路的高带宽互连网络

摘要

一种在集成电路的专用电路和逻辑电路之间提供数据的流水线化总线传输的总线结构,所述总线结构包括流水线化导体的网络,以及流水线化导体的连接器,其可选择性地在所述的专用电路,其他流水线化连接器和所述逻辑电路之间连结。

著录项

  • 公开/公告号CN101802800A

    专利类型发明专利

  • 公开/公告日2010-08-11

    原文格式PDF

  • 申请/专利权人 雅格罗技科技有限公司;

    申请/专利号CN200880107153.9

  • 申请日2008-08-04

  • 分类号G06F13/40(20060101);G06F13/38(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人酆迅;刘静

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 00:35:33

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-09-22

    未缴年费专利权终止 IPC(主分类):G06F13/40 授权公告日:20130130 终止日期:20160804 申请日:20080804

    专利权的终止

  • 2013-01-30

    授权

    授权

  • 2010-09-29

    实质审查的生效 IPC(主分类):G06F13/40 申请日:20080804

    实质审查的生效

  • 2010-08-11

    公开

    公开

说明书

技术领域

本发明涉及用于数字系统内高效通信的网络,并且更具体地,本发明涉及互连总线和站点的多站点化网格,其为现场可编程门阵列提供高速流水线化的和可配置的通信网络。

背景技术

数字系统可以使用现成的集成电路来实现。然而,系统设计者通常可以在系统中使用其逻辑功能可以被定制的某些集成电路,以此来降低成本、提高性能或者增加能力。数字系统中两种常见的可定制集成电路是专用集成电路(ASIC)和现场可编程门阵列(FPGA)。

ASIC是针对特定应用进行设计和制造的。ASIC包括从小型逻辑单元的库中选择的电路。典型的ASIC还包括实现广泛使用功能的大型专用块,诸如数千位随机存取存储器(RAM)或微处理器。这些逻辑单元和专用功能块放置在ASIC上的适当位置处并借助于配线来连接。

专用集成电路(ASIC)具有若干优势。由于ASIC仅包含应用所需的电路,所以其具有很小的裸片(die)尺寸。ASIC还具有低功率消耗和高性能。

ASIC具有某些劣势。由于设计过程复杂,所以设计ASIC需要花费大量时间和金钱。为ASIC创建原型也很复杂,所以原型制作也需要花费大量时间和金钱。

现场可编程门阵列(FPGA)是数字系统中另一种常见的可定制集成电路。FPGA是通用器件。这意味着系统设计者可以针对特定应用对其进行配置。

图21提供了常规FPGA一部分的示意图。FPGA包括多个可配置的通用逻辑块、多个可配置的专用块和多个路由交叉开关(crossbar)。在一个示例中,诸如逻辑块101之类的每个逻辑块可以包括多个四输入查找表(LUT)和多个可配置的一位序向单元,其中每一个可以配置为触发器或锁存器。可配置的专用块(诸如专用块151和155)实现广泛使用的功能。FPGA可以具有不止一种类型的专用块。

路由交叉开关形成二维路由网络,该二维路由网络在逻辑块和专用块之中提供可配置的连接。在说明性的FPGA中,每个路由交叉开关在四个方向连接至最近的邻居路由交叉开关并连接至逻辑块或专用块。例如,路由交叉开关125和100通过总线104连接。在示例性FPGA中,诸如逻辑块101之类的每个逻辑块连接至诸如路由交叉开关100之类的一个路由交叉开关。专用块通常比逻辑块大很多,并且通常具有更多的输入信号和输出信号,从而使得诸如专用块151之类的专用块可以通过多个总线连接至诸如路由交叉开关130-133之类的多个路由交叉开关。

逻辑块、专用块和路由交叉开关包含允许对其操作进行配置的电路(称为配置存储器)。通过适当地设置配置存储器,可以在FPGA中实现用户的设计。现代的FPGA使用若干形式的配置存储器,最常见的形式是静态随机存取存储器。对FPGA的配置使得其可以执行很多可行应用中特定的一个。

与专用集成电路(ASIC)相比,现场可编程门阵列(FPGA)有很多优势。为FPGA制作原型是相对快速且便宜的过程。而且,由于FPGA设计过程的步骤更少,所以与设计ASIC相比,在FPGA中实现设计花费的时间和金钱都更少。

FPGA具有某些劣势,最重要的就是裸片面积。逻辑块使用的面积比等效的ASIC逻辑单元使用的面积要大,并且路由交叉开关中的开关和配置存储器使用的面积远大于等效的ASIC配线。与ASIC相比,FPGA还具有更高的功率消耗和更低的性能。

FPGA的用户可以借助于公知为流水线化的技术来改善其性能。数字设计的操作频率部分地受到数据必须通过的、一个序向单元集合和另一个序向单元集合之间的查找表层数的限制。通过使用附加的序向单元集合,用户可以将查找表集合划分为级的流水线。此技术可以减少序向单元集合之间查找表的层数,并且因此可以实现更高的操作频率。然而,流水线化并不会使FPGA的性能相对于ASIC的性能得到改善,因为ASIC的设计者也可以使用流水线化技术。

可能希望提供这样的电路,其实现设计的可配置性、短时间和低成本,以及FPGA特有的原型制作的短时间和低成本,并同时维持ASIC的高性能、小裸片面积和低功率消耗。通过具有相对较高的性能和相对较小的裸片面积,专门化的专用块可能有助于类似于ASIC的集成电路。该集成电路可以保持FPGA的大部分益处,即,相对可配置、设计需要的时间短和成本低,以及原型制作需要的时间短和成本低。

然而,常规FPGA路由交叉开关网络不能在这种集成电路中提供专用块的高数据带宽。在路由交叉开关网络中路由的信号的操作频率相对较低。用户可以使用流水线寄存器来稍微增大频率,但是这么做会消耗逻辑块中的寄存器资源。利用比正常情况下更大量的路由交叉开关来构建FPGA会增大数据带宽,但是由于路由交叉开关会使用较大面积,这并不实际。

发明内容

本发明的一个目的在于提供面积高效的路由电路,其能够在高带宽的情况下传送数据,以实现具有专用块的混合FPGA的高性能潜力,从而将FPGA和ASIC的益处相结合。

本发明通过一种总线结构而实现,该总线结构在集成电路的专用电路和逻辑电路之间提供数据的流水线化总线传输,该总线结构包括流水线化导体的网络,以及流水线化导体的连接器,其可选择性地在专用电路、其他连接器和逻辑电路之间连结。

通过参考结合附图而进行的以下具体描述,本发明的这些及其他目的和特征将更易于理解,在附图中,贯穿若干视图,相同元素由相同附图标记表示。

附图说明

图1示出了本发明网络中的站点与路由交叉开关网络以及与专用块之间的关系;

图2示出了在本发明网络中通过站点得以确定路由的连接;

图3示出了站点的面向网络视图;

图4是站点的框图;

图5是通过本发明网络的、具有多个目的地的连接的简化示意图;

图6示出了用于一个输入端口和一个输出端口的输入连接和输出连接;

图7是站点的输入端口逻辑的框图;

图8示出了用于一个输入端口的数据归零逻辑;

图9示出了用于一个输入端口的奇偶性生成和检查逻辑;

图10示出了用于站点的输入端口的字节改编(shuffling)逻辑;

图11是用于一个输入端口的延迟填充逻辑的有效行为的示意图;

图12概述了用于一个输入端口的延迟填充逻辑的优选实施方式;

图13示出了用于一个输入端口的串行化逻辑;

图14示出了站点的网络开关;

图15示出了用于网络开关的输出链路的路由复用器;

图16是站点的输出端口逻辑的框图;

图17示出了用于一个输出端口的解串行化逻辑;

图18是用于一个输出端口的延迟填充逻辑的有效行为的示意图;

图19示出了用于站点的输出端口的字节改编逻辑;

图20示出了用于一个输出端口的奇偶性生成和检查逻辑;以及

图21示出了常规现场可编程门阵列(FPGA)的一部分的示意图。

具体实施方式

本描述适用于本发明在现场可编程门阵列(FPGA)中的实施方式。然而,本发明的大部分方面还可以具体化在其他种类的集成电路中,诸如包括大量数字信号处理器的集成电路。

优选实施方式将静态RAM单元用于FPGA配置存储器。然而,本发明的大部分方面还可以具体化在具有其他种类配置存储器(诸如熔丝、反熔丝或闪存)的FPGA中。

本发明是用于数据的交叉连接网络(DCC网络)。DCC网络包括跨越整个现场可编程门阵列(FPGA)的站点的网格。DCC网络相比于传统FPGA路由网络具有若干关键优势。特征的组合使得可以在现场可编程集成电路的环境中进行很多应用。

本发明网络的一个优势在于用户数据是串行化的,并且继而可以跨芯片而流水线化。在优选实施方式中,流水线频率可以高达2GHz,这在ASIC中是难以达到的,而在FPGA中是不可能达到的。高频提供了性能优势。

另一优势在于流水线寄存器构建在站点中。它们不会消耗逻辑块中的寄存器资源,这相比于FPGA提供了面积优势。

第三个优势在于本发明网络的网络开关中的路由复用器以比单比特粗糙的粒度进行配置。与FPGA路由网络相比,这极大地减少了配置存储器位和复用器端口的数量,从而节约了大量裸片面积。

这三个优势为高速专用块彼此通信提供了足够的片上带宽,同时在提供等效带宽的情况下,使用的裸片面积比FPGA小得多。

本发明网络的组织:本发明的网络包括跨越整个现场可编程门阵列(FPGA)的站点的网格。这些站点形成的二维网络类似于与二维路由交叉开关网络平行的平面。这两个平行平面与城市中的行车道类似,其中高速公路的网络与地面街道的网络并行。

图1示出了在本发明一个实施方式中站点与路由交叉开关网络以及与专用块之间的关系。路由交叉开关网络中的重复单元是路由交叉开关的四乘四阵列(每一个都附着有逻辑块),加上四个路由交叉开关(诸如路由交叉开关130-133)的额外垂直集合。四个额外路由交叉开关将路由交叉开关网络的四乘四片段连接至下一组四乘四路由交叉开关。本发明网络中的重复单元是站点。每个站点与其上下左右的最近站点直接连接。例如,站点152利用总线153连接至在上方相邻的站点150。(注意,在站点之间存在水平连接,不过图1没有示出这些水平连接)。典型地,每个站点连接至路由交叉开关网络的一个重复单元。站点连接至路由交叉开关端口处的四个额外路由交叉开关,在其他情况下,这些额外路由交叉开关会连接至逻辑块。例如,站点150通过总线154连接至路由交叉开关133。典型地,每个站点还连接到专用块。例如,站点150通过总线连接至专用块151。站点中的复用器使得专用块能够访问路由交叉开关网络和本发明的网络。

计算机辅助设计(CAD)软件通过对站点中的开关进行配置,为通过本发明网络的路径确定路由。这与通过FPGA路由网络(诸如路由交叉开关网络)来路由信号的过程类似。与FPGA网络不同,本发明的网络在每个站点处提供了流水线寄存器的一个级,其使得数据可以以极高的速率流动。

图2示出了本发明网络中通过一系列站点210-215得以确定路由的连接。用户模块200利用逻辑块来实现。用户模块200通过路由交叉开关到站点的总线201向本发明的网络中发送数据。在此示例中,用户模块以200MHz来发送80位宽的数据。站点210中的输入端口逻辑将数据串行化为1600MHz的10位宽。数据通过1600MHz的10位总线230-234在站点间行进,每一个站点有一个流水线寄存器。在目的地站点215处,输出端口逻辑将数据解串行化为40位宽,并以400MHz在总线220上将其呈献给专用块221。

本发明网络中的站点的总览:图3示出了本发明网络中站点的面向网络视图。其包含四个20位输入端口300、用于处理输入数据的输入端口逻辑301、用于在站点间传递数据的网络开关302、用于处理输出数据的输出端口逻辑303和四个20位输出端口304。站点的外部连接包括去往相邻站点的十六个5位输出链路310-313、来自相邻站点的十六个5位输入链路320-323、来自路由交叉开关和专用块的多个输入连接330以及去往路由交叉开关和专用块的多个输出连接331,以及少量时钟输入332。某些时钟操作于用户逻辑的频率,而某些时钟操作于本发明网络的更快速内部频率。

图4是站点的框图。站点包括输入和输出复用器400、五层输入端口逻辑410-414、网络开关420和四层输出端口逻辑431-434。

输入和输出复用器400向专用块401给予通过四个路由交叉开关402针对路由交叉开关网络的访问权。输入和输出复用器400将专用块401和路由交叉开关402二者连接至站点的输入端口415和输出端口435。每个站点具有四个20位输入端口415和四个20位输出端口435。

输入端口逻辑410-414执行一系列功能:数据归零、奇偶性生成和检查、字节改编、延迟填充和串行化。

数据归零逻辑410可以动态地或静态地使20位用户总线的5位部分归零。此特征有助于在本发明网络中实现复用器,而且还使得可以使用输入端口的5位、10位或15位而不是全部20位。

奇偶性逻辑411可以在19位或两组9位上生成奇偶性,并且其可以检查所有20位或两组10位上的奇偶性。输出端口具有类似的奇偶性逻辑431,于是,可以在输入端口和输出端口二者处生成或检查奇偶性。

默认地,每个20位输入端口将被串行化到本发明网络中的一个5位束(bundle)上。这意味着在本发明网络的内部时钟与用户端口时钟之间的默认频率比例为4∶1。当用户需要2∶1的比例时,字节改编逻辑412可以使得20位数据从一个用户端口转向两个内部束。

延迟填充逻辑413可以向输入端口添加长达14个用户时钟周期的延迟,并且输出端口具有类似的延迟填充逻辑433。CAD软件使用此逻辑来填充通过本发明网络的端到端延迟,使其等于用户规定的值,很大程度上独立于数据必须通过的站点的数量。

输入端口逻辑中的最后一层是串行化器414,其将用户时钟速率的每个20位输入端口串行化到5位内部束上。在优选实施方式中,内部束可以以高达2GHz来计时。

在图4中,网络开关420是部分地组装(populated)的交叉开关。其将5位束421从四个输入端口向十六个站点到站点输出链路422路由,从十六个站点到站点输入链路423向十六个站点到站点输出链路422路由,以及从十六个站点到站点输入链路423向馈送四个输出端口的5位束424路由。(十六个站点到站点输出链路422对应于图3中的元件310-313,而十六个站点到站点输入链路423对应于图3中的元件320-323。)开关中每个路由复用器的根部存在多端口OR(或)门。如果复用器被配置用于允许不止一个束进入OR门,则输入端口处的数据归零逻辑确定允许哪个输入总线通过OR门。这使得本发明网络针对应用执行逐周期选择,所述应用诸如是高带宽复用器、用户交叉开关和为通过本发明网络的连接进行的时间分片划分。

在图4中,输出端口逻辑431-434执行与输入端口的功能相反的一系列功能。解串行化器434将5位内部束以用户时钟速率分配到20位输出端口上。延迟填充逻辑433可以添加长达14个用户时钟周期的延迟。字节改编逻辑432可以使得数据从一个内部束转向两个用户输出端口,其通常与2∶1时钟比例一起使用。奇偶性逻辑431可以在19位或两组9位上生成奇偶性,并且其可以检查20位或两组10位的奇偶性。在输出端口中不存在数据归零逻辑。

创建通过本发明网络的连接:为了在两个逻辑之间创建通过本发明网络的连接,用户从集成电路制造商提供的库中选择逻辑模型。CAD软件将这些模型变换成本发明网络中的物理站点,并为通过本发明网络的路径确定路由。可以提供这样的起始点模型和终止点模型,其用户总线宽度是5位的每个倍数,从5到80。

图5是通过本发明网络的、具有不止一个目的地的连接的简化示意图。在此示例中,用户模块520利用逻辑块来实现。用户向两个目的地,即,用于报头解析的解析器环522和用于分组缓冲的双端口随机存取存储器(RAM)524,发送模块520的输出。在此示例中的用户模块520产生200MHz的80位数据521,而解析器环522和双端口RAM 524分别消耗400MHz的40位数据505和507。数据作为1600MHz的两个5位束行进于本发明的网络中。内部时钟512与用户时钟的频率比例在网络的输入处(信号514)是8∶1,而在网络的输出处(信号513)是4∶1。

用户模块520的输出总线521连接至起始点模块500,其选自用于数据的交叉连接网络(DCC网络)的逻辑模型的库。起始点模块是用于站点的输入端口的逻辑模型。用户输入端口是80位宽,而时钟分割比例是8∶1,因此使用这样的起始点模块,其具有80位用户输入端口,并以8∶1的比例来将数据串行化。CAD软件将通过路由交叉开关向站点的所有四个输入端口路由用户的80位总线,并配置该站点以将用户的数据转到两个5位内部束上。

起始点模块500的输出501连接至延迟模块502。延迟模块是用于通过本发明网络的连接的端到端延迟的逻辑模型。此示例使用其输入端口和输出端口都是10位宽的延迟模块。用户在延迟模块502上设置参数以告知软件所期待的端到端连接延迟。在为设计进行了布局以及确定路由之后,软件可以在输入端口和输出端口处填充延迟,如果通过物理站点序列的路由延迟短于用户规定延迟的话。

延迟模块502的输出503连接至终止点模块504和506,其中每一个用于两个目的地之一。终止点模块是用于站点的输出端口的逻辑模型。此示例使用具有40位用户输出端口且以4∶1的比例将数据解串行化的终止点模块,因为用户输出端口505和507是40位宽,并且时钟分割比例是4∶1。在每个目的地站点处,软件将数据从两个5位内部束转到站点的四个输出端口的两个,并从输出端口处直接去往专用块(522或524)。

包含本发明网络的现场可编程门阵列(FPGA)具有时钟分配网络,该时钟分配网络具有内置时钟分割器。在所建议的实施方式中,分割器可以创建从1∶1到16∶1的任何整数时钟比例。对于通过本发明网络的连接,内部时钟通常与时钟树的根部成1∶1比例。用户时钟从同一根部向下分割。时钟分配网络确保了从同一根部向下分割的任何时钟都能够对准且具有较小偏差。这保证了用户时钟域和内部时钟域之间的同步对接。在图5的示例中,时钟树的根部511操作于1600MHz。时钟树以1∶1的比例向下分割根部511,以产生1600MHz的内部时钟512。时钟树分别以4∶1和8∶1的比例向下分割根部511,以分别产生400MHz和200MHz的用户时钟513和514。

本发明网络中的不同连接可以使用不同的时钟树。例如,设计可以为某些连接使用1600MHz根时钟,而为其他连接使用250MHz根时钟。

在布局和确定路由之后,用户的数据将通过站点的序列,但是这些站点不出现在用户的网表中。通过本发明网络的实际延迟利用用户选择的开始模块、延迟模块和终止模块(诸如图5中的模块500、502、504和506)来仿真。这与通过路由交叉开关网络路由信号类似;后端注释代表所路由信号的延迟,但是路由开关并不出现在用户的网表中。

本发明网络的用途:本发明网络的硬件特征使得各种用途皆是可行的。

本发明网络的最简单用途是具有相同总线宽度和时钟频率的两个用户逻辑之间的点对点连接。例如,假设集成电路包括专用块,其为10Gbps以太网连接执行介质访问控制(MAC)功能;以及专用块的环,其可以被编程以执行以太网帧的简单解析。进一步假设来自MAC块的、用于接收的帧的输出总线是40位宽(包括数据位和标记位),并具有350MHz的时钟频率。进一步假设去往解析器环的输入也是40位宽,并且也以350MHz计时。在此示例中,用户可以使用网络中1400MHz的内部时钟频率、通过本发明的网络来从介质访问控制(MAC)块向解析器环发送数据。MAC数据通过MAC块附近的两个20位输入端口进入本发明网络。输入数据以4∶1的比例串行化到两个5位内部束上。10位宽的内部数据以1400MHz在通过本发明网络中一系列站点的已配置路径中行进。在解析器环附近的站点的两个输出端口处,数据以4∶1的比例解串行化到两个20位总线上,并以350MHz呈现给解析器环。

本发明网络的另一用途是具有相同数据速率但具有不同的总线宽度和时钟频率的两个用户逻辑之间的点到点连接。此带宽匹配通过分别在输入端口和输出端口中独立配置的串行化器比例和解串行化器比例而变得可行。例如,考虑图5中的示意图。用户模块520以200MHz向起始点模块500中发送80位数据,起始点模块500是四个20位输入端口的逻辑表示。输入数据以8∶1的比例串行化到两个5位内部束上。10位宽的内部数据以1600MHz在通过一系列站点的已配置路径中行进。在终止点模块506(其是两个20位输出端口的逻辑表示)处,输出数据以4∶1的比例解串行化到两个20位总线上,并以400MHz呈献给双端口RAM 524。贯穿路径的数据速率是16000Mbps:80位乘以离开用户模块的200MHz,10位乘以本发明网络内部的1600MHz,以及40位乘以进入双端口RAM的400MHz。

本发明的网络可以从一个源向多个目的地扇出数据。图4中所示网络开关420使这成为可能。数据束可以通过输入链路423之一或输入端口421之一进入开关。网络开关可以在输出链路422和输出端口424中向不止一个输出束发送该束。图5示出了具有多个目的地的连接。在此示例中,用户从用户模块520向两个目的地,即,解析器环522和双端口RAM 524,发送数据。

除了以高带宽输送数据以外,通过本发明网络的连接还可以实现高带宽用户复用器。此功能依赖于硬件的两个特征。第一个特征在于站点的输入端口中的数据归零逻辑410(参见图4)。输入端口可以被配置用于使得用户输入信号可以以逐周期为基础将端口的20位总线归零。第二个特征在于网络开关中的路由复用器可以对数据的两个或更多5位束一起进行OR(或)运算。如图15所示,路由复用器包括馈送至OR门中的多个AND(与)门。配置存储器位可以支持复用器中的两个或更多AND门,这使得对两个或更多输入束一起进行“或运算”以映射到输出束上。为了实现高带宽用户复用器,计算机辅助设计(CAD)软件向某些站点的网络开关中的路由复用器路由与两个或更多用户复用器输入总线相对应的束。在该网络开关内,CAD软件支持与所有这些束对应的AND门,从而对这些束一起进行“或运算”。用户将他们的复用器输入总线连接到单独的输入端口,并向每个端口提供控制信号以起到用于用户复用器的选通信号的作用。

用户可以将扇出和高带宽复用合并在通过本发明网络的一个连接中。即,连接可以具有多个用户输入总线,每个总线由单独的控制信号逐周期地启用。连接可以对用户数据一起进行“或运算”,从而形成高带宽用户复用器。用户复用器的输出数据可以扇出至多个用户输出目的地总线。多个这种连接可以用来实现非阻断用户交叉开关,其中多个用户输出总线可以独立地从多个输入总线的逐周期选择接收数据。

通过本发明网络的连接可以将来自两个或更多输入端口的数据划分时间分片到一个内部束上。此功能可以用于对两个或更多用户总线时分复用到一个束上,其中的每一用户都不需要束的完整带宽。此功能也可以用于对起源于集成电路上相隔很远的位置处的两个或更多用户总线进行级联。此功能依赖于网络开关的数据归零逻辑、串行化器和解串行化器,以及进行“或运算”的功能。例如,假设用户想要将两个10位用户总线A和B划分时间分片到一个5位内部束上。用户将10位总线A和B连接到本发明网络的单独输入端口,以及将输出端口连接到20位用户总线C。用户将总线A[9:0]连接到其输入端口的位[9:0],并且端口的位[19:10]由配置存储器强置为0。(图8示出了执行此功能的数据归零逻辑中的配置存储器位。)用户将总线B[9:0]连接到其输入端口的位[19:10],并且端口的位[9:0]由配置位强置为0。两个输入端口的串行化器被配置为以4∶1的频率比例进行串行化。对于每个用户时钟周期,总线A的串行化器输出上的5位四位组的序列是A[4:0],A[9:5],0,0,并且总线B的串行化器输出上的四位组的序列是0,0,B[4:0],B[9:5]。CAD软件向本发明网络的某个站点中的网络开关路由两个串行化器的输出束,在该网络开关处对这些输出束一起进行“或运算”。一起进行“或运算”的束上的四位组序列由此是A[4:0],A[9:5],B[4:0],B[9:5]。组合的束向输出端口路由,并以4∶1被解串行化。20位输出总线C显示在每个周期上与A[9:0]级联的B[9:0]。

通过本发明网络的输出也可以以时间分片方式使用。在前文描述的示例中,可以向网络的两个输出端口路由组合的束。在一个输出端口处,用户可以忽略端口的位[19:10],并从位[9:0]接收总线A。在另一输出端口处,用户可以忽略端口的位[9:0],并从位[19:10]接收总线B。

CAD软件可以在通过本发明网络的连接中实现固定的用户指定端到端延迟,这很大程度上独立于数据通过的站点的数量。例如,当用户通过本发明的网络发送数据总线并同时通过路由交叉开关网络发送控制信号时,在两条路径上具有相同延迟周期数是很重要的。此功能在本发明网络的输入端口和输出端口中使用延迟填充逻辑。在定义通过本发明网络的连接时,用户在延迟模块(诸如图5中的延迟模块502)上设置参数,以告知CAD软件所期待的端到端延迟。在为设计进行了布局以及确定路由之后,CAD软件可以在输入端口和输出端口处填充延迟,如果通过物理站点序列的路由延迟短于用户规定延迟的话。

本发明的网络可以检测用户逻辑或通过本发明的网络中的单比特错误,这要归功于输入端口和输出端口中存在的奇偶性生成和检查逻辑。为了检测用户逻辑(诸如RAM专用块)中的奇偶性错误,用户可以从本发明网络的启用了奇偶性生成的输出端口向RAM提供输入数据。如果来自RAM的输出数据进入启用了奇偶性检查的输入端口,则该输入端口检测在将数据存储在RAM中时出现的任何单比特错误。为了检测在数据行进于本发明网络中时发生的单比特错误,用户可以启用连接的输入端口中的奇偶性生成和连接的输出端口中的奇偶性检查。

输入连接和输出连接的进一步细节:本发明网络中的站点将路由交叉开关网络连接到本发明的网络,以及将这二者连接到专用块。如图1所示,诸如站点150之类的每个站点附接于作为路由交叉开关网络一部分的四个路由交叉开关(诸如路由交叉开关130-133)。诸如专用块151之类的专用块得到通过站点的输入连接和输出连接对这些路由交叉开关的访问权。

站点具有四个20位输入端口和四个20位输出端口。由一个输入端口和一个输出端口组成的每个端口对具有其自己的输入连接和输出连接的集合。用于一个端口对的连接完全独立于其他对。图6示出了用于一个端口对的输入连接和输出连接。存在三种连接:驱动输入端口的输入复用器,驱动路由交叉开关和专用块的输出复用器,以及路由交叉开关与专用块之间的直通连接。所有这些复用器都由配置存储器控制。

输入复用器610和615驱动站点的输入端口的第一层,其是数据归零逻辑600。20位双端口复用器610和1位双端口复用器615分别从路由交叉开关602或专用块603选择用户数据输入(UDI)总线620和有效输入(VI)控制信号625。这两个复用器都受到同一配置存储器位630的控制,使得UDI和VI都来自于路由交叉开关,或者都来自于专用块。并非所有的专用块都具有用来表明20位数据字有效的专用输出信号663。关于有效输入(VI)信号的信息,参见“输入端口逻辑的进一步细节”这一小节中的描述。

20位双端口输出复用器612驱动路由交叉开关602,而20位双端口输出复用器613驱动专用块603。这些复用器分别由独立的配置存储器位632和633控制。站点的输出端口的最后一层是奇偶性生成和检查逻辑601,其驱动用户数据输出(UDO)总线621。UDO向两个输出复用器扇出。驱动路由交叉开关602的输出复用器612在UDO621与来自专用块的、驱动输入复用器610的相同20位总线643之间进行选择。类似地,驱动专用块603的输出复用器613在用户数据输出(UDO)621与来自路由交叉开关的、驱动输入复用器610的相同20位总线642之间进行选择。

除了复用器以外,还存在从路由交叉开关602到专用块603的直通信号652和从专用块到路由交叉开关的直通信号653。直通信号都不连接至站点的输入端口或输出端口。因此,尽管路由交叉开关的输出(除了去往有效输入(VI)输入复用器615的信号662之外)的所有位具有去往专用块的某些路径,但是仅20位具有去往输入端口的路径。类似地,专用块的输出(除了去往VI输入复用器615的有效输出(VO)信号663之外)的所有位具有去往路由交叉开关的某些路径,但是仅20位具有去往输入端口的路径。

注意,输入复用器和输出复用器以20位为一个单位进行操作。例如,没有办法从路由交叉开关选择输入端口的高10位,也没有办法从专用块选择低10位。

站点连接至四个路由交叉开关,并且因此具有如图6中所示的输入连接和输出连接的四个副本。诸如双端口RAM之类的典型专用块连接至一个站点,而该站点继而将其连接到四个路由交叉开关。

输入端口逻辑的进一步细节:每个站点的输入端口逻辑利用图4中的元件410-414进行描述。图7提供了更多的细节,其中图7是输入端口逻辑的框图。总线415和720-723的每个组包括四个总线。每个总线是20位宽,并且由用户时钟计时。总线724包括四个总线;在此也称为“束”的每个总线是5位宽,并且由本发明网络的内部时钟计时。

输入复用器700驱动四个20位输入总线415。总线415驱动数据归零逻辑410,其包括四个数据归零单元710a-710d,每端口一个。数据归零单元710a-710d驱动四个20位总线720。总线720驱动奇偶性生成和检查逻辑411,其包括四个奇偶性生成和检查单元711a-711d,每端口一个。奇偶性单元711a-711d驱动四个20位总线721。总线721驱动字节改编逻辑412,字节改编逻辑412可以将数据从一个端口转到另一端口。字节改编逻辑412驱动四个20位总线722。总线722驱动延迟填充逻辑413,其包括四个延迟填充单元713a-713d,每端口一个。延迟填充单元713a-713d驱动四个20位总线723。总线723驱动串行化器414,其包括四个串行化器714a-714d,每端口一个。串行化器714a-714d驱动四个5位束724。束724驱动网络开关420。

图8示出了用于一个输入端口的数据归零逻辑,诸如数据归零单元710a。用于端口的数据归零逻辑具有三个功能:寄存用户的输入数据;静态地设置端口的宽度;以及使得用户的逻辑可以以逐周期为基础将整个端口归零。

用于端口的用户输入数据是20位总线802,其是由输入复用器700驱动的四个总线415之一。总线802由寄存器803捕获,这由用户时钟805计时。寄存器803的输出被视为四个独立的5位四位组。元件820是用于代表性四位组的逻辑。输出四位组被级联以形成20位总线830,该20位总线830驱动端口的奇偶性生成和检查逻辑。

该端口还具有一位有效输入(VI)信号800。信号800由寄存器801捕获,这由用户时钟805计时。

输入端口可以被配置为5位、10位、15位或20位宽。端口的四个四位组的每一个具有配置存储器位,如果未使用四位组,则该配置存储器位将整个四位组强置为0。在代表性四位组820中,AND门824包括五个双输入AND门,其中每个门的第一输入由信号823驱动,而第二输入由四位组中的一个位驱动。如果四位组未使用,则配置位821被编程为0。这将AND门822的输出823强置为0,其继而会将所有五个AND门824的输出强置为0。

如果用户想要能够在逐周期的基础上将整个端口归零,则配置存储器位811被编程以通过复用器810向信号812传递寄存器801的输出。如果有效输入(VI)信号800是0,则信号812在随后的周期期间是0。这会将AND门822的输出823强置为0,以及将另外三个类似的AND门的输出强置为0。这继而将AND门824的输出和另外三个类似AND门集合强置为0,而不论配置位821的值和另外三个类似配置位的值是什么。另一方面,如果VI信号800是1,则信号812在随后的周期期间是1,并且除非四位组的各个配置位(诸如配置位821)是0,否则通过数据归零逻辑的5位四位组将保持不变。

如果用户想要使有效输入(VI)信号800被忽略,并且想要在每个周期启用端口,则配置存储器位811可以被编程以通过复用器810向信号812传递常量1。

图9是用于一个输入端口的奇偶性生成和检查逻辑(诸如奇偶性单元711a)的示意图。其可以被配置用于旁路(将所有20位保持不变)、奇偶性生成或奇偶性检查。该奇偶性逻辑可以被配置用于在作为一个组的所有20位上操作,或者在两个作为独立组的10位字节上操作。

去往奇偶性单元的20位输入是由四个数据归零单元710a-710d中的一个驱动的四个总线720之一(参见图7)。低阶输入字节包括位0 900和位9:1 901,而高阶输入字节包括位10 910和位19:11 911。两种字节(位9:1 901和位19:11 911)的高9位经常在通过奇偶性逻辑后保持不变。奇偶性单元的20位输出(位0 950,位9:1 901,位10 960和位19:11 911)驱动站点的字节改编逻辑。

为了生成奇偶性,该逻辑计算奇偶性组的高19位或9位的异或(XOR),并向该组的低阶位(20位模式中的位0 950或10位模式中的位10 960和位0 950)注入所计算的奇偶性。为了检查奇偶性,该逻辑计算该奇偶性组的所有20位或10位的XOR,并向该组的低阶位注入错误结果;当且仅当出现奇偶性错误的时候,该结果是1。

图9中的复用器由配置存储器进行控制。复用器确定该奇偶性逻辑操作于旁路、生成还是检查模式。复用器还确定该奇偶性逻辑操作于20位模式还是10位模式。

字节改编逻辑是输入逻辑中四个端口可以彼此交换数据的唯一层。其主要功能在于支持本发明网络的内部时钟和用户时钟之间2∶1的频率比例。对于所有其他频率比例,计算机辅助设计(CAD)软件配置此逻辑以便直接通过同一端口来传递每个端口的20位。

图10示出了用于所有四个输入端口的字节改编逻辑;该图中的复用器由配置存储器进行控制。字节改编单元针对每个端口0-3分别具有一个20位输入总线1000-1003。这些输入总线是图7中的四个总线721,其由四个奇偶性单元711a-711d驱动。字节改编单元针对每个端口0-3分别具有一个20位输出总线1060-1063。这些输出总线驱动四个延迟填充单元713a-713d(参见图7)。

字节改编逻辑将每个端口视为两个10位字节。例如,端口1的输入总线1001包括低阶字节1051l和高阶字节1051h。可配置的复用器或者将端口i的低阶字节保持在端口i上,或者将其转到端口i-1的高阶字节位置上(模4)。例如,复用器或者向端口1的输出总线1061引导端口1的低阶输入字节1051l,或者将其转到端口0的输出总线1060的高阶字节。类似地,复用器或者将端口i的高阶字节保持在端口i上,或者将其转到端口i+1的低阶字节位置上(模4)。例如,复用器或者向端口1的输出总线1061引导高阶输入字节1051h,或者将其转到端口2的输出总线1062的低阶字节。

2∶1频率比例与字节改编一起工作,如下示出。以用户时钟频率计时的每个20位输入端口与以本发明网络内部时钟的更快频率计时的5位内部束相关联。当内部时钟与用户时钟的比例为2∶1时,仅可以将20位端口的10位串行到5位束上。如果正在使用端口的所有20位,则字节改编复用器将10位保持在给定端口中,而将另外10位转到相邻端口。由此,最初进入该端口的20位将会串行化到两个5位内部束上。

每个输入端口具有延迟填充逻辑,诸如图7中的延迟填充单元713a。CAD软件可以使用此逻辑来填充通过本发明网络的端到端延迟,以便等于用户规定的值。

图11是用于一个输入端口的延迟填充逻辑(诸如延迟填充单元713a)的有效行为的示意图。其起到由用户时钟805计时的移位寄存器的作用。有效移位寄存器深度由控制复用器1101的配置存储器位确定。去往延迟填充单元的20位输入1102是字节改编逻辑驱动的四个总线722之一(参见图7)。20位输出1103驱动端口的串行化器。

该逻辑可以配置用于类似于具有0-7级的20位宽移位寄存器而操作,或者类似于具有0-14级的10位宽移位寄存器而操作。当该逻辑被配置为0级移位寄存器时,其从输入总线1102向输出总线1103传递数据,没有任何寄存器延迟。仅当端口的10位或5位有意义时,更深且更窄的14乘10配置是有用的,当本发明网络的内部时钟与用户时钟之间的频率比例是2∶1或1∶1时,便是这种情况。

图12概述了延迟填充逻辑的优选实施方式。来自字节改编逻辑的20位输入数据1102在用户时钟805的每个周期由20位RAM 1204写入到7个字中,而用于串行化器的20位输出数据1103在每个周期从RAM 1204读取。

随机存取存储器(RAM)1204具有单独的写位线和读位线。在前半个周期期间,以写入数据驱动写位线,读位线预先充电,并且输出锁存器保持关闭,使得其可以保留前一次读取的结果。在后半个周期期间,RAM位单元可以下拉读位线,并且输出锁存器保持开启,使得其可以从感应放大器捕获值。

读指针1205和写指针1206提供RAM寻址。这些指针由具有形成有向图的状态集合的相同状态机实现。状态机可以配置有不同的初始状态,并且其可以在用户时钟805的每个周期前进至下一状态。随着指针1205和1206绕着RAM 1204彼此“追赶”,效果是RAM 1204将其输入数据延迟固定数量的周期。在优选实施方式中,该状态机是具有7个状态的最大长度序列的3位线性反馈移位寄存器(LFSR)。其他可能的实施方式包括较慢的二进制计数器,以及使用更多面积的独热码(one-hot)状态机。

为了模拟零级移位寄存器,RAM 1204具有若干特征以从其输入总线1102向其输出总线1103传递数据。读指针1205和写指针1206中的线性反馈移位寄存器(LFSR)可以初始化到不属于7状态有向图的一个状态,并且LFSR在每个时钟周期都保持在该状态;在此状态中,不支持字线。预充电电路具有附加的电路,该附加的电路可以不断地将写位线与读位线短路,并且从不对读位线预先充电。用于输出锁存器的时钟可以被配置用于稳定地将锁存器保持开启。

RAM 1204还可以操作为14字乘10位。其针对每个字的高字节和低字节具有单独的写字线,并且在输出锁存器的低字节之前存在10位宽的二到一复用器。除了线性反馈移位寄存器的3位状态之外,读指针1205和写指针1206二者都包括附加的状态位,用于选择RAM1204的高字节或低字节。

读指针1205和写指针1206在用户时钟(UCLK)805的某个上升沿处被初始化。同步(sync)脉冲引起此初始化。集成电路的时钟系统贯穿每个时钟树、与时钟并排地分发sync。sync的时段是本发明网络内部时钟的7个周期的倍数,因为读指针和写指针每7个(或14个)UCLK周期会循环回其初始值,以及因为时钟树重复发布sync脉冲。关于sync脉冲的更多信息,参见“为本发明网络提供时钟和同步脉冲”的小节。

四个输入端口的每一个具有串行化器,诸如图7中的串行化器714a,其在延迟填充逻辑之后。该串行化器将20位输入端口拆分为四个5位四位组,并将其串行化到5位内部束上。该串行化器是使用用于数据的本发明交叉连接网络中的内部时钟(DCLK)的唯一输入端口层。

图13示出了用于一个输入端口的串行化器逻辑。去往串行化器的20位输入1103是由延迟填充单元713a-d之一驱动的四个总线723之一(参见图7)。该串行化器的5位输出1303去往站点的网络开关。

每个四位组具有由DCLK 512计时的寄存器和二到一复用器。将这些复用器和寄存器连接以形成4级5位宽移位寄存器,该移位寄存器也可以并行加载20位。当控制逻辑1300告知复用器移位时,用于网络开关的5位数据1303从移位寄存器的低阶四位组1302出现。配置存储器位(诸如配置位1304)指定未使用的四位组,该配置存储器位强置该四位组在每个周期移位;对于划分时间分片、允许不使用低阶四位组以及其他功能而言,此行为是很重要的。

用于数据的本发明交叉连接网络(DCC网络)可以将来自不止一个输入端口的数据串行化到单个5位束。例如,逻辑模型的库具有将30位(6个四位组)串行化到一个5位束的起始点模型。本发明网络的硬件具有一起工作以实现此功能的三个特征。

第一个特征在于站点的网络开关在每个路由复用器的根部处具有多端口OR门。当复用器被配置用于允许不止一个束进入OR门时,来自所有对应输入端口的四位组可以流式传输到复用器的输出。

第二个特征在于,在输入端口串行化器中,移位操作将0放入高阶四位组寄存器1301中,并从该寄存器1301进入其余四位组寄存器。除了在紧接着并行加载的四个内部时钟(DCLK)周期期间之外,串行化器每个周期输出0。在路由复用器中的OR门处,来自给定端口的0值允许来自其他一个或多个端口的数据通过OR门而不受破坏。

第三个特征在于串行化器控制逻辑1300具有可配置的分割器偏移量。在最常见的情况下,分割器偏移量为0,这会引起串行化器在用户时钟的每个上升沿之后的一个DCLK周期中执行并行加载。大于0的分割器偏移量会将该并行加载延迟相同数目的周期。例如,在将30位(六个四位组)串行化到一个5位束上的起始点模型中,低阶端口(用户数据输入(UDI)位19:0)的分割器偏移量为0,而高阶端口(UDI[29:20])的分割器偏移量为4。因此,高阶端口总在低阶端口执行并行加载操作之后的四个DCLK周期处执行并行加载操作。在低阶串行化器向网络开关输出其数据的四个DCLK周期期间,高阶串行化器输出0。

串行化器控制逻辑1300在用户时钟(UCLK)的某个上升沿处初始化。同步(sync)脉冲引起此初始化。关于sync脉冲的更多信息,参见“为本发明网络提供时钟和同步脉冲”的小节。

网络开关的进一步细节:图14示出了站点中的网络开关。该网络开关向十六个输出链路422和四个输出端口424路由来自十六个输入链路423和四个输入端口421的5位数据束。如图3所示,该网络开关在四个方向上具有来自每个相邻站点的四个输入链路(分别来自北方、东方、南方和西方的四个输入链路320-323的集合)。网络开关在相同的四个方向上具有去往每个相邻站点的四个输出链路(分别去往北方、东方、南方和西方的四个输出链路310-313的集合)。该网络开关具有分别来自每个端口0-3的一个输入束。这些输入端口束421是图7中的四个总线724,其由四个串行化器414驱动。该网络开关具有分别去往每个端口0-3的一个输出束。这些输出端口束424驱动图16中的四个解串行化器单元434。

网络开关具有二十个5位宽路由复用器,每一个由二十个输入束的一个子集驱动。这样,其实现了部分组装的交叉开关。图14中的水平线(诸如水平线1410)代表输入束。垂直线(诸如垂直线1411)代表路由复用器。X符号(诸如X符号1412)代表从输入束到路由复用器的组装交叉点。

网络开关在来自另一站点的每个输入链路上具有流水线寄存器。这些寄存器(诸如寄存器1413)由本发明网络的内部时钟计时,并且其可以向通过本发明网络的连接所通过的每个站点添加一个周期的延迟。流水线寄存器使得网络中的链路以非常高的频率(在优选实施方式中,高达2GHz)传送数据成为可能。该网络开关针对输入端口、输出端口或去往其他站点的输出链路不具有流水线寄存器。注意,输入端口已经在串行化器处被进行了寄存,而输出端口和输出链路将分别在解串行化器或下一站点处被进行寄存。

在一个备选实施方式中,每个输入链路上的流水线寄存器可以替换为由每个输出链路上的相反相位计时的锁存器和每个输入链路上的锁存器。如果通过网络的已确定路由的连接的内部时钟频率相对较低,则可以通过使得沿着路径的某些锁存器变得透明来减少连接中流水线级的数量。

每个路由复用器与二十个输入束的一个子集硬连线。与二十输入复用器相比,较窄的复用器使用较少的裸片面积并引起较少的电路延迟。用于十六个输出链路422中的每一个输出链路的复用器具有六个输入,其中的四个来自输入链路,其中的两个来自输入端口。用于四个输入端口424中的每一个端口的复用器具有十个输入,其中的八个来自输入链路,其中的两个来自输入端口。

网络开关不是全交叉开关,而是路由复用器的组装输入被选择为使得计算机辅助设计(CAD)软件更容易得到通过本发明网络拥塞区域的曼哈顿距离路线。在优选实施方式中,可以认为本发明的网络具有四个路由平面,编号从0到3。每个输入束或输出束属于这些平面之一。站点的四个输入端口0-3分别属于平面0-3。类似地,站点的四个输出端口0-3分别属于平面0-3。在每个平面中,站点具有四个输出链路,每一个都通往四个方向之一(分别是北、东、南和西)。类似地,在每个平面中,站点具有四个输入链路,每一个来自于四个方向之一。对于属于给定平面的输出链路,该链路的路由复用器具有的来自该同一平面的输入比来自其他平面的输入要多。

用于输出链路的路由复用器具有来自站点的十六个输入链路中的四个输入链路的输入。这些输入中的三个来自同一路由平面中的输入链路并且来自与该给定输出链路的目的地不同的站点。第四个输入来自不同平面中的输入链路并且来自位于来自给定输出链路的给定站点相反侧的站点,由此为直接通过站点而不用转弯的路线提供了额外的路由灵活性。例如,用于平面2中南输出链路的路由复用器具有来自平面2中西、北和东输入链路的输入。其具有来自平面3中北输入链路的第四输入,这为直接从北向南通过站点的路线提供了额外的路由灵活性。

用于输出链路的路由复用器具有来自站点的四个输入端口中两个输入端口的输入。这些输入中的一个来自同一路由平面中的输入端口。另一输入来自编号比其大2(模4)的平面中的输入端口。例如,用于平面2中南输出链路的路由复用器具有来自平面2和0的输入端口的输入。这一特征使得CAD软件能够将连接加载至网络中与该输入端口所属的平面不同的平面中。

用于输出端口的路由复用器具有来自站点的十六个输入链路中八个输入链路的输入。这些输入中的四个来自于偶数路由平面中的输入链路,具体而言,每一个来自位于四个方向中一个方向的站点。其他四个输入来自于奇数平面中的输入链路,具体而言,每一个来自位于四个方向中一个方向的站点。例如,用于平面1中输出端口的路由复用器具有来自平面2中的北、东、南和西输入链路的输入,以及来自平面3中北、东、南和西输入链路的输入。

用于输出端口的路由复用器具有来自站点的四个输入端口中两个输入端口的输入。这些输入中的一个来自同一路由平面中的输入端口。另一输入来自编号比其大2(模4)的平面中的输入端口。例如,用于平面1中输出端口的路由复用器具有来自平面1和3中的输入端口的输入。输入端口到输出端口的路径在站点内提供了环回能力。

在路由复用器上可用的输入使得CAD软件能够将连接从一个平面中的输入端口向任一平面中的输出端口路由通过本发明网络,以及在单个平面中为所有站点到站点链路确定路由。从给定平面中的输入端口开始的连接可以加载至该网络中两个平面中的一个,因为每个输出链路的路由复用器具有来自于两个平面中输入端口的输入。该连接可以在网络中的同一平面上继续,因为每个输出链路的路由复用器具有来自允许同一平面内的路线向左转、继续直走或向右转的三个输入链路的输入。该连接可以在两个平面之一中的输出端口处离开网络,因为每个输出端口的路由复用器具有来自两个平面中输入链路的输入。用于网络内站点到站点链路平面的两个选择与用于输出端口平面的两个选择的乘积意味着:连接可以从给定平面中的输入端口路由至四个平面之任意一个中的输出端口。由于不要求这种连接从网络中的一个平面跳到另一平面,所以CAD软件查找最佳路由的能力并不受到如下事实的严重限制,即,每个输出链路的路由复用器仅具有来自不同平面中输入链路的一个输入。

图15是优选实施方式中的用于去往相邻站点的输出链路的六输入路由复用器的示意图。其具有来自其他站点的已寄存输入链路的四个5位输入1500和来自站点的输入端口的两个5位输入1501。其使用常规AND-OR(与或)复用器设计,其中用于每个5位输入束的使能信号来自诸如配置位1502之类的配置存储器位。当配置位之一被设置为1而其他的被设置为0时,复用器简单地向输出链路1505路由对应的输入束。显然,AND-OR复用器的备选实施方式是可行的。例如,为了减小电路延迟,诸如AND门1503之类的双输入AND门可以由双输入NAND(与非)门替换,而六输入OR门1504可以由六输入NAND门替换。为了进一步减小电路延迟,每两个双输入NAND门和六输入NAND门的两个输入可以由2-2 AND-OR-INVERT(与或非)门替换;继而六输入NAND门可以由3输入NAND门替换。

注意,网络开关中的路由复用器以比单比特粗糙的粒度进行配置。例如,在优选实施方式中,内部时钟和用户时钟之间最常使用的频率比例是4∶1。在这种情况下,单个配置存储器位操纵20位用户总线。与现场可编程门阵列(FPGA)路由网络相比,网络开关的粗糙粒度极大地减少了配置存储器位和复用器端口的数量,从而节约了大量的裸片面积。

当两个或更多配置存储器位被设置为1时,图15中的路由复用器对相应的输入束一起进行“或运算”。利用用以在每个周期期间将除了一个输入束以外的所有输入束归零的适当上游逻辑,复用器执行逐周期选择。在此配置中,该复用器可以实现高带宽复用器(在“本发明网络的用途”中进行描述)、对通过本发明网络的连接划分时间分片(也在“本发明网络的用途”中进行描述),或者将来自不止一个输入端口的数据串行化到单个5位束(在“输入端口逻辑的进一步细节”中进行描述)。

使用比每个5位输入束一个配置存储器位更少的配置存储器位的复用器的其他实施方式也是可行的。在一个这种实施方式中,配置位的数量等于输入束的数量的以2为底的对数,并向上取整。在此实施方式中,配置位允许不多于一个束通过复用器。这种实施方式不能对两个或更多数据束一起进行“或运算”,因此,不能在网络开关中执行逐周期选择。

优选实施方式中用于输出端口的十输入路由复用器类似于用于输出链路的复用器,但是其具有来自八个输入链路的输入,而不是仅仅四个。通过对两个或更多输入束一起进行“或运算”,其也具有执行逐周期选择的相同能力。

输出端口逻辑的进一步细节:每个站点的输出端口逻辑由图4中的元件431-434描述。图16提供了更多细节,其中图16是输出端口逻辑的框图。总线435和1641-1643的每个组包括四个总线。总线中的每一个是20位宽,并由用户时钟计时。总线1644包括四个总线。总线中的每一个在此也称为束,其宽度为5位,并且由本发明网络的内部时钟计时。

网络开关420驱动四个5位束1644。束1644驱动解串行化器434,其包括四个解串行化器1634a-d,每端口一个。解串行化器1634a-d驱动四个20位总线1643。总线1643驱动延迟填充逻辑433,其包括四个延迟填充单元1633a-d,每端口一个。延迟填充单元1633a-d驱动四个20位总线1642。总线1642驱动字节改编逻辑432,其可以将数据从一个端口转到另一端口。字节改编逻辑432驱动四个20位总线1641。

总线1641驱动奇偶性生成和检查逻辑431,其包括四个奇偶性生成和检查单元1631a-d,每端口一个。奇偶性生成和检查单元1631a-d驱动四个20位总线435。总线435驱动输出复用器1600。

四个输出端口中的每一个都具有解串行化器,诸如图16中的解串行化器1634a,其从网络开关接收数据的5位束。该解串行化器首先通过用于数据的本发明交叉连接网络的内部时钟(DCLK)计时的5位宽移位寄存器对5位数据进行移位。继而,其执行至20位输出寄存器中的并行加载。该解串行化器是使用DCLK的唯一输出端口层。

图17示出了用于一个输出端口的解串行化逻辑。去往解串行化器的5位输入1700是站点的网络开关420驱动的四个总线1644之一(参见图16)。解串行化器的20位输出1705驱动端口的延迟填充单元。在DCLK 512的每个上升沿处,3级5位宽移位寄存器1702将数据从高阶5位四位组向低阶四位组1704(位4:0)移位。因此,从网络开关到达的第一个四位组将从并行输出内的最低阶四位组位置处离开解串行化器。用户端口宽度可以借助于配置存储器位(未示出)而设置为5、10、15或20位,其中该配置存储器位控制复用器将移位寄存器1702的长度设置为0、1、2或3个寄存器级。

解串行化器控制逻辑具有可配置的分割器偏移量。为0的偏移量引起20位输出寄存器在用户时钟(UCLK)的每个上升沿之前的一个内部时钟(DCLK)周期中执行并行加载,而大于0的偏移量使得此并行加载提前多个DCLK周期出现。通过网络开关序列的路由延迟可以占据任意数量的DCLK周期,从而分割器偏移量使得该解串行化的字可以在对UCLK分割器比例取模的任一DCLK周期处被捕获。

用于数据的本发明交叉连接网络(DCC网络)可以将来自单个5位束的数据解串行化到多于一个输出端口上。例如,逻辑模型库具有将一个5位束解串行化为30位(6个四位组)的终止点模型。本发明网络的硬件具有一起工作以实现此功能的两个特征。

第一个特征在于束可以在网络内路由以向两个或更多输出端口扇出。所有端口在同一内部时钟(DCLK)周期处将同一四位组接收至其移位寄存器。

第二个特征在于每个输出端口可以利用不同的分割器偏移量进行配置,从而在任何给定周期处,至多一个端口将执行至其输出寄存器中的并行加载。例如,在将一个5位束解串行化到30位上的终止点模型中,低阶端口(用户数据输出(UDO)位19:0)的分割器偏移量为2,而高阶端口(UDO[29:20])的分割器偏移量为0。因此,低阶输出寄存器总是在高阶输出寄存器执行其两个四位组的并行加载之前的两个DCLK周期处执行其四个四位组的并行加载。

解串行化控制逻辑1701在用户时钟的某个上升沿处初始化。同步(sync)脉冲引起此初始化。关于sync脉冲的更多信息,参见“为本发明网络提供时钟和同步脉冲”的小节。

每个输出端口具有延迟填充逻辑,诸如图16中的延迟填充单元1633a。计算机辅助设计(CAD)软件可以使用此逻辑来填充通过本发明网络的端到端延迟以等于用户规定的值。

图18是用于一个输出端口的延迟填充逻辑(诸如延迟填充单元1633a)的有效行为的示意图。其起到了由用户时钟1800计时的移位寄存器的作用。有效移位寄存器深度由控制复用器1801的配置存储器位确定。去往延迟填充单元的20位输入1802是由四个解串行化单元1634a-1634d之一驱动的四个总线1643之一(参见图16)。20位输出1803驱动站点的字节改编逻辑。

该逻辑可以配置用于类似于具有0-7个级的20位宽移位寄存器而操作,或者类似于具有0-14个级的10位宽移位寄存器而操作。当该逻辑被配置为0级移位寄存器时,其从输入总线1802向输出总线1803传递数据,而没有任何寄存器延迟。仅当端口的10位或5位有意义时,更深且更窄的14乘10配置是有用的,当本发明网络的内部时钟与用户时钟之间的频率比例是2∶1或1∶1时,便是这种情况。

用于输出端口的延迟填充逻辑的硬件实现与用于输入端口的实现相同。关于输入端口实现的更多信息,参见“输入端口逻辑的进一步细节”这一小节中的描述。

输出逻辑的字节改编逻辑层允许四个端口彼此交换数据。其主要功能是支持本发明网络的内部时钟与用户时钟之间2∶1的频率比例。对于所有其他频率比例,CAD软件可以配置此逻辑以直接通过同一端口来传递每个端口的20位。

用于输出端口的字节改编逻辑与用于输入端口的字节改编逻辑相同。图19示出了用于所有四个输出端口的字节改编逻辑;附图中的复用器由配置存储器进行控制。该字节改编单元具有分别用于每个端口0-3的一个20位输入总线1900-1903。这些输入总线是图16中的四个总线1642,其由四个延迟填充单元1633a-1633d驱动。字节改编单元具有分别用于每个端口0-3的一个20位输出总线1960-1963。这些输出总线驱动四个奇偶性单元1631a-1631d(参见图16)。

字节改编逻辑将每个端口视为两个10位字节。例如,端口1的输入总线1901包括低阶字节1951l和高阶字节1951h。可配置的复用器或者将端口i的低阶字节保持在端口i上,或者将其转到端口i-1的高阶字节位置上(模4)。例如,复用器或者向端口1的输出总线1961引导端口1的低阶输入字节1951l,或者将其转到端口0的输出总线1960的高阶字节。类似地,复用器或者将端口i的高阶字节保持在端口i上,或者将其转到端口i+1的低阶字节位置上(模4)。例如,复用器或者向端口1的输出总线1961引导端口1的高阶输入字节1951h,或者将其转到端口2的输出总线1962的低阶字节。

2∶1频率比例与字节改编一起工作,如下示出。以内部时钟(DCLK)频率计时的每个5位内部束与以较慢的用户时钟(UCLK)频率计时的20位输出端口相关联。当DCLK与UCLK的比例为2∶1时,5位束可以解串行化到20位端口的仅10位上。如果正在使用端口的所有20位,则端口的数据来自两个5位内部束。字节改编复用器将最初来自两个相邻解串行化器的两个10位总线转到单个20位输出端口。

图20是用于一个输出端口的奇偶性生成和检查(诸如奇偶性单元1631a)的示意图。奇偶性逻辑可以被配置用于旁路(将所有20位保持不变)、奇偶性生成或奇偶性检查。其可以被配置用于在作为一个组的所有20位上操作,或者在作为独立组的两个10位上操作。奇偶性逻辑的输出由利用输出端口的用户时钟(UCLK)1800计时的20位寄存器2070分级。除了具有输出寄存器之外,用于输出端口的奇偶性逻辑与用于输入端口的奇偶性逻辑相同。去往奇偶性单元的20位输入是字节改编逻辑432驱动的四个总线1641之一(参见图16)。低阶输入字节包括位0 2000和位9:1 2001,而高阶输入字节包括位10 2010和位19:11 2011。XOR逻辑的20位输出(位0 2050,位9:12001,位10 2060和位19:11 2011)驱动寄存器2070。寄存器2070的输出2071驱动站点的输出复用器中的一些。

为了生成奇偶性,该逻辑计算该奇偶性组的高19位或9位的异或(XOR),并向该组的低阶位(20位模式中的位02050或10位模式中的位10 2060和位0 2050)注入所计算的奇偶性。为了检查奇偶性,该逻辑计算该奇偶性组的所有20位或10位的XOR,并向低阶位注入错误结果;当且仅当出现奇偶性错误时,该结果是1。

图20中的复用器由配置存储器进行控制。复用器确定该奇偶性逻辑操作于旁路、生成还是检查模式中。复用器还确定该奇偶性逻辑操作于20位模式还是10位模式中。

为本发明网络提供时钟和同步脉冲:本发明网络与集成电路的时钟分配系统一起工作。同步(sync)脉冲对时钟网络中和本发明网络的站点中的计数器进行初始化。

通过本发明网络的连接是完全同步的,但是其通常使用至少两个时钟频率。用户时钟与网络的内部时钟成整数频率比例。此比例通常是2∶1或更大,但其也可以是1∶1。此外,用于属于通过网络的连接的不同起始点或终止点的用户时钟可以具有不同频率。例如,图5示出了具有三个时钟频率的、通过本发明网络的连接。内部时钟512操作于1600MHz。用户时钟513操作于400MHz,其与内部时钟的比例是4∶1。用户时钟514操作于200MHz,其与内部时钟的比例是8∶1。

这些时钟信号操作于不同频率,但是它们具有对准的边沿和它们之间较小的偏差,以实现一个或多个用户时钟域与本发明网络的内部时钟域之间的同步对接。包括本发明网络的现场可编程门阵列(FPGA)具有时钟分配系统,该时钟分配系统可以通过按照可配置的整数比例向下分割根部时钟来产生较低频率时钟。该时钟分配系统还保证了该根部时钟和分割后的时钟具有对准的边沿以及它们之间较小的偏差。

在优选实施方式中,在该时钟分配系统的第三层级处存在时钟分割器,并且该分割器可以被配置用于创建相对于根部时钟的、从1∶1到16∶1的任何整数时钟比例。在其他实施方式中,分割器可以位于时钟网络的不同层,并且其可以支持不同的分割器比例。

本发明网络的内部时钟和用于通过该网络的给定连接的一个或多个用户时钟都从同一根部时钟推导出,但是不同连接可以使用不同根部时钟。例如,用户可以在其设计中针对某些连接选择1600MHz根部时钟,而针对其他连接选择1250MHz根部时钟。

时钟分配系统和本发明网络具有同步初始化的多个计数器。当时钟树中的多个分割器具有同一时钟分割器比例时,其分割器在根部时钟的同一上升沿处初始化,以便使得分割后的输出时钟彼此同相。用于输入端口串行化器的控制逻辑在用户时钟的某个上升沿处初始化;用于输出端口解串行化器的控制逻辑也是这样。在优选实施方式中,输入端口和输出端口中的延迟填充逻辑利用随机存取存储器(RAM)来实现;该RAM的读指针和写指针在用户时钟的某个上升沿处初始化。

为了执行所有这些初始化,包含本发明网络的FPGA生成同步(sync)脉冲并向所有时钟分割器和使用这些分割器的所有站点分配该同步脉冲。在时钟网络的根部生成sync脉冲并通过网络的层级与时钟并排地向下分配该sync脉冲是很便利的。

出现在功能性操作开始处的单个同步脉冲足以初始化时钟系统和站点。时钟系统和站点中的计数器将在此后保持同步,因为它们被配置用于以固定时段在状态序列中循环。

为了帮助保证从一个时钟域发布的重置脉冲可以被位于具有不同分割器比例的所有相关域中的时钟边沿观察到,重复发布同步(sync)脉冲而不是仅发布一次是有用的。因此,优选实施方式发布周期性的sync脉冲。在时钟系统和站点中的计数器想要以任何方式重新初始化其自身时,sync脉冲便会出现。sync脉冲的时段是可配置的,并且CAD软件将其设置为适当的值,如在根部时钟周期中测量的。该时段是参与通过本发明网络的连接的所有时钟分割器的分割器比例的最小公倍数(LCM)或其倍数。在优选实施方式中,该时段也是7的倍数,因为延迟填充逻辑中的读指针和写指针每七个(或十四个)用户时钟周期便循环回其初始值。

尽管就优选实施方式方而言描述了本发明,但是应当理解,在不脱离本发明精神和范围的前提下,本领域技术人员可以做出很多修改和替换。因此,本发明应当按所附权利要求进行确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号