首页> 中国专利> 将时钟结构用于组织成多个时钟区域的FPGA的方法和装置

将时钟结构用于组织成多个时钟区域的FPGA的方法和装置

摘要

本申请涉及将时钟结构用于组织成多个时钟区域的FPGA的方法和装置。FPGA包含一个可配置半导体,该可配置半导体组织成多个时钟区域,其时钟结构用于实现用户定义的逻辑功能。该时钟结构提供一组区域时钟信号,该时钟信号由高质量时钟源产生,用于驱动时钟区域中的逻辑块。另外,一组相邻时钟信号或区域间时钟信号由相邻时钟源产生,用于对两个相邻区域的逻辑块进行时钟驱动。此外,时钟结构提供次级时钟信号,该次级时钟信号由区域时钟信号产生且具有低时钟信号质量,用于以时间敏感度较低的逻辑操作对逻辑块进行时钟驱动。

著录项

说明书

技术领域

本申请的示例性实施例涉及计算机硬件和软件中用于逻辑操作的可编程半导体器件领域。更具体地,本发明的示例性实施例涉及基于时钟区域的现场可编程门列阵(Field-Programmable Gate Array,FPGA)或可编程逻辑器件(Programmable LogicDevice,PLD)的时钟分配。

背景技术

随着数字通信、人工智能(Artificial Intelligence,AI)、物联网(Internet ofThings,IoT)和/或机器人控制的日益普及,对具有处理能力的更快、灵活和高效硬件和/或半导体的需求不断增加。要满足这种需求,一般来说,高速、灵活的半导体芯片更合乎需求。满足这种需求的一种传统方法是使用专用定制集成电路和/或特殊应用集成电路(Application-Specific Integrated Circuit,ASIC)。特殊应用集成电路方法的一个缺点在于缺乏灵活性,同时消耗大量资源。

另一种日益流行的方法是使用诸如PLD或FPGA之类的可编程半导体器件(Programmable Semiconductor Device,PSD)。可编程半导体器件的一个特点是:允许终端用户在可编程半导体器件制造完成后,对一个或多个期望功能进行编程和/或重新编程,以适合用户的应用。

然而,传统FPGA或PLD的缺点是,很难在FPGA或PLD的不同区域分布具有不同时钟速度的时钟。

发明内容

本申请的实施例公开了一个或更多个可配置半导体器件(ConfigurableSemiconductor Device,CSD),例如FPGA,其被划分为或配置为四个逻辑象限作为执行用户定义的逻辑功能的时钟区域。在一个示例中,第一象限包括第一串行/解串器(Serializer/Deserializer,SerDes)区域和用于处理数据的bank0区域。SerDes区域包括促进数据通信的逻辑块。bank0区域包括逻辑块和输入/输出(Input/Output,I/O)组(bank),用于提供用户定义的逻辑操作。第二象限包括第二SerDes区域和bank5区域。第三象限包括bank3区域和bank4区域。第四象限包括bank1区域和bank2区域。一方面,时钟结构(clock fabric)可以向CSD内的各个区域提供一组可编程或可选择的时钟信号,该时钟信号具有不同的时钟速度。

一方面,FPGA包括可配置逻辑块,该逻辑块被组织在多个时钟区域中,利用用于实现用户定义的逻辑功能的时钟结构。时钟结构提供一组用于对时钟区域中的逻辑块进行时钟驱动(clock)的区域时钟信号(Regional Clock Signal,RCS),该时钟信号由时钟源产生,具有第一时钟信号质量(Clock Signal Quality,CSQ)。另外,一组相邻时钟信号(Neighboring Clock Signal,NCS)或区域间(inter-regional)时钟信号由相邻时钟源产生,用于对两个相邻时钟区域中的逻辑块进行时钟驱动。该时钟结构还能在具有第二CSQ的RCS的基础上选择性地产生一组次级时钟信号(Secondary Clock signal,SCS),该次级时钟信号用于以时间敏感度较低的逻辑操作来对逻辑块进行时钟驱动。

通过以下详细描述、附图和权利要求,本发明示例性实施例的其他特征和优点将显而易见。

附图说明

通过以下详细描述和本发明的各种实施例附图,将更充分理解本发明的示例性实施例,然而,这些附图不应被用来将本发明限定到具体的实施例,而仅用于解释和理解。

图1A-1B是根据本发明的一个实施例示出的PSD框图,该PSD能通过可配置时钟分配器(Configurable Clock Distributor,CCD)提供用户定义的逻辑操作;

图2是根据本发明的一个实施例示出的布线逻辑或布线结构框图,该布线逻辑或布线结构包含可编程互连阵列,能对CCD分配的时钟信号进行布线;

图3是根据本发明的一个实施例示出的PSD框图,该PSD被组织或划分为包含多个时钟区域的四个象限;

图4是根据本发明的一个实施例示出的CCD框图,该CCD被配置为对跨PSD(或FPGA)的各种时钟区域进行时钟驱动;

图5A是根据本发明的一个实施例示出的带有锁相环(Phase Locked Loop,PLL)和IO块的时钟区域示意图,以实现CCD的操作;

图5B是根据本发明的一个实施例示出的将时钟信号分配到多个时钟区域以实现CCD的操作的示意图;

图5C是根据本发明的一个实施例示出的时钟分配的示意图,该时钟分配用于提供一组信号作为能驱动整个芯片或PSD的全局时钟;

图6A是根据本发明的一个实施例示出的CCD的一部分的示意图,该CCD被配置为产生区域时钟、区域间时钟和次级时钟,以实现CCD的操作;

