时分多路复用多端口存储器的制作方法

文档序号:6739810阅读:187来源:国知局
专利名称:时分多路复用多端口存储器的制作方法
时分多路复用多端口存储器本申请要求2011年10月28日提交的美国专利申请N0.13/284, 721的优先权,其通过引用以其整体合并到此。
背景技术
集成电路(例如可编程集成电路)常常包含静态随机存储器(SRAM)单元形式的易失性存储器元件。易失性存储器元件(例如SRAM单元)通常是基于交叉耦合的反相器(即,锁存器)。存储器元件按阵列布置。在通常的阵列中,数据线用来将数据写入存储器元件并且从存储器元件读出数据。地址线用来选择哪一些存储器元件正在被访问。一些应用要求存储器元件具有双端口能力(即,存储器元件包括两个端口,每个端口用来执行读或写操作)。为支持双端口操作,存储器元件通常以八晶体管的配置形成。例如,常规的双端口存储器元件包括两个交叉耦合的反相器以及第一和第二对存取晶体管。第一对存取晶体管与交叉耦合的反相器耦合,以作为第一读/写端口,而第二对存取晶体管与交叉耦合的反相器耦合,以作为第二读/写端口。然而,以这种方式布置的常规八晶体管(8T)双端口存储器单元会占据常规六晶体管(6T)单端口存储器单元两倍的面积。为了努力降低双端口存储器电路的面积,已经开发出允许用6T存储器元件提供同步双端口的功能的技术(例如,使用单个时钟控制两个端口)。例如,双时钟技术包括在高时钟相位期间访问存储器元件(以满足与第一端口关联的请求)并且在低时钟相位期间访问存储器元件(以满足与第二端口关联的请求)。然而,双时钟化存储器访问限制了存储器性能且不能用于支持异步双端口操作(即,涉及使用两个分离的具有不同时钟频率和/或相位的时钟信号以控制两个端口的操作)。

发明内容
提供了 一种具有存储器元件电路的集成电路。存储器元件包括布置为阵列的单端口存储器元件。存储器元件可以被配置为与提供多端口存储器功能的外围存储器控制电路接口连接。存储器电路可以包括控制电路(有时称为排序电路),其被配置为接收来自同步端口和异步端口的存储器访问请求。可以利用同步端口时钟控制与同步端口关联的请求,而可以利用异步端口时钟控制与异步端口关联的请求。第一与第二时钟信号可以呈现出不同的时钟频率/相位。到达同步端口的存储器访问请求一被接收,就可以被履行,而到达异步端口的存储器访问请求利用先进先出电路(FIFO)缓冲并且利用亚稳态同步器同步到内部存储器时钟。例如,响应于检测到同步端口时钟的上升沿,如果FIFO不为空,则控制电路可以采样来自FIFO的现存未决的异步端口请求(例如,同步器可以用于锁存未决的异步端口请求)。如果此时同步访问需要被服务,则控制电路将引导存储器电路立即履行此请求。在同步访问的完成之后,可以从FIFO中删除采样的异步端口请求,因为它已经使用同步器锁存。接着,控制电路继续处理当前被同步器锁存的采样的异步端口请求,并在当前同步时钟周期的剩余部分履行任何额外的未决或随后到达的异步端口请求。如果在异步请求完成时FIFO为空,则控制电路将延缓随后到达的异步请求,直到同步端口时钟的下一个时钟周期。除上述的半同步排序电路外,存储器电路还包括仲裁电路,其被配置为接收从同步和异步端口的存储器访问请求,并且处理执行与同步和异步端口关联的存储器访问请求的顺序。例如,仲裁电路可以操作在异步模式(即,利用具有不同频率和/或相位的第一和第二时钟信号控制来自同步和异步端口的请求的模式)。在异步模式中,仲裁电路一接收到存储器访问请求就执行。例如,如果仲裁电路在同步端口检测到给定的存储器请求,则仲裁电路将引导控制电路执行给定的存储器请求。如果在已经履行给定的存储器请求之前在异步端口接收到第二存储器请求,则第二存储器请求将被保持直到给定的存储器请求已经完成。当仲裁电路检测到给定的存储器请求已经履行时,它将引导控制电路执行第二存储器请求。从附图和下文详述中,本发明其他特征、其本质和各种优势将变得更明显。


