用于将查找表随机存取存储器元件重新用作配置随机存取存储器元件的方法和装置与流程

文档序号:15116022发布日期:2018-08-07 20:12阅读:308来源:国知局

这涉及集成电路,并且更特别地涉及可编程集成电路。

可编程集成电路是一个类型的可以由用户编程以实现期望的定制逻辑功能的集成电路。在典型的场景中,逻辑设计者使用计算机辅助设计(cad)工具来设计定制逻辑电路。当设计过程完成时,计算机辅助设计工具生成配置数据。配置数据被加载到存储器元件中以将器件配置成执行定制逻辑电路的功能。

可编程集成电路通常包括被组织成多个逻辑块的可编程逻辑电路。每个逻辑块由耦合到存储器元件的较小逻辑元件组成。特别地,逻辑块包括两个不同类型的存储器元件:(1)第一类型的随机存取存储器元件,其仅用于存储配置数据并且因此被称为配置随机存取存储器(cram)存储器单元,以及(2)第二类型的随机存取存储器元件,其可操作以存储或者配置数据或者用户数据并且通常被称为查找表随机存取存储器(lutram)单元。

常规的逻辑块包括两个lutram列和两个cram列。作为示例,两个lutram列可包括每列400个lutram单元或者组合的总共800个lutram单元,而两个cram列可以包括每列450个cram单元或者组合的总共900个cram单元。在某些场景中,800个lutram单元之中的仅600个正被利用,而900个cram单元之中的仅500个正被利用。换言之,200个lutram单元和400个cram单元完全未被使用,这由于浪费的管芯面积和由未使用的存储器单元消耗的漏泄功率而是昂贵的。

本文中描述的实施例出现在此背景内。



技术实现要素:

诸如可编程集成电路之类的集成电路可以包括多个存储器列。第一存储器列可以包括查找表随机存取存储器(lutram)单元,而第二存储器列可以包括配置随机存取存储器(cram)单元。lutram单元可以在至少两个不同模式中可操作:查找表(lut)模式和随机存取存储器(ram)模式。cram单元可以仅在lut模式中可操作。根据实施例,lutram列的一部分可被重新用作cram单元。

第一列(即lutram列)中的每个存储器单元可具有用户写端口、配置写端口和读端口。lutram列中的lutram单元在它们的配置写端口中的每个处都包括选通逻辑,以当那些单元被置于ram模式中时阻止配置写。正被重新用作cram单元的lutram列的部分可能在其配置写端口处缺少任何选通逻辑。

lutram列中的每个存储器单元的读端口还可以耦合到读屏蔽电路。读屏蔽电路可以使用下拉晶体管来实现。读屏蔽电路可以由地址解码逻辑来控制。地址解码逻辑可以被配置成:仅当lutram单元在ram模式中操作时以及当lutram单元中的一个当前正被访问时,激活读屏蔽电路以屏蔽读操作。

根据附图和以下详细描述,本发明的进一步的特征、其性质和各种优点将更加显然。

附图说明

图1是根据实施例的说明性可编程集成电路的图。

图2是根据实施例示出配置数据如何由逻辑设计系统创建并被加载到可编程器件中以将器件配置用于系统中的操作的图。

图3是根据实施例的说明性双模式存储器元件的图。

图4是包括两个lutram列和两个cram列的存储器逻辑阵列块的图。

图5是根据实施例的包括两个lutram列和仅一个cram列的说明性存储器逻辑阵列块(mlab)的图。

图6是根据实施例示出双模式存储器单元的一个合适的电路实现的图。

图7是根据实施例示出lutram列可如何包括被重新用于cram单元的一部分的图。

图8是根据实施例示出图7的仅lutram列中的lutram单元可如何包括写地址选通逻辑的图。

图9是根据实施例的用于屏蔽配置读操作的说明性地址解码逻辑的图。

具体实施方式

本发明的实施例涉及集成电路,并且更特别地涉及具有存储器元件的可编程集成电路。