图6B是根据本发明的一个实施例示出的次级全局时钟(secondary globalclock)的示意图,该次级全局时钟用于分配一组能驱动PSD的至少一部分的次级全局时钟信号;

图6C是根据本发明的一个实施例示出的CCD操作的示意图,该CCD操作提供主全局时钟(primary global clock)和次级全局时钟,以驱动PSD或FPGA;

图7是根据本发明的一个实施例示出的系统或计算机的示意图,该系统或计算机使用利用CCD的PSD,以增强PSD的可编程性;

图8是根据本发明的一个实施例示出的PSD(例如FPGA、PLD等)的各种应用的框图,该PSD能使用CCD实现用户定义的逻辑功能;

图9是根据本发明的一个实施例示出的将PSD按逻辑分离或划分为多个象限以创建时钟区域的过程的流程图;以及

图10是根据本发明的一个实施例示出的CCD产生时钟信号以驱动PSD的过程的流程图。

具体实施方式

本发明的实施例公开了提供PSD或可编程集成电路(Programmable IntegratedCircuit,PIC)的方法和/或装置,该PSD或PIC被配置为为各个时钟区域提供额外的灵活性。

以下详细描述的目的是提供对本发明的一个或多个实施例的理解。本领域的普通技术人员会意识到,以下详细描述仅是说明性的,并不意在以任何方式加以限制。受益于本公开和/或描述的技术人员很容易联想到其它实施例。

为清楚起见,本文所述实施方式的常规功能并没有全部展示和描述。当然,可以理解,在任何这种实际实施方式的开发过程中,为了实现开发者的特定目标,例如遵守应用相关和商业相关的限制,可能会做出许多特定于实施方式的决定,而且这些特定目标会因不同的实施方式和不同的开发者而有所不同。此外,可以理解,这些开发工作虽然可能复杂耗时,但对于那些受益于本文公开实施例的本领域普通技术人员而言,这些开发工作只是一项常规的工程工作。

附图中所示的本发明的各种实施例并非按比例绘制。相反,为清楚起见,可以扩大或缩小各种特征的尺寸。此外,为清楚起见,一些图样可能会被简化。因此,附图中可能没有描绘出给定装置(如设备)或方法的所有组件。在整个附图和下面的详细描述中将使用相同的参考标记指代相同或类似的部件。

根据本发明的实施例,此处描述的组件、过程步骤和/或数据结构可以使用各种类型的操作系统、计算平台、计算机程序和/或通用机器实现。此外,本领域的普通技术人员会认识到,在不偏离本文所公开的发明概念的范围和精神的情况下,也可以使用非通用属性的设备,例如硬件设备、FPGA、特殊应用集成电路(ASIC)等。如果包含一系列过程步骤的方法是由计算机或机器实现的,并且这些过程步骤可以存储为机器可读的一系列指令,则它们可以存储在诸如计算机存储设备等的有形介质上,计算机存储设备例如但不限于:磁性随机存取存储器(Magnetoresistive Random Access Memory,MRAM)、相变存储器或铁电随机存取存储器(Ferroelectric Random Access Memory,FeRAM)、快闪存储器(FlashMemory)、只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、电可擦可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、跳跃驱动器(Jump Drive)、磁性存储介质(例如:磁带、磁盘驱动器等)、光存储介质(例如:只读光盘存储器(CD-ROM)、数字只读光盘存储器(DVD-ROM)、纸卡和纸带等)以及其他已知类型的程序存储器。

术语“系统”或“设备”在此一般用于描述任何数量的组件、元件、子系统、设备、分组开关元件、分组开关、接入开关、路由器、网络、计算机和/或通信设备或机制,或其组成部分的组合。术语“计算机”包括能够执行指令的处理器、存储器和总线,其中计算机是指一台或一个集群的计算机、个人计算机、工作站、主机或其计算机的组合。

本申请的实施例公开了一个或更多个CSD,例如FPGA,其被划分为或组织成四个逻辑象限作为执行用户定义的逻辑功能的时钟区域。在一个示例中,第一象限包括第一串行/解串器(SerDes)区域和用于处理数据的bank0。SerDes包括促进数据通信的逻辑块。bank0包括逻辑块和输入/输出(I/O)组,用于提供用户定义的逻辑操作。第二象限包括第二SerDes区域和bank5区域。第三象限包括bank3区域和bank4区域。第四象限包括bank1区域和bank2区域。一方面,时钟结构可以向CSD内的各个区域提供一组可编程或可选择的时钟信号,该时钟信号具有不同的时钟速度。

一方面,FPGA包括可配置逻辑块,该逻辑块被组织在多个时钟区域中,利用用于实现用户定义的逻辑功能的时钟结构。时钟结构提供一组用于对时钟区域中的逻辑块进行时钟驱动的RCS,该RCS由时钟源产生,具有第一CSQ。另外,一组NCS或区域间时钟信号由相邻时钟源产生,用于对两个相邻时钟区域中的逻辑块进行时钟驱动。该时钟结构还能在具有第二CSQ的RCS的基础上选择性地产生一组SCS,用于以时间敏感度较低的逻辑操作来对逻辑块进行时钟驱动。应当注意,时钟、时钟信号、时钟周期和时钟频率是指相同或类似的时钟信号,可以互换使用。

图1A是根据本发明的一个实施例示出的PSD的框图170,该PSD能通过CCD提供用户定义的逻辑操作。PSD也称为FPGA、PIC和/或一种PLD,包括方便CCD过程的时钟结构120。CCD具有使PSD内不同部分的逻辑块以不同的时钟速度运行的功能,从而提高PSD的整体通用性和效率。应当注意,向/从框图170添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

