一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于配置和部分重新配置集成电路设备的功能块的电路和方法与流程

2021-11-06 06:28:00 来源:中国专利 TAG:


1.本公开的示例一般涉及电子电路,并且具体涉及用于配置集成电路设备的功能块的电路和方法。


背景技术:

2.不同类型的集成电路设备可以具有可编程资源。虽然专用集成电路(asic)具有可编程资源,但其他设备包括专用可编程逻辑设备(pld)。一种类型的pld是复杂可编程逻辑设备(cpld)。cpld包括两个或更多个功能块,这些功能块连接在一起并且通过互连交换机矩阵连接到输入/输出(i/o)资源,并且可以包括类似于可编程逻辑阵列中使用的两级and/or结构(pla)或可编程阵列逻辑(pal)设备。另一类型的pld是现场可编程门阵列(fpga)。在典型fpga中,可配置逻辑块(clb)阵列耦合到可编程输入/输出块(iob)。clb和iob通过可编程路由资源的层次结构互连。这些clb、iob和可编程布线资源通过将配置位流加载到fpga的配置存储器单元中来定制。对于这些类型的可编程逻辑设备中的两种类型的可编程逻辑设备,设备的功能由为此目的提供给设备的配置位流的配置数据位(或在部分重新配置期间发送的配置数据位)控制。
3.许多pld支持重新配置并且使用基础结构来控制独立可重新配置元件以及可以屏蔽通常称为全局信号控制(gsc)位的这些全局控制效果的本地状态元件,该基础结构由“全局”控制信号(即,从中央控制器广播的信号)组成。gsc位基础结构取决于可以跟踪设备上每个gsc位的状态的软件。这可以描述为gsc位状态的“全局快照”。系统中的任何部分重新配置事件都要求软件具有设备编程前后的全局快照、以及设备上所有gsc位的状态的知识。大型可重新配置设备上可以有数以万计的独立功能块和gsc位。结果,生成编程和控制信息所需的软件非常大且存储器/计算密集型。这种类型的软件通常需要数小时才能在功能强大的计算机上运行。
4.因此,需要克服常规设备的问题的用于配置和重新配置集成电路设备的电路和方法。


技术实现要素:

