先进先出缓冲器的制作方法

文档序号:6477177阅读:181来源:国知局
专利名称:先进先出缓冲器的制作方法
技术领域
本发明涉及设计用于在不同时钟域之间进行接口的FIFO (先进 先出)缓冲器。
背景技术
现有的片上系统(SoC)具有多个时钟域,其中实现了数字逻辑 电路。这些时钟域可以具有独立的频率和/或相位。当在这些时钟域 之间进行通信时,会出现半稳态电路会暂时进入介于0和l之间的
状态。为了安全地在这些时钟域之间进行通信,通常与握手机制结合 地使用同步触发器。
为了跨过时钟域交叉来进行大数据量的通信,众所周知的是使
用先进先出硬件缓冲器(FIFO) 。 FIFO的写入端位于第一时钟域内, 而FIFO的读取端位于第二时钟域内。
FIFO包括存储元件(存储器、触发器或锁存器)和控制逻辑电 路。控制逻辑电路产生用于访问存储器的写入地址和读取地址,并用 于控制时钟域之间的同步。这些写入地址和读取地址通过读取指针和 写入指针来确定。
写入指针指向将被写入的下一个字。在FIF0写入操作(由第一 时钟域进行时钟控制)过程中,对由写入指针指向的存储单元进行写 入,然后使写入指针加1以指向将被写入的下一存储单元。
类似的,读取指针指向将被读取的当前FIFO字。
在复位时,读取指针和写入指针都被设置为零。于是,FTF0为 空,并使用空标记对此进行指示。在将第一个数据字写入F1F0后, 写入指针加1、清除空标记、以及读取指针寻址第一个FIFO存储器 字的内容。该第一个字被推向FIF0数据输出端口。写入指针总是指 向将被读取的下一个FIFO字,从而接收器逻辑电路不必使用两个时钟周期来读取数据字。
在读取指针和写入指针两者相等时,FIF0为空。这种情况发生 在复位操作过程中将读取指针和写入指针都设置为零的时候、或发生 在读取指针已经从FIFO中读取了最后一个字而赶上写入指针的时候。
FIFO被用作循环存储器件。FIFO可以变满(例如,在写入时钟 频率高于读取时钟频率的情况下),因此存在最大数据传输容量。当 写入指针和读取指针再次相等时,FIFO为满,不过此时写入指针已 经回转并已赶上读取指针。为了避免将数据写入存储器从而导致对未 读取数据的存储单元进行重写,需要检测在先的写入指针状态。这样 做可以有很多方法,其中之一是引入符号位。于是在写入指针和读取 指针相等但是符号位不相等时,FIF0为满。
为了有效地在各时钟域之间进行同步,典型地使用格雷编码来 实现地址指针。对于每次时钟跳变,格雷码允许有一个位变化,这样 避免在一个时钟沿有多个变化的信号。在如上概述的读取格雷码指针 等于写入格雷码指针的情况下,FIF0将为空。在添加了附加MSB符 号位的情况下,如果读取格雷码指针的两个高位与写入格雷码指针的 两个高位相反,而其余位都相等,则FIF0将为满。这是因为格雷码 的反射性质造成的。第一半个序列中的格雷码的低U-2)位序列在 第二半个序列中被重复,但是将头两位反相。FIFO存储器大小对应 于(n-1)位,g卩,全格雷码循环的一半,并且可以基于两个MSB的 反相来检测一半的格雷码。
图1示出了已知的包括存储元件和控制格雷码计数器逻辑电路 的FIFO电路,其中控制格雷码计数器逻辑电路包括格雷码状态寄存 器、同步寄存器和满/空检测逻辑电路。
FIF0电路包括存储器10;多路复用器结构12,用于基于格雷 码编码的地址信号对存储器进行写入寻址;以及多路复用结构14, 用于基于格雷码编码的地址信号对存储器进行读取寻址。
利用单元18在每个写入时钟域周期处使格雷码编码的写入地址 指针16加1,并且写入地址指针输出被提供给多路复用器结构12。利用单元22在每个读取时钟域周期处使格雷码编码的读取地址
指针20加1,并且读取地址指针输出被提供给多路复用器结构14。
FIFO满状态基于写入指针地址和再同步的读取指针地址的比较 结果。
基于如上所述所使用的附加MSB符号位,通过使用反相器24使 再同步的读取指针地址的两个MSB反相,使该值与写入指针地址之间 的相等性被用来指示FIFO的满状态。FIFO空状态基于读取指针地址 和再同步的写入指针地址之间的比较结果,利用相等性来指示FIFO 空状态。
格雷编码的性质防止了格雷码序列成为任意长度。事实上,格 雷码序列长度将总是为4的倍数。实际上,这意味着只使用一个读取 指针和一个写入指针的时钟域交叉FIFO将具有偶数个项(深度)。
格雷编码或二进制编码地址的使用还引入了用于对FIFO进行读 取的长路径。需要选择这些寄存器中的一个寄存器用于进行读取,从 而造成了多路复用器12、 14的树形结构,这就引入了相当大的延迟。