PSD包括由输入/输出(input/output,IO)块182环绕的可配置逻辑块(LogicBlock,LB)180和可编程互连资源(Programmable Interconnect Resource,PIR)188,该PIR包括在LB 180和IO 182的行和列之间延伸的垂直互连和水平互连。PIR 188还包括互连阵列解码器(Interconnecting Array Decoder,IAD)或可编程互连阵列(ProgrammableInterconnection Array,PIA)。应当注意,术语“PIR”、“IAD”、“PIA”在下文中可互换使用。

在一个示例中,每个LB包括可编程组合电路和可选择输出寄存器,它们被编程为实现至少一些用户逻辑功能。互连资源的可编程互连、连接或通道使用各种开关配置,以在LB 180之间产生用于执行逻辑功能的信号路径。每个IO 182都是可编程的,以选择性地使用PSD的一个IO引脚(未示出)。

在一个实施例中,PIC可以划分为多个可编程分割区域(ProgrammablePartitioned Region,PPR)172,其中每个PPR 172包括一部分LB 180、一些PIR 188以及IO182。将PIC组织成多个PPR 172的优点是优化存储容量、电源和/或网络传输的管理。

比特流是一个二进制序列(或文件),包含PIC、FPGA或PLD的编程信息或数据。比特流的创建是为了反映用户的逻辑功能和某些控制信息。为了使FPGA或PLD正常工作,至少需要对FPGA中的一部分寄存器或触发器进行编程或配置,然后才能工作。应当注意,比特流被用作FPGA的输入配置数据。

使用CCD过程的好处是实现在不同的区域同时运行不同的时钟速度,提高FPGA的整体效率。

图1B是根据本发明的一个实施例示出的PSD的框图,该PSD可使用CCD执行各种用户定义的逻辑操作。为简化上述讨论,术语“PSD”、“PIC”、“FPGA”和“PLD”是指相同或类似的器件,它们可以在下文中互换使用。框图100包括多个PPR 102-108(102、104、106和108),PIA 150和区域IO端口166。PPR 102-108还包括控制单元110、存储器112以及LB 116。应当注意,控制单元110可配置成单个控制单元,同样,存储器112也可配置成单个存储器以存储配置。应当注意,向/从框图100添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

逻辑块116也称为可配置功能单元(Configurable Function Unit,CFU),包括多个逻辑阵列块(Logic Array Block,LAB)118,其也称为可配置逻辑单元(ConfigurableLogic Unit,CLU)。例如,每个LAB 116可以进一步组织成包括一组可编程逻辑元件(Logical Element,LE)、可配置逻辑切片(Configurable Logic Slice,CLS)或宏单元(图1B未示出)以及其他电路。在一个示例中,每个LAB可以包括32-512中的任意个可编程LE。IO引脚(图1B未示出),LAB和LE通过PIA 150和/或其它总线(如总线162或114)连接,以促进PIA 150和PPR 102-108(102、104、106和108)之间的通信。

每个LE包括可编程电路,如乘积项矩阵(product-term matrix)、查找表和/或寄存器等。LE也称为单元、可配置逻辑块(Configurable Logic Block,CLB)、切片、CFU、宏单元等。每个LE可独立配置以执行顺序和/或组合逻辑操作。应当注意,向/从PSD添加或移除一个或更多个块和/或电路,PSD的基本概念也不会改变。

控制单元110也称为配置逻辑,可以是单个控制单元。例如,控制单元110基于存储在存储器112中的配置信息管理和/或配置逻辑阵列块118中的单个逻辑元件。应当注意,一些IO端口或IO引脚是可配置的,其可被配置为输入引脚和/或输出引脚。一些输入/输出引脚被编程为双向输入/输出引脚,而其它输入/输出引脚被编程为单向输入/输出引脚。诸如单元110的控制单元被用于根据系统时钟信号处理和/或管理PSD操作。

逻辑块116包括可由终端用户编程的多个LAB。每个LAB包含多个LE,其中每个LE还包括一个或更多个查找表(Lookup Table,LUT)以及一个或更多个寄存器(或D型触发器或锁存器)。根据应用,LE可被配置为基于由配置软件实现的预定义功能库执行用户特定功能。在某些应用中,PSD还包括用于执行特定功能的一组固定电路。例如,固定电路包括但不限于处理器、数字信号处理(Digital Signal Processing,DSP)单元、无线收发器等。

PIA 150通过各种内部总线(如总线114或总线162)耦接到LB 116。在一些实施例中,总线114或总线162是PIA 150的一部分。每条总线包括用于传输信号的通道或导线。应当注意,术语“通道”、“布线通道(routing channel)”、“导线”、“总线”、“连接”和“互连”均指相同或相似的连接,在本文可互换使用。PIA 150还可用于通过IO引脚和LAB直接或间接地从其它设备接收数据和/或向其它设备传输数据。

存储器112可包括位于PPR上的多个存储单元。或者,存储器112可在PSD中组合成单个存储器单元。在一个实施例中,存储器112是用于配置和用户存储的非易失性存储器(Nonvolatile Memory,NVM)存储单元。NVM存储单元可以是但不限于MRAM、快闪存储器、铁电RAM和/或相变存储器(或硫系化合物RAM)。根据应用,存储器112的一部分可被指定、分配或配置为块随机存取存储器(Block RAM,BRAM),该BRAM用于在PSD中存储大量数据。