5.描述了一种用于配置集成电路设备的功能块的电路。该电路包括:处理系统;外围接口总线,耦合到处理系统;以及功能块,耦合到外围接口总线,该功能块具有编程寄存器和功能块核;其中编程寄存器存储确定功能块核的功能的数据并且包括编程控制寄存器,该编程控制寄存器使得能够使用该数据来配置功能块核。
6.还描述了一种配置集成电路设备的功能块的方法。该方法包括:将外围接口总线耦合到处理系统;将功能块耦合到外围接口,在功能块中提供编程寄存器和编程控制寄存器;将编程数据存储在编程寄存器中,其中编程数据确定功能块的功能块核的功能;以及将控制数据存储在功能块的编程控制寄存器中,其中控制数据使得能够使用编程数据配置功
能块核。
附图说明
7.图1是描绘了根据示例的片上系统(soc)的框图。
8.图2是描绘了根据示例的片上网络(noc)的框图。
9.图3是描绘了根据示例的通过noc在端点电路之间的连接的框图。
10.图4是描绘了根据示例通过noc外围互连(npi)与寄存器块的连接的框图。
11.图5是根据示例的npi的简化树形拓扑。
12.图6示出了根据示例的示例写入和读取请求和响应格式。
13.图7a和图7b是根据一些示例的npi的根节点的操作的流程图。
14.图8a和图8b是根据一些示例的npi的npi交换机的操作的流程图。
15.图9是根据一些示例的npi的协议块的操作的流程图。
16.图10是根据一些示例的soc的至少一部分的简化示意图。
17.图11是根据示例为功能块提供本地控制的集成电路的框图。
18.图12是根据示例的具有存储器接口的电路的一部分的框图。
19.图13是根据示例的具有数据收发器接口的电路的一部分的框图。
20.图14是根据示例的具有带有编程控制和状态寄存器(pcsr)的功能块的电路的框图。
21.图15是根据示例的用于使用全局控制信号配置集成电路的电路的一部分的框图。
22.图16是根据示例可以在图15中实现的可配置逻辑元件的框图。
23.图17是示出了根据示例的配置集成电路设备的功能块的方法的流程图。
具体实施方式
24.集成电路技术的进步使得可以在单个半导体芯片中嵌入整个系统,诸如包括多个处理器核、多个存储器控制器和高性能片上网络结构。这种类型的芯片通常称为片上系统(soc)。其他soc可以针对不同的应用在其中嵌入不同的部件。包括专用计算元件的一些soc称为自适应计算加速平台或acap。
25.soc提供在传统基于处理器的设计之上的许多优点。它是多芯片设计的一种有吸引力的备选方案,这是因为将部件集成到单个设备中提高了整体速度,同时减小了尺寸。因为asic设计趋于具有明显更长的开发时间和更高的开发成本,所以soc还是完全定制芯片(诸如专用集成电路(asic))的有吸引力的备选方案。包括可编程逻辑的可编程soc设备(psoc)被开发,以获得可编程逻辑和soc二者的优势。现在,通过使用可编程soc元件构造许多soc部件,这些系统的灵活性得到了提高。
26.重新配置控制和编程的一个模型涉及设备资源子集,可以在不了解设备上其余资源的状态的情况下对这些资源进行独立编程和控制。在这种情况下,控制机构对于每个独立功能块都是本地的。中央控制器单独处理需要控制或编程的每个块。例如,编程可以由可以在嵌入式处理器上实时运行的一小段软件生成。这可以称为部分重新配置的“驱动程序”模型。
27.用于配置集成电路设备的功能块的电路和方法可以使用可寻址总线来应用对功
能块的配置和部分重新配置(pr)的控制,这些功能块存在于诸如fpga、可编程soc或acap之类的可编程逻辑设备中。与可以更适于具有局部控制屏蔽的全局控制系统的诸如lut、可配置逻辑元件(cle)、互连块、ram元件等之类的细粒度可重新配置功能不同,该电路和方法可以很好适于大粒度可重新配置功能,诸如例如,高速串行收发器、片上网络元件、以及存储器控制器。
28.根据各种实现方式,多个总线用于配置集成电路设备的不同部分。例如,分布式配置存储器阵列总线可以用于配置构造(例如,clb、iob和可编程路由资源),apb或npi总线可以用于配置例如noc、xpio、数据收发器、存储器接口,并且noc本身可以用于配置例如数学引擎阵列。这些配置目标中的每个配置目标还可以具有用于在配置或部分重新配置期间进行控制的独特基础设施。在构造的情况下,可以使用全球信号基础设施。在npl配置块的情况下,可以使用称为编程控制和状态寄存器(pcsr)的结构。经由npi配置的每个独立功能块都有专用pcsr——这使得其能够从配置和控制的角度来看是独立的。pcsr具有控件集合,这些控件在内部执行与全局信号在可配置构造中进行的npi配置块相似的功能。这些功能包括复位、时钟使能、默认配置使能、校准触发、三态(用于外部io)、以及可以轮询以检查设备状态的状态。
29.虽然说明书包括定义被认为是新颖的本发明的一个或多个实现方式的特征的权利要求,但相信通过结合附图考虑描述会更好地理解电路和方法。虽然公开了各种电路和方法,但是应当理解,这些电路和方法仅仅是本发明布置的示例,这些布置可以以各种形式体现。因此,本说明书内公开的具体结构细节和功能细节不应被解释为限制,而仅作为权利要求的基础以及作为教导本领域技术人员以实际上任何适当详细结构的方式不同地采用本发明布置的代表性基础。进一步地,本文中所使用的术语和短语不旨在限制,而是提供对电路和方法的可理解描述。
30.图1是描绘了根据示例的片上系统(soc)102的框图。soc 102是集成电路(ic),该ic包括处理系统104、片上网络(noc)106、配置互连108、以及一个或多个可编程逻辑区域110。soc 102可以耦合到外部电路,诸如非易失性存储器(nvm)112。nvm 112可以存储可以加载到soc 102以配置soc 102(诸如配置noc 106和(一个或多个)可编程逻辑区域110)的数据。一般而言,处理系统104通过noc 106和配置互连108连接到(一个或多个)可编程逻辑区域110。配置可以来自数个不同的源,诸如pcie、以太网、can、网络存储、ddr等。通常来自nvm的唯一部分是平台管理控制器(pmc)的初始启动图像,并且可能还有诸如pcie之类的复杂接口的配置。
31.处理系统104可以包括一个或多个处理器核。例如,处理系统104可以包括若干个基于arm的嵌入式处理器核。(一个或多个)可编程逻辑区域110可以包括任何数目的可配置构造块类型,诸如可配置逻辑元件(cle)、块ram(bram/uram)、数字信号处理块(dsp)等,它们可以通过配置互连108使用处理系统104进行编程或配置。配置互连108可以通过处理系统104的处理器核(诸如下文所进一步描述的平台管理控制器(pmc))。
32.图2是描绘了根据示例的noc 106的框图。noc 106包括noc主单元(nmu)202、noc从单元(nsu)204、网络214、noc外围互连(npi)210、以及寄存器块212。每个nmu 202是将主电路连接到noc 106的入口电路。每个nsu 204是将noc 106连接到从机端点电路的出口电路。nmu 202通过网络214连接到nsu 204。在一个示例中,网络214包括noc分组交换机206以及
在noc分组交换机206之间的路由208。每个noc分组交换机206执行noc分组的交换。noc分组交换机206彼此连接并且通过路由208连接到nmu 202和nsu 204以实现多个物理信道。noc分组交换机206还支持每物理信道的多个虚拟信道。npi 210包括用于对nmu 202、nsu 204和noc分组交换机206进行编程的电路装置。例如,nmu 202、nsu 204和noc分组交换机206可以包括确定其功能的寄存器块212。npi 210包括耦合到寄存器块212的外围互连,用于对其进行编程以设置功能。noc 106中的寄存器块212支持中断、qos、错误处理和报告、事务控制、功率管理、以及地址映射控制。寄存器块212可以在被重新编程之前被初始化为可用状态,诸如通过使用如下所述的写入请求写入寄存器块212。用于noc 106的配置数据可以存储在nvm 112(或任何其他配置数据源)中并且提供给npi 210,以用于对noc 106和/或其他从机端点电路进行编程。
33.图3是描绘了根据示例的通过noc 106在端点电路之间的连接的框图。在该示例中,端点电路302通过noc 106连接到端点电路304。端点电路302是主电路,该主电路耦合到noc 106的nmu 202。端点电路304是耦合到noc 106的nsu 204的从机电路。每个端点电路302和304可以是处理系统104中的电路、可编程逻辑区域110中的电路或另一子系统中的电路。可编程逻辑区域110中的每个端点电路可以是专用电路(例如,硬化电路)或以可编程逻辑配置的电路。
34.网络214包括多个物理信道306。物理信道306通过对noc 106进行编程来实现。每个物理信道306包括一个或多个noc分组交换机206和相关路由208。nmu 202通过至少一个物理信道306与nsu 204连接。物理信道306还可以具有一个或多个虚拟信道308。
35.图4是描绘了根据示例的通过npi 210连接到寄存器块212的框图。为了连接到寄存器块212,npi 210包括根节点404、一个或多个npi交换机408、以及协议块410。在一些示例中,根节点404驻留在平台管理控制器(pmc)402上,根节点404还可以驻留在处理系统104中,尽管在其他示例中,根节点404可以是独立电路或驻留在另一系统或电路上。例如,pmc 402可以控制设备配置、安全、功率管理、以及调试操作。通常,根节点404可以将事务请求打包成由npi 210所实现的格式,并且可以将存储器映射事务请求传输到npi交换机408,该npi交换机408还可以将存储器映射事务请求传输到其他npi交换机408或协议块410。然后,协议块410可以将存储器映射事务请求变换成由寄存器块212所实现的格式。寄存器块212在图4中被图示为npi 210可以连接到的从机端点电路的示例。npi 210还可以连接到其他从机端点电路,诸如存储器控制器、温度传感器、时钟发生器等的可编程部件。npi 210通常是如图5的示例所描述的树形拓扑。
36.pmc 402还连接到配置互连108,该配置互连108又连接到可编程逻辑区域110。pmc 402被配置为通过配置互连108对可编程逻辑区域110的构造进行编程。配置互连108是一种用于对soc 102上的可编程单元进行编程的递送机构,该递送机构独立于用于对soc 102上的其他可编程单元(例如,从机端点电路)进行编程的npi 210的递送机构。
37.图5图示了根据示例的npi 210的简化树形拓扑。在其他示例中可以实现其他配置。根节点404是在soc 102上的一个或多个主电路与npi 210之间的接口。npi 210的树形拓扑的分支的末端连接到从机端点电路,诸如本示例中的寄存器块212。
38.根节点404可以实现仲裁方案,诸如循环方案,用于处理从一个或多个主电路接收的事务请求。根节点404还可以在由一个或多个主电路所使用的协议与由npi 210所使用的
协议之间进行变换。例如,一个或多个主电路可以实现高级可扩展接口第四代(axi4)协议,并且npi 210可以实现npi协议。因此,在这样的示例中,根节点404可以在axi4协议与npi协议之间变换事务请求和事务响应。
39.npi交换机408(单独图示为npi交换机408a、408b等)包括一个输入端口和一个或多个(例如,四个)输出端口。每个npi交换机408的相应输入端口连接到树形拓扑中前一节点(例如,根节点404或npi交换机408)的输出端口。例如,npi交换机408a的输入端口连接到根节点404的输出端口;npi交换机408b的输入端口连接到npi交换机408a的输出端口;npi交换机408c的输入端口连接到npi交换机408b的输出端口;npi交换机408d的输入端口连接到npi交换机408b的输出端口;并且npi交换机408e的输入端口连接到npi交换机408b的输出端口。如所指示的,npi交换机408的输出端口可以连接到后续npi交换机408的输入端口或连接到树状拓扑中的后续协议块410。在所图示的示例中,npi交换机408a的另一输出端口连接到协议块410a的输入端口;npi交换机408b的另一输出端口连接到协议块410b的输入端口;npi交换机408c的输出端口连接到协议块410c的输入端口;npi交换机408d的输出端口连接到协议块410d的输入端口;并且npi交换机408e的相应输出端口连接到协议块410e和410f的输入端口。npi交换机408的每个输出端口可以创建npi 210的树形拓扑的后续分支或下游分支。
40.如下文所更详细的示例中所描述的,树形拓扑中的上npi交换机408a接收来自根节点404的事务请求,并且上npi交换机408a和任何后续npi交换机408(例如,npi交换机408b、408c等)根据在相应事务请求中指示的从机端点电路(例如,寄存器块212)的目的地标识接收事务请求将事务请求引导到npi 210的树状拓扑的后续分支。
41.如先前所描述的,协议块410具有连接到前一npi交换机408的输出端口的输入端口以及连接到后续寄存器块212的输入端口的输出端口。在所图示的示例中,协议块410a连接到寄存器块212a的输入端口;协议块410b的输出端口连接到寄存器块212b的输入端口;协议块410c的输出端口连接到寄存器块212c的输入端口;协议块410d的输出端口连接到寄存器块212d的输入端口;协议块410e的输出端口连接到寄存器块212e的输入端口;并且协议块410f的输出端口连接到寄存器块212f的输入端口。协议块410可以将事务请求从在npi 210上实现的协议变换为由相应从机端点电路(例如,寄存器块212)实现的协议。在一些示例中,协议块410可以在npi协议与高级微控制器总线架构(amba)3高级外围总线(apb3)协议之间进行变换。
42.如下文的示例所指示的,在各个节点之间的连接可以描述为在输入端口与输出端口之间;然而,这种连接可以准许双向通信。在从主电路到从机端点电路的事务请求的方向性的上下文中进行对各种输入端口和输出端口的描述,并且这种指定为输入端口或输出端口仅仅是为了方便。如下文所描述的,对事务请求的事务响应可以从输入端口传输并且在输出端口处接收。
43.在一些示例中,npi协议由npi 210实现。图6图示了一些示例中的npi协议的示例事务请求和响应格式。图6示出了npi协议写入请求格式602、npi协议写入响应格式604、npi协议读取请求格式606、以及npi协议读取响应格式608。在所图示的示例中,事务请求和响应格式实现数据流