发明内容
根据本发明的第一方面,提供了一种用于在具有不同时钟域的 电路之间进行接口的FIFO存储器电路,包括 FIF0存储器;
写入指针电路,由第一时钟域的时钟进行时钟控制,该写入指
针电路控制被写入数据的存储单元;以及
读取指针电路,由第二时钟域的时钟进行时钟控制,该读取指 针电路控制从其中读取数据的存储单元,
其中,读取指针电路和写入指针电路都使用格雷编码;以及其 中,存储器电路还包括复制格雷编码写入指针电路,其写入指针地址 与写入指针电路同步地加1,并且其起始写入地址被选择为使得复制 写入指针地址比写入指针电路地址落后对应于FIFO存储器大小的多 个地址存储单元;以及其中,该存储器电路还包括比较器,用于将读 取指针电路地址与复制写入指针电路地址进行比较以确定FIF0存储
6器的满状态。
该配置还使用其他的写入指针(除了传统的读取格雷码指针和 写入格雷码指针以外),该其他的写入指针被看作是阴影指针。其起 始于负的FIFO大小(格雷编码)处。该阴影指针用于确定FIFO的满 状态。使用该阴影指针,可以实现任意大小的FIFO,包括偶数和奇 数大小。如果两个指针(包括任何符号位)相等,则FIF0将为满。
优选的,比较器包括用于检测复制写入指针地址和读取指针地 址的相等性的电路。这使得无需复杂的技术来确定FIFO的满状态。
比较器还可以用于将读取指针电路地址和写入指针电路地址进 行比较,以确定FIFO存储器的空状态。于是比较器包括用于检测写 入指针地址和读取指针地址的相等性的电路。
根据本发明的第二方面,提供了一种用于在具有不同时钟域的 电路之间进行接口的FIFO存储器电路,包括
FIF0存储器;
写入指针电路,由第一时钟域的时钟进行时钟控制,该写入指 针电路控制被写入数据的存储单元;以及
读取指针电路,由第二时钟域的时钟进行时钟控制,该读取指 针电路控制从其中读取数据的存储单元,
其中,读取指针电路和写入指针电路都使用格雷编码;以及其 中,该存储器电路还包括第一转换电路,用于将读取指针电路地址转 换成一位热码(one-hot)信号,并用于控制FIFO存储器的读取地址; 以及其中,读取指针电路格雷编码值和写入指针电路格雷编码值被用 于获取FIFO存储器的空状态信息和满状态信息。
本发明的该方面通过提供以一位热码编码值存储读取地址的附 加阴影寄存器,使得能够加快FIFO读取处理的速度。
于是可以使用AND代替传统的读取结构的多路复用器层级,减 小了 0R树,并减少了从地址寄存器到数据输出端的延迟。
可以在写入端口处实现相同的指针逻辑电路以改善定时。在这 种情况下,该电路还包括第二转换电路,用于将写入指针电路地址 转换为一位热码信号,并用于控制FIF0存储器的写入地址。FIFO存储器优选的是一位热码可寻址存储器。