PSD包括由PIA 150互连的大量可编程LB 116或可配置LB 116,其中每个可编程LB被进一步划分为多个LAB 118。每个LAB 118还包括大量LUT、多路复用器和/或寄存器。在配置过程中,用户为每个LUT编程一个真值表,以实现所需逻辑功能。应当注意,每个LAB可进一步被组织成包括多个LE,可视为可配置逻辑单元(Configurable Logic Cell,CLC)或CLS。例如,四输入(16位)LUT从布线结构接收LUT输入(图1B未示出)。基于在配置PSD期间编程进LUT的真值表,根据LUT输入的逻辑值,通过LUT的已编程真值表生成组合输出。随后,组合输出在时钟周期结束之前被锁存或缓冲到寄存器或触发器中。

在一个实施例中,控制单元110包括CCD组件120。应当注意,CCD120可放置于PIC或PSD内的任何位置,以促进CCD过程。CCD 120具有控制和管理时钟生成过程的功能,以实现FPGA的不同部分以不同的时钟速度运行。

图2是根据本发明的一个实施例示出的布线逻辑或布线结构的框图200,该布线逻辑或布线结构包含可编程互连阵列,能对CCD分配的时钟信号进行布线。框图200包括控制逻辑206、PIA 202、IO引脚230以及时钟单元232。控制逻辑206类似于图1B所示的控制单元,提供各种控制功能,包括通道分配、差分IO标准和时钟管理。控制逻辑206可以包含易失性存储器、非易失性存储器和/或易失性和非易失性存储器器件组合,用于存储诸如配置数据的信息。在一个实施例中,控制逻辑206被集成在PIA 202中。应当注意,向/从框图200添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

IO引脚230通过总线231连接到PIA 202,包含大量可编程IO引脚,该IO引脚被配置为接收信号和/或传输信号到外部设备。例如,每个可编程IO引脚可被配置为输入引脚、输出引脚和/或双向引脚。根据应用,IO引脚230可集成在控制逻辑206中。

在一个示例中,时钟单元232通过总线233连接到PIA 202,接收来自其他组件(如时钟树电路或全局时钟振荡器)的各种时钟信号。在一个示例中,时钟单元232响应系统时钟和参考时钟,产生时钟信号,用于实现IO通信。根据应用,例如,时钟单元232向可编程互连阵列202提供包括参考时钟在内的时钟信号。

一方面,PIA 202组织成包括通道组210和220、总线204和IO总线114、124、134、144的阵列方案。通道组210、220用于实现基于PIA配置在LB之间对信息进行布线。通道组也可通过内部总线或连接(诸如总线204)相互通信。通道组210还包括IAD 212-218(212、214、216和218)。通道组220包括四个IAD 222-228(222、224、226和228)。IAD具有为数据传输提供可配置的布线资源的功能。

IAD(如IAD 212)包括布线多路复用器或选择器,用于在IO引脚、反馈输出和/或LAB输入之间对信号进行布线,以到达其目的地。例如,一个IAD可包括多达36个多路复用器,该多路复用器可置于四组中,其中每组包含九行多路复用器。应当注意,每个通道组内的IAD数量是LAB内LE数量的函数。

在一个实施例中,PIA 202指定一个诸如IAD 218的特殊IAD,以实现时钟信号的布线。例如,IAD 218在数据传输和逻辑操作期间处理或分配连接和/或对时钟信号或时钟树进行布线。应当注意,可分配额外的IADs用于CCD操作。

在PIA中使用IAD 218作为指定时钟布线的优点是确定整个FPGA或IC芯片的时钟信号分布。

图3是根据本发明的一个实施例示出的PSD或FPGA的框图300,该PSD或FPGA被组织成或划分为包含多个时钟区域的几个象限。PSD,也称为CSD、FPGA、或PLD,被组织成或划分为四部分或四象限351-354(351、352、353和354)。每个象限或部分承载或容纳了多个时钟区域302-316(302、304、306、308、310、312、314和316)。应当注意,向/从PSD 300添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

例如,PSD的每个象限包括两个时钟区域,以通过时钟结构实现用户定义的逻辑功能。第一象限或象限351包括SerDes区域304和bank0区域302。Bank0区域302还包括bank0362、IO块(IO bank0)和微控制器单元(Microcontroller Unit,MCU)330。MCU 330还可以选择性地位于独立的时钟区域中,独立于bank0区域302,以提供MCU功能。IO bank0通过IO引脚来提供外部设备和bank0 362中的逻辑块之间的通信,bank0 362包括各种逻辑块,包括但不限于数字逻辑块(Digital Logic Block,DLB)、嵌入式块状RAM(Embedded Block RAM,EBR)和DSP,用于提供如用户定义的逻辑功能。DLB包括能执行用户定义的逻辑功能的可配置LB,EBR则包括用于编程逻辑功能(如LUT)的存储器单元。DSP提供了专门的处理功能,对预定义的处理操作进行了优化。

SerDes 304包括包含DLB、EBR和DSP的逻辑块364,用于执行数据通信的各种串行和/或解串功能。串行/解串器具有促进高速通信的功能。应当注意,SerDes 364(如SerDesQ0)能在串行接口和并行接口间转换数据,进行数据传输。

第二象限或象限352包括第二SerDes区域306和bank5区域308。而SerDes区域306包括通用安装总线(Common Installation Bus,CIB)块和逻辑块366,bank5区域308包括IObank5、逻辑块368和移动产业处理器接口(Mobile Industry Processor Interface,MIPI)块332。应当注意,根据应用的不同,MIPI块332可以是独立的区域。MIPI具有与各种移动系统建立无线通信的功能。在一个示例中,逻辑块368包括DLB、EBR和/或DSP,用于执行用户定义的逻辑功能。