图1是说明性的具有仲裁电路的多端口存储器电路的图不。图2和图3描述图1中多端口存储器电路操作的时序图。图4是依据本发明实施例的说明性的半同步多端口存储器电路的图示。图5是依据本发明实施例的说明性的存储器元件的图示。图6和图7是描述依据本发明实施例的图4所示类型的半同步多端口存储器电路的操作的时序图。图8是依据本发明实施例的利用图4所示类型的多端口存储器电路完成存储器访问请求所包括的步骤的流程图。
具体实施例方式本发明实施例涉及静态随机存储器电路。本发明的存储器电路可以用于任意合适的集成电路。例如,存储器电路可以用于如下集成电路存储器件,例如专用集成电路(ASIC),可编程集成电路,或其他类型的集成电路。图1是包括存储器电路的集成电路10的图不,存储器电路具有仲裁电路,仲裁电路被配置为仅利用单端口存储器元件来提供同步和异步多端口存储操作。器件10可以包含至少一个存储器阵列14。如图1所示,存储器阵列14可以包括以行和列布置的存储器元件(有时称为存储器单元)100。存储器单元100可以是单端口存储器单元。例如,存储器单元100可以是具有六晶体管的单端口差分存储器单元(例如,具有一对存取晶体管的存储器单元,该对存取晶体管用作存储器单元的单端口)。利用单端口存储器单元来提供双端口存储功能可以帮助提高管芯成品率,降低最小所需电源电压(即,降低功耗),以及保存集成电路的面积(real estate)。存储器阵列14可以耦合到行和列控制电路,例如行和列控制电路12。控制电路12可以包括行寻址电路、列多路复用电路、写驱动器电路、读感测电路、数据寄存器电路等。控制电路12可以用于产生期望的时变和/或固定信号,经由路径(例如路径16和18)到阵列14中的存储器单元100。供应给存储器元件100的信号有时可以共同称为控制信号。在特定的上下文里,这些信号中的一些可以称为电源信号、清零信号、数据信号、地址信号等。电源信号通过全局存储器电源线同时分发给阵列14中的所有单元。存储器电源线可以垂直指向,使得每一条路径18中都有存储器电源线的一个分支,或者可以水平指向,使得每一条路径16中都有存储器电源线的一个分支。例如,可以利用共享的水平或垂直的导体的布局将正电源电压Vcc并行地提供给每一个单元100。同样利用共享的水平或垂直线路的布局将地电压Vss并行地提供给单元100。控制线路,例如地址线和数据线,通常彼此正交(例如,地址线是水平的而数据线是垂直的,反之亦然)。正电源电压Vcc可以提供于正电源线路上。地电压Vss可以提供于地电源线路上。任何合适的值都可以用于正电源电压Vcc和地电压Vss。例如,正电源电压Vcc可以是1.2伏、1.1伏、1.0伏、0.9伏、小于0.9伏,或其他合适的电压。地电压Vss可以是零伏(作为示例)。通常的布置中,电源电压Vcc可以是1.0伏,Vss可以是零伏,地址信号、数据信号和清零信号的信号电平的范围可以从零伏(低电平时)到1.0伏(高电平时)。也可以使用如下布置:Vcc根据时间变化,Vss小于零伏,以及过驱动控制信号(即,控制信号的信号强度大于Vcc-Vss)。通常,可以有任何合适数量的与路径16和18关联的导线。例如,阵列14的每一行可以包括在路径16的相应一条中的关联的地址线,而阵列14的每一列可以包括在路径18的相应一条中的关联的数据线(例如,真值数据线和补值数据线)。术语“行”和“列”仅代表一种引用存储器阵列14中的各组特定单元100的方式,有时可以互换使用。如果期望,线路的其他布局可以用于路径16和18。例如,可以使用不同数量的电源信号、地址信号和数据信号。地址线16中的一条可以供应有效(asserted)地址信号以选择要访问的一行存储器单元100。在所选行正在被访问的同时,除了所选的地址线之外的地址线16上的地址信号可以保持无效(deasserted)。在读操作期间,每一列上的数据线可以被预充电到正电源电压Vcc,而在写操作期间,每一列上的数据线可以被驱动到恰当的电平,以将期望的写数据写入至少一些所选单元100。在正常操作期间,所有的地址信号可以保持无效,而所有数据线可以被预充电到Vcc (作为示例)。阵列14中的单端口存储器单元100可以通过使用外围存储器电路提供双端口功能。行与列控制电路12可以接收来自多路复用电路(或多路复用器)24的控制信号。多路复用电路24可以具有第一输入、第二输入、输出和控制输入,第一输入被配置为接收与第一存储器端口(端口 A)关联的存储器访问请求(例如,数据信号和地址信号),第二输入被配置为接收与第二存储器端口(端口 B)关联的存储器访问请求信号,输出与电路12耦合,控制输入被配置为经由路径26接收来自仲裁电路22的端口选择信号P0RTSEL。仲裁电路22可以被配置为接收来自端口 A的存储器访问请求、来自端口 B的存储器访问请求、与端口 A关联的第一时钟信号Aclk以及与端口 B关联的第二时钟信号Bclk。仲裁电路22可以用来确定处理从端口 A和端口 B接收的存储器访问请求的顺序。从Aclk和Bclk参考点来看,存储器电路表现出双端口存储器的功能,因为存储器电路能够处理来自至少两个端口的读与写的请求,每个端口用不同的时钟信号Aclk和/或Bclk控制(例如,仲裁电路22能够仿真真值双端口操作)。
仲裁电路22可以将P0RTSEL驱动为低,以利用多路复用器24选择性地将数据信号与地址信号由端口 A路由到行与列控制电路12,以及可以将P0RTSEL驱动为高,以利用多路复用器24选择性地将数据信号与地址信号由端口 B路由到行与列控制电路12 (作为示例)。当仲裁电路22决定执行请求时,仲裁电路22将临时使提供在路径34上的信号START有效,从而引导控制电路20能够进行所期望的读/写操作。响应于接收来自仲裁电路22的有效的START,控制电路20在写操作期间可以提供有效的写驱动使能信号到电路12,以及在读操作期间可以提供有效的感测放大器使能信号(例如,通过将读/写使能信号从控制电路20经由路径36提供到电路12)。在读操作期间,用电路12中的感测放大器电路产生的读信号可以被馈送到输出锁存器28和30。可以使用由电路20经过路径32提供的端口 A输出时钟信号Aoutclk控制输出锁存器28,而可以使用由电路20经过路径33提供的端口 B输出端口信号Boutclk控制输出锁存器30。与第一存储器端口关联的锁存的输出数据信号(例如,数据信号Aout)和与第二存储器端口关联的锁存的输出数据信号(例如,数据信号Bout)可以被提供给器件10上的其他数字或逻辑电路,以便进一步处理。在已经履行当前的存储器请求时(B卩,在所期望的存储器位置上完成对存储器阵列14的读/写操作之后),仲裁电路22可以从控制电路20接收有效的信号DONE。响应于检测到的有效的DONE,仲裁电路22可以继续处理相继的未决的存储器访问请求。仲裁电路22可以操作于同步模式和异步模式。在同步模式中,可以使用共享时钟源来控制来自多个端口的请求。结果是,来自多个端口的存储器访问请求可以在共享时钟信号的上升沿同时到达。在同步模式中,例如,仲裁电路22可以确定选择多个端口中的哪一个。在两个端口中的仅一个处存在未决的请求的情况下,可以选择与该未决的请求关联的端口,以便进行处理。在一个端口接收写请求而另一个端口接收读请求的情况下,可以选择接收读请求的端口,以便进行处理(即,仲裁电路22可以被配置为实现读端口优先)。如果期望,仲裁电路22也可以被配置为实现写端口优先(即,可以选择接收写请求的端口,以便进行处理)。在两个端口都接收读请求或两个端口都接收写请求的情况下,可以给第二端口优先权(即,B端口处的请求将在A端口处的请求之前被处理)。如果期望,仲裁电路22也可以被配置为当两个端口都接收同种类型的存储器请求时实现端口 A优先(S卩,当端口 A和端口 B都接收读请求或当端口 A和端口 B都接收写请求时,端口 A处的请求将在端口 B处的请求之前被处理)。关于图1所描述的存储器结构仅是说明性的,并不意味着限制本发明的范围。如果期望,仲裁电路22可以被配置为处理来自任何所期望数量的端口的存储器请求,以支持三端口存储器模式,四端口存储器模式等。在另一个合适的布置中,仲裁电路22可以被配置为在异步模式下操作(例如,用不同相位和/或频率的时钟控制来自多个端口的请求的模式)。在异步双端口操作中,来自不同存储器端口的请求常常在不同的时间到达。因此,仲裁电路22可以被配置为当电路22接收到第一到达的存储器请求时就尽快处理它,并且当已经履行第一到达的存储器请求时处理第二(稍后)到达的存储器请求。图2和图3是描述关于图1所描述类型的存储器电路的异步模式操作的时序图。图2描述了在不同时间接收到端口 A存储器访问请求和端口 B存储器访问请求的情况。在时间tl处,仲裁电路22可以接收到来自端口 A的第一存储器访问请求(由Aclk的时钟上升沿触发)。本示例中,仲裁电路22当前没有处理任何存储器访问请求,所以仲裁电路22立即开始履行第一存储器访问请求(例如,信号PORTSEL被置低,以将与第一存储器访问请求关联的数据信号和地址信号传送到行与列控制电路12)。在时间t2处,仲裁电路22可以接收到来自端口 B的第二存储器访问请求(由Bclk时钟上升沿触发)。仲裁电路22将第二存储器访问请求置于保持,直到履行第一存储器访问请求。在时间t3处,信号DONE脉冲置高,以指示第一存储器访问请求已经完成。执行存储器访问请求所用的时间量(例如,从Aclk的时钟上升沿到DONE上升沿的时间段)有时可以称为访问时间或时钟到输出时间Tco。如果与读操作关联的Tco大于与写操作关联的Tco,则存储器电路的性能会取决于用于读操作的访问时间Tco。此时(S卩,时间t3),仲裁电路22可以通过以下步骤继续处理第二存储器访问请求:升高P0RTSEL,以将与第二存储器访问请求关联的数据信号和地址信号传送到控制电路12 ;以及引导控制电路20使能电路12中的所期望的读/写电路。在时间t4处,信号DONE脉冲置高,以指示第二存储器访问请求已经完成。执行第二存储器访问请求所用的时间量(例如,从前一个DONE上升沿到当前DONE上升沿的时间段)可以等于访问时间Tco。因此,当执行两个连续的存储器访问请求时的总延迟(假设Aclk和Bclk的上升沿相对彼此是偏移)可以等于2*Tco。图3描述第一存储器访问请求(例如,端口 A存储器访问请求)与第二存储器访问请求(例如,端口 B存储器访问请求)同时被接收到(Aclk与Bclk时钟同时置高)的情况。在时间tl处,仲裁电路22可以并行地从端口 A接收第一存储器访问请求并且从端口 B接收第二存储器访问请求。当仲裁电路22同时接收两个请求时,仲裁电路22会需要时间段Tmet来决断亚稳态(B卩,确定第一与第二存储器访问请求中的哪一个将首先处理)。在时间t2处(例如,tl后的时间段Tmet),仲裁电路22可以决定通过置低PORTSEL履行第一存储器访问请求(作为示例)。仲裁电路22在时间t2处选择第二存储器访问请求进行处理也是可能的。在时间t3处,信号DONE可以被脉冲置高,以指示第一存储器访问请求完成。此时,可以履行第二存储器访问请求(例如,将PORTSEL置高)。在时间4处,信号DONE可以再次被脉冲置高,以指示第二存储器访问请求完成。因此,执行两个同时到达的存储器访问请求(当Aclk和Bclk的上升沿对齐时)的总延迟可以等于Tmet与2*Tco的和。图3的示例仅是说明性的,并且不用于限定本发明的范围。在本发明的一个适合的布置中,器件10可以使用半同步方法提供多端口功能,在该方法中,将存储器访问同步到与不同存储器端口中所选一个(有时可以称为“同步”端口)关联的时钟信号。因此,该时钟信号在此可以称为同步端口时钟或同步时钟信号。可以使用内部存储器时钟信号控制行与列控制(或存储器阵列控制)电路12,该内部存储器时钟信号与同步端口时钟是同步相关的(例如,内部存储器时钟信号可以由与同步端口关联的时钟信号触发)。将存储器访问同步到多个存储器端口中的仅一个,这有效地消除了同步端口上亚稳态决断所需的时间。同步端口可以被给予优先权,使得在此端口处接收到的存储器访问请求展示出最多一个Tco的最小延迟。在其他端口接收到的存储器访问请求(有时可以称为“异步”端口)可以被同步到内部存储器时钟信号。异步端口上的存储器访问仍会产生亚稳态决断的时延,但这与同步端口上的访问同时发生。以此方法处理存储器访问请求可以称为半同步时分多路复用(TDM)多端口存储器控制。考虑双端口存储器具有专用读端口和专用写端口的情况。如果读访问被给予较高的优先权,则读端口可以被配置为同步端口,而写端口被配置为异步端口。如果写访问被给予较高的优先权,则写端口可以被配置为同步端口,而读端口被配置为异步端口。考虑双端口存储器具有用第一时钟信号控制的第一端口和用第二时钟信号控制的第二端口的情况,其中第二时钟信号展示出高于第一时钟信号的频率。在此情况下,与较关键时钟域关联的端口可以被配置为同步端口。例如,与较快时钟信号关联的端口可以被配置为同步端口(例如,内部存储器时钟可以被同步到第二时钟信号)。如果期望,与较慢时钟域关联的端口反而可以被配置为同步端口(例如,内部存储器也可以被同步到第一时钟信号)。通常,内部存储器时钟信号可以由不同端口时钟中的任何一个触发。当内部存储器时钟被触发时,可以立即开始同步端口上的存储器访问。在正在履行同步端口的存储器访问的同时,可以使用内部存储器时钟来重新同步来自异步端口的存储器访问。因为当在同步端口处接收到存储器访问请求时立即开始同步端口访问,所以异步端口的亚稳态决断与同步端口的访问一起发生,从而降低Tmet。结果是,同步端口访问会经历Tco的延迟,而异步端口访问以及由异步端口之前且同时接收到的其他排队(或未决)访问会经历最高同步端口的个时钟周期的延迟图4是半同步双端口存储器的示例性实现的图示。在图4的示例中,端口 B可以被被配置为同步端口,而端口 A可以被配置为异步端口。可以用Aclk (称为异步时钟)控制到达端口 A的数据信号和地址信号,而可以用Bclk (称为同步时钟)控制到达端口 B的数据信号和地址信号。信号Aclk和Bclk可以具有不同的时钟频率/相位。如图4所示,来自同步端口(即,端口 B)的信号可以用锁存器104接收。锁存器104可以具有被配置为接收Bclk的时钟控制输入和耦合到多路复用电路102的第一输入的输出。同步时钟Bclk可以被馈送到控制电路101。控制电路101可以用于产生内部存储器时钟信号且可以用作排序电路,其可操作来确定履行即将到来的存储器访问请求的顺序。具体地,控制电路可以用于在路径108上产生内部存储器时钟Mclk,在路径124上产生端口 A同步时钟Arclk,在路径109上产生端口 A输出端时钟Aoutclk,在路径111上产生端口 B输出端控制时钟Boutclk,以及在路径113上产生多路复用器控制信号PORTSEL。来自异步端口(S卩,端口 A)的信号可以用锁存器112接收。锁存器112可以具有被配置为接收Aclk的时钟控制输入和耦合到异步先进先出(FIFO)电路114的输出。FIFO114有时可以称为缓冲器电路。异步FIF0114可以用于正在处理来自端口 B的请求的同时,缓冲到来的端口 A上的请求。FIFO 114可以具有耦合到亚稳态同步器(例如请求同步器116)的输出。具体地,FIFO 114可以具有在其上提供与当前未决的请求关联的数据信号和地址信号的第一输出以及在其上提供信号Aasync的第二输出。请求同步器116可以包括正边沿触发锁存器118和负边沿触发锁存器120。正边沿触发锁存器118可以具有接收来自于FIFO 114的第二输出的信号Aasync的输入,耦合至IJ路径124的控制输入,以及在其上提供信号Areq的输出。负边沿触发锁存器120可以具有接收来自FIFO 114的第一输出的与当前未决的请求关联的数据信号和地址信号的第一输入,接收来自锁存器118的输出的信号Areq的第二输入,耦合到路径124的控制输入,耦合到多路复用器102的第二输入的第一输出,以及在群其上提供信号Areqsyn的第二输出。信号Areqsyn可以经过路径122馈送到控制电路101。可以用产生于控制电路101的信号PORTSEL来控制多路复用器102,以选择性地将存储器访问请求信号从端口 A和B中的一个路由到它的输出。存储器行与列控制电路(有时称为存储器阵列控制电路)12可以接收来自多路复用器102的输出的数据信号和地址信号。可以用从控制电路101经由路径108传递的内部存储器时钟Mclk控制电路12。电路12也可以产生经由路径110到控制电路101的信号DONE,以指示当前服务中的存储器访问请求的完成。用控制电路101产生的信号Arclk可以经路径124馈送到锁存器118和120的输入。FIFO 114也可以被配置为接收反馈自锁存器118的输出反馈的信号Areq和信号Arclk。在读操作期间从存储器阵列14读出的数据信号可以馈送到端口 B输出锁存器130与端口 A输出锁存器132。端口 A输出锁存器132可以用Aoutclk控制,而端口 B输出锁存器130可以用Boutclk控制。信号Aoutclk和Boutclk可以用控制电路101产生。端口B输出锁存器130可以具有在其上提供端口 B输出信号Bout的输出。端口 A输出锁存器132可以具有耦合到输出异步FIFO 134的输出。类似于输入FIFO 114,输出异步FIFO 134可以用于缓冲端口 A输出数据信号。接着,端口 A输出数据信号可以通过正边沿触发锁存器136和负边沿触发锁存器138传输。FIFO 134和锁存器136与138可以用信号Aclk提供时钟。锁存器138可以具有在其上提供端口 A输出信号Aout的第一输出以及在其上提供端口 A输出确认信号Ack的第二输出。信号Ack可以经路径140反馈给异步FIFO 134。在FIFO 134处接收到的有效Ack可以指示,一个字的数据已被成功地锁存在输出端,并可以引导FIFO 134移位其内容。图5是可以形成于存储器阵列14的示例性单端口存储器单元100的电路图。如图5所示,单元100可以包括至少一对交叉耦合的反相器142和144,其各自具有输入和输出。反相器142的输入可以耦合到反相器144的输出,而反相器144的输入可以耦合到反相器142的输出。反相器144的输出可以作为单元100的第一内部数据储存节点,而反相器142的输出可以作为单元100的第二内部数据储存节点。以此方式交叉耦合的反相器142和144可以用于储存单比特数据(例如,可以在第一数据储存节点储存数据比特的真值版本,而可以在第二数据储存节点储存数据比特的反向版本),并且有时可以称为双稳态元件。第一存取晶体管146可以耦合于第一数据储存节点和第一数据线18-1之间。第二存取晶体管148可以耦合于第二数据储存节点和第二数据线18-2之间。数据线18-1和18-2有时可以称为真值和补值位线对。数据线18-1和18-2可以被驱动到合适的值,以在写操作期间将数据写入单元100中,并且可以在读操作期间被预充电到电源电平。存取晶体管146和148 (有时称为地址晶体管)可以由在字线16上提供的字线信号WL控制。可以使信号WL有效,以选择阵列14中要被访问的一行存储器单元100。剩下的未选行中的信号WL可以仍保持无效。图5的单端口存储器单元只是说明性的,并且无意限制本发明的范围。如果期望,存储器单元100可以包括多于两个交叉耦合反相电路,可以包括读缓冲电路,可以具有单端结构等。关于图4所描述的TDM存储器电路的操作可以如下。响应于检测到同步端口时钟(即,端口 B)的时钟上升沿,可以触发一系列的存储器访问请求。内部存储器时钟Mclk可以在同步时钟Bclk的上升沿被触发为有效且可以在DONE的上升沿被触发为取消(B卩,无效)。如果期望,Mclk可以在DONE的下降沿被触发为取消。响应于检测到Mclk上升沿,立即执行端口 B访问,使得端口 B访问时间与真正的双端口存储器(即,使用具有八个存储器单元晶体管的双端口存储器单元实现的双端口存储器)一样快。当DONE有效时,Boutclk可以被脉冲置高,以锁存输出数据信号Bout。如之前所述,端口 A输入异步FIFO 114可以用于缓冲到来的端口 A存储器访问请求。信号Arclk可以用于同步端口 A存储器访问请求。除了触发Mclk,Bclk上升沿还可以触发信号Arclk,使其被脉冲置高一预定时间段。如果FIFO 114包含至少一个未决端口 A请求,则信号Aasync通常会被有效。在Bclk上升沿后立即处理端口 B请求的同时,Aasync将在Arclk前半个周期期间用锁存器118采样,以产生Areq (例如,Aasync将在Arclk的时钟正边沿被采样),而Areq将在Arclk后半个周期内用锁存器120采样,以产生Areqsyn(例如,Areqsyn将在Arclk的时钟负边沿被采样)。接着,被同步的端口 A请求信号Areqsyn可以被馈送到控制电路101,以指示当前Bclk周期期间不得不履行端口 A请求。以此方式采样与重采样未决的端口 A请求可以用于同步端口 A请求到内部存储器时钟Mclk。信号Areq和Arclk可以被反馈给异步FIFO 114,作为确认的一种方式。当FIFO114检测到Aclk的负边沿并且信号Areq有效时,可以取消Aasync,以指示未决请求已经被采样(从而例如,从FIFO 114中删除此未决请求)。接着,异步FIFO 114可以移位其内容,并且如果FIFO 114包含需要被服务的其他未决请求,则将异步地使Aasync有效。图6是描述当同步端口时钟比异步端口时钟快时(例如,当Bclk具有大于Aclk的频率时)的半同步TDM存储器电路的操作的时序图。图6示例假设异步FIFO 114在时间tl之前不包含未决请求。信号PORTSEL默认为高,以选择端口 B请求进行处理。在时间tl处,信号Aclk可以时钟置高,并且端口 A请求可以进入FIFO的114。这个新端口 A请求的添加会使信号Aasync在tl后一段时间(例如,在时间t2处)被异步有效。在时间t3处,信号Bclk可以时钟置高,并且B端口请求可以被呈现在锁存器104的输出(参看例如图4)。这个Bclk的上升沿会触发Mclk为有效并触发Arclk脉冲置高一预定脉冲宽度PW。Arclk的时钟上升沿可以使锁存器118采样Aasync,使得Areq将具有与Aasync同样的值(例如,Arclk上升沿使Areq升高,因为Aasync在时间t3处为高)。在时间t4处,Arclk可以被无效。Arclk的时钟下降沿会使Aasync被取消(只要Areq为高)并且会使锁存器120采样Areq,使得Areqsyn将具有与Areq同样的值。此时,在时间tl处到达的端口 A请求将从FIF0114中删除,因为端口 A请求已经由请求同步器116锁存。本示例中,Arclk下降沿将使Areqsyn升高,因为Areq在时间t4处为高。信号Aasync保持取消,因为没有额外的来自端口 A的存储器访问请求。在时间t5处,履行端口 B存储器访问请求并且信号DONE被脉冲置高,由此使Mclk无效并且Boutclk脉冲置高。响应于端口 B存储器访问的完成,信号Boutclk只可以脉冲置高。从端口 B存储器访问请求开始到对应的信号DONE有效的时间可以等于访问时间Tco。由于有未决的端口 A存储器请求(由有效的Areqsyn指示),因此控制电路101可以临时反相PORTSEL,使得可以服务端口 A存储器请求。在时间t6处,DONE可以被无效。当DONE为低时,可以服务随后的端口 A存储器访问。因为存在未决的端口 A存储器请求,所以Mclk可以被升高并且Arclk可以被脉冲置高,以表示端口 A存储器访问的开始。在时间t6处,Areq可以下降到低,因为没有新到达的端口 A请求(由低Aasync指示)。在时间t7处,Arclk可以被无效。Arclk时钟下降沿可以采样Areq,由此使Areqsyn下降到低,因为Areq在时间t7处为低。低Areqsyn可以指示没有未决的端口 A存储器访问请求。在时间t8处,信号DONE被脉冲置高并使Mclk无效和Aoutclk脉冲置高。响应于端口 A存储器访问的完成,信号Aoutclk只可以脉冲置高。此时,没有其他来自端口A或端口 B的存储器访问请求要被服务。在时间t9处,Bclk可以时钟置高,并且可以服务第二端口 B存储器访问请求。在时间tlO处,Bclk可以时钟置高,并且可以服务第三个端口 B存储器访问请求。在Bclk比Aclk快的情况下,端口 A访问的延迟仅增加最多一个端口 B周期,这在真实的双端口仿真中是可以接受的。当Bclk比Aclk快得多时(例如,当Bclk快于Aclk至少三倍,至少五倍,或至少十倍时),端口 A访问可以保证在Aclk的一小分数内完成。图7是描述当异步端口时钟快于同步端口时钟时(例如,当Bclk频率小于Aclk频率时)的半同步TDM存储器电路操作的时序图。图7的示例假设在时间tl之前异步FIFO114包含至少一个未决的请求(在时间tl前由有效的Aasync指示)。信号PORTSEL默认可以为高,以选择端口 B请求进行处理。在时间11处,信号Ac I k和Be I k可以同时时钟置高(例如,新的端口 A存储器访问请求和新的端口 B存储器访问请求并行到达)。Bclk上升沿将触发Arclk和Mclk时钟置高,并且触发Areq升高(因为Aasync在时间tl处为高)。同步端口访问(即,端口 B存储器访问)可以立即开始。在时间t2处,Arclk可以时钟置低,从而使Aasync取消(例如,在时间tl之前存入FIFO 114的未决存储器访问可以从FIFO 114中删除,因为其已经被请求同步器116锁存)并且使Areqsyn升高(因为Areq在时间t2处为高)。在时间t3处,可以暂时使信号DONE有效,以指示端口 B存储器访问的完成,由此触发Mclk时钟置低。此时,PORTSEL可以被置低,以选择端口 A请求进行服务,因为存在至少一个需要被服务的未决的端口 A请求(即,当前存储在同步器116中的未服务的端口 A请求),由高Areqsyn指示。在时间t3后不久,由于FIFO 114仍包含在时间tl到达的排队的端口 B存储器访问信号,因此可以使Aasync有效。在时间t4处,可以使DONE无效并且可以服务在时间tl前已存储在FIFO 114中的未决的端口 B存储器访问。此时,控制电路101可以将Arclk和Mclk置高。可以用锁存器118采样信号Aasync,但Areq将保持高,因为Aasync在时间t4处为高。在时间t5处,Arc Ik可以时钟置低,从而使Aasync取消(例如,可以删除在时间11到达的未决的存储器访问请求,因为其已经被请求锁存器116锁存)。可以用锁存器120采样信号Areq JMAreqsyn将保持高,因为Areq在时间t5处为高。在时间t6处,可以使信号DONE暂时有效,以指示排队的端口 A存储器访问的完成,由此触发Mclk时钟置低。信号PORTSEL可以保持低,因为仍有端口 A存储器访问请求不得不被服务。在时间t6附近,Aclk可以时钟置高,并且第一额外的端口 A存储器访问请求可以进入FIFO 114。在时间t6后不久,可以使信号Aasync有效,因为FIFO 114仍包含在时间t6到达的第一额外的端口 A存储器访问请求。在时间t7处,可以使DONE无效并且可以服务在时间tl到达的(并且当前存储在同步器116中的)未决的端口 A存储器访问。此时,控制电路101可以将Arclk和Mclk置高。可以用锁存器118采样信号Aasync,并且Areq将保持高,因为Aasync在时间t7处为高。在时间t8处,Arclk可以时钟置低,从而使Aasync取消(例如,可以删除在时间t6到达的第一额外的端口 A存储器访问请求)。可以用锁存器220采样信号Areq JMAreqsyr^f保持高,因为Areq在时间t8处为高。在时间t9处,可以使信号DONE暂时有效,以指示当前端口 A存储器访问的完成,由此触发Mclk时钟置低。信号PORTSEL可以保持低,因为仍有第一额外的端口 A存储器访问请求不得不被服务。信号Aasync可以保持取消,因为此时在FIFO 114中没有额外的排队请求。在时间tlO处,可以使DONE无效,并且可以服务在时间t6到达的第一额外的端口A存储器访问请求。此时,控制电路101可以将Arclk和Mclk置高。可以用锁存器118采样信号Aasync,从而使Areq下降至低,因为Aasync在时间tlO处为低。在时间til处,Aclk可以时钟置高,并且第二额外的端口 A存储器访问请求可以进入FIFO 114,从而使Aasync升高。在时间tl2处,Arclk可以时钟置低。因为Areq为低,没有请求需要从FIFO 114中删除(例如,FIFO 114可以仅被配置为当且仅当Areq为高时,在Arclk时钟下降沿删除请求)。可以用锁存器120采样信号Areq,从而使Areqsyn下降至低,因为Areq在时间tl2处为低。在时间tl3处,可以使信号DONE暂时有效,以指示第一额外的端口 A存储器访问的完成,由此触发Mclk时钟置低。如果Areq为低,则信号PORTSEL可以被置回高。信号Aasync将保持高,因为在当前Bclk周期的剩余部分,没有额外的端口 A请求将被服务。在时间tl4处,新的端口 A存储器请求可以达到,并且可以被存储在FIFO 114中,至少直到Bclk的上升沿。
`
在Aclk比Bclk快的情况下,FIFO 114的深度可以被配置为足够深以适应会在端口 B时钟周期内发生的端口 A请求的数量。如果期望,当Aclk快于Bclk时,可以使用关于图1所描述的异步仲裁多端口仿真方法。图8是使用图4所示类型的半同步TDM多端口存储器电路履行存储器访问请求所涉及的说明性步骤的流程图。在步骤300,控制电路101可以等待Bclk的上升沿。信号PORTSEL可以被设置为默认值I (即,从而选择性地将同步端口 B请求路由到存储器阵列控制电路12)。如果输入FIFO 114不为空,则信号Aasync可以异步地设置为I (步骤302)。响应于检测到Bclk的上升沿,控制电路101可以升高内部存储器时钟Mclk并且将Arclk脉冲置高(步骤304)。在步骤306,可以用锁存器118采样Aasync (例如,Areq被设置为Aasync的采样值)。如果有端口 B存储器访问请求不得不被服务,则处理可以进行到步骤310。如果不存在端口 B请求,则处理在取消Arclk后进行到步骤318。在步骤310,可以执行所期望的端口 B读/写存储器访问。响应于检测到Arclk的下降沿,可以用锁存器120采样Areq (例如,Areqsyn被设置为Areq的采样值),如步骤312所示。如果Areq为高,FIFO 114的输出被锁存,由此使Aasync取消并且可以从FIFO 114中删除最老的端口 A存储器访问请求(即,在当前被存储在FIFO 114中的任何其他请求之前到达的端口 A存储器访问请求)。在步骤314,D0NE可以被脉冲置高,由此触发Mclk时钟置低并且触发Boutclk脉冲置高。在步骤316,如果FIFO 114包含至少一个未服务的请求,则可以使Aasync有效。接着,处理将进行到步骤318,如路径317指示。在步骤318,控制电路101可以检查Areqsyn为高还是低。如果Areqsyn为低,则处理将循环回到步骤300,如路径320指示(例如,控制电路101将在当前Bclk周期的剩余部分里延缓端口 A请求)。如果Areqsyn为高,处理可以进行到步骤320。在步骤320,信号PORTSEL可以被设置为O (即,从而选择性地将异步端口 A请求路由到存储器阵列控制电路12)。响应于检测到信号DONE下降至低,信号Mclk可以时钟置高并且Arclk可以被脉冲置高(步骤322)。在步骤324,可以用锁存器118采样Aasync (例如,Areq被设置为Aasync的采样值)。在步骤326,可以执行所期望的端口 A读/写存储器访问。响应于检测到Arclk的下降沿,可以用锁存器120采样Areq (例如,Areqsyn被设置为Areq的采样值),如步骤328所示。如果Areq为高,可以取消Aasync (例如,可以移除现存于FIFO 114中的最老的端口 A存储器访问请求)。在步骤330,DONE可以被脉冲置高,由此触发Mclk时钟置低并且触发Aoutclk脉冲置高。处理可以循环回到步骤316,以处理其他的端口请求(如果有的话),如路径332指示。具有图1的仲裁电路22的存储器电路和具有图4的半同步TDM排序电路101的存储器电路的双端口实现仅仅是说明性的,并且不用于限制本发明的范围。如果期望,本文所述的异步和半同步双端口仿真技术可以应用于仿真三端口存储器操作、四端口存储器操作等。附加实施例:附加实施例1.一种操作具有第一和第二端口的双端口存储器的方法,其中所述双端口存储器包括单端口存储器元件阵列,所述方法包含:在所述第一端口接收第一存储器访问请求和关联的第一时钟信号;在所述第二端口接收第二存储器访问请求和关联的第二时钟信号;响应于用控制电路检测到所述第二时钟信号的时钟上升沿,产生第三时钟信号并且服务所述第二存储器访问请求;以及当正在服务所述第二存储器访问请求的同时,使用所述第三时钟信号采样所述第一存储器访问请求。附加实施例2.根据附加实施例1所述的方法,其中使用所述第三时钟信号采样所述第一存储器访问请求包含使用至少两个串联的锁存器在所述第三时钟信号的时钟上升沿和时钟下降沿采样所述第一存储器访问请求。附加实施例3.根据附加实施例2所述的方法,还包含:将所述第一存储器访问请求存储在缓冲电路中,其中所述缓冲电路可操作来接收来自所述至少两个串联的锁存器的控制信号。附加实施例4.根据附加实施例3所述的方法,还包含:用所述缓冲电路接收所述
第三时钟信号。附加实施例5.根据附加实施例2所述的方法,其中所述双端口存储器包括具有第一输入、第二输入和控制输入的多路复用电路,所述第一输入可操作来通过至少两个串联的锁存器接收所述第一存储器访问请求,所述第二输入可操作来接收所述第二存储器访问请求,所述控制输入可操作来接收来自所述控制电路的控制信号。附加实施例6.根据附加实施例1所述方法,还包含:将所述第一存储器访问请求存储在缓冲电路中。附加实施例7.根据附加实施例1所述的方法,还包含:响应于用所述控制电路检测到所述第二时钟信号的所述时钟上升沿,产生第四时钟信号以控制访问所述单端口存储器元件阵列。附加实施例8.根据附加实施例1所述的方法,还包含:响应于履行所述第二存储器访问请求,用所述控制电路接收指示所述第二存储器访问请求的完成的控制信号;以及响应于用所述控制电路接收所述控制信号,服务所述第一存储器访问请求。附加实施例9.一种操作具有第一和第二端口的双端口存储器的方法,其中所述双端口存储器包括单端口存储器元件阵列,所述方法包含:在所述第一端口接收第一存储器访问请求和关联的第一时钟信号;在所述第二端口接收第二存储器访问请求和关联的第二时钟信号;响应于所述第一时钟信号时钟走高,暂时将所述第一存储器访问请求存储在缓冲器中;以及响应于用控制电路检测到所述第二时钟信号的时钟上升沿,在将所述第一存储器访问请求存储在所述缓冲器中的同时,服务所述第二存储器访问请求。附加实施例10.根据附加实施例9所述的方法,还包含:响应于检测到所述第二时钟信号的所述时钟上升沿,用所述控制电路触发第三时钟信号。附加实施例11.根据附加实施例10所述的方法,还包含:用同步电路接收所述第三时钟信号,其中所述同步电路包含至少两个锁存器;以及用所述缓冲器接收所述第三时
钟信号。附加实施例12.根据附加实施例11所述的方法,其中所述至少两个锁存器包含正边沿触发锁存器和负边沿触发锁存器,所述正边沿触发锁存器被配置为在所述第三时钟信号的时钟上升沿锁存数据,所述负边沿触发锁存器被配置为在所述第三时钟信号的时钟下降沿锁存数据。附加实施例13.根据权利要求11所述的方法,还包含:用所述缓冲器接收来自所述同步电路的控制信号。附加实施例14.根据附加实施例11所述的方法,还包含:使用所述同步电路锁存所述第一存储器访问请求;以及在用所述同步电路已经锁存所述第一存储器访问请求后,将所述第一存储器访问请求从所述缓冲器中移除。附加实施例15.根据附加实施例9所述的方法,其中所述缓冲器包含先进先出电路。附加实施例16.—种具有第一和第二端口的双端口存储器,其包含:单端口存储器元件阵列;第一输入锁存器,其可操作来接收与所述第一端口关联的第一存储器访问请求和第一时钟信号;第二输入锁存器,其可操作来接收与所述第二端口关联的第二存储器访问请求和第二时钟信号,其中所述第二时钟信号不同于所述第一时钟信号;以及控制电路,其可操作来接收所述第二时钟信号而不是所述第一时钟信号,其中所述控制电路还可操作来产生控制信号,所述控制信号确定所述第一与第二存储器访问请求中的哪一个要被选择来履行。附加实施例17.根据附加实施例16所述的双端口存储器,还包含:多路复用电路,其具有第一输入、第二输入和控制输入,所述第一输入可操作来接收来自所述第一输入锁存器的所述第一存储器访问请求,所述第二输入可操作来接收来自所述第二输入锁存器的所述第二存储器访问请求,所述控制输入可操作来接收来自所述控制电路的所述控制信号。附加实施例18.根据附加实施例17所述的双端口存储器,还包含:缓冲器,其耦合在所述第一输入锁存器与所述多路复用电路的所述第一输入之间。附加实施例19.根据附加实施例18所述的双端口存储器,还包含:正边沿触发锁存器和负边沿触发锁存器,它们耦合在所述缓冲器和所述多路复用电路的所述第一输入之间。附加实施例20.根据附加实施例18所述的双端口存储器,其中所述缓冲器包含先进先出电路。前文所述仅仅是说明本发明的原理,本领域技术人员可以进行各种修改而不偏离本发明的范围和精神。前述实施例可以独立实现或以任何组合方式实现。
权利要求
1.一种操作具有第一和第二端口的双端口存储器的方法,其中所述双端口存储器包括单端口存储器元件阵列,所述方法包含: 在所述第一端口接收第一存储器访问请求和关联的第一时钟信号; 在所述第二端口接收第二存储器访问请求和关联的第二时钟信号; 响应于用控制电路检测到所述第二时钟信号的时钟上升沿,产生第三时钟信号并且服务所述第二存储器访问请求;以及 当正在服务所述第二存储器访问请求的同时,使用所述第三时钟信号采样所述第一存储器访问请求。
2.根据权利要求1所述的方法,其中使用所述第三时钟信号采样所述第一存储器访问请求包含使用至少两个串联的锁存器在所述第三时钟信号的时钟上升沿和时钟下降沿采样所述第一存储器访问请求。
3.根据权利要求2所述的方法,还包含: 将所述第一存储器访问请求存储在缓冲电路中,其中所述缓冲电路可操作来接收来自所述至少两个串联的锁存器的控制信号。
4.根据权利要求3所述的方法,还包含: 用所述缓冲电路接收所述第三时钟信号。
5.根据权利要求2所述的方法,其中所述双端口存储器包括具有第一输入、第二输入和控制输入的多路复用电路,所述第一输入可操作来通过至少两个串联的锁存器接收所述第一存储器访问请求,所述第二输入可操作来接收所述第二存储器访问请求,所述控制输入可操作来接收来自所述控制电路的控制信号。
6.根据权利要求1所述方法,还包含: 将所述第一存储器访问请求存储在缓冲电路中。
7.根据权利要求1所述的方法,还包含: 响应于用所述控制电路检测到所述第二时钟信号的所述时钟上升沿,产生第四时钟信号以控制访问所述单端口存储器元件阵列。
8.根据权利要求1所述的方法,还包含: 响应于履行所述第二存储器访问请求,用所述控制电路接收指示所述第二存储器访问请求的完成的控制信号;以及 响应于用所述控制电路接收所述控制信号,服务所述第一存储器访问请求。
9.一种操作具有第一和第二端口的双端口存储器的方法,其中所述双端口存储器包括单端口存储器元件阵列,所述方法包含: 在所述第一端口接收第一存储器访问请求和关联的第一时钟信号; 在所述第二端口接收第二存储器访问请求和关联的第二时钟信号; 响应于所述第一时钟信号时钟走高,暂时将所述第一存储器访问请求存储在缓冲器中;以及 响应于用控制电路检测到所述第二时钟信号的时钟上升沿,在将所述第一存储器访问请求存储在所述缓冲器中的同时,服务所述第二存储器访问请求。
10.根据权利要求9所述的方法,还包含: 响应于检测到所述第二时钟信号的所述时钟上升沿,用所述控制电路触发第三时钟信号。
11.根据权利要求10所述的方法,还包含: 用同步电路接收所述第三时钟信号,其中所述同步电路包含至少两个锁存器;以及 用所述缓冲器接收所述第三时钟信号。
12.根据权利要求11所述的方法,其中所述至少两个锁存器包含正边沿触发锁存器和负边沿触发锁存器,所述正边沿触发锁存器被配置为在所述第三时钟信号的时钟上升沿锁存数据,所述负边沿触发锁存器被配置为在所述第三时钟信号的时钟下降沿锁存数据。
13.根据权利要求11所述的方法,还包含: 用所述缓冲器接收来自所述同步电路的控制信号。
14.根据权利要求11所述的方法,还包含: 使用所述同步电路锁存所述第一存储器访问请求;以及 在用所述同步电路已经锁存所述第一存储器访问请求后,将所述第一存储器访问请求从所述缓冲器中移除。
15.根据权利要求9所述的方法,其中所述缓冲器包含先进先出电路。
16.一种具有第一和第二端口的双端口存储器,其包含: 单立而口存储器兀件阵列; 第一输入锁存器,其可 操作来接收与所述第一端口关联的第一存储器访问请求和第一时钟信号; 第二输入锁存器,其可操作来接收与所述第二端口关联的第二存储器访问请求和第二时钟信号,其中所述第二时钟信号不同于所述第一时钟信号;以及 控制电路,其可操作来接收所述第二时钟信号而不是所述第一时钟信号,其中所述控制电路还可操作来产生控制信号,所述控制信号确定所述第一与第二存储器访问请求中的哪一个要被选择来履行。
17.根据权利要求16所述的双端口存储器,还包含: 多路复用电路,其具有第一输入、第二输入和控制输入,所述第一输入可操作来接收来自所述第一输入锁存器的所述第一存储器访问请求,所述第二输入可操作来接收来自所述第二输入锁存器的所述第二存储器访问请求,所述控制输入可操作来接收来自所述控制电路的所述控制信号。
18.根据权利要求17所述的双端口存储器,还包含: 缓冲器,其耦合在所述第一输入锁存器与所述多路复用电路的所述第一输入之间。
19.根据权利要求18所述的双端口存储器,还包含: 正边沿触发锁存器和负边沿触发锁存器,它们耦合在所述缓冲器和所述多路复用电路的所述第一输入之间。
20.根据权利要求18所述的双端口存储器,其中所述缓冲器包含先进先出电路。
全文摘要
本发明涉及时分多路复用多端口存储器。提供了一种具有单端口存储器元件的集成电路。利用控制电路控制单端口存储器元件,以仿真多端口的功能。在一个恰当的实施例中,控制电路可以是仲裁电路,其被配置为仲裁电路一接收到存储器请求,就执行它。在正在执行当前存储器访问时接收到的请求可以被保持,直到当前存储器访问完成。在另一个恰当的实施例中,控制电路可以是排序电路,其被配置为服务来自同步端口和异步端口的存储器访问请求。在同步端口接收到的存储器访问请求可以立即被服务,而在异步端口接收到的存储器访问请求可以被同步到内部存储器时钟信号并且可以在与同步端口关联的前一个存储器访问请求被服务后得到服务。
文档编号G11C11/413GK103093808SQ20121042142
公开日2013年5月8日 申请日期2012年10月29日 优先权日2011年10月28日
发明者D·刘易斯 申请人:阿尔特拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1