现在将参照附图来详细描述本发明的实例,附图中 图1示出了已知的用于在具有不同时钟域的电路之间进行接口 的FIFO存储器电路;
图2示出了本发明的FIFO存储器电路的第一实例;
图3示出了本发明的FIFO存储器电路的第二实例;以及 图4示出了用于图3的电路中的转换电路。 在附图中使用相同的参考标号来表示相同的部件。
具体实施例方式
图2示出了本发明的存储器电路的第一实例。图2的电路对应 于图1的电路,并增加了复制格雷编码写入指针电路30和相关联的 递增电路32。复制电路30的写入指针地址与写入指针电路同步地 (即,在FIFO的写入侧,在第一时钟域的时钟控制下)加l。
起始写入地址被选择为使得复制写入指针地址比写入指针电路 地址落后对应于FIFO存储器大小的多个地址存储单元。换言之,复 制写入指针起始于对应于负的FIFO大小的格雷编码值处(格雷编码 是循环的)。
这使得可以使用任意大小的FIFO。通过允许FIFO具有任意深度 而不是仅仅具有偶数深度,可以减小硅区。
通过使用附加的读取/写入地址寄存器组产生存储器地址,FIFO 可以为任意大小。该附加的寄存器组可以被进行二进制编码或一位热 码编码。在此情况下,格雷码寄存器只用于产生满/空状态。
在此情况下,将会有六个寄存器
读取和写入指针;
读取和写入阴影指针;
读取和写入地址。
比较器34用于将再同步的读取指针电路地址与复制写入指针电路地址进行比较,以确定FIFO存储器的满状态。这使得在进行比较
前无需以图1中所示的方式对读取指针地址进行处理。 复制写入指针可以被看作是阴影指针。
空状态可以使用图1中所示的传统方法进行检测。
图3示出了本发明的存储器电路的第二实例,该电路提高了操
作速度。
图3的电路使用与图1电路相同的格雷编码读取指针和格雷编 码写入指针,并使用相同的技术来检测满和空状态(尽管在图3中未 详细示出)。存储器电路还包括第一转换电路40,其用于将读取指 针电路地址转换为一位热码信号,并用于控制FIFO存储器的读取地 址。
以此方式, 一位热码编码的地址被用于对存储元件进行读取。 对于简单的FIF0,可以使用标准的触发器或锁存器。在存储器或寄 存器堆实施方式的情况中,需要一位热码可寻址存储器。
一位热码存储器读取的使用使得可以提高FIFO读取处理的速度。
第一转换电路40包括用于存储一位热码地址的电路42和用作 递增电路的旋转电路44,该旋转电路使一位热码"l"移动一位空间。 一位热码值被提供给基于加法器45和OR树46的寻址逻辑电路,以 得到将被寻址的存储器单元。从而,图3的电路结合了用于实现FIFO 满状态标记和空状态标记的格雷编码的优点,以及一位热码存储器读 取的优点。该电路提供了改进的写入数据输入和读取数据输出的定 时,导致了较高的工作频率和/或较低的功耗。
在该配置中,格雷码寄存器(常规或阴影)仅用于两个时钟域 之间的握手以及检测满/空状态; 一位热码寄存器用于进行实际的存 储器访问。使用一位热码编码将减少对存储器的访问时间(相比于格 雷码或二进制码),从而提高了工作频率。
可以使用传统的格雷编码以图1所示的方式实现写入地址。然 而,图3示出了令写入地址电路复制一位热码读取电路的改进实施 例。以此方式, 一位热码编码的地址还用于对存储元件进行写入。该
9电路还包括第二转换电路50,用于将写指针电路地址转换为一位热 码信号,并用于控制FIFO存储器的写入地址。
第二转换电路50包括用于存储一位热码地址的电路52,和用作 递增电路的旋转电路54,该旋转电路使一位热码"l"移动一位空间。 该一位热码值被提供给基于加法器55的寻址逻辑电路。
用于将一位热码信号转换为存储器地址信号的转换电路在读取 侧和写入侧是不同的,这是因为写入和读取具有不同的要求。在进行 写入时,存储单元之一需要被使能(使用单元45),以及一位热码 编码中的每一位都对应于一个存储单元的使能端。在进行读取时,需 要选择存储单元中的一个,并且读取的一位热码寄存器中的每一位都 对应于一个存储单元。通过将这些位与它们相应的存储单元进行逻辑 AND(在单元55中)以及将结果进行逻辑OR (在单元56中),就可 以对寄存器进行读取。
FIFO存储器可以实现为一位热码可寻址存储器。在此情况中, 电路55、 45、和46可以被实现为存储器本身的一部分。
图4示出了利用8位的数据示出用于深度为8的FIFO的格雷/ 二进制地址(图4的上部分)以及一位热码地址的寄存器读取逻辑电 路。
该格雷/二进制电路将数据从格雷码编码数据转换为二进制编 码数据,并使用多路复用器电路60的树。基于多路复用器结构的格 雷/二进制编码地址的逻辑深度为6个AND/0R层,以及最大扇出(位 0)为32。
在图的顶部,电路的输入是值d0至d7,并且这些值是被存储在 8个FIFO存储单元中的值。在电路的底部,这些存储单元中的一个 被选择作为输出向量[7:0]。
一位热码地址转换器包括加法器电路62的阵列和OR门树64。 基于AND/0R结构的一位热码编码地址的逻辑深度为4。最大扇出(所 有位)为8。
图4的电路是常用的并仅被提供用来显示一位热码寻址可以减 少等待时间以及提高工作频率。
10通过使用一位热码信号的处理而得到的减小了的逻辑深度和减 小了的扇出允许更高的工作频率,或较低的工作电压从而允许较低的 功率。
本发明可以应用于具有多个时钟域以及相关联的时钟域交叉的 各种片上硅电路。FIFO电路可以构成片上总线桥以及接口模块的一部分。
对于本领域技术人员来说,各种其他的改进都将是显而易见的。
权利要求
1.一种用于在具有不同时钟域的电路之间进行接口的FIFO存储器电路,包括FIFO存储器(10);写入指针电路(16),由第一时钟域的时钟进行时钟控制,所述写入指针电路(16)控制被写入数据的存储单元;以及读取指针电路,由第二时钟域的时钟进行时钟控制,所述读取指针电路控制从其中读取数据的存储单元,其中,所述读取指针电路和写入指针电路都使用格雷编码;以及其中,所述存储器电路还包括复制写入指针电路(30),其写入指针地址与所述写入指针电路(16)同步地加1,并且其起始写入地址被选择为使得复制写入指针地址比写入指针电路地址落后对应于所述FIFO存储器(10)大小的多个地址存储单元;以及其中,所述存储器电路还包括比较器(34),用于将所述读取指针电路地址与所述复制写入指针电路地址进行比较以确定所述FIFO存储器的满状态。
2. 根据权利要求1所述的存储器电路,还包括再同步器,用于 将读取指针与所述第一时钟域的时钟再同步,以及其中,所述比较器(34)用于将再同步的读取指针电路地址与复制写入指针电路(30) 地址进行比较。
3. 根据权利要求1或2所述的存储器电路,其中,所述比较器 (34)包括用于检测所述复制写入指针地址和读取指针地址的相等性的电路。
4. 根据前述任一权利要求所述的存储器电路,其中,还包括第 二比较器,用于将所述读取指针电路地址与所述写入指针电路地址进 行比较以确定所述FIFO存储器的空状态。
5. 根据权利要求4所述的存储器电路,还包括再同步器,用于 将写入指针与所述第二时钟域的时钟再同步,以及其中,所述第二比较器用于将再同步的写入指针电路地址与所述读取指针电路地址进 行比较。
6. 根据权利要求4或5所述的存储器电路,其中,所述比较器 包括用于检测所述写入指针地址和所述读取指针地址的相等性的电 路。
7. —种用于在具有不同时钟域的电路之间进行接口的FIFO存 储器电路,包括FIF0存储器;写入指针电路,由第一时钟域的时钟进行时钟控制,所述写入 指针电路控制被写入数据的存储单元;以及读取指针电路,由第二时钟域的时钟进行时钟控制,所述读取 指针电路控制从其中读取数据的存储单元,其中,所述读取指针电路和所述写入指针电路都使用格雷编码; 以及其中,所述存储器电路还包括第一转换电路(40),用于将读取 指针电路地址转换成一位热码信号,并用于控制FIFO存储器的读取 地址;以及其中,读取指针电路格雷编码值和写入指针电路格雷编码 值被用于获取所述FIFO存储器的空状态信息和满状态信息。
8. 根据权利要求7所述的存储器电路,其中,所述第一转换电 路(40)包括具有多个AND门(62)的逻辑电路结构、和具有0R树(64)的逻辑电路结构。
9. 根据权利要求7或8所述的存储器电路,还包括第二转换电 路(50),用于将写入指针电路地址转换为一位热码信号,并用于控 制所述FIFO存储器的写入地址。
全文摘要
一种用于在具有不同时钟域的电路之间进行接口的FIFO存储器电路。该电路包括FIFO存储器(10);写入指针电路(16),由第一时钟域的时钟进行时钟控制,所述写入指针电路(16)控制被写入数据的存储单元;以及读取指针电路,由第二时钟域的时钟进行时钟控制,所述读取指针电路控制从其中读取数据的存储单元。读取指针电路和写入指针电路都使用格雷编码。存储器电路还包括复制写入指针电路(30),其写入指针地址与写入指针电路(16)同步地加1,并且其起始写入地址被选择为使得复制写入指针地址比写入指针电路地址落后对应于FIFO存储器(10)大小的多个地址存储单元。比较器(34)将读取指针电路地址与复制写入指针电路地址进行比较以确定FIFO存储器的满状态。
文档编号G06F5/06GK101681249SQ200880016077
公开日2010年3月24日 申请日期2008年5月14日 优先权日2007年5月16日
发明者拉金德拉·库马尔, 森达拉瓦拉丹·兰加拉让, 约翰内斯·布恩斯特拉 申请人:Nxp股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1