第三象限或象限353包括bank3区域312和bank4区域310。Bank3区域312包括逻辑块372和IO bank3。而IO bank3提供外部设备和逻辑块372之间的通信,逻辑块372包括DLB、EBR和/或DSP,用于执行用户定义的逻辑功能。Bank4区域310包括逻辑块370,该逻辑块370包括DLB、EBR和/或DSP,用于执行逻辑功能。

第四象限或象限354包括bank1区域316和bank2区域314。Bank1区域316包括逻辑块376和IO bank1。IO bank1提供外部设备和逻辑块376之间的通信,逻辑块376包括DLB、EBR和/或DSP,用于提供用户定义的逻辑功能。Bank2区域314包括逻辑块374,该逻辑块374包括DLB、EBR和/或DSP,用于执行逻辑功能。

在一个实施例中,时钟结构320被配置为提供多组不同速度的时钟或时钟信号。例如,时钟结构320为多个时钟区域提供多组时钟信号,其中不同的时钟信号组包含不同的时钟质量。在一个实施例中,当整个PSD或FPGA与一个全局时钟或全局时钟信号同步时,时钟结构320能执行CCD操作,为所有区域提供全局时钟信号。

时钟结构320被配置成通过其区域时钟网络、区域间时钟网络和全局时钟网络来促进CCD性能。例如,需要CCD提供足够多的时钟信号驱动PSD的八个区域302-316(302、304、306、308、310、312、314和316)。八个区域302-316(302、304、306、308、310、312、314和316)包括两个位于PSD的顶部象限或顶部部分的SerDes组364-366(364和366),和六个逻辑块,该逻辑块的IO位于PSD的左侧、右侧和/或底部。在一个示例中,主时钟区域包括8个主时钟(BUFU),其用于驱动时钟网络(或结构)以及该区域中的IO。

在一个示例中,每个区域包括两个PLL,一个带有四个时钟IO的IO组。另外,一个区域包括一个SerDes组和各种数量的结构块。在一个区域内,主时钟源包括时钟IO/SerDes时钟和12个PLL输出时钟,以及PLL。PLL的参考时钟由时钟IO、主时钟和来自结构或内部的反馈路径驱动。

在另一个实施例中,FPGA或CSD被组织成能执行用户定义的逻辑功能的象限。例如,FPGA包括位于第一象限的第一SerDes区域304,位于第二象限的第二SerDes区域306,以及位于FPGA中间的时钟结构320。SerDes区域304包括SerDes可配置块364和第一SerDes接口块。SerDes区域304用于促进响应于第一区域时钟信号的数据传输。

第二SerDes区域306包括第二SerDes可配置块366和第二SerDes接口块。第二SerDes区域306用于响应于第二区域时钟信号,实现数据传输。在一个实施例中,时钟结构320提供第一区域时钟信号和第二区域时钟信号,分别用于给第一SerDes区域304和第二SerDes区域306进行时钟驱动。一方面,第一区域时钟和第二区域时钟的时钟频率不同。

bank0区域302位于第一象限或象限351中,包含bank0可配置块362和bank0 IO(或IO)块。bank0区域302被配置为响应于第三区域时钟信号,实现数据处理。

bank5区域308位于FPGA的第二象限或象限352中,包含bank5可配置块368和bank5IO块。bank5区域398能够响应于第四区域时钟信号,实现数据处理。bank1区域316位于FPGA的第四象限或象限354中,包含bank1可配置块376和bank1 IO块。bank1区域316响应于第五区域时钟信号,实现数据处理。

bank2区域314位于第四象限或象限354中,包含bank2可配置块374和bank2 IO块。Bank2区域314被配置为响应于第六区域时钟信号,实现数据处理。Bank3区域312位于FPGA的第三象限或象限353中,包含bank3可配置块372和bank3 IO块。bank3区域312响应于第七区域时钟信号,实现数据处理。bank4区域310位于第三象限或象限353中,包含bank4可配置块370和bank4 IO块。bank4区域310响应于第八区域时钟信号提供数据处理。

在一个实施例中,CCD为相应区域生成特定的区域时钟。例如,CCD为bank0区域302生成一组第三区域时钟。使用带有时钟结构的时钟区域的优点是,它允许不同区域以不同的时钟速度工作。

图4是根据本发明的一个实施例示出的CCD的框图400,该CCD被配置为给在PSD(或FPGA)上的各区域分配时钟。CCD 400包括时钟资源402和PSD(或FPGA)。一方面,时钟源402通过一个或更多个时钟组(clock bank)位于FPGA外部。另外,时钟源402可以是时钟发生器或位于FPGA内部的嵌入式振荡器。时钟源402还可以接收由多个不同时钟频率的嵌入式振荡器产生的时钟。应当注意,向/从框图400添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

在一个示例中,CCD是一种能够提供多组时钟的可编程时钟结构以达到不同目的。CCD包括区域时钟发生器410、区域间时钟发生器412、次级时钟发生器416和全局时钟发生器418。应当注意,发生器410-418(410、412、416和418)可以是独立的时钟发生器,也可以组合为一个时钟发生器。根据应用,CCD可以为不同的时钟区域(如区域302-316)提供不同的时钟速度。