控制数字(微片)。事务请求或响应可以包括任何数目的数据微片,其中最后一个信号指示可以指示后续数据微片是否将跟随包含最后一个信号指示的数据微片,
或包含最后一个信号指示的数据微片是否是事务请求或响应的最后一个数据微片。在所图示的示例中,格式602、604、606和608中的每个格式实现一个或多个数据微片,每个数据微片的长度均为34位[33:0],尽管在其他示例中,任何数目的位可以在数据微片中实现。
[0044]
npi协议写入请求格式602包括至少两个数据微片,并且如所图示的,包括三个数据微片。第一数据微片是报头数据微片,格式如下:
[0045]
最低有效两位[1:0]

保留或无所谓
[0046]
位[15:2]

目的地地址
[0047]
位[24:16]

从机目的地标识(id)
[0048]
位[28]

保留或无所谓
[0049]
位[30:27]

包含要写入的数据的数据微片的突发长度(blen)
[0050]
位[31]

读取/写入指示(写入)
[0051]
位[32]

保留或无所谓
[0052]
最高有效位[33]

最后一个信号指示(0表示至少有一个后续数据微片)
[0053]
后续数据微片格式如下:
[0054]
最低有效32位[31:0]

要写入的数据
[0055]
位[32]

保留或无所谓
[0056]
最高有效位[33]

最后一个信号指示(0表示跟随至少一个后续数据微片,或1表示最后一个数据微片)
[0057]
npi协议写入响应格式604包括一个数据微片,其格式如下:
[0058]
最低有效32位[31:0]

保留或无所谓
[0059]
位[32]

响应(1表示成功,0表示错误)
[0060]
最高有效位[33]

最后一个信号指示(1表示最后一个数据微片)
[0061]
npi协议读取请求格式606包括一个数据微片,其格式如下:
[0062]
最低有效两位[1:0]

保留或无所谓
[0063]
位[15:2]

目的地地址
[0064]
位[24:16]

从站目的地id
[0065]
位[28]

保留或无所谓
[0066]
位[30:27]

包含要写入的数据的数据微片的突发长度(blen)
[0067]
位[31]

读取/写入指示(读取)
[0068]
位[32]

保留或无所谓
[0069]
最高有效位[33]

最后一个信号指示(1表示最后一个数据微片)
[0070]
npi协议读取响应格式608包括一个或多个数据微片,其中每个数据微片的格式如下:
[0071]
最低有效32位[31:0]

读取的数据
[0072]
位[32]

响应(1表示成功,0表示错误)
[0073]
最高有效位[33]