可编程集成电路可以包括有时被称为存储器逻辑阵列块的逻辑区域。这些存储器逻辑阵列块可以包括查找表随机存取存储器(lutram)单元和配置随机存取存储器(cram)单元的列。cram单元可提供静态配置位来在器件上实现用户逻辑功能。另一方面,lutram单元可以或者在查找表(lut)模式中作为cram单元进行操作,或者在用户存储器模式或ram模式中作为静态随机存取存储器(sram)单元进行操作。当在ram模式中操作时,lutram单元用于存储用户数据,并且因此不用作查找表或cram单元来配置集成电路器件的其它部分。

在许多应用中,lutram列中的至少一部分存储器单元可能未被使用。未利用的单元因此可以被重新用作cram单元,以提供对集成电路上逻辑设计的其它部分的配置。这可能要求特殊处置配置写和读回操作,以确保lutram和cram单元可以共存于相同列中。被以该方式配置,可编程集成电路可以包括较少的cram列,从而节省电路面积和漏泄功率。

本领域技术人员将认识到,可以在没有这些具体细节中的一些或全部的情况下实践本发明的示例性实施例。在其它实例中,未详细描述公知的操作,以便不使本发明的实施例不必要地模糊。

图1是诸如可编程逻辑器件(pld)10之类的说明性可编程集成电路的图。如图1中所示,器件10可具有用于驱动信号离开器件10并用于经由输入-输出引脚14从其它器件接收信号的输入-输出电路12。诸如全局和局部垂直和水平的导线和总线之类的互连资源16可用于路由器件10上的信号。互连资源16包括固定互连(导线)和可编程互连(即,相应的固定互连之间的可编程连接)。可编程逻辑18可以包括组合逻辑电路和时序逻辑电路。可编程逻辑18可被配置成执行定制逻辑功能。

可编程集成电路10包含可以使用引脚14和输入-输出电路12加载配置数据(也被称作编程数据)的存储器元件20。一旦加载,存储器元件就每个提供对应的静态控制输出信号,该信号控制可编程逻辑18中的关联的逻辑组件的状态。通常,存储器元件输出信号用于控制金属氧化物半导体(mos)晶体管的栅极。晶体管中的一些可以是p沟道金属氧化物半导体(pmos)晶体管。这些晶体管中的许多可以是诸如多路再用器之类的可编程组件中的n沟道金属氧化物半导体(nmos)传输晶体管。当存储器元件输出为高时,由该存储器元件控制的nmos传输晶体管将导通,以将逻辑信号从其输入传递到其输出。当存储器元件输出为低时,传输晶体管关断并且不传递逻辑信号。

典型的存储器元件20由被配置成形成交叉耦合的反相器的许多晶体管形成。也可使用其它布置(例如,具有分布式的类反相器的电路的单元)。利用一个合适的方法,使用互补金属氧化物半导体(cmos)集成电路技术来形成存储器元件20,因此作为示例而在本文中描述了基于cmos的存储器元件实现。在可编程集成电路的背景下,存储器元件存储配置数据,并且因此有时被称为配置随机存取存储器(cram)单元。

图2中示出用于器件10的说明性系统环境。器件10可被安装在系统38中的板36上。一般地,可编程逻辑器件10可从编程装备或者从其它合适的装备或器件接收配置数据。在图2的示例中,可编程逻辑器件10是从关联的集成电路40接收配置数据的可编程逻辑器件的类型。在此类型的布置的情况下,如果期望,则电路40可被安装在与可编程逻辑器件10相同的板36上。电路40可以是可擦除可编程只读存储器(eprom)芯片、具有内置存储器的可编程逻辑器件配置数据加载芯片(有时被称为配置器件)或者其它合适的器件。当系统38启动时(或在另一个合适的时间),可将用于配置可编程逻辑器件的配置数据从器件40供应给可编程逻辑器件,如由路径42所示意性地示出的。可将被供应给可编程逻辑器件的配置数据存储在其配置随机存取存储器元件20中的可编程逻辑器件中。

系统38可以包括与器件10通信的处理电路44、存储装置46和其它系统组件48。系统38的组件可位于诸如板36之类的一个或多个板上或其它合适的安装结构或壳体上,并且可通过总线和其它电气路径50互连。