在一个实施例中,区域时钟发生器410被配置为基于时钟源402的输出和其他反馈输入产生一组RCS或时钟。例如,PLL输出用于产生一个或更多个RCS。由于RCS是一个对时钟偏移(clock skew)的容忍度相对较低的高速时钟信号,所以RCS是一个具有高CSQ的主区域时钟。RCS具有以不同的时钟速度驱动不同区域的逻辑的功能。例如,RCS用于对相应或指定区域的DLB、EBR和/或DSP单元进行时钟驱动。应当注意,由于时钟结构是可编程的,因此可以从PLL的输出和时钟源402的输出中任选一个RCS。PLL根据RCS、时钟源、NCS和/或SCS的输入参考产生输出。选择的RCS随后被转发到指定区域(如bank0区域302)。

区域间时钟发生器412,也称为相邻时钟发生器,能根据时钟源402的输出和一些反馈输入产生一组NCS或区域间时钟。由于NCS可以是一个对时钟偏移的容忍度相对较低的高速时钟信号,所以NCS是一个具有高CSQ的主区域间时钟。NCS具有以相同的时钟速度同时驱动位于两个相邻区域的逻辑的功能。例如,NCS能用于同时对两个区域的DLB、EBR和/或DSP单元进行时钟驱动。

次级时钟发生器416根据RCS的输出产生一组SCS或次级时钟。SCS是一个具有较低CSQ的次级区域时钟。SCS具有以较低的时钟速度驱动逻辑的功能,其中逻辑可以处理较大的时钟偏移。例如,SCS用于以时间敏感度较低的逻辑操作来对DLB、EBR和/或DSP单元进行时钟驱动。例如,SCS能用于复位、激活和禁用等。在一个应用中,次级时钟发生器416还能产生一个或更多个全局SCS或次级全局时钟,用于对时间敏感度较低的逻辑操作进行时钟驱动。

在一个实施例中,全局时钟发生器418用于根据时钟源402、RCS和/或NCS产生一组全局时钟信号(Global Clock Signal,GCS)。GCS是一个具有高CSQ的主区域信号。GCS具有以相同的时钟速度驱动PSD或FPGA内的逻辑的功能。例如,GCS用于以基本相同的时钟速度对所有区域的DLB、EBR和/或DSP单元进行时钟驱动或驱动。

在操作中,时钟源402产生一组时钟信号430,这些信号随后被分配到区域时钟发生器410、区域间时钟发生器412、次级时钟发生器416以及全局时钟发生器418。区域时钟发生器410产生一组RCS(如64个区域信号432),随后转发给时钟选择器408、次级时钟发生器416和全局时钟发生器418。在时钟选择器408处选择后,RCS 432进入所有区域302-316(如标号438所示)。

在一个实施例中,区域间时钟发生器412产生一组NCS,随后,该NCS被转发给多个区域302-316(如标号434所示)。在接收RCS、NCS和时钟信号430的输入后,次级时钟发生器416产生一组SCS,以进行时间敏感度较低的逻辑操作。此外,由全局时钟发生器418生成一组GCS,用于向整个芯片或FPGA提供全局时钟信号。一方面,GCS用于同步器件、PSD或FPGA的时钟信号。应当注意,GCS可用于对FPGA四个象限中的逻辑块进行时钟驱动。

采用CCD的优点是,CCD允许器件在芯片或FPGA的不同区域以不同的时钟周期运行。

图5A是根据本发明的一个实施例示出的时钟区域的示意图500,该时钟区域带有PLL和IO块,用于实现CCD的操作。示意图500包括IO组502、PLL 506、结构部分508和选择器510。接收到时钟信号后,IO组502向PLL 506和选择器510提供时钟信号514。PLL 506根据来自时钟信号514的输入信号和选择器510的输出产生PLL输出(如标号516所示)。在接收到时钟信号514和PLL的输出后,选择器510为结构部分508选择一个时钟信号,以对时钟逻辑器件或区域进行时钟驱动(如标号512所示)。应当注意,向/从示意图500中添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

图5B是根据本发明的一个实施例示出的将时钟信号分配到多个时钟区域的示意图520,用于实现CCD的操作。示意图520示出了四个选择器524,能处理FPGA的上半部或下半部的32个输出时钟信号。一方面,选择器524能根据来自各个其它象限或区域的输入时钟分配时钟信号(如标号526-528所示)。应当注意,向/从示意图520添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

图5C是根据本发明的一个实施例示出的时钟分配的示意图550,该时钟分配提供一组信号作为能驱动整个芯片或PSD的全局时钟。示意图550示出了八个选择器524,能处理FPGA的64个全局输出时钟或GCS。一方面,选择器524能根据来自各个其它象限和/或区域的输入时钟信号分配时钟信号(如标号556-558所示)。在一个实施例中,选择器552-554用于提供额外的可编程性。应当注意,向/从示意图550中添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

图6A是根据本发明的一个实施例示出的CCD的一部分的示意图600,该CCD被配置为产生区域时钟、区域间时钟和次级时钟,用于实现CCD的操作。示意图600包括IO组或SerDes 602、PLL 606、结构部分608-610(608和610)以及选择器616-618(616和618)。示意图600还包括区域间元件612和选择器614,用于处理直接输入638进入结构部分608-610(如标号620所示)。应当注意,向/从示意图600添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

在接收到时钟后,IO组602向PLL 606、选择器614-618(614、616和618)和区域间元件612提供时钟信号634。PLL 606根据来自时钟信号634的输入信号和选择器614-618(614、616和618)的输入产生PLL输出632。在接收到时钟信号634和PLL输出632后,选择器616为结构部分608-610(608和610)提供(或选择)一个时钟信号,以对相应的逻辑器件或区域进行时钟驱动(如标号622所示)。应当注意,结构部分对应的是时钟区域。