最后一个信号指示(0表示跟随至少一个后续数据微片,或1表示最后一个数据微片)
[0074]
根据一些示例,在图5的树形拓扑的上下文和图6的npi协议事务请求和响应格式中描述了一些示例数据流。soc 102可以包括例如npi 210可以向其写入和/或从其读取的
512个从机端点电路,因此,npi 210可以连接到512个寄存器块212或其他从机端点电路。512个从机端点电路(例如,寄存器块212)在该示例中由npi协议写入请求格式602和npi协议读取请求格式606的九位[24:16]反映。每个寄存器块212可以包括由npi协议写入请求格式602和npi协议读取请求格式606的目的地址(例如位[15:2])可寻址的配置地址空间,诸如64kb。对于任何寄存器块212,配置地址空间可以是连续的或非连续的。多个寄存器块212的地址空间可以分组在一起。从机端点电路可以是例如noc 106的部件(诸如noc分组交换机206、nmu 202和nsu)或soc 102中的其他部件(诸如存储器控制器、时钟发生器、温度传感器等中的部件)。
[0075]
每个npi交换机408可以执行自动发现方案以标识哪个从机端点电路在相应npi交换机408的哪个输出端口下方或连接到哪个输出端口,并且根节点404具有从高地址位到从机端点电路的目的地id的映射。根节点404被配置为通过将事务请求的地址的上位转换为目的地id、同时维持目的地地址的所接收的事务请求的第一至的下16位来将从主电路接收的所接收的事务请求的从机端点电路的地址变换为目的地id和目的地地址。根节点404将所接收的事务请求变换为npi协议写入请求格式602或npi协议读取请求格式606中的npi协议事务请求。然后,根节点404将npi协议事务请求传输到树形拓扑中的第一npi交换机408(例如,npi交换机408a)。第一npi交换机408基于npi协议事务请求的目的地id来确定在哪个输出端口上传输npi协议事务请求。如果第一npi交换机408确定具有目的地id的从机端点电路在例如第一npi交换机408的第二输出端口下方而非第一输出端口,则第一npi交换机408在第二输出端口上传输npi协议事务请求。接收npi协议事务请求的每个后续npi交换机408基于npi协议事务请求的目的地id来做出相似确定,并且在其下面是目的地id所指定的从机端点电路的输出端口上传输npi协议事务请求,直至与该从机端点电路相对应的协议块410接收到npi协议事务请求为止。然后,协议块410将npi协议事务请求变换为由从机端点电路实现的协议,并且将经变换的事务请求传输到所指定的从机端点电路。
[0076]
一旦从机端点电路接收到所变换的事务请求,从机端点电路就向根节点404传输回事务响应。协议块410被配置为将从机端点电路的事务响应变换为呈npi协议写入响应格式604或npi协议读取响应格式608的npi协议事务响应。然后,协议块410将npi协议事务响应传输到npi交换机408,协议块410的输入端口以树形拓扑连接到该npi交换机408。然后,在输出端口处接收npi协议事务响应的每个npi交换机408通过经由其输入端口传输npi协议事务响应来沿着树形拓扑传输npi协议事务响应。npi协议事务响应沿着树形拓扑传播到根节点404,该根节点404将npi协议事务响应变换为经变换的响应,该经变换的响应传输到适当主电路。
[0077]
根节点404还被配置为处理从主电路接收的多个事务请求。如果根节点404同时从主电路接收多个事务请求,则根节点404实现仲裁方案,诸如循环方案,并且相应地使事务请求串行化。如果根节点404同时和/或在短时段内从主电路接收多个事务请求,则根节点404可以将事务请求串行化并缓存在诸如先进先出(fifo)缓冲器之类的缓冲器中。例如,根节点404可以以串行方式变换事务请求,并且随后可以按突发传输数据微片。单个数据微片可以是npi协议事务请求,或多个数据微片可以组成npi协议事务请求,该请求可以按突发传输。根节点404以流水线方式将数据微片传输到树形拓扑的第一npi交换机408(例如,npi交换机408a)。
[0078]
npi交换机408处理第一接收的npi协议事务请求及其n个数据微片,如上文所描述的。npi交换机408将在第一接收到的npi协议事务请求的第一数据微片之后继续传播(例如,第一npi协议事务请求和/或后续npi协议事务请求的)数据微片,直至:(i)npi交换机408确定后续接收的npi协议事务请求要在npi交换机408的输出端口上传输,第一接收的npi协议事务请求不在该输出端口上传输,并且(ii)npi交换机408还没有从第一npi协议事务响应被传输到的从机端点电路接收到npi协议事务请求。换言之,npi交换机408不沿着与另一先前npi协议事务请求当前未决的分支不同的树形拓扑的分支传输npi协议事务请求。如果npi交换机408接收到要在与传输先前npi协议事务请求的输出端口不同的输出端口上传输的npi协议事务请求,并且npi交换机408尚未接收到针对先前npi协议事务请求的npi协议事务响应,则npi交换机408阻止来自该npi交换机408并且在一些示例中来自上游节点的任何数据微片的进一步传播,直至由npi交换机408接收到对所有相应先前npi协议事务请求的npi协议事务响应。npi交换机408可以阻止由npi交换机408所接收的任何数据微片的传播,并且在一些示例中,阻止树形拓扑中的任何先前npi交换机408和根节点404的传播。一旦适当npi交换机408接收到针对每个先前npi协议事务请求的npi协议事务响应,npi交换机408就可以终止阻止任何数据微片的传播,并且通过npi交换机408的数据微片的传播可以恢复。
[0079]
为了进一步说明该示例,假设第一主机电路在位于寄存器块212f中的一些地址传输对96位数据的写入请求,并且第二主机在位于寄存器块212a中的某个地址传输对64位数据的读取请求。进一步地,假设根节点404在根节点404接收到读取请求前一个时钟周期接收到写入请求,或根节点404同时接收到写入请求和读取请求,并且根据仲裁方案确定写入请求优先于读取请求。因此,根节点404在读取请求之前处理写入请求并且使之串行化。
[0080]
根节点404根据npi协议写入请求格式602将所接收的写入请求变换为npi协议写入请求。npi协议写入请求由四个数据微片组成,其中(i)第一报头数据微片包括寄存器块212f的目的地id、要写入的目的地地址、三个数据微片的突发长度(例如,三个写入数据数据微片)、写入请求的指示、以及数据微片不是最后一个信号的指示;并且(ii)第二数据微片到第四数据微片包括要写入的数据,其中第二数据微片和第三数据微片具有相应数据微片不是最后一个信号的指示,并且第四数据微片具有数据微片是最后一个信号的指示。根节点404在一个时钟周期传输报头数据微片,并且在相应后续时钟周期传输三个后续写入数据数据微片。根节点404将所接收的写入请求放置在等待对npi协议写入请求的响应的fifo缓冲器中。
[0081]
然后,根节点404根据npi协议读取请求格式606将所接收的读取请求变换为npi协议读取请求。npi协议读取请求由一个数据微片组成,该数据微片包括寄存器块212a的目标id、要读取的目的地地址、两个数据微片(例如,两个读取数据数据微片)的突发长度、读取请求、以及数据微片是最后一个信号的指示。根节点404在npi协议写入请求的最后一个数据微片的传输之后的时钟周期传输npi协议读取请求的数据微片。根节点404将所接收的读取请求置于fifo缓冲器中,等待对npi协议读取请求的响应。因此,写入请求在fifo缓冲器中先于读取请求。
[0082]
回到npi协议写入请求,npi交换机408a在第一时钟周期接收报头数据微片。npi交换机408a根据报头数据微片确定目的地id对应于第一输出端口下方的从机端点电路,因
此,npi交换机408a在下一时钟周期通过第一输出端口向npi交换机408b传输报头数据微片。npi交换机408a继续在相应时钟周期通过第一输出端口传输数据微片,直至传输包括数据微片是npi协议写入请求的最后一个信号的指示的数据微片。同样,npi交换机408b在第二时钟周期接收报头数据微片。npi交换机408b根据报头数据微片确定目的地id对应于第三输出端口下方的从机端点电路,因此,npi交换机408b在下一时钟周期通过第三输出端口向npi交换机408e发送报头数据微片。npi交换机408b继续在相应时钟周期通过第三输出端口传输数据微片,直到传输包括数据微片是npi协议写入请求的最后一个信号的指示的数据微片。进一步地,npi交换机408e在第三时钟周期接收报头数据微片。npi交换机408e根据报头数据微片确定目的地id对应于第二输出端口下方的从机端点电路,因此,npi交换机408e在下一时钟周期通过第二输出端口向协议块410f传输报头数据微片。npi交换机408e继续在相应时钟周期通过第二输出端口传输数据微片,直至传输包括数据微片是npi协议写入请求的最后一个信号的指示的数据微片。在四个时钟周期之后,在协议块410f处接收到npi协议写入请求的报头数据微片(然后变换npi协议写入请求并且将经变换的写入请求转发到寄存器块212f);在npi交换机408e处接收到第一写入数据数据微片;在npi交换机408b处接收到第二写入数据数据微片;并且在npi交换机408a处接收到第三写入数据数据微片。
[0083]
npi交换机408a在第五时钟周期接收npi协议读取请求的数据微片,npi协议写入请求的数据微片继续沿着npi交换机408b、408e的分支传播。npi交换机408a根据npi协议读取请求的数据微片确定目的地id对应于第二输出端口下方的从机端点电路。然而,npi交换机408a例如在缓冲器中保持npi协议事务请求——npi协议写入请求——已经通过npi交换机408a的第一输出端口传输,并且npi交换机408a没有接收到对该npi协议事务请求的npi协议事务响应。因此,npi交换机408a实现阻止在npi交换机408a处传播数据微片(例如,npi交换机408a不传输npi协议读取请求的数据微片)。npi交换机408a(以及在一些示例中,任何上游npi交换机408和根节点404)保持阻止,直至npi交换机408a接收到对npi协议写入请求的npi协议写入响应。在该阻止状态期间,npi交换机408a下游的npi交换机408(诸如npi交换机408b、408e)可以继续传播数据微片,例如,除非下游npi交换机408处出现分支和对应阻止条件。
[0084]
在七个时钟周期之后,四个数据微片已经传输到协议块410f并且由其接收,该协议块410f将npi协议写入请求变换为由寄存器块212f实现的格式。寄存器块212f此后处理经变换的写入请求并且将对经变换的写入请求的写入响应传输到协议块410f,该协议块410f将根据npi协议写入响应格式604的写入响应变换为npi协议写入响应。npi协议写入响应由一个数据微片组成,该数据微片包括寄存器块212f中写入是否成功的指示以及数据微片是最后一个信号的指示。然后,npi协议写入响应的数据微片可以诸如同步或异步地通过npi交换机408e、408b、408a向上游传输回到根节点404。
[0085]
在npi交换机408a接收到npi协议写入响应后,npi交换机408a终止阻止从npi交换机408a(并且在一些示例中,任何上游npi交换机408a和根节点404)传输数据微片。因此,npi交换机408a在下一时钟周期通过第二输出端口将npi协议读取请求的数据微片传输到协议块410a。协议块410a将npi协议读取请求变换为由寄存器块212a实现的格式。此后,寄存器块212a处理经变换的读取请求并且将对经变换的读取请求的读取响应传输到协议块
410a,该协议块410a将根据npi协议读取响应格式608的读取响应变换为npi协议读取响应。npi协议读取响应由两个数据微片组成,其中每个数据微片包括读取数据和相应数据微片是否是最后一个信号的指示。然后,npi协议读取响应的数据微片可以诸如同步或异步通过npi交换机408a向上游传输回到根节点404。
[0086]
作为由根节点404对npi协议事务请求的串行化和在分支发生时由npi交换机408阻止的结果,通过根节点404按根节点404将npi协议事务请求传输到npi交换机408的次序接收对npi协议事务请求的npi协议事务响应。因此,根节点404能够维护从主电路接收的事务请求的fifo缓冲器,并且基于由根节点404所接收的npi协议事务响应的次序来针对那些事务请求将对应事务响应传输到主电路。例如,在上文所描述的示例中,在根节点404基于所接收的npi协议读取响应来向第二主电路传输事务响应之前,根节点404基于所接收的npi协议写响应来向第一主电路传输事务响应。进一步地,由于事务请求的串行化和可能阻止,根节点404可以在将事务请求传输到树形拓扑之前将响应传输到主电路,如下文所进一步详细描述的。
[0087]
在一些示例中,不会由npi交换机408阻止对公共从机端点电路的串行npi协议事务请求。在这种情况下,npi协议事务请求的数据微片的传播不会在npi交换机处产生分支情况408。从机端点电路可以对所依次接收的每个npi协议事务请求进行处理并且向其传输事务响应。在一些示例中,到从机端点电路的最后一个npi交换机408可以发起阻止,诸如当从机端点电路不包括用于事务请求的缓冲器时,准许从机端点电路有足够的时间来处理先前事务请求。
[0088]
实现前述示例中所描述的npi的益处包括优化写入和顺序读取请求。假设主电路传输写入请求以将数据写入从机端点电路的给定地址。主电路此后可以诸如在紧接的时钟周期之中传输读取请求以从从机端点电路的给定地址读取数据。例如,在根节点404和主电路接收对写入请求的响应之前,由根节点404对这两个事务的串行化准许通过各种npi交换机408传播后续读取请求。因此,在处理或完成写入请求之前,读取请求可以传播到npi 210中的某个节点或块。
[0089]
图7a和图7b是根据一些示例的根节点404的操作的流程图。图7a是由根节点404处理所接收的事务请求的流程图,并且图7b是根节点404处理所接收的事务响应的流程图。
[0090]
参考图7a,在框702中,根节点404从一个或多个主电路接收一个或多个事务请求。在框704中,根节点404对所接收的事务请求进行优先级排序。例如,按照接收事务请求的次序对顺序接收的事务请求进行排列优先级,同时(例如,在同一时钟周期)接收的事务请求根据由根节点404实现的诸如循环仲裁方案之类的仲裁方案进行仲裁,以确定同时接收的事务请求的优先级。在框706中,根节点404根据在框704中指派给相应事务请求的优先级将所接收的事务请求串行化。在框708中,根节点404将接收的事务请求变换为npi所实现的格式,诸如图6的npi协议写入请求格式602和npi协议读取请求格式606。
[0091]
在框710中,可选地,根节点404例如在fifo缓冲器中缓存经变换的事务请求。如后续所描述的,当树形拓扑的后续npi交换机408已取消断言准备接收信号时,可以在框710中缓存经变换的事务请求。在框712中,根节点404将经变换的事务请求串行发送到树形拓扑的后续npi交换机408。根节点404传输经变换的事务请求,例如,首先按照存储经变换的事务请求的次序(例如,fifo)存储在缓冲器中,然后传输后续经变换的事务请求。因此,根节
点404按在框706中使所接收的事务请求串行化的次序来串行传输经变换的事务请求。在一些示例中,除了按串行化次序传输经变换的事务请求之外,根节点每时钟周期传送一个数据微片。单个数据微片可以构成经变换的事务请求,和/或多个连续传输的数据微片可以构成经变换的事务请求。
[0092]
在框714中,根节点404按向树状拓扑的后续npi交换机408传输相应的对应经变换的事务请求的次序对所接收的事务请求进行排队。例如,队列可以通过推送到fifo缓冲器来实现。队列维护已经由根节点404处理和传输的所接收的事务请求,因此当根节点404接收到对应事务响应时,根节点404可以将事务响应发送回到对应主电路。如上文所描述的,通过树形拓扑对事务请求进行串行化和阻止可以使得所接收的响应按传输事务请求的次序,并且因此,所接收的事务响应可以对应于fifo缓冲器中的头条目。
[0093]
图7a所图示的根节点404的操作假设树形拓扑的后续npi交换机408已经断言准备接收信号。在一些示例中,树形拓扑的npi交换机408断言在默认状态下准备接收信号,并且能够在某些条件下取消断言准备接收信号,诸如当后续npi交换机408没有足够的存储空间时。如上文所描述的,如果树形拓扑的后续npi交换机408取消断言准备接收信号,则根节点404可以如框710所示缓冲经变换的事务请求,从而在框702至708中继续接收和处理事务请求。
[0094]
参考图7b,在框752中,根节点404从树形拓扑中的后续npi交换机408接收以由npi实现的格式的事务响应。在框754中,根节点404基于在图7a的框714中所接收的经排队事务请求的次序来确定哪个主电路对应于所接收的事务响应。例如,由于事务请求和事务响应的排序可以通过如上文所描述的串行化和阻止来维护,所以根节点404可以从fifo缓冲器弹出条目并且确定哪个主电路将事务请求传输到根节点404。在框756中,根节点404基于所接收的事务响应来向所确定的主电路传输事务响应。根节点404可以创建要采用由所确定的主电路实现的格式的事务响应。
[0095]
在其他示例中,根节点404可以在从主电路接收的事务请求在图7a的框706中进行串行化时向主电路发送响应。通过串行化合并事务请求,可以维护事务请求的排序。因此,根节点404甚至可以在将事务请求传输到树形拓扑之前响应主电路。这可以避免由于主电路在传输另一事务请求之前等待对事务请求的响应而可以发生的延迟。例如,主机可以向位置发送写入请求,根节点404可以接收写入请求并且使之串行化,根节点404可以在根节点404向树形拓扑传输写入请求之前向主电路发送响应。进一步地,由于串行化和阻止可以确保在后续读取该位置之前适当写入该位置,所以即使在根节点404向该位置传输写入请求之前从主电路传输该读取请求,主电路也在接收到来自根节点404的响应后,可以传输相同位置的读取请求。
[0096]
这些流程图中的操作次序仅为示例,并且各种操作可以按不同的逻辑次序来实现。本领域普通技术人员应当容易理解可以在其他示例中实现的不同操作次序以及实现那些不同的次序的对图7a和7b的流程图的任何修改。例如,框708的变换可以在框712的经变换的事务请求的传输之前的任何点实现,并且例如,可以对所接收的事务请求或经变换的事务请求执行框704的优先排序、框706的串行化、框710的缓存和框714的排队。进一步地,本领域普通技术人员应当理解图7a和图7b的操作可以针对不同的事务请求和事务响应并行执行,诸如在流水线处理中。例如,可以实现各种缓冲器以适应流水线处理或其他处理。
[0097]
图8a和图8b是根据一些示例的npi交换机408的操作的流程图。图8a是用于通过npi交换机408处理所接收的事务请求的流程图。图8b是用于通过npi交换机408处理所接收的事务响应的流程图。
[0098]
如下文所进一步描述的,每个npi交换机408包括1对n缓冲器,该1对n缓冲器可以被实现为接收并传输事务请求。通常,可以实现一个或多个缓冲器,例如,fifo缓冲器,以存储所接收的正在等待处理和传输的事务请求。进一步地,可以实现一个或多个其他缓冲器,例如,fifo缓冲器,以存储所传输的待处理并等待事务响应的事务请求。可以实现(一个或多个)缓冲器以维护事务请求的串行化。
[0099]
参考图8a,在框802中,npi交换机408确定空间是否可用于接收事务请求。可用于接收事务请求的空间可以位于缓冲器中,如上文所陈述的,以在等待处理和传输时存储所接收的事务请求。如果空间可用,则断言准备接收信号,其可以是默认状态,如上文关于图7a所描述的。如果空间不可用,则npi交换机408取消断言准备接收信号,从而防止紧接先前的节点(例如,npi交换机408或根节点404)传输事务请求。框802和804可以循环,直至空间变得可用于接收事务请求,此时,如果信号被取消断言,则可以断言准备接收信号。
[0100]
在框806中,npi交换机408从npi交换机408的输入端口上的树形拓扑中的紧接先前前的节点(例如,npi交换机408或根节点404)接收事务请求。在接收时,npi交换机408可以将所接收的事务请求存储在fifo缓冲器中,以便处理和后续传输。在框808中,npi交换机408确定要通过npi交换机408的哪个输出端口传输事务请求。npi交换机408可以通过基于事务请求中的从机端点电路的目的地id标识输出端口来确定输出端口,如先前所描述的。在框810中,npi交换机408确定未决事务请求是否先前在除所确定的输出端口之外的输出端口上被传输。
[0101]
如果先前没有在除所确定的输出端口之外的输出端口上传输未决事务请求,则在框812中,npi交换机408通过所确定的输出端口将事务请求传输到紧随其后的节点(例如,npi交换机408或协议块410),这可以包括在相应时钟周期传输事务请求的多个数据微片,直至已经传输了包含最后一个信号指示的数据微片。在传输时,npi交换机408可以从存储事务请求的fifo缓冲器弹出所接收的事务请求,并且将所传输的事务请求存储(或推送)到另一fifo缓冲器中。通过从存储事务请求的fifo缓冲器弹出所接收的事务请求,fifo缓冲器中的空间可用于后续接收另一事务请求。
[0102]
所存储的传输的事务请求可以指示先前传输的未决事务请求以用于框810中的确定。回到框810,该确定可以是指存储的任何先前传输的事务请求的目的地id。如果没有存储所传输的事务请求,则框810的确定为否定的,并且在框812中传输事务请求。如果存储了所传输的事务请求并且存储了所传输的事务请求中的任一事务请求的目的地(例如,第一未决请求或最后一个未决请求)指示那些请求在与在框806中确定的所确定的输出端口相同的npi交换机408的输出端口上传输,则框810的确定为否定的,并且事务请求在框812中传输。如果存储了所传输的事务请求并且存储了所传输的事务请求中的任一事务请求的目的地(例如,第一未决请求或最后一个未决请求)指示那些请求在与在框806中确定的所确定的输出端口不同的npi交换机408的输出端口上传输,则框810的确定为肯定的,并且不传输事务请求。在这种场景中,框810的确定可以继续循环,直至确定是否定的。关于图8b对清除可以使得确定变为否定的未决事务请求进行更详细地描述。
[0103]
框810处的肯定确定指示分支条件。通过当通过框810的确定和后续循环的操作发生分支条件时阻止事务请求的传输,可以维持事务请求的串行化,这又可以维持事务响应的适当串行化。
[0104]
参考图8b,在框852中,npi交换机408在输出端口上接收事务响应。在框854中,npi交换机408清除最早的未决事务请求。例如,npi交换机408可以弹出fifo缓冲器中存储的作为最早未决传输事务请求的传输事务请求。通过清除未决传输的事务请求,可以移除npi交换机408处的分支条件(例如,通过清除导致框810中的肯定确定的条件)。在框856中,npi交换机408在npi交换机408的输入端口上向紧接在前的节点(例如,npi交换机408或根节点404)传输事务响应。
[0105]
在所描述的图8a和图8b的示例中,当分支条件发生时,npi交换机408可以继续接收事务请求,如框810中所确定的。所接收的事务请求可以存储在适当fifo缓冲器中,直至没有空间可用于在该fifo缓冲器中存储所接收的事务请求。在分支条件期间,不传输事务请求,因此,没有从存储所接收的事务请求的fifo缓冲器弹出所接收的事务请求。这会导致fifo缓冲器变满,并且没有空间可用于存储所接收的事务请求。一旦没有空间可用于存储所接收的事务请求,准备接收信号在框804中被取消断言,并且npi交换机408不会接收来自前一节点的其他事务请求。因此,在该示例中,事务请求可以通过树形拓扑传播,直至达到树形拓扑中的分支条件并且直至用于存储所接收的事务请求的可用空间变满为止。这可以通过在维护串行化可以准许的范围内继续传播事务请求来减少延迟。
[0106]
在其他示例中,一旦在树形拓扑中出现分支条件,就可以断言或取消断言向树形拓扑中的前一节点和向根节点404指示分支条件已经发生并且阻止树形拓扑中的事务请求的任何传输的信号。
[0107]
这些流程图中的操作次序仅为示例,各种操作可以按不同的逻辑次序来实现。本领域普通技术人员应当容易地理解可以在其他示例中实现的不同操作次序以及实现那些不同的次序的对图8a和图8b的流程图的任何修改。进一步地,本领域普通技术人员应当理解针对不同的事务请求和事务响应,可以并行执行图8a和图8b的操作,诸如在流水线处理中。例如,可以实现各种缓冲器以适应流水线处理或其他处理。例如,npi交换机408可以实现缓冲器以在框806中接收事务请求并且在相同时钟周期中在框812中传输另一事务请求。
[0108]
图9是根据一些示例的协议块410的操作的流程图。在框902中,协议块410从树形拓扑中的先前npi交换机408接收以由npi实现的格式(例如,图6的npi协议写入请求格式602和npi协议读取请求格式606)的事务请求拓扑。在框904中,协议块410将所接收的事务请求变换为由从机端点电路实现的格式(例如,根据apb3协议)。在框906中,协议块410将经变换的事务请求传输到从机端点电路。框904和906的变换和传输分别可以在每个数据微片的基础上和/或每个事务请求的基础上执行。例如,如果事务请求是三个数据微片,则协议块410可以实现用于存储所接收的数据微片的缓冲器,直至接收到整个事务请求,然后协议块410可以变换整个事务请求。
[0109]
在框908中,协议块410从从机端点电路接收采用由从机端点电路实现的格式的事务响应。在框910中,协议块410将所接收的事务响应变换为由npi实现的格式(例如,图6的npi协议写响应格式604和npi协议读取响应格式608)。在框912中,协议块410将经变换的事务响应传输到树形拓扑中的先前npi交换机408。例如,协议块410可以在每个时钟周期的数
据微片的基础上将经变换的事务响应传输到先前npi交换机408。
[0110]
本流程图中的操作顺序仅为示例,各种操作可以按不同的逻辑次序来实现。本领域普通技术人员应当容易理解可以在其他示例中实现的不同操作次序和实现那些不同的次序的对图9的流程图的任何修改。进一步地,本领域普通技术人员应当理解对于不同的事务请求和事务响应,可以并行执行图9的操作,诸如在流水线处理中。例如,可以实现各种缓冲器以适应流水线处理或其他处理。
[0111]
图10是根据一些示例的soc 102的至少一部分的简化示意图。例如,所图示的soc 102包括在处理系统104、可编程逻辑区域110和其他ip 1002(诸如存储器控制器1004)之间互连的noc 106。noc 106包括通过互连的noc分组交换机206和路由208连接到nsu 204的nmu 202,例如,互连的noc分组交换机206和路由208形成具有物理信道306和虚拟信道308的网络214。noc 106还包括npi 210,该npi 210包括根节点404(其驻留在处理系统104中的pmc 402上)、树形拓扑中的npi交换机408、以及连接到从机端点电路的协议块410。为简单起见,未具体说明协议块410,但协议块410可以处于设置在相应从机端点电路之前的树形拓扑中。例如,从机端点电路包括noc分组交换机206、nmu 202、nsu 204、存储器控制器1004等。
[0112]
图11是根据示例的提供用于功能块的本地控制的集成电路的框图。除了plr 110之外,图11的电路1100还包括若干个其他功能块(如下文所更详细描述的)以及使得能够配置和操作功能块的其他块。例如,电路1100可以包括具有功能块的数据接口子系统1102,诸如收发器(tx/rx)块1104和路由块1106。对于数据接口子系统包括pcie子系统的特定实现方式,数据接口子系统还可以包括ccix pcie模块(cpm)1108。参考图13对诸如外围组件互连高速(pcie)子系统之类的数据接口子系统的操作示例进行更详细的描述。图11的电路1100还包括存储器接口子系统1110,该存储器接口子系统1110可以包括功能块,诸如例如,物理接口块(phy)块1112和输入/输出(io)块1114。参考图12对存储器接口子系统的操作的示例进行更详细的描述。可以被认为是soc的子系统的处理器系统(ps)1116可以被实现为实现集成电路设备中的元件的操作。例如,ps 1116可以包括例如应用处理器(apu)核、实时处理器(rpu)核、以及处理器子系统管理器(psm)。
[0113]
除了noc 1118和npi 1120(例如,其通常可以实现为如上所述的noc 106和npi 210)之外,还提供电路1100的其他元件以实现电路的实现方式。例如,时钟路由元件(rclk)1122实现时钟信号的路由,以便可以传输数据(诸如与数据接口子系统1102或存储器接口子系统1110相关联)。提供配置帧电路(cframe)1124以启用读取和写入cfi数据帧。高密度io(hdio)1126、多速率媒体访问控制(mrmac)1129、pcie