配置器件40可通过诸如路径52之类的路径被供应用于器件10的配置数据。配置器件40可例如从配置数据加载装备54或将该数据存储在配置器件40中的其它合适的装备接收配置数据。器件40可在安装在板36上之前或之后被加载数据。

在可编程逻辑器件中设计和实现期望的逻辑电路可能是重大的任务。逻辑设计者因此一般基于计算机辅助设计(cad)工具来使用逻辑设计系统以帮助其设计电路。逻辑设计系统可以帮助逻辑设计者为系统设计和测试复杂电路。当设计完成时,逻辑设计系统可用于生成用于对适当的可编程逻辑器件进行电编程的配置数据。

如图2中所示,可通过诸如路径58之类的路径将由逻辑设计系统56产生的配置数据提供给装备54。装备54向器件40提供配置数据,使得器件40稍后可以通过路径42向可编程逻辑器件10提供该配置数据。系统56可基于一个或多个计算机和一个或多个软件程序。一般地,软件和数据可被存储在系统56中的任何计算机可读介质(存储装置)上,并且被示意性地示为图2中的存储装置60。

在典型的场景中,逻辑设计者使用逻辑设计系统56来创建定制电路设计。系统56产生对应的配置数据,所述配置数据被提供给配置器件40。在上电时,配置器件40和可编程逻辑器件10上的数据加载电路用于将配置数据加载到器件10的cram单元20中。器件10然后可用在系统38的正常操作中。

如上面所描述的,器件10可以包括正常cram单元,所述正常cram单元存储用于器件10的编程部分的静态配置数据。根据实施例,集成电路管芯10还可以包括诸如双模式存储器单元300之类的双模式存储器元件,所述双模式存储器元件可以被配置成作为(1)正常cram单元和(2)用于存储用户数据的静态随机存取存储器(sram)单元进行操作。在第一模式中,存储器单元300可以用于(例如)为查找表(lut)供应配置位,为多路再用电路供应控制位,或者为器件10上的其它路由和可编程电路供应配置位(作为示例)。第一模式因此有时被称为“lut模式”。在第二模式中,存储器单元300可用于存储用户数据,所述用户数据可以贯穿器件10的正常操作进行改变。必须注意不要疏忽地覆写存储在以第二模式配置的存储器单元300中的任何用户内容。第二模式可以被称为“ram模式”。存储器单元300因此有时被称为lutram单元。

lutram单元300可具有可以用于将配置数据加载到单元300中的配置写端口。在完整的器件配置(例如,其中完整的配置图像对整个器件10编程的操作)、部分重新配置(例如,其中器件10的仅部分正被重新配置的操作)、清洗(例如,其中期望的数据正被重新加载到器件10中的操作)、诸如循环冗余校验(crc)操作之类的错误检测和纠正操作和/或其它类型的配置过程期间,可激活配置写端口。lutram单元300还可以具有用于将用户数据加载到单元300中的用户写端口。

当给定的lutram单元300正在ram模式中操作时,配置写端口需要被关断以防止存储器单元300中的现有用户数据在部分重新配置、清洗、错误检测和纠正以及其它配置操作期间被覆写。照此,可在配置写端口处插入选通逻辑302。

lutram单元300可具有在lut模式期间和在ram模式期间二者使用的共享读端口。在lut模式中,读端口可用于读回单元300中的配置数据。在ram模式中,读端口可用于读回单元300中的用户数据。可在或可不在共享读端口处使用选通逻辑,以防止在配置操作期间用户数据的读回。

可编程集成电路10包括逻辑电路,所述逻辑电路可以被组织成有时被称为逻辑阵列块(“lab”)的逻辑块的区域。包括双模式lutram单元的某些类型的lab是指定的存储器lab(“mlab”)。一般地,本文中使用的术语lab可用于指代可以被实例化为器件10上的可重复单元的逻辑电路和/或存储器元件的任何集合。