在一个实施例中,选择器618根据来自时钟信号634的输入、PLL 632的输出和/或来自其他区域的其他时钟源生成次级时钟或SCS 640。来自选择器618的输出640被转发到IO组602和/或PLL 606。在一个实施例中,区域间元件612基于时钟信号634生成NCS 636。一方面,NCS 636被反馈到选择器614,用于产生直接输入638。

在一个实施例中,次级时钟发生器采用了各种选择器,例如能够实现低速IO时钟的选择器618,也可简称为BUFR。在一个示例中,低速IO时钟被扩展到区域时钟网络,用于实现SerDes操作。四个低速时钟的分发树覆盖了整个区域。虽然低速时钟可以是PLL参考时钟,但低速时钟也可以由SerDes时钟或PLL输出时钟驱动。应当注意,低速时钟也可通过划分高速时钟产生。

在一个实施例中,区域间元件612包括两个多区域时钟总线,该多区域时钟总线可缩写为BUFMR,位于PSD或FPGA的左侧至右侧。虽然多区域时钟可以驱动慢速时钟和/或IO跨区域(IO cross region),但多区域时钟也可以由IO和/或SerDes多区域时钟驱动。应当注意,多区域时钟可用于高速时钟,用于同时对相邻区域进行时钟驱动。

图6B是根据本发明的一个实施例示出的次级全局时钟的示意图,该次级全局时钟用于分配一组能驱动PSD的至少一部分的次级全局时钟信号。示意图650示出了四个选择器618,该选择器能为PSD或FPGA产生32个次级全局时钟信号或SCS。一方面,选择器618能根据来自各个其它象限的输入时钟信号分配时钟信号(如标号652-656所示)。在一个实施例中,选择器658-660用于提供额外的可编程性,以处理如标号656所示的连接。应当注意,向/从示意图650添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

次级时钟基本类似于主时钟,总共包括四个次级区域,其中每个次级区域覆盖两个主时钟区域。应当注意,次级时钟的时钟延迟和时钟偏移可大于主时钟。一方面,每个次级时钟区域具有8个驱动该区域中的时钟结构和IO的次级时钟(BUFS)。虽然次级时钟与主时钟共享相同的时钟源,但在一个示例中,次级时钟还与主时钟共享PLL。应当注意,两个相邻(上/下半部份)区域与其他区域交换主时钟源。例如,16个次级全局时钟(BUFSG)连接FPGA的上半部分和下半部分。每个次级全局时钟都能反馈所有区域的所有次级时钟。应当注意,八个次级全局时钟由FPGA上/下半部分的次级时钟源驱动。

图6C是根据本发明的一个实施例示出的CCD操作的示意图670,该CCD操作提供主全局时钟和次级全局时钟,以驱动PSD或FPGA。示意图670示出了四个用于次级时钟的次级选择器618和八个用于向PSD或FPGA提供主全局时钟和/或次级全局时钟信号的主选择器616。为增强可编程性,选择器680-682(680和682)通过连接672-678(672、676和678)提供额外的灵活性。应当注意,向/从示意图670添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

使用主全局时钟和次级全局时钟的好处是提高FPGA在功耗和速度方面的整体效率。

图7是根据本发明的一个实施例示出的系统或计算机700的示意图,该系统或计算机使用带有CCD的PSD,以增强PSD的可编程性。系统或计算机700包括处理单元701、接口总线712以及IO单元720。处理单元701包括处理器702、主存储器704、系统总线711、静态存储设备706、总线控制单元705、IO元件730以及FPGA 785。应当注意,向/从示意图7添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。

总线711用于在各种组件和处理器702之间传输信息以实现数据处理。处理器702可以是多种通用处理器、嵌入式处理器或微处理器中的任何一种,例如

主存储器704,可以包括多级缓存存储器,存储经常使用的数据和指令。主存储器704可以是随机存取存储器(Random Access Memory,RAM)、磁性随机存取存储器(MagneticRandom Access Memory,MRAM)或快闪存储器。静态存储器706可以是只读存储器(ROM),该静态存储器706与总线711耦合,用于存储静态信息和/或指令。总线控制单元705耦合到总线711-712,并且控制哪一个组件,如主存储器704或处理器702可以使用总线。总线控制单元705管理总线711和总线712之间的通信。大容量存储内存或固态硬盘(Solid StateDisk,SSD)可以是磁盘、光盘、硬盘驱动器、软盘、只读光盘存储器和/或快闪存储器,用于存储大量数据。

在一个实施例中,IO单元720包括显示器721、键盘722、光标控制设备723以及低功耗PLD 725。显示设备721可以是液晶设备、阴极射线管(Cathode Ray Tube,CRT)、触摸屏显示器或其它合适的显示设备。显示器721投影或显示图形规划板的图像。键盘722可以是常规的字母数字输入设备,用于在计算机系统700和计算机操作员之间传送信息。另一种类型的用户输入设备是光标控制设备723,例如传统的鼠标、触摸鼠标、轨迹球或其他类型的光标,用于在系统700和用户之间传送信息。

PLD 725耦接总线712,以通过广域网向本地和远程计算机或服务器提供可配置逻辑功能。PLD 725和/或FPGA 785被配置为实现CCD的操作,以提高FPGA和/或PLD的整体效率。在一个示例中,PLD 725可用于调制解调器或网络接口设备中,以促进计算机700和网络之间的通信。计算机系统700可以通过网络基础设施与服务器耦合,如下讨论所示。