b块1130和其他功能块可以嵌入在plr之间。
[0114]
根据一些实现方式,每个子系统可以包括功能块的集合。虽然电路1100的一些元件(诸如plr 110)可以通过cfi总线配置并且使用例如全局信号接收配置控制,但其他元件可以通过npi总线配置,并且使用嵌入在通过npi总线配置的可编程元中的pcsr进行控制。通过npi总线配置的每个定义的子系统都可以在不了解集成电路设备其余部分的状态的情况下重新配置。例如,包括pcie子系统的数据接口系统可以包括千兆字节收发器(gt)四边形(即,每个四边形4个信道)、可以具有流水线寄存器的专用路由块、cpm、以及noc元件。根据一些实现方式,例如,cpm可以包括pcie逻辑和直接存储器存取(dma)电路。如下文参考图
13所更详细地描述的,pcsr可以用于提供子系统的元件的单独配置控制。根据其他实现方式,存储器子系统1110可以是例如双倍数据速率(ddr)接口,并且包括各种io块、物理接口、pll、ddr存储器控制器、以及各种noc元件,如下文参考图12所更详细地描述的。虽然在没有设备范围配置信息的情况下,可能难以在常规pld中重新配置这些子系统,但是使用npi总线和pcsr基础设施允许通过仅具有有关与子系统相关联的资源的信息的固件驱动程序重新配置这些子系统。
[0115]
根据一些实现方式,npi总线和配置寄存器可以启用