图4是存储器逻辑阵列块400的图。如图4中所示,mlab400包括较小的逻辑单元,诸如逻辑元件402、用于管理mlab400的操作的逻辑控制块(lcb)403、第一lutram列404-1、第二lutram列404-2、第一cram列406-1和第二cram列406-2。cram列406-1和406-2包括仅在lut模式中可操作的存储器单元,而lutram列404-1和404-2包括在lut模式和ram模式二者中可操作的存储器单元。

在常规的可编程逻辑器件中,两列404中的每个包括总共800个lutram单元中的400个lutram单元,而两列406中的每个包括总共848个cram单元中的424个cram单元。在典型的配置中,存在十个逻辑元件402,其中的每个使用6-输入查找表。每个6-输入lut需要64个lutram单元。因此,mlab400将仅需要640个lutram单元,而160个lutram单元完全未使用。另一方面,典型的用户设计可能仅要求561位用于配置(即,将需要561个cram单元,而287个cram单元完全未使用)。在这样的场景中,存在447个总的(160+287)未使用的存储器单元,这在管芯面积和专用于这些空闲单元的漏泄方面是浪费的。因此将合期望的是提供一种具有改进的存储器利用的布置。

图5是可以在可编程集成电路10上形成的诸如存储器逻辑阵列块(mlab)500之类的说明性逻辑区域的图。如图5中所示,mlab500可以包括多个逻辑子块,诸如逻辑元件502、逻辑控制块(lcb)503、至少两个lutram列504-1和504-2以及仅一个cram列506。逻辑控制块503(阴影的)可负责选择哪些时钟信号用于每个逻辑元件502,将链中的逻辑元件502互连,以及作为整体以其它方式来协调mlab500的功能。可使用cram列506中的小的单元子集来配置lcb503。作为示例,可使用列506中的24个cram单元来配置lcb504。

与图3相比,mlab500包括仅一个cram列506。考虑其中两个lutram列包括总共800个lutram单元但是仅640个lutram单元被逻辑元件积极地使用(例如,160个lutram单元以其它方式可用于其它使用)的示例。如果cram列506包括小于配置所要求的数量的cram单元,则可使用lutram列中的未使用的lutram单元组成列506中的cram单元的数量与配置所要求的cram单元的数量之间的差异。换言之,160个剩下的lutram单元的一部分可被重新用作cram单元,从而消除对如在图4的布置中的第二cram列的需要(例如,lutram列的第一部分在lut模式和ram模式二者中可操作,而lutram列的第二部分仅在ram模式中可操作)。与图4中所示的mlab400的面积相比,以该方式配置,mlab500展现出少了至少5-10%的面积。

为了使lutram单元和cram单元二者共存于相同的存储器列中,可能要求对读和写操作的特殊处置。为了充分领会对操作存储器列以支持lutram单元和cram单元二者的要求,首先检查lutram单元的实现将是有帮助的。图6是示出lutram单元300的一个合适的电路实现的图。如图6中所示,存储器单元400可以包括形成双稳态元件的交叉耦合的反相器600和602。反相器600可具有连接到由反相器602的输出驱动的数据存储节点x的输入。反相器602可具有连接到由反相器600的输出驱动的数据存储节点y的输入。

诸如数据线610之类的用户数据线可经由存取晶体管604耦合到节点x,并且还经由反相器608和存取晶体管606耦合到节点y。存取晶体管604和606可由用户写地址信号wadd_user控制,并且可共同地用作用户写端口。

第一配置数据线624可经由存取晶体管620耦合到节点x,而第二配置数据线dataline_config'可经由存取晶体管622耦合到节点y。存取晶体管620和622可由写地址信号选通逻辑630控制。特别地,选通逻辑630可以是逻辑与(and)门,该逻辑与门具有接收配置写地址信号wadd_config的第一输入、接收写使能信号adden_config的第二输入、以及在其处提供对应的选通写地址信号gate_wadd的输出。

在配置写操作期间,配置地址使能信号adden_config在单元300被配置成在lut模式中操作时可被断言(assert)(即被驱动为高),或者在单元300被配置成在ram模式中操作时可被解除断言(即被驱动为低)。由选通地址信号gated_wadd控制的存取晶体管620和622可共同地用作用于存储器单元400的配置写端口。选通逻辑630因此用于当单元300被置于ram模式中时选通关断配置写端口。