图8是根据本发明的一个实施例示出的PSD(例如FPGA、PLD等)的各种应用的示意图800,该PSD能使用CCD实现用户定义的逻辑功能。示意图800示出了人工智能服务器808、通信网络802、交换网络804、互联网850和便携式电动设备813-819(813、815、816、817、818和819)。一方面,能实现CCD操作的PSD被用于人工智能服务器、便携式电动设备和/或交换网络中。网络或云网络802可以是广域网、城域网(Metropolitan Area Network,MAN)、局域网(Local Area Network,LAN)、卫星/地面网络或广域网、城域网和局域网的组合。应当注意,向/从示意图800添加或移除一个或更多个块(或网络),本发明的示例性实施例的基本概念也不会改变。

网络802包括多个网络节点,图8未示出,其中,每个节点可包括移动性管理实体(Mobility Management Entity,MME)、无线网络控制器(Radio Network Controller,RNC)、服务网关(Serving Gateway,S-GW)、分组数据网络网关(Packet Data NetworkGateway,P-GW)或家庭代理以提供各种网络功能。网络802与互联网850、人工智能服务器808、基站812和交换网络804耦接。在一个实施例中,服务器808包括机器学习计算机(Machine Learning Computers,MLC)806。

交换网络804,可称为分组核心网络,包括能够提供无线接入通信的蜂窝基站822-826(822、824和826),例如第三代(3r

基站812,也称为蜂窝基站、节点B或eNodeB,包括能够耦合到各种用户设备(UserEquipment,UE)和/或电气用户设备(Electrical User Equipment,EUE)的无线电塔。术语“UE”和“EUE”是指类似的便携式设备,其可互换使用。例如,UE或便携式电子设备(PortableElectronic Device,PED)可以是通过无线通信的蜂窝电话815、笔记本电脑817、

互联网850是一个使用传输控制协议/网际协议(Transmission ControlProtocol/Internet Protocol,TCL/IP)的计算网络,以提供地理位置上分离的设备间的通信联系。在一个示例中,互联网850,通过卫星接收器832耦接至供应商服务器838和卫星网络830。在一个示例中,卫星网络830可提供许多功能,例如无线通信和全球定位系统(Global Positioning System,GPS)。应当注意,增强了FPGA效率的CCD操作可使许多应用受益,例如但不限于智能手机813-819(813、815、816、817、818和819)、卫星网络830、汽车813、人工智能服务器808、商业807以及家庭820。

本发明的示例性实施例包括各种处理步骤,这些步骤将在下文中描述。该实施例的步骤可体现于机器或计算机可执行的指令中。所述指令可用于使得编程有该指令的通用或专用系统执行本发明示例性实施例的步骤。或者,本发明示例性实施例的步骤可由包含执行步骤的硬线逻辑的特定硬件组件执行,或者由经编程的计算机组件和定制的硬件组件的任意组合执行。

图9是根据本发明的一个实施例示出的将PSD按逻辑划分为多个象限以创建时钟区域的过程的流程图900。在方框902处,CCD驱动区域逻辑块的过程能够确定FPGA四个象限内活动区域的数量。例如,FPGA可按逻辑划分为四个象限,其中每个象限可进一步划分为两个时钟区域。一方面,所有的区域都应以相似的逻辑能力和IO进行配置。

在方框904处,响应于配置信息和时钟源,产生与活动区域数量相同或类似数量的独立时钟或时钟信号。

在方框906处,当选择独立的区域时钟信号时,该过程能将指定的区域时钟信号转发到对应的指定区域。一方面,具有不同时钟速度的不同时钟用于驱动不同区域或对不同的区域进行时钟驱动,从而CCD允许不同的区域以不同的时钟速度运行。

在方框908处,当选择多区域时钟信号时,将多区域时钟信号或区域间时钟转发到相应的多个区域。应当注意,多区域时钟或区域间时钟有利于多个区域在同一时钟速度下工作。在一个示例中,当选择全局时钟信号时,全局时钟信号被转发至所有区域。

图10是根据本发明的一个实施例示出的CCD产生时钟信号驱动PSD的过程的流程图1000。在方框1002处,用于提供多组时钟的CCD的过程能够识别FPGA四个象限内的活动区域的数量。在一个示例中,确定了四个象限中的八个区域,其中每个象限包括两个区域。

在方框1004处,根据一个或更多个时钟源产生具有第一CSQ的相应组的RCS或区域时钟,用于驱动四个象限的相应数量的活动区域。一方面,第一CSQ是一个高质量、高精度的时钟周期。

在方框1006处,该过程能够生成一组具有第一CSQ的区域间时钟或NCS,用于对位于至少两个相邻区域的逻辑块进行时钟驱动。

在方框1008处,将RCS组和NCS组分配到FPGA中的活动区域,以实现用户定义的逻辑功能。一方面,CCD的过程还能够根据RCS组生成具有第二CSQ的一组SCS或次级时钟,用于以时间敏感度较低的逻辑操作来驱动逻辑块。在一个示例中,第二CSQ是指较低的时钟质量。在操作中,当选择独立的区域时钟信号时,指定的RCS被转发到相应的指定区域。或者,当选择多区域时钟信号时,一个或更多个NCS被转发到多个相邻区域。当选择全局时钟信号时,该过程还能转发全局时钟信号到所有区域。

虽然已经展示和描述了本发明的特定实施例,但显而易见,基于本文的教导,本领域的普通技术人员可以在不偏离本发明的示例性实施例及其更广泛的方面的情况下进行改变和修改。因此,所附权利要求旨在将所有符合本发明本示例性实施例的真正精神和范围的变化和修改包含在权利要求的范围内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号