突发寄存器编程’。这种突发寄存器编程支持使用若干个相关机构的基于寄存器的快速配置,其包括例如:(1)能够将突发一直发送到端点,即使端点接口不具备突发能力(即,事务被切分成单个寄存器访问);(2)对配置特定寄存器进行分组,以使用有序存储器访问(oma)简化对寄存器的写入;以及(3)能够接通/关闭访问未填充寄存器地址的错误报告。错误报告可以会因突发寄存器编程而关闭,而因适当的错误检查而再次接通。
[0116]
根据一些实现方式,设备配置通常可以由以下阶段组成:经由npi总线对noc、gt、存储器控制器等中的寄存器进行编程;通过cfi配置结构块(cle、int、dsp、bram等);以及通过pcsr写入和全局信号断言/取消断言序列的组合控制的启动序列事件(例如,mmcm锁定、dci校准、数据收发器校准、存储器控制器校准、以及架构启动)。固件、npi编程数据和pl帧数据的源可以是通过pmc中的接口引脚连接到设备的闪存设备,该闪存设备例如可以为fpga。例如,其他可能的配置数据源可以包括pcie、dram、jtag、或构造noc端口。
[0117]
图12是根据示例的具有存储器接口子系统1200的电路的一部分的框图。存储器接口子系统1200可以实现为图11的存储器接口子系统1110。可以例如是双数据速率(ddr)存储器接口的存储器接口子系统1200可以包括具有编程控制寄存器1204的存储器控制器1202,诸如pcsr。存储器控制器1202耦合到外围接口总线1205,该外围接口总线1205可以是npi总线并且例如如上所述在npi 210或npi 1120中实现。锁相环(pll)1206是耦合到npi总线的功能块并且包括编程控制寄存器1208,诸如如上所述的pcsr寄存器。存储器接口子系统还包括接口信道,该接口信道包括物理接口(phy)块1210,该phy块1210是具有编程控制寄存器1212(诸如pcsr寄存器)的功能块;以及对应io块1214,该对应io块是具有诸如pcsr寄存器的编程控制寄存器1216的功能块。根据图12的实现方式,针对存储器控制器1202示出了4个phy块和io块对的集合。然而,应当理解,附加或更少的phy块和io块对的集合可以与存储器控制器相关联,并且可以实现多个存储器接口子系统,诸如用于控制在具有与存储器控制器1202相关联的phy块和io块集合的虚线框外示出的phy块和io块的集合。使用npi总线和pcsr基础设施,可以在不知道任何其他设备元件的状态的情况下重新配置存储器接口子系统,其中子系统的每个元件都可以单独控制和编程。
[0118]
图13是根据示例的具有数据收发器接口1300的电路的一部分的框图。图13的数据收发器接口1300包括数据收发器控制器1302,该数据收发器控制器1302具有编程控制寄存器1304,诸如如上文所描述的pcsr寄存器。用于nmu的noc 1306(具有诸如pcrs寄存器之类的编程控制寄存器1308)和用于nsu的noc 1310(具有诸如pcrs寄存器之类的编程控制寄存器1312)中的每个noc耦合到外围接口总线1313,诸如如上文所描述的npi总线。数据收发器接口1300还包括路由块1314,该路由块1314是具有诸如pcsr寄存器之类的编程控制寄存器1316的功能块和作为具有1320的功能块的对应数据收发器(tx/rx)1318。路由块可以包括
与如所示出的数据收发器相关联的专用路由块。也就是说,路由块可以与集成电路设备中的通用互连路由分开并且可以专用于路由数据收发器子系统中的信号。虽然示出了4个路由块1314和对应数据收发器1318的集合,但是应当理解,附加或更少的路由块和数据收发器集合可以与数据收发器控制器相关联,并且可以实现多个数据收发器子系统,诸如用于控制具有与数据收发器控制器1302相关联的路由块和数据收发器的集合的在虚线框外示出的路由块和数据收发器的集合。使用npi和pcsr基础设施,可以配置或重新配置数据收发器子系统,无需了解任何其他设备元件的状态,其中子系统的每个元件都可以单独控制和编程。
[0119]
图14是根据示例的具有诸如图12和图13的功能块之类的功能块的电路的一部分的框图。更具体地,如针对如上文所描述的协议块410所描述的,可以实现的端点协议块1402耦合以向功能块1401提供信号。功能块1401包括编程寄存器块1404,该编程寄存器块1404具有编程寄存器1405和编程控制寄存器1406,诸如pcsr。来自编程寄存器块1404的数据和来自pcsr的控制信号借助于外围接口总线1403提供给功能块核1408以启动功能块的操作。依据功能块的操作和功能,功能块借助于接口1409与集成电路设备的其他元件通信。尽管编程控制寄存器1406被示为编程寄存器块1404的一部分,但是应当理解,它们可以是单独寄存器块的一部分。
[0120]
根据一个实现方式,功能块从npi端点协议块1402接收编程数据(也称为配置数据),其中编程数据可以存储在编程寄存器块1404的编程寄存器中。编程数据(即,q(图14的n

1:0)提供给与门1410的第一输入,该与门1410可以被配置为接收门控信号(gateprog),该门控信号能够对功能块核1408的编程数据进行门控。功能块核1408包括适于接收控制信号并执行与功能块核相关联的控制功能的若干个控制块。例如,状态块1412可以被配置为接收状态(status)信号。也就是说,pcsr可以包括某些状态位,这些状态位可以由pmc轮询,例如,以确定功能块的状态。状态位可以提供可以用于功能块的启动排序或用于调试目的的信息。输出逻辑块1414被配置为接收禁用(odisable)信号,该禁用信号可以用于禁用功能块核。例如,当正在更新功能块的编程或正在执行扫描时,输出块应当将恒定中性值驱动到其(一个或多个)输出接口上。依据功率排序或其他考虑因素,具有多个接口的一些模块可以需要单独控制。例如,noc nps块可以具有4个独立接口。复位逻辑块1416被配置为接收初始状态(initstate)信号。初始状态信号初始化块状态,其中块状态可以是可编程的。保持状态(holdstate)可以提供给时钟使能逻辑1418并且包括用于用户可见状态的时钟使能。校准触发(startcal)信号可以提供给校准逻辑1420以启用校准功能。诸如测试功能之类的其他功能可以由pcsr控件控制,如表1中所陈述的,可以基于未提供给块1412至1420中一个块的其他控制信号而植入其他控制块1422中。表1的控件数据是标准控件组,其允许在配置或部分重新配置期间定义并使用标准固件功能。
[0121]
表1
[0122]
[0123][0124]
编程寄存器定义诸如例如路由块、数据收发器、物理接口块和io块之类的可编程块的操作,并且当功能块的上电复位(por)信号被断言时,可以复位。
[0125]
使用全局信号(与cfi配置相关联)与pcsr(与npi配置相关联)之间的一个主要区别在于对于全局信号,pr工具必须标识所有“静态”块(例如,并非pr目标)和作为可重新配
置模块(rm)的一部分的所有块,并且相应地设置所有gsc位。通过pcsr结构,pr工具只需要知道位于rm中的块。可以忽略静态块,从而允许图11至图14的部分重新配置的“驱动程序”模型是有益的。
[0126]
np/编程控制状态寄存器(pcsr)结构是包含控制位(pcr)和状态位(psr)的寄存器组,这些控制位和状态位可以主要在功能块的启动或关闭排序期间使用。应当指出,控制和状态寄存器包括在功能块中,这些功能块可以从npi总线接收其编程位或信号,并且使用cfi编程执行与在集成电路设备的构造和可编程逻辑(pl)部分中使用的全局信号相似的功能。在最简单的情况下,块可以只需要这些控制信号中的一些控制信号。其他块可以需要许多控制信号。还可以存在屏蔽寄存器来允许单独控制位写入。控制位与全局信号相似,并且用于确保块在正在被编程的同时正确运转,并且可以以无缝方式进入或退出用户操作。
[0127]
pcsr可以定义部分重新配置的粒度。也就是说,pcsr可以与全局信号控制(gsc)相似,但对于npi编程块,其中由pcsr控制的结构可独立重新配置。根据一些实现方式,块在转变为用户操作之前可以不干扰它所附接到的任何接口。块可以避免内部争用、振荡,或在编程过程期间进入高电流状态。块的输入可以在编程期间随机切换,并且可以使用适当门控,以便避免可以导致的负面块行为。在编程源的控制下,块可以允许初始化为硬连线复位状态或编程相关状态。初始化后,块状态可以不受编程控制输入以外的输入行为的影响。以片外方式驱动信号的块可以使所有输出驱动器处于三态,或在数据收发器的情况下,可以驱动中性信号。
[0128]
图15是根据示例的用于使用全局控制信号(诸如通过使用如上文所描述的cfi总线)配置集成电路的电路的一部分的框图。图15的clb包括cle 1502、配置存储器(cram)1504和门控逻辑1506。该电路可以包括门控逻辑1506,其中诸如mc_gsc之类的本地使能信号可以控制门控逻辑电路1506的操作。同样,与可编程资源1522相关联的配置存储器元件包括配置存储器1504。因而,图15的电路向cle提供门控本地信号以控制cle的操作以及使得能够写入诸如lut存储器之类的cle的配置存储器的门控配置写入使能信号。配置存储器响应于门控配置写入使能信号接收要写入配置存储器的配置(cfg)写入数据。存储在配置存储器1504中的配置数据启用cle的操作,如下文参考图16所更详细地描述的。
[0129]
门控逻辑1506被耦合为在输入1512处接收全局信号、在输入1514处接收配置写入使能信号、以及在输入1516处接收局部使能信号mc_gsc。应当指出,局部使能信号mc_gsc可以是存储位存储在配置存储器中的存储器,如上文所陈述的。门控逻辑1506还在输入1518处接收全局使能(en_glob)信号。在输出1522处生成的门控局部信号耦合到输入1524。因此,全局使能信号允许忽略局部使能(mc_gsc)并且在完全重新配置期间重新配置所有可编程资源。局部使能信号允许基于在部分重新配置期间提供的配置写入数据来重新配置一些配置存储器元件,其中与诸如例如与clb相关联的配置存储器单元之类的某些配置存储器单元相关联的门控重新配置写入使能信号响应于提供给该clb的本地使能信号而生成。
[0130]
gsc位和逻辑具有选择性地“屏蔽”这些全局信号对功能块的影响的功能,这些功能块旨在在部分重新配置(pr)事件期间持续运转。附加全局使能信号(en_glob)允许覆盖gsc位的状态。该信号在初始配置期间被断言,以便允许全局信号在整个设备中有效。全局使能信号和局部使能信号确定可配置块是否将响应关闭序列,该关闭序列是全局信号的逻辑状态的改变序列。虽然描述了特定全局信号,但是应当理解,可以实现不同全局信号或附
加全局信号,其中特定全局信号可以专用于特定类型的电路块。虽然不同全局信号或附加全局信号路由到特定类型的电路块的每个电路块,但是与不同全局信号或附加全局信号相关联的局部重新配置信号基于局部使能信号。
[0131]
图16是根据示例的可以在诸如图15的cle 1502之类的集成电路设备中实现的可配置逻辑元件的框图。具体地,图16以简化形式图示了图15的配置逻辑块1502的作为可编程逻辑的示例的可配置逻辑元件。在图16的实现方式中,切片m 1601包括四个查找表(lutm)1601a至1601d,每个查找表由六个lut数据输入端子a1至a6、b1至b6、c1至c6和d1至d6驱动并且每个查找表提供两个lut输出信号o5和o6。lut 1601a至1601d的o6输出端子分别驱动切片输出端子a至d。lut数据输入信号经由输入多路复用器由fpga互连结构供应,该输入多路复用器可以由可编程互连元件1611实现,并且lut输出信号也供应给互连结构。切片m还包括输出选择多路复用器1611a至1611d,该输出选择多路复用器1611a至1611d驱动输出端子amux至dmux;多路复用器1612a至1612d,该多路复用器1612a至1612d驱动存储器元件1602a至1602d的数据输入端子;组合多路复用器1616、1618和1619;弹回多路复用器电路1622至1623;电路,该电路由反相器1605和多路复用器1606(它们一起在输入时钟路径上提供可选反相)表示;以及进位逻辑,该进位逻辑具有多路复用器1614a至1614d、1615a至1615d、1620至1621、以及异或门1613a至1613d。所有这些元件如图16所示耦合在一起。在对于图16所示的多路复用器未示出选择输入的情况下,选择输入由配置存储器单元控制。也就是说,存储在配置存储器单元中的配置位流的配置位耦合到多路复用器的选择输入以选择多路复用器的正确输入。这些众所周知的配置存储器单元为了清楚起见从图15中以及从本文中的其他选定图中省略。
[0132]
在所描画的实现方式中,每个存储器元件1602a至1602d可以被编程为用作同步或异步触发器或锁存器。通过对同步/异步选择电路1603进行编程,为切片中的所有四个存储器元件在同步功能与异步功能之间进行选择。当存储器元件被编程为使得s/r(设置/复位)输入信号提供设置功能时,rev输入端子提供复位功能。当存储器元件被编程为使得s/r输入信号提供复位功能时,rev输入端子提供设置功能。存储器元件1602a至1602d由时钟信号ck计时,该时钟信号ck例如可以由全局时钟网络或互连结构提供。这种可编程存储器元件在fpga设计领域中是众所周知的。每个存储器元件1602a至1602d向互连结构提供所寄存的输出信号aq

dq。由于每个lut 1601a至1601d提供两个输出信号o5和o6,所以lut可以被配置为用作具有五个共享输入信号(in1至in5)的两个5

输入lut或具有输入信号lut至in6的一个6

输入。
[0133]
在图16的实现方式中,每个lutm 1601a至1601d可以在几种模式中的任一模式下中起作用。当处于查找表模式下时,每个lut都有六个数据输入信号in1至in6,这些数据输入信号经由输入多路复用器由fpga互连结构供应。基于信号in1至in6的值,从配置存储器单元中可编程地选择64个数据值中的一个数据值。当处于ram模式下时,每个lut用作单个64位ram或具有共享寻址的两个32位ram。ram写入数据经由输入端子di1(经由用于lut 1601a至1601c的多路复用器1617a至1617c)供应给64位ram,或经由输入端子di1和di2供应两个32位ram。lut ram中的ram写入操作由来自多路复用器1506的时钟信号ck和来自多路复用器1507的写入使能信号wen控制,该ram写入操作可以选择性地传递时钟使能信号ce或写入使能信号we。在移位寄存器模式下,每个lut用作两个16位移位寄存器,或其中两个16
位移位寄存器串联耦合以创建单个32位移位寄存器。移入信号经由输入端子di1和di2中的一个或两个输入端子提供。16位移出信号和32位移出信号可以通过lut输出端子提供,32位移出信号还可以更直接地经由lut输出端子mc31提供。lut 1601a的32位移出信号mc31还可以经由输出选择多路复用器1611d和cle输出端子dmux提供给用于移位寄存器链接的通用互连结构。因而,上文所陈述的电路和方法可以在诸如图15的设备或任何其他合适设备之类的设备中实现。
[0134]
图17是示出了根据示例的配置集成电路设备的功能块的方法的流程图。诸如如上文所描述的npi总线之类的外围接口总线在框1702处耦合到处理系统。诸如图11至图14中所描述的功能块之类的功能块在框1702处耦合到外围接口。在框1706的功能块中提供编程寄存器和编程控制寄存器,诸如如图14所描述的编程寄存器和控制寄存器。编程数据存储在编程寄存器中,其中编程数据在框1708处确定功能块的功能块核的功能。控制数据存储在功能块的编程控制寄存器中,其中控制数据使得能够在框1710处通过编程数据配置功能块核。
[0135]
该方法还可以包括:在外围接口总线与功能块之间耦合端点协议块,其中端点协议块将功能块的事务请求变换为由功能块实现的格式。该方法还可以包括:通过处理系统启用功能块的部分重新配置,其中包括在功能块存储的启动或关闭序列期间使用的控制和状态位的信号可以存储在编程控制寄存器中。
[0136]
该方法可以在存储器控制器中找到特定应用,其中功能块包括具有第一编程寄存器集合的存储器控制器。物理接口块可以耦合到外围接口总线,其中物理接口块包括第二编程寄存器集合。输入/输出块可以耦合到外围接口总线,其中输入/输出块包括第三编程寄存器集合。该方法还可以在数据接口控制器中找到特定应用,其中功能块可以包括具有第一编程寄存器集合的数据接口控制器。路由块可以耦合到外围接口总线,其中路由块包括第二编程寄存器集合。tx/rx块还可以耦合到外围接口总线,其中tx/rx块包括第三编程寄存器集合。
[0137]
虽然前述针对具体示例,但是在没有背离其基本范围的情况下,可以设计其他和进一步的示例,并且其范围由所附权利要求书确定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献