数据线409也可耦合到诸如读电路632之类的配置读电路。读电路632可以包括在数据线409与地线之间串联耦合的下拉晶体管634和636。晶体管636可具有连接到节点x的栅极端子。晶体管634可具有耦合到读地址信号radd的栅极端子。读存取晶体管634和636可共同地用作用于存储器单元300的配置和用户读端口(例如,相同的读端口用于ram和lut模式二者)。

如上面所描述的,lutram单元需要具有写选通逻辑630,以帮助在ram模式期间关断配置写端口,以防止在配置操作期间覆写任何用户数据。类似地,根据当前正在被访问的单元的模式,读端口也需要被单独地处置。如果被访问的单元在ram模式中,则需要屏蔽读端口以防止读回用户数据。读端口的该“屏蔽”可被实现为数据线409的下拉,使得每当在ram模式中的lutram单元当前正在被访问时,将仅读回低信号。

图6中所示的lutram单元300的布置仅是说明性的。相比之下,cram单元不需要包括单独的用户写端口,由于其仅在lut模式中操作,从而消除对存取晶体管604和606的需要。

在图7中示出单独的配置读和写阻止逻辑。如图7中所示,lutram列504可以包括lutram单元700(例如,在lut模式和ram模式二者中可操作的存储器单元)和cram单元702(例如,仅在lut模式中可操作的存储器单元)二者。存储器单元700和702可使用诸如写地址解码器704之类的写地址解码电路来寻址。解码器704可接收写地址位wadd',并且输出对应的解码的写地址信号以访问列504中的存储器单元中的所选择的一个。

特别地,仅lutram单元700可具有写地址选通逻辑630,以防止当单元700在ram模式中操作时用户内容被覆写。对于cram单元702的配置写端口,不需要选通逻辑(例如,参见图6中不需要与门630)。列504被作为整体配置在ram模式或lut模式中的任一。换言之,如果列504被配置在ram模式中,则该列中的每个单个lutram单元700在ram模式中。另一方面,如果列504被配置在lut模式中,则该列中的每个单个lutram单元700在lut模式中。不管怎样,cram单元702将总是在lut模式中操作,所以不需要选通逻辑。

此外,诸如电路706之类的读屏蔽电路可耦合到读数据线409。每当以下两个条件被满足,就可激活读屏蔽电路706:(1)lutram单元700被配置在ram模式中,以及(2)那些lutram单元700中的一个当前正被访问。激活电路706有效地将数据线409上的电压设置到预定水平,使得配置读回将不受当前正被存储在单元700中的用户内容影响,所述用户内容时常是不可预测的。在所有其它情况下(例如,如果lutram单元700被配置在lut模式中和/或如果cram单元702中的一个当前正被访问),读屏蔽电路706被禁用,使得被访问的单元中的实际内容可以被读出。

图8是示出图7的仅lutram列中的lutram单元700可如何包括写地址选通逻辑的图。在图8的示例中,在lutram列504中存在40个存储器单元,其中经解码的地址位wadd_config[3:0]和wadd_config[39:36]寻址cram单元702,而地址位wadd_config[35:4]寻址lutram单元700。列504中的每个存储器单元耦合到数据线624和409。

特别地,lutram单元700中的每个可由关联的逻辑门630控制,该关联的逻辑门630接收对应的地址信号,并且还从存储器元件800接收模式控制信号。存储器元件800可以是存储静态控制信号mode(模式)的易失性或非易失性存储器单元,该静态控制信号mode确定列504中的lutram单元700被配置在哪个模式中。如果信号mode为高,则lutram单元700在lut模式中操作,使得选通逻辑630将允许配置写端口覆写单元内容。如果信号mode为低,lutram单元700在ram模式中操作,使得选通逻辑630将阻止/防止配置写端口覆写用户内容。信号mode对cram单元702没有影响,由于它们没有任何写选通逻辑。

仍然参考图8,读屏蔽电路706可被实现为下拉晶体管。下拉晶体管706可以是具有接收控制信号lutadd的栅极端子的n沟道晶体管。如上面结合图7所描述的,如果寻址lutram单元700的位wadd_config[35:4]中的一个为高并且如果信号mode为低,则信号lutadd可仅被断言(例如,被驱动为高)。如果信号mode为高或者如果cram单元中的一个正被访问,则信号lutadd将被解除断言(例如,被驱动为低),使得晶体管706被关掉。一旦被断言,信号lutadd就将使晶体管706导通并朝向地驱动数据线409。

其中lutram列504的顶部和底部部分被重新用作cram单元的图8的配置仅是说明性的,并且不意图限制本发明的实施例的范围。在其它合适的布置中,仅列504的顶部部分可专用于cram单元,仅列504的底部部分可专用于cram单元,仅列504的中部部分可被重新用作cram单元,或者列504的(多个)其它合适的部分可被指派成仅可作为cram单元进行操作。

图9是用于生成选择性地屏蔽配置读操作的控制信号lutadd的说明性地址解码逻辑的图。如图9中所示,解码逻辑900可以包括第一逻辑门902(例如,逻辑异或(xor)门)、第二逻辑门904(例如,逻辑或(or)门)和第三逻辑门906(例如,逻辑与门)。逻辑门902、904和906可串联耦合,并且可从存储器元件800仅接收经预解码的写地址位wadd'的子集和信号mode。

特别地,异或门902可具有接收写地址位wadd'<2>的第一输入、接收写地址位wadd'<5>的第二输入以及输出。或门904可具有接收写地址位wadd'<3>的第一输入、接收写地址位wadd'<4>的第二输入、从门902的输出接收信号的第三输入、以及输出。与门906可具有接收信号mode的第一反相输入(参见泡908)、从门904的输出接收信号的第二非反相输入、以及在其上生成控制信号lutadd的输出。以该方式配置,当信号mode为高时(即,当lutram列在lut模式中时),信号lutadd被强制成逻辑“0”。否则,当信号mode为低时(即,当lutram列在ram模式中时),仅当位wadd'<3>或wadd'<4>为高时或者当位wadd'<2>和wadd'<5>中仅一个为高时,信号lutadd将被断言成逻辑“1”。如图9中所示的解码逻辑900的该特定实现与其中lutram列中的顶部和底部存储器单元被重新用作cram单元的图8的配置对应。解码逻辑900可使用其它合适的逻辑门而形成和/或根据lutram列的哪个(哪些)部分正专用于cram使用而接收其它地址位。

到目前为止已经关于集成电路描述了实施例。本文中描述的方法和装置可被并入任何合适的电路中。例如,它们可被并入众多类型的器件中,所述器件诸如可编程逻辑器件、专用标准产品(assp)和专用集成电路(asic)。仅举几例,可编程逻辑器件的示例包括可编程阵列逻辑(pal)、可编程逻辑阵列(pla)、现场可编程逻辑阵列(fpla)、电可编程逻辑器件(epld)、电可擦除可编程逻辑器件(eepld)、逻辑单元阵列(lca)、复杂可编程逻辑器件(cpld)和现场可编程门阵列(fpga)。

在本文中的一个或多个实施例中描述的可编程逻辑器件可以是包括以下组件中的一个或多个的数据处理系统的部分:处理器;存储器;io电路;以及外围设备。数据处理可以用在各种各样的应用中,所述应用诸如计算机联网、数据联网、使用仪器、视频处理、数字信号处理或者其中使用可编程或可重新编程逻辑的优点合期望的任何合适的其它应用。可编程逻辑器件可以用于执行多种不同的逻辑功能。例如,可编程逻辑器件可以被配置为与系统处理器协同工作的处理器或控制器。可编程逻辑器件还可用作仲裁器,用于仲裁对数据处理系统中的共享资源的访问。在又一个示例中,可编程逻辑器件可以被配置为处理器与系统中的其它组件中的一个之间的接口。在一个实施例中,可编程逻辑器件可以是由altera/intel公司拥有的器件族中的一个。

前述仅说明本发明的原理,并且本领域技术人员可以做出各种修改。可单独地或以任何组合来实现前述实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1