CN102819418A - 超细粒度门控时钟的fifo数据存储方法及装置 - Google Patents
超细粒度门控时钟的fifo数据存储方法及装置 Download PDFInfo
- Publication number
- CN102819418A CN102819418A CN201210267344XA CN201210267344A CN102819418A CN 102819418 A CN102819418 A CN 102819418A CN 201210267344X A CN201210267344X A CN 201210267344XA CN 201210267344 A CN201210267344 A CN 201210267344A CN 102819418 A CN102819418 A CN 102819418A
- Authority
- CN
- China
- Prior art keywords
- hyte
- register
- dout
- clock
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Logic Circuits (AREA)
Abstract
本发明公开了一种超细粒度门控时钟的FIFO数据存储方法及装置,方法步骤如下:1)通过多个具有多位寄存器的寄存器位组呈阵列状布置构建数据队列电路;2)在每一个时钟周期判断每一个寄存器位组的内容在下一个时钟周期是否保持不变,如果寄存器位组的内容在下一个时钟周期保持不变则切断所述寄存器位组的输入时钟;如果寄存器位组的内容在下一个时钟周期需要更新则保持所述寄存器位组的输入时钟;装置包括数据输入单元、数据队列电路、门控时钟单元和数据输出单元,数据队列电路由多个具有多位寄存器的寄存器位组呈阵列状布置构成。本发明具有门控粒度细、门控时钟负载低、门电路速度快、功耗低的优点。
Description
技术领域
本发明涉及集成电路芯片设计领域,具体涉及一种体系结构级和电路级低功耗的超细粒度门控时钟的FIFO数据存储方法及装置。
背景技术
FIFO(First In and First Out,先进先出)数据队列是集成电路芯片中广泛使用电路结构,用于缓存数据以及控制数据访问的顺序,它的构建有两种方式:基于SRAM构建和基于寄存器构建,前者面积小但是速度慢,后者面积大但是速度快。在高速芯片设计过程中,为了降低访问FIFO数据队列的延迟,满足芯片的设计频率要求,FIFO数据队列必须采用寄存器构建,因此如何降低FIFO数据队列功耗成为了高速芯片低功耗设计中的重要问题之一。门控时钟是指一个时钟信号与另外一个非时钟信号作逻辑输出的时钟。门控时钟技术通过关闭芯片上不工作电路的时钟以实现节省电路功耗的目的。在门控时钟技术中,驱动时钟的逻辑仅包含一个“与”门或一个“或”门,如果采用任何附加逻辑会导致在某些工作状态下出现竞争、产生毛刺。门控时钟通过一个使能信号控制时钟的开关。当电路不工作时可以关闭时钟,整个***处于非激活状态,这样就能够在某种程度上降低电路功耗。
传统的FIFO数据队列低功耗设计技术主要面向基于SRAM构建的FIFO数据队列,功耗控制技术包括读写指针采用格雷码编码、SRAM采用低功耗SRAM、SRAM的读写使能采用门控时钟、SRAM中的存储单元使用位线隔离、门控电压等技术。对于高性能芯片来说,某些关键部件如交叉开关的缓存队列等,具有规模不大、但是对访问速度要求高的特点。在这些场合,SRAM的访问速度已经不能满足要求,必须采用速度更快的寄存器搭建FIFO数据队列。
发明内容
本发明要解决的技术问题是提供一种门控粒度细、门控时钟负载低、门电路速度快、功耗低的超细粒度门控时钟的FIFO数据存储方法及装置。
为了解决上述技术问题,本发明采用的技术方案为:
一种超细粒度门控时钟的FIFO数据存储方法,其实施步骤如下:
1)通过多个具有多位寄存器的寄存器位组呈阵列状布置构建数据队列电路,所述寄存器位组沿着所述数据队列电路的宽度方向形成寄存器项,所述寄存器位组沿着所述数据队列电路的深度方向形成位组阵列,在输入数据时将FIFO输入数据按照所述寄存器位组的位宽分割成位数相等的多个部分并输入各个位组阵列,在输出数据时读取所述位组阵列末端的寄存器位组的输出数据;
2)在每一个时钟周期判断每一个寄存器位组的内容在下一个时钟周期是否保持不变,如果寄存器位组的内容在下一个时钟周期保持不变则切断所述寄存器位组的输入时钟;如果寄存器位组的内容在下一个时钟周期需要更新则保持所述寄存器位组的输入时钟。
作为本发明超细粒度门控时钟的FIFO数据存储方法的进一步改进:
所述步骤2)中判断每一个寄存器位组的内容在下一个时钟周期是否保持不变的详细步骤如下:
2.1)为每一个寄存器位组标记数据有效状态;
2.2)获取数据队列电路的写使能命令和读使能命令;
2.3)根据所述写使能命令、读使能命令、寄存器位组在当前时钟周期的数据有效状态以及所述位组阵列中相邻寄存器位组在当前时钟周期的数据有效状态维护每一个所述寄存器位组在下一个时钟周期的数据有效状态;
2.4)根据所述写使能命令、读使能命令、寄存器位组在当前时钟周期的数据有效状态以及所述位组阵列中相邻寄存器位组在当前时钟周期的数据有效状态判断每一个所述寄存器位组在下一个时钟周期是否需要被选择;根据所述读使能命令以及所述位组阵列中的下一个寄存器位组对应的数据有效状态判断每一个寄存器位组在下一个时钟周期是否需要被移位;如果任意一个寄存器位组在下一个时钟周期需要被选择或者被移位,则判断所述寄存器位组的内容在下一个时钟周期需要更新;如果任意一个寄存器位组在下一个时钟周期既不需要被选择也不需要被移位,则判断寄存器位组的当前内容在下一个时钟周期保持不变。
所述步骤2.3)中根据式(A1)和式(A2)维护每一个寄存器位组在下一个时钟周期的数据有效状态;
v0_din=(~v0_dout & wr_en) | (v0_dout & wr_en & rd_en) | (v0_dout & ~wr_en) | (v1_dout & wr_en) (A1)
vi_din = (v(i-1)_dout & wr_en & ~rd_en) | (vi_dout & wr_en & rd_en) | (vi_dout & ~rd_en) | (v(i+1)_dout & rd_en) (A2)
式(A1)和式(A2)中,vi_din为位组阵列中第i个寄存器位组在下一个时钟周期的数据有效状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列中第i个寄存器位组在当前时钟周期的数据有效状态,i为寄存器项的编号且i∈[1,N-1],N为寄存器项的数目。
所述步骤2.4)根据式(A3)和式(A4)判断每一个寄存器位组在下一个时钟周期是否需要被选择;
sel[0]=wr_en & ((~v1_dout & v0_dout & rd_en) | ~v0_dout); (A3)
sel[i]=wr_en & ((~v(i+1)_dout & vi_dout & rd_en) | (~vi_dout & v(i-1)_dout & ~rd_en)); (A4)
式(A3)和式(A4)中,sel[i]为位组阵列中第i个寄存器位组在下一个时钟周期的被选择状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列中第i个寄存器位组在当前时钟周期的数据有效状态;
所述步骤2.4)中判断寄存器位组在下一个时钟周期是否需要被移位是指根据式(A5)
shift[i]=v(i+1)_dout & rd_en (A5)
判断每一个寄存器位组在下一个时钟周期是否需要被移位;式(A5)中,shift[i]为位组阵列中第i个寄存器位组在下一个时钟周期的被移位状态,&为与运算符,rd_en为读使能命令、v(i+1)_dout为位组阵列中第i+1个寄存器位组在当前时钟周期的数据有效状态;
式(A4)中,i为寄存器项的编号且i∈[1,N-1],式(A5)中,i为寄存器项的编号且i∈[0,N-1],N为寄存器项的数目。
本发明还提供一种超细粒度门控时钟的FIFO数据存储装置,包括数据输入单元、数据队列电路、门控时钟单元和数据输出单元,所述数据队列电路由多个具有多位寄存器的寄存器位组呈阵列状布置构成,所述寄存器位组沿着所述数据队列电路的宽度方向形成寄存器项,所述寄存器位组沿着所述数据队列电路的深度方向形成位组阵列,所述数据输入单元分别与各个寄存器位组的输入端相连,所述门控时钟单元分别与各个寄存器位组的时钟输入端相连,所述位组阵列尾部的寄存器位组的输出端与所述数据输出单元相连,每一个所述位组阵列还包括一个用于判断每一个寄存器位组的内容在下一个时钟周期是否保持不变的寄存器监控电路,所述寄存器监控电路的输出端分别与数据输入单元的控制端、门控时钟单元的控制端相连。
作为本发明超细粒度门控时钟的FIFO数据存储装置的进一步改进:
所述寄存器位组中设有用于标记数据有效状态的有效信号寄存器,所述寄存器监控电路包括用于维护所述有效信号寄存器状态的位组状态生成单元、用于判断所述寄存器位组在下一个时钟周期是否需要被选择的位组选择单元、用于判断所述寄存器位组在下一个时钟周期是否需要被移位的位组移位单元、用于判断所述寄存器位组在下一个时钟周期是否保持不变的位组保持单元,所述位组状态生成单元根据写使能命令、读使能命令、有效信号寄存器的数据有效状态维护每一个寄存器位组在下一个时钟周期的数据有效状态;所述位组选择单元根据写使能命令、读使能命令、有效信号寄存器的数据有效状态输出每一个所述寄存器位组在下一个时钟周期是否需要被选择;所述位组移位单元根据读使能命令以及有效信号寄存器的数据有效状态输出每一个寄存器位组在下一个时钟周期是否需要被移位;所述位组保持单元根据所述位组选择单元输出的寄存器位组在下一个时钟周期是否需要被选择、位组移位单元输出的寄存器位组在下一个时钟周期是否需要被移位来输出寄存器位组在下一个时钟周期是否保持不变的状态,所述位组保持单元的输出端通过门控时钟单元与每一个寄存器位组的时钟输入相连;当寄存器位组的内容在下一个时钟周期保持不变时所述位组保持单元通过门控时钟单元切断所述寄存器位组的输入时钟;当寄存器位组的内容下一个时钟周期需要更新时所述位组保持单元通过门控时钟单元保持寄存器位组的输入时钟。
所述位组状态生成单元、位组选择单元、位组移位单元、位组保持单元均为逻辑门电路;
所述位组状态生成单元的逻辑门电路表达式如式(A1)和式(A2)所示:
v0_din=(~v0_dout & wr_en) | (v0_dout & wr_en & rd_en) | (v0_dout & ~wr_en) | (v1_dout & wr_en) (A1)
vi_din = (v(i-1)_dout & wr_en & ~rd_en) | (vi_dout & wr_en & rd_en) | (vi_dout & ~rd_en) | (v(i+1)_dout & rd_en) (A2)
式(A1)和式(A2)中,vi_din为位组状态生成单元输出的位组阵列中第i个寄存器位组中有效信号寄存器在下一个时钟周期的数据有效状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列中第i个寄存器位组中有效信号寄存器的值;
所述位组选择单元的逻辑门电路表达式如式(A3)和式(A4)所示:
sel[0]=wr_en & ((~v1_dout & v0_dout & rd_en) | ~v0_dout); (A3)
sel[i]=wr_en & ((~v(i+1)_dout & vi_dout & rd_en) | (~vi_dout & v(i-1)_dout & ~rd_en)); (A4)
式(A3)和式(A4)中,sel[i]为位组选择单元输出的位组阵列中第i个寄存器位组在下一个时钟周期的被选择状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列中第i个寄存器位组中有效信号寄存器的值;
所述位组移位单元的逻辑门电路表达式如式(A5)所示:
shift[i]=v(i+1)_dout & rd_en (A5)
式(A5)中,shift[i]为位组移位单元输出的位组阵列中第i个寄存器位组在下一个时钟周期的被移位状态,&为与运算符,rd_en为读使能命令、v(i+1)_dout为位组阵列中第i+1个寄存器位组中有效信号寄存器的值;
所述位组保持单元的逻辑门电路表达式如式(A6)所示:
hold[i]=~sel[i] & ~shift[i] (A6)
式(A6)中,hold[i]为所述位组保持单元输出的位组阵列中第i个寄存器位组在下一个时钟周期是否保持不变的状态,sel[i]为位组阵列中第i个寄存器位组在下一个时钟周期的被选择状态,shift[i]为位组阵列中第i个寄存器位组在下一个时钟周期的被移位状态,~为取反运算符,&为与运算符;
式(A2)和式(A4)中,i为寄存器项(22)的编号且i∈[1,N-1],式(A5)和式(A6)中,i为寄存器项的编号且i∈[0,N-1],N为寄存器项的数目。
所述数据输入单元包括与寄存器位组一一对应的多路选择器,所述多路选择器的输出端与对应的寄存器位组的输入端相连,所述多路选择器的输入端分别与外部信号输入端、对应的寄存器位组的输出端相连、对应的寄存器位组在同一位组阵列中的上一个寄存器位组的输出端相连。
门控时钟单元包括依次相连的时钟源、一级门控时钟单元和二级门控时钟单元,所述二级门控时钟单元包括用于控制每一个寄存器位组时钟通断的位组门控时钟模块,所述位组门控时钟模块(321的输入端与一级门控时钟单元相连,所述位组门控时钟模块与寄存器位组一一对应,所述位组门控时钟模块的控制端与所述寄存器监控电路相连,所述位组门控时钟模块的输出端与对应寄存器位组的时钟输入端相连;
所述数据输出单元包括输出控制模块和至少两个输出使能门控寄存器,所述输出控制模块与所述位组阵列一一对应,所述输出控制模块的输入端与对应位组阵列尾部的寄存器位组相连,所述输出控制模块的控制端与输出使能门控寄存器的输出端相连,所述输出使能门控寄存器的输出端分别与至少一个输出控制模块相对应,所述输出使能门控寄存器的输入端用于输入预读使能命令,所述二级门控时钟单元还包括与输出使能门控寄存器一一对应的输出门控时钟模块,所述输出使能门控寄存器的时钟输入端与所述输出门控时钟模块相连。
本发明超细粒度门控时钟的FIFO数据存储方法具有下述优点:
1、本发明通过多个具有多位寄存器的寄存器位组呈阵列状布置构建数据队列电路,构建以寄存器位组作为最小单元的超细粒度门控时钟结构,根据每一个寄存器位组的内容在下一个时钟周期是否保持不变控制寄存器位组的输入时钟,门控时钟的粒度进一步细化到寄存器位组级别,粒度比现有技术更细,不仅能够对队列中每一个寄存器项的时钟进行门控,而且能够对每一个寄存器项中的每一个寄存器位组的时钟独立地进行门控,能够在更细的粒度上控制对寄存器的时钟进行门控,降低了门控时钟的负载,在降低功耗的同时提高了门控电路的工作速度。
2、本发明进一步根据寄存器位组在当前时钟周期的数据有效状态、写使能命令和读使能命令判断当前寄存器位组是否需要被选择或者被移位,进而根据选择、移位判断检测寄存器位组的内容在下一个时钟周期是否保持不变,能够控制新写入FIFO的数据将要放入FIFO数据队列的位置,因此不需要传统的基于SRAM的FIFO数据队列中的读指针、写指针等控制电路,能够实现在控制门控时钟的同时控制数据队列电路的读写,降低了逻辑规模和复杂度。
本发明超细粒度门控时钟的FIFO数据存储装置由于具有与本发明超细粒度门控时钟的FIFO数据存储方法相应的结构,因此本发明超细粒度门控时钟的FIFO数据存储装置也具备上述本发明超细粒度门控时钟的FIFO数据存储方法相对应的优点。
附图说明
图1为本发明实施例的结构示意图。
图2为本发明实施例中寄存器监控电路的结构示意图。
图3为本发明实施例中位组状态生成单元的电路原理示意图。
图4为本发明实施例中位组选择单元的电路原理示意图。
图5为本发明实施例中位组移位单元的电路原理示意图。
图6为本发明实施例中位组保持单元的电路原理示意图。
图7为本发明实施例中队列空满判断单元的电路原理示意图。
图8为本发明实施例中门控时钟单元的结构示意图。
图例说明: 11、多路选择器; 21、寄存器位组;211、有效信号寄存器;22、寄存器项;23、位组阵列; 30、时钟源;31、一级门控时钟单元;32、二级门控时钟单元;321、位组门控时钟模块;322、输出门控时钟模块; 41、输出控制模块;42、输出使能门控寄存器;5、寄存器监控电路;51、位组状态生成单元;52、位组选择单元;53、位组移位单元;54、位组保持单元;55、队列空满判断单元。
具体实施方式
本实施例超细粒度门控时钟的FIFO数据存储方法的实施步骤如下:
1)通过多个具有多位寄存器的寄存器位组呈阵列状布置构建数据队列电路,寄存器位组沿着数据队列电路的宽度方向形成寄存器项,寄存器位组沿着数据队列电路的深度方向形成位组阵列,在输入数据时将FIFO输入数据按照寄存器位组的位宽分割成位数相等的多个部分并输入各个位组阵列,在输出数据时读取位组阵列末端的寄存器位组的输出数据;
2)在每一个时钟周期判断每一个寄存器位组的内容在下一个时钟周期是否保持不变,如果寄存器位组的内容在下一个时钟周期保持不变则切断寄存器位组的输入时钟;如果寄存器位组的内容在下一个时钟周期需要更新则保持寄存器位组的输入时钟。
步骤2)中判断每一个寄存器位组的内容在下一个时钟周期是否保持不变的详细步骤如下:
2.1)为每一个寄存器位组标记数据有效状态;
2.2)获取数据队列电路的写使能命令和读使能命令;
2.3)根据写使能命令、读使能命令、寄存器位组在当前时钟周期的数据有效状态以及位组阵列中相邻寄存器位组在当前时钟周期的数据有效状态维护每一个寄存器位组在下一个时钟周期的数据有效状态;
2.4)根据写使能命令、读使能命令、寄存器位组在当前时钟周期的数据有效状态以及位组阵列中相邻寄存器位组在当前时钟周期的数据有效状态判断每一个寄存器位组在下一个时钟周期是否需要被选择(即接收FIFO入口的新值);根据读使能命令以及位组阵列中的下一个寄存器位组对应的数据有效状态判断每一个寄存器位组在下一个时钟周期是否需要被移位(即移入后继寄存器位组的值);如果任意一个寄存器位组在下一个时钟周期需要被选择或者被移位,则判断寄存器位组的内容在下一个时钟周期需要更新;如果任意一个寄存器位组在下一个时钟周期既不需要被选择也不需要被移位,则判断寄存器位组的当前内容在下一个时钟周期保持不变。
步骤2.3)中根据式(A1)和式(A2)维护每一个寄存器位组在下一个时钟周期的数据有效状态;
v0_din=(~v0_dout & wr_en) | (v0_dout & wr_en & rd_en) | (v0_dout & ~wr_en) | (v1_dout & wr_en) (A1)
vi_din = (v(i-1)_dout & wr_en & ~rd_en) | (vi_dout & wr_en & rd_en) | (vi_dout & ~rd_en) | (v(i+1)_dout & rd_en) (A2)
式(A1)和式(A2)中,vi_din为位组阵列中第i个寄存器位组在下一个时钟周期的数据有效状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列中第i个寄存器位组在当前时钟周期的数据有效状态,i为寄存器项的编号且i∈[1,N-1],N为寄存器项的数目。
步骤2.4)根据式(A3)和式(A4)判断每一个寄存器位组在下一个时钟周期是否需要被选择;
sel[0]=wr_en & ((~v1_dout & v0_dout & rd_en) | ~v0_dout); (A3)
sel[i]=wr_en & ((~v(i+1)_dout & vi_dout & rd_en) | (~vi_dout & v(i-1)_dout & ~rd_en)); (A4)
式(A3)和式(A4)中,sel[i]为位组阵列中第i个寄存器位组在下一个时钟周期的被选择状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列中第i个寄存器位组在当前时钟周期的数据有效状态;
步骤2.4)中判断寄存器位组在下一个时钟周期是否需要被移位是指根据式(A5)
shift[i]=v(i+1)_dout & rd_en (A5)
判断每一个寄存器位组在下一个时钟周期是否需要被移位;式(A5)中,shift[i]为位组阵列中第i个寄存器位组在下一个时钟周期的被移位状态,&为与运算符,rd_en为读使能命令、v(i+1)_dout为位组阵列中第i+1个寄存器位组在当前时钟周期的数据有效状态;
上述式(A4)中,i为寄存器项的编号且i∈[1,N-1],式(A5)中,i为寄存器项的编号且i∈[0,N-1],N为寄存器项的数目。
如图1所示,本实施例超细粒度门控时钟的FIFO数据存储装置包括数据输入单元、数据队列电路、门控时钟单元和数据输出单元,数据队列电路由多个具有多位寄存器的寄存器位组21(Bits Group,简称BG)呈阵列状布置构成,寄存器位组21沿着数据队列电路的宽度方向形成寄存器项22(Register Item,简称RI),寄存器位组21沿着数据队列电路的深度方向形成位组阵列23(Bits Group Array,简称BG_ARRAY),数据输入单元分别与各个寄存器位组21的输入端相连,门控时钟单元分别与各个寄存器位组21的时钟输入端相连,位组阵列23尾部的寄存器位组21的输出端与数据输出单元相连,每一个位组阵列23还包括一个用于判断每一个寄存器位组21的内容在下一个时钟周期是否保持不变的寄存器监控电路5,寄存器监控电路5的输出端分别与数据输入单元的控制端、门控时钟单元的控制端相连。本实施例的数据队列电路的数据输入输出的基本单位为寄存器位组21,寄存器位组21也是门控时钟单元实施门控时钟控制的最小单元,从而以寄存器位组21为基本粒度形成超细粒度门控时钟结构。本实施例的超细粒度门控时钟结构能够对每一个寄存器项22中的每一个寄存器位组21的时钟独立地进行门控,可以选择打开或关闭每一个寄存器位组21的时钟,不活动的寄存器位组21的时钟可以选择被关闭;以寄存器位组21为粒度进行时钟门控能够降低门控时钟电路的实际负载,提高门控时钟电路中负载电容的充、放电速度,从而减少门控时钟开启和关闭时间。
数据输入单元包括与寄存器位组21一一对应的多路选择器11,多路选择器11的输出端与对应的寄存器位组21的输入端相连,多路选择器11的输入端分别与外部信号输入端、对应的寄存器位组21的输出端相连、对应的寄存器位组21在同一位组阵列23中的上一个寄存器位组21的输出端相连。
如图1所示,本实施例使用4个寄存器项通过串行连接构建位宽为128的数据队列电路,数据队列电路的深度为4,数据队列电路一共有4个寄存器项22(RI0—RI3),每个寄存器项22的位宽均为128位,每个寄存器项22分为8个寄存器位组21,每个寄存器位组21是一个16位寄存器。数据队列电路队列头的数据总是固定放在RI0,每当从队列中读出一个寄存器项22,则后继的寄存器项22需要依次向队列头移动。假设队列中仅RI0—RI2存放有效数据,队列头为RI0,队列尾为RI2。从RI0中读出数据后,RI1中的内容需要移动到RI0中,RI2中的内容移动到RI1中,有效数据变为RI0—RI1,队列尾由之前的RI2变为RI1。若又收到一个新的写请求,新数据将写到RI2中,作为新的队列尾。图中的BGxy代表一个基本的寄存器位组21,其中x(x∈[0,3])是寄存器位组21所在寄存器项22的编号,y(y∈[0,7])是寄存器位组21所在寄存器项22中的位组编号。每个寄存器项22中的第i(i∈[0,7])个寄存器位组21构成一个位组阵列23(BG_ARRAYi,i∈[0,7])。每一个寄存器位组21都使用一个单独的门控时钟l1clk_m[n],其中m(m∈[0,7])是寄存器位组21所在寄存器项22中的位组编号,n(n∈[0,3])是寄存器位组21所在寄存器项22的编号。例如BG01代表第0个寄存器项22的第一个寄存器位组21,它属于第1个位组阵列BG_ARRAY1,使用的门控时钟为l1clk1[0]。队列输入的第[15:0]位(din[15:0])可以被输入到属于BG_ARRAY0的BG30,BG20,BG10和BG00四个位组中的某一个,取决于队列尾的位置;队列输出的第[15:0]位(dout[15:0])固定地从BG00获得。每一个寄存器位组21的输入端都有三个输入来源:(1)新的输入数据;(2)后继寄存器项22的输出;(3)自己的输出,通过寄存器位组21选择其中的一个。例如BG01的输入端的三个来源分别是:din[31:16],BG11的输出,BG01的输出。
如图1和图2所示,寄存器位组21中设有用于标记数据有效状态的有效信号寄存器211,寄存器监控电路5包括用于维护有效信号寄存器211状态的位组状态生成单元51、用于判断寄存器位组21在下一个时钟周期是否需要被选择的位组选择单元52、用于判断寄存器位组21在下一个时钟周期是否需要被移位的位组移位单元53、用于判断寄存器位组21在下一个时钟周期是否保持不变的位组保持单元54,位组状态生成单元51根据写使能命令、读使能命令、有效信号寄存器211的数据有效状态维护每一个寄存器位组21在下一个时钟周期的数据有效状态;位组选择单元52根据写使能命令、读使能命令、有效信号寄存器211的数据有效状态输出每一个寄存器位组21在下一个时钟周期是否需要被选择;位组移位单元53根据读使能命令以及有效信号寄存器211的数据有效状态输出每一个寄存器位组21在下一个时钟周期是否需要被移位;位组保持单元54根据位组选择单元52输出的寄存器位组21在下一个时钟周期是否需要被选择、位组移位单元53输出的寄存器位组21在下一个时钟周期是否需要被移位来输出寄存器位组21在下一个时钟周期是否保持不变的状态,位组保持单元54的输出端通过门控时钟单元与每一个寄存器位组21的时钟输入相连;当寄存器位组21的内容在下一个时钟周期保持不变时位组保持单元54通过门控时钟单元切断寄存器位组21的输入时钟;当寄存器位组21的内容下一个时钟周期需要更新时位组保持单元54通过门控时钟单元保持寄存器位组21的输入时钟。
本实施例中有效信号寄存器211的位宽为1位,每一个寄存器位组21的位数可以根据需要采用不同的位宽,位宽大小与数据队列电路的访问速度和设计要求相关,输入数据队列电路的数据被平均分配到各个位组阵列23中,数据队列电路输出的数据为各个位组阵列23尾部的寄存器位组21输出的数据拼接而成。
位组状态生成单元51、位组选择单元52、位组移位单元53、位组保持单元54、队列空满判断单元55均为逻辑门电路,此外也可以采用其他的模拟或者数字处理电路。寄存器监控电路5实现对数据队列电路中各个位组阵列23(图中以BG_ARRAY0为例)的状态进行动态监控的机制,寄存器监控电路5以寄存器位组21为粒度实现寄存器状态的动态监控,能够降低控制信号的负载。寄存器监控电路5能够监控对位组阵列23的每一次读或者写操作,根据每个位组阵列23中有效信号寄存器211的当前状态,确定该位组阵列23中哪些寄存器位组21在下一个时钟沿到来时会被访问,哪些寄存器位组21的值保持不变,对每一个寄存器位组21输入端的多路选择器11产生一组控制信号:选择(sel)、移位(shift)和保持(hold)。某个寄存器位组21的选择信号有效表示当前进入FIFO的数据需要被写入到该寄存器位组21中;移位信号有效表示该寄存器位组21的后继寄存器位组21的值需要被写入到该寄存器位组21中;保持信号有效表示该寄存器位组21的内容保持不变。当寄存器位组21的内容保持不变时,可以通过门控时钟单元关闭该寄存器位组21的时钟。
以图1中BG_ARRAY0中的各寄存器位组BG30、BG20、BG10和BG00进行控制为例,BG_ARRAY0中的有效信号寄存器211一共有4个,用V3,V2,V1和V0标识,分别用于存储寄存器位组BG30、BG20、BG10和BG00的有效位信息V30,V20,V10和V00。
寄存器监控电路5通过FIFO写使能命令(wr_en)、FIFO读使能命令(rd_en)和当前有效信号寄存器211的输出(v3_dout,v2_dout,v1_dout和v0_dout)产生对各寄存器位组21的控制信号:BG0_sel[3:0]、BG0_shift[3:0]和BG0_hold[3:0]。BG0_sel[i]、BG0_shift[i]和BG0_hold[i](其中i∈[0,3])控制位组阵列BG_ARRAY0中的第i个寄存器位组21输入端的多路选择器11进行输入数据选择,BG0_hold[3:0]还用于控制位组门控时钟模块321产生到各寄存器位组21的门控时钟l1clk_0[3:0]。另外,寄存器监控电路5还根据当前状态产生下一个时钟周期时有效信号寄存器211的输入值(v3_din,v2_din,v1_din和v0_din)、FIFO队列的空信号(empty)和满信号(full)。
寄存器监控电路5各个子单元的输入输出关系如下:位组状态生成单元51、位组选择单元52、位组保持单元54的输入均包括BG_ARRAY0中所有的有效信号寄存器211的输出、数据队列电路的写使能命令和读使能命令;位组移位单元53的输入包括BG_ARRAY0中所有的有效信号寄存器211的输出和数据队列电路的读使能命令;队列空满判断单元55的输入仅仅包括BG_ARRAY0中所有的有效信号寄存器211的输出信号。位组状态生成单元51的输出作为BG_ARRAY0中有效信号寄存器211的输入;位组选择单元52、位组移位单元53、位组保持单元54的输出BG0_sel、BG0_shift和BG0_hold作为BG_ARRAY0中各寄存器位组21的多路选择器11的控制信号,另外位组保持单元54的输出BG0_hold还作为位组门控时钟模块321的输入信号,用于控制门控时钟的产生。
参见图3,位组状态生成单元51的逻辑门电路表达式如式(A1)和式(A2)所示:
v0_din=(~v0_dout & wr_en) | (v0_dout & wr_en & rd_en) | (v0_dout & ~wr_en) | (v1_dout & wr_en) (A1)
vi_din = (v(i-1)_dout & wr_en & ~rd_en) | (vi_dout & wr_en & rd_en) | (vi_dout & ~rd_en) | (v(i+1)_dout & rd_en) (A2)
式(A1)和式(A2)中,vi_din为位组状态生成单元51输出的位组阵列23中第i个寄存器位组21中有效信号寄存器211在下一个时钟周期的数据有效状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列23中第i个寄存器位组21中有效信号寄存器211的值。
以图2中BG_ARRAY0为例,BG_ARRAY0中的位组状态生成单元51用于产生v0_din—v3_din,更新对应的有效信号寄存器211的值。由于寄存器项RI0位于FIFO数据队列的队列头,v0_din和vi_din(i代表寄存器项22的编号且i∈[1,N-1],N为寄存器项22的数目)的产生电路略有区别:
(a)对应式(A1),为位组状态生成单元51产生v0_din的逻辑示意图,此时位组状态生成单元51的输入端分别与rd_en、wr_en、v0_dout和v1_dout相连;
(b)对应式(A2),为位组状态生成单元51产生vi_din的逻辑示意图,此时位组状态生成单元51的输入端分别与rd_en、wr_en、v(i-1)_dout、v(i-1)_dout和v(i+1)_dout相连,特殊情况是当i=N-1时,电路中的v(i+1)_dout信号接0。本实施例中寄存器项22的数目N=4,v0_din—v3_din生成电路的逻辑表达式为:v0_din=(~v0_dout & wr_en) | (v0_dout & wr_en & rd_en) | (v0_dout & ~wr_en) | (v1_dout & wr_en);v1_din = (v0_dout & wr_en & ~rd_en) | (v1_dout & wr_en & rd_en) | (v1_dout & ~rd_en) | (v2_dout & rd_en);v2_din = (v1_dout & wr_en & ~rd_en) | (v2_dout & wr_en & rd_en) | (v2_dout & ~rd_en) | (v3_dout & rd_en);v3_din = (v2_dout & wr_en & ~rd_en) | (v3_dout & wr_en & rd_en) | (v3_dout & ~rd_en)。
参见图4,位组选择单元52的逻辑门电路表达式如式(A3)和式(A4)所示:
sel[0]=wr_en & ((~v1_dout & v0_dout & rd_en) | ~v0_dout); (A3)
sel[i]=wr_en & ((~v(i+1)_dout & vi_dout & rd_en) | (~vi_dout & v(i-1)_dout & ~rd_en)); (A4)
式(A3)和式(A4)中,sel[i]为位组选择单元52输出的位组阵列23中第i个寄存器位组21在下一个时钟周期的被选择状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列23中第i个寄存器位组21中有效信号寄存器211的值。
以图2中BG_ARRAY0为例,BG_ARRAY0中的位组选择单元52用于产生BG0_sel[0]—BG0_sel[3](图4中用sel[0]—sel[3]简化表示)。由于寄存器项RI0位于FIFO数据队列的队列头,sel[0]与sel[i](i代表寄存器项的编号且i∈[1,N-1],N为寄存器项22的数目)的产生电路也略有区别:
(a)对应式(A3),为位组选择单元52产生sel[0]的逻辑示意图,此时位组选择单元52的输入端分别与rd_en、wr_en、v1_dout和v0_dout相连;
(b)对应式(A4),为位组选择单元52产生sel[i]的逻辑示意图,此时位组选择单元52的输入端分别与rd_en、wr_en、v(i-1)_dout、vi_dout和v(i+1)_dout相连。
特殊情况是当i=N-1时,电路中的v(i+1)_dout信号接0。本实施例中寄存器项22的数目N=4,BG0_sel[0]—BG0_sel[3]生成电路的逻辑表达式为:sel[0]=wr_en & ((~v1_dout & v0_dout & rd_en) | ~v0_dout);sel[1]=wr_en & ((~v2_dout & v1_dout & rd_en) | (~v1_dout & v0_dout & ~rd_en));sel[2]=wr_en & ((~v3_dout & v2_dout & rd_en) | (~v2_dout & v1_dout & ~rd_en));sel[3]=wr_en & ((v3_dout & rd_en) | (~v3_dout & v2_dout & ~rd_en))。
参见图5,位组移位单元53的逻辑门电路表达式如式(A5)所示:
shift[i]=v(i+1)_dout & rd_en (A5)
式(A5)中,shift[i]为位组移位单元53输出的位组阵列23中第i个寄存器位组21在下一个时钟周期的被移位状态,&为与运算符,rd_en为读使能命令、v(i+1)_dout为位组阵列23中第i+1个寄存器位组21中有效信号寄存器211的值。
以图2中BG_ARRAY0为例,BG_ARRAY0中的位组移位单元53用于产生BG0_shift[0]—BG0_shift[3],图5中用shift[0]—shift[3]简化表示。位组移位单元53产生移位信号shift[i](i代表寄存器项22的编号且i∈[0,N-1],N为寄存器项22的数目)时,其输入信号为rd_en、vi+1_dout;当i=N-1时,电路中的v(i+1)_dout信号接0。本实施例中寄存器项22的数目N=4,BG0_shift[0]—BG0_shift[3]生成电路的逻辑表达式为:shift[0]=v1 & rd_en;shift[1]=v2 & rd_en;shift[2]=v3 & rd_en;shift[3]=0。
参见图6,位组保持单元54的逻辑门电路表达式如式(A6)所示:
hold[i]=~sel[i] & ~shift[i] (A6)
式(A6)中,hold[i]为位组保持单元54输出的位组阵列23中第i个寄存器位组21在下一个时钟周期是否保持不变的状态,sel[i]为位组阵列23中第i个寄存器位组21在下一个时钟周期的被选择状态,shift[i]为位组阵列23中第i个寄存器位组21在下一个时钟周期的被移位状态,~为取反运算符,&为与运算符。
位组保持单元54用于产生位组保持信号,根据位组选择单元52、位组移位单元53的输出结果进行逻辑处理:如果被控制的寄存器位组21被选择或者被移位,则判断其内容在下一个时钟周期需要更新;如果被控制的寄存器位组21既不被选择也不被移位,则判断其内容在下一个时钟周期保持不变。以图2中BG_ARRAY0为例,BG_ARRAY0中的位组保持单元54用于产生BG0_hold[0]—BG0_hold[3](图6中用hold [0]—hold[3]简化表示)。位组保持单元54根据输入的sel[i]和shift[i]决定产生hold[i]信号(i代表寄存器项22的编号且 i∈[0,N-1],N为寄存器项22的数目)。本实施例中寄存器项22的数目N=4,BG0_hold[0]—BG0_hold[3]生成电路的逻辑表达式为:hold[0]=~sel[0] & ~shift[0];shift[1]= ~sel[1] & ~shift[1];shift[2]= ~sel[2] & ~shift[2];shift[3]= ~sel[3] & ~shift[3]。
式(A2)和式(A4)中,i为寄存器项22的编号且i∈[1,N-1],式(A5)和式(A6)中,i为寄存器项22的编号且i∈[0,N-1],N为寄存器项22的数目。
参见图7,当位组阵列23中所有有效信号寄存器211的有效位均为1时,表示队列满,队列空满判断单元55输出full信号;当位组阵列23中所有有效信号寄存器211的有效位均为0时,表示队列空,队列空满判断单元55输出empty信号。
如图8所示,门控时钟单元包括依次相连的时钟源30(clk_root)、一级门控时钟单元31(clk_gen)和二级门控时钟单元32,二级门控时钟单元32包括用于控制每一个寄存器位组21时钟通断的位组门控时钟模块321,位组门控时钟模块321的输入端与一级门控时钟单元31相连,位组门控时钟模块321与寄存器位组21一一对应,位组门控时钟模块321的控制端与寄存器监控电路5相连,位组门控时钟模块321的输出端与对应寄存器位组21的时钟输入端相连。
本实施例中,数据输出单元包括输出控制模块41和至少两个输出使能门控寄存器42,输出控制模块41与位组阵列23一一对应,输出控制模块41的输入端与对应位组阵列23尾部的寄存器位组21相连,输出控制模块41的控制端与输出使能门控寄存器42的输出端相连,输出使能门控寄存器42的输出端分别与至少一个输出控制模块41相对应,输出使能门控寄存器42的输入端用于输入预读使能命令(rd_en_pre),预读使能命令(rd_en_pre)比fifo的读使能命令早一个时钟节拍发出,二级门控时钟单元32还包括与输出使能门控寄存器42一一对应的输出门控时钟模块322,输出使能门控寄存器42的时钟输入端与输出门控时钟模块322相连。本实施例的数据输出单元包括输出控制模块41和两个输出使能门控寄存器42,8个输出控制模块41被平均分为两组,每一组输出控制模块41受不同的输出使能门控寄存器42产生的独立的读使能信号,两个输出使能门控寄存器42分别输出rd_en_a和rd_en_b两个控制信号,分别控制一组输出控制模块41,其中rd_en_a控制dout[63:0],rd_en_b控制dout[127:64],当这两个信号为0时,队列的输出为全0。两个输出使能门控寄存器42分别输入的时钟信号为l1clka和l1clkb,当没有对数据队列的读请求时,l1clka和l1clkb被关闭以降低功耗。本实施例通过使用两个独立的输出使能门控寄存器42控制输出控制模块41能够分摊读使能信号的负载,提高电路速度。
如图8所示,时钟源30(clk_root)产生的时钟为clk。FIFO使能信号(fifo_en)用于控制一级门控时钟单元31(clk_gen)产生第一级门控时钟l2clk,当fifo_en无效时,整个FIFO的时钟均被关闭;当fifo_en有效时,一级门控时钟单元31(clk_gen)输出时钟信号l2clk,l2clk再通过各个位组门控时钟模块321产生超细粒度的门控时钟:FIFO预读使能rd_en_pre信号用于控制输出门控时钟模块322产生l1clka和l1clkb,l1clka和l1clkb信号输出到输出使能门控寄存器42。对于4深度、128位宽的FIFO数据队列,位组阵列BG_ARRAYi(i代表寄存器项22的编号且i∈[0,N-1],N为寄存器项22的数目)对应的寄存器监控电路5产生的控制信号BGi_hold[3:0]分别用于控制位组门控时钟模块321产生到BG_ARRAYi中各位组的门控时钟l1clk_i[3:0],位组阵列BG_ARRAY0对应的寄存器监控电路5产生的控制信号BG0_hold[3:0]分别用于控制位组门控时钟模块321产生到BG_ARRAY0中各位组的门控时钟l1clk_0[3:0]。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种超细粒度门控时钟的FIFO数据存储方法,其特征在于其实施步骤如下:
1)通过多个具有多位寄存器的寄存器位组呈阵列状布置构建数据队列电路,所述寄存器位组沿着所述数据队列电路的宽度方向形成寄存器项,所述寄存器位组沿着所述数据队列电路的深度方向形成位组阵列,在输入数据时将FIFO输入数据按照所述寄存器位组的位宽分割成位数相等的多个部分并输入各个位组阵列,在输出数据时读取所述位组阵列末端的寄存器位组的输出数据;
2)在每一个时钟周期判断每一个寄存器位组的内容在下一个时钟周期是否保持不变,如果寄存器位组的内容在下一个时钟周期保持不变则切断所述寄存器位组的输入时钟;如果寄存器位组的内容在下一个时钟周期需要更新则保持所述寄存器位组的输入时钟。
2.根据权利要求1所述的超细粒度门控时钟的FIFO数据存储方法,其特征在于,所述步骤2)中判断每一个寄存器位组的内容在下一个时钟周期是否保持不变的详细步骤如下:
2.1)为每一个寄存器位组标记数据有效状态;
2.2)获取数据队列电路的写使能命令和读使能命令;
2.3)根据所述写使能命令、读使能命令、寄存器位组在当前时钟周期的数据有效状态以及所述位组阵列中相邻寄存器位组在当前时钟周期的数据有效状态维护每一个所述寄存器位组在下一个时钟周期的数据有效状态;
2.4)根据所述写使能命令、读使能命令、寄存器位组在当前时钟周期的数据有效状态以及所述位组阵列中相邻寄存器位组在当前时钟周期的数据有效状态判断每一个所述寄存器位组在下一个时钟周期是否需要被选择;根据所述读使能命令以及所述位组阵列中的下一个寄存器位组对应的数据有效状态判断每一个寄存器位组在下一个时钟周期是否需要被移位;如果任意一个寄存器位组在下一个时钟周期需要被选择或者被移位,则判断所述寄存器位组的内容在下一个时钟周期需要更新;如果任意一个寄存器位组在下一个时钟周期既不需要被选择也不需要被移位,则判断寄存器位组的当前内容在下一个时钟周期保持不变。
3.根据权利要求2所述的超细粒度门控时钟的FIFO数据存储方法,其特征在于:所述步骤2.3)中根据式(A1)和式(A2)维护每一个寄存器位组在下一个时钟周期的数据有效状态;
v0_din=(~v0_dout & wr_en) | (v0_dout & wr_en & rd_en) | (v0_dout & ~wr_en) | (v1_dout & wr_en) (A1)
vi_din = (v(i-1)_dout & wr_en & ~rd_en) | (vi_dout & wr_en & rd_en) | (vi_dout & ~rd_en) | (v(i+1)_dout & rd_en) (A2)
式(A1)和式(A2)中,vi_din为位组阵列中第i个寄存器位组在下一个时钟周期的数据有效状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列中第i个寄存器位组在当前时钟周期的数据有效状态,i为寄存器项的编号且i∈[1,N-1],N为寄存器项的数目。
4.根据权利要求3所述的超细粒度门控时钟的FIFO数据存储方法,其特征在于:所述步骤2.4)根据式(A3)和式(A4)判断每一个寄存器位组在下一个时钟周期是否需要被选择;
sel[0]=wr_en & ((~v1_dout & v0_dout & rd_en) | ~v0_dout); (A3)
sel[i]=wr_en & ((~v(i+1)_dout & vi_dout & rd_en) | (~vi_dout & v(i-1)_dout & ~rd_en)); (A4)
式(A3)和式(A4)中,sel[i]为位组阵列中第i个寄存器位组在下一个时钟周期的被选择状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列中第i个寄存器位组在当前时钟周期的数据有效状态;
所述步骤2.4)中判断寄存器位组在下一个时钟周期是否需要被移位是指根据式(A5)
shift[i]=v(i+1)_dout & rd_en (A5)
判断每一个寄存器位组在下一个时钟周期是否需要被移位;式(A5)中,shift[i]为位组阵列中第i个寄存器位组在下一个时钟周期的被移位状态,&为与运算符,rd_en为读使能命令、v(i+1)_dout为位组阵列中第i+1个寄存器位组在当前时钟周期的数据有效状态;
式(A4)中,i为寄存器项的编号且i∈[1,N-1],式(A5)中,i为寄存器项的编号且i∈[0,N-1],N为寄存器项的数目。
5.一种超细粒度门控时钟的FIFO数据存储装置,其特征在于:包括数据输入单元、数据队列电路、门控时钟单元和数据输出单元,所述数据队列电路由多个具有多位寄存器的寄存器位组(21)呈阵列状布置构成,所述寄存器位组(21)沿着所述数据队列电路的宽度方向形成寄存器项(22),所述寄存器位组(21)沿着所述数据队列电路的深度方向形成位组阵列(23),所述数据输入单元分别与各个寄存器位组(21)的输入端相连,所述门控时钟单元分别与各个寄存器位组(21)的时钟输入端相连,所述位组阵列(23)尾部的寄存器位组(21)的输出端与所述数据输出单元相连,每一个所述位组阵列(23)还包括一个用于判断每一个寄存器位组(21)的内容在下一个时钟周期是否保持不变的寄存器监控电路(5),所述寄存器监控电路(5)的输出端分别与数据输入单元的控制端、门控时钟单元的控制端相连。
6.根据权利要求5所述的超细粒度门控时钟的FIFO数据存储装置,其特征在于:所述寄存器位组(21)中设有用于标记数据有效状态的有效信号寄存器(211),所述寄存器监控电路(5)包括用于维护所述有效信号寄存器(211)状态的位组状态生成单元(51)、用于判断所述寄存器位组(21)在下一个时钟周期是否需要被选择的位组选择单元(52)、用于判断所述寄存器位组(21)在下一个时钟周期是否需要被移位的位组移位单元(53)、用于判断所述寄存器位组(21)在下一个时钟周期是否保持不变的位组保持单元(54),所述位组状态生成单元(51)根据写使能命令、读使能命令、有效信号寄存器(211)的数据有效状态维护每一个寄存器位组(21)在下一个时钟周期的数据有效状态;所述位组选择单元(52)根据写使能命令、读使能命令、有效信号寄存器(211)的数据有效状态输出每一个所述寄存器位组(21)在下一个时钟周期是否需要被选择;所述位组移位单元(53)根据读使能命令以及有效信号寄存器(211)的数据有效状态输出每一个寄存器位组(21)在下一个时钟周期是否需要被移位;所述位组保持单元(54)根据所述位组选择单元(52)输出的寄存器位组(21)在下一个时钟周期是否需要被选择、位组移位单元(53)输出的寄存器位组(21)在下一个时钟周期是否需要被移位来输出寄存器位组(21)在下一个时钟周期是否保持不变的状态,所述位组保持单元(54)的输出端通过门控时钟单元与每一个寄存器位组(21)的时钟输入相连;当寄存器位组(21)的内容在下一个时钟周期保持不变时所述位组保持单元(54)通过门控时钟单元切断所述寄存器位组(21)的输入时钟;当寄存器位组(21)的内容下一个时钟周期需要更新时所述位组保持单元(54)通过门控时钟单元保持寄存器位组(21)的输入时钟。
7.根据权利要求6所述的超细粒度门控时钟的FIFO数据存储装置,其特征在于:所述位组状态生成单元(51)、位组选择单元(52)、位组移位单元(53)、位组保持单元(54)均为逻辑门电路;
所述位组状态生成单元(51)的逻辑门电路表达式如式(A1)和式(A2)所示:
v0_din=(~v0_dout & wr_en) | (v0_dout & wr_en & rd_en) | (v0_dout & ~wr_en) | (v1_dout & wr_en) (A1)
vi_din = (v(i-1)_dout & wr_en & ~rd_en) | (vi_dout & wr_en & rd_en) | (vi_dout & ~rd_en) | (v(i+1)_dout & rd_en) (A2)
式(A1)和式(A2)中,vi_din为位组状态生成单元(51)输出的位组阵列(23)中第i个寄存器位组(21)中有效信号寄存器(211)在下一个时钟周期的数据有效状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列(23)中第i个寄存器位组(21)中有效信号寄存器(211)的值;
所述位组选择单元(52)的逻辑门电路表达式如式(A3)和式(A4)所示:
sel[0]=wr_en & ((~v1_dout & v0_dout & rd_en) | ~v0_dout); (A3)
sel[i]=wr_en & ((~v(i+1)_dout & vi_dout & rd_en) | (~vi_dout & v(i-1)_dout & ~rd_en)); (A4)
式(A3)和式(A4)中,sel[i]为位组选择单元(52)输出的位组阵列(23)中第i个寄存器位组(21)在下一个时钟周期的被选择状态,~为取反运算符,&为与运算符,|为或运算符,rd_en为读使能命令、wr_en为写使能命令,vi_dout为位组阵列(23)中第i个寄存器位组(21)中有效信号寄存器(211)的值;
所述位组移位单元(53)的逻辑门电路表达式如式(A5)所示:
shift[i]=v(i+1)_dout & rd_en (A5)
式(A5)中,shift[i]为位组移位单元(53)输出的位组阵列(23)中第i个寄存器位组(21)在下一个时钟周期的被移位状态,&为与运算符,rd_en为读使能命令、v(i+1)_dout为位组阵列(23)中第i+1个寄存器位组(21)中有效信号寄存器(211)的值;
所述位组保持单元(54)的逻辑门电路表达式如式(A6)所示:
hold[i]=~sel[i] & ~shift[i] (A6)
式(A6)中,hold[i]为所述位组保持单元(54)输出的位组阵列(23)中第i个寄存器位组(21)在下一个时钟周期是否保持不变的状态,sel[i]为位组阵列(23)中第i个寄存器位组(21)在下一个时钟周期的被选择状态,shift[i]为位组阵列(23)中第i个寄存器位组(21)在下一个时钟周期的被移位状态,~为取反运算符,&为与运算符;
式(A2)和式(A4)中,i为寄存器项(22)的编号且i∈[1,N-1],式(A5)和式(A6)中,i为寄存器项(22)的编号且i∈[0,N-1],N为寄存器项(22)的数目。
8.根据权利要求5或6或7所述的超细粒度门控时钟的FIFO数据存储装置,其特征在于:所述数据输入单元包括与寄存器位组(21)一一对应的多路选择器(11),所述多路选择器(11)的输出端与对应的寄存器位组(21)的输入端相连,所述多路选择器(11)的输入端分别与外部信号输入端、对应的寄存器位组(21)的输出端相连、对应的寄存器位组(21)在同一位组阵列(23)中的上一个寄存器位组(21)的输出端相连。
9.根据权利要求8所述的超细粒度门控时钟的FIFO数据存储装置,其特征在于:门控时钟单元包括依次相连的时钟源(30)、一级门控时钟单元(31)和二级门控时钟单元(32),所述二级门控时钟单元(32)包括用于控制每一个寄存器位组(21)时钟通断的位组门控时钟模块(321),所述位组门控时钟模块(321)的输入端与一级门控时钟单元(31)相连,所述位组门控时钟模块(321)与寄存器位组(21)一一对应,所述位组门控时钟模块(321)的控制端与所述寄存器监控电路(5)相连,所述位组门控时钟模块(321)的输出端与对应寄存器位组(21)的时钟输入端相连。
10.根据权利要求9所述的超细粒度门控时钟的FIFO数据存储装置,其特征在于:所述数据输出单元包括输出控制模块(41)和至少两个输出使能门控寄存器(42),所述输出控制模块(41)与所述位组阵列(23)一一对应,所述输出控制模块(41)的输入端与对应位组阵列(23)尾部的寄存器位组(21)相连,所述输出控制模块(41)的控制端与输出使能门控寄存器(42)的输出端相连,所述输出使能门控寄存器(42)的输出端分别与至少一个输出控制模块(41)相对应,所述输出使能门控寄存器(42)的输入端用于输入预读使能命令,所述二级门控时钟单元(32)还包括与输出使能门控寄存器(42)一一对应的输出门控时钟模块(322),所述输出使能门控寄存器(42)的时钟输入端与所述输出门控时钟模块(322)相连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210267344.XA CN102819418B (zh) | 2012-07-31 | 2012-07-31 | 超细粒度门控时钟的fifo数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210267344.XA CN102819418B (zh) | 2012-07-31 | 2012-07-31 | 超细粒度门控时钟的fifo数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102819418A true CN102819418A (zh) | 2012-12-12 |
CN102819418B CN102819418B (zh) | 2015-01-07 |
Family
ID=47303546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210267344.XA Active CN102819418B (zh) | 2012-07-31 | 2012-07-31 | 超细粒度门控时钟的fifo数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102819418B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407809A (zh) * | 2014-11-04 | 2015-03-11 | 盛科网络(苏州)有限公司 | 多通道fifo缓冲器及其控制方法 |
CN111124364A (zh) * | 2020-02-10 | 2020-05-08 | 成都烨软科技有限公司 | 一种不同级数伪随机序列的产生装置及其产生方法 |
CN111414148A (zh) * | 2020-04-03 | 2020-07-14 | 中国人民解放军国防科技大学 | 面向高性能处理器的混合型fifo数据存储方法及装置 |
CN112036102A (zh) * | 2019-05-15 | 2020-12-04 | 北京兆易创新科技股份有限公司 | 一种多位寄存器的时钟控制方法和装置 |
CN114219699A (zh) * | 2022-02-22 | 2022-03-22 | 绍兴埃瓦科技有限公司 | 匹配代价处理方法及电路和代价聚合处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060082400A1 (en) * | 2004-10-19 | 2006-04-20 | Matsushita Electric Industrial Co., Ltd. | Register circuit, and synchronous integrated circuit that includes a register circuit |
CN101329589A (zh) * | 2008-07-28 | 2008-12-24 | 北京中星微电子有限公司 | 一种低功耗读写寄存器的控制***及方法 |
CN101686041A (zh) * | 2008-09-27 | 2010-03-31 | 深圳市芯海科技有限公司 | 一种门控时钟电路及门控时钟信号产生方法 |
CN102610269A (zh) * | 2012-01-17 | 2012-07-25 | 中国科学院半导体研究所 | 一种多读单写片内存储器 |
-
2012
- 2012-07-31 CN CN201210267344.XA patent/CN102819418B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060082400A1 (en) * | 2004-10-19 | 2006-04-20 | Matsushita Electric Industrial Co., Ltd. | Register circuit, and synchronous integrated circuit that includes a register circuit |
CN101329589A (zh) * | 2008-07-28 | 2008-12-24 | 北京中星微电子有限公司 | 一种低功耗读写寄存器的控制***及方法 |
CN101686041A (zh) * | 2008-09-27 | 2010-03-31 | 深圳市芯海科技有限公司 | 一种门控时钟电路及门控时钟信号产生方法 |
CN102610269A (zh) * | 2012-01-17 | 2012-07-25 | 中国科学院半导体研究所 | 一种多读单写片内存储器 |
Non-Patent Citations (3)
Title |
---|
DAODE ZHANG,ET AL.: "Design of High-Speed Parallel Data Interface Based on ARM & FPGA", 《JOURNAL OF COMPUTERS》, vol. 7, no. 3, 31 March 2012 (2012-03-31), pages 804 - 809 * |
FREDERIE RIVOALLO N: "采用智能时钟门控技术降低动态开关功耗", 《技术前沿》, no. 9, 30 September 2010 (2010-09-30), pages 48 - 49 * |
王伊蕾: "自动门控时钟技术在聚芯SoC1000C中的应用", 《嵌入式技术》, no. 2, 31 December 2009 (2009-12-31), pages 35 - 38 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407809A (zh) * | 2014-11-04 | 2015-03-11 | 盛科网络(苏州)有限公司 | 多通道fifo缓冲器及其控制方法 |
CN104407809B (zh) * | 2014-11-04 | 2018-03-30 | 盛科网络(苏州)有限公司 | 多通道fifo缓冲器的控制方法 |
CN112036102A (zh) * | 2019-05-15 | 2020-12-04 | 北京兆易创新科技股份有限公司 | 一种多位寄存器的时钟控制方法和装置 |
CN111124364A (zh) * | 2020-02-10 | 2020-05-08 | 成都烨软科技有限公司 | 一种不同级数伪随机序列的产生装置及其产生方法 |
CN111414148A (zh) * | 2020-04-03 | 2020-07-14 | 中国人民解放军国防科技大学 | 面向高性能处理器的混合型fifo数据存储方法及装置 |
CN114219699A (zh) * | 2022-02-22 | 2022-03-22 | 绍兴埃瓦科技有限公司 | 匹配代价处理方法及电路和代价聚合处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102819418B (zh) | 2015-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101329589B (zh) | 一种低功耗读写寄存器的控制***及方法 | |
CN102981776B (zh) | 双倍数据率虚拟静态随机存取存储器及其控制器、存取与操作方法、写入与读取方法 | |
CN102819418B (zh) | 超细粒度门控时钟的fifo数据存储方法及装置 | |
US8289048B2 (en) | State transitioning clock gating | |
CN102487272A (zh) | 集成电路、时钟门控电路和方法 | |
CN101493717A (zh) | 一种用于soc的动态多时钟低功耗ahb总线的设计方法 | |
CN112965689B (zh) | 一种基于源同步的分布式异步fifo数据交互方法及fifo结构 | |
CN1504900B (zh) | 自内存读取数据的控制电路及其方法 | |
CN106354679A (zh) | 用于高速通信的接口电路和包括其的*** | |
CN102610269B (zh) | 一种多读单写片内存储器 | |
CN108233894A (zh) | 一种基于双模冗余的低功耗双边沿触发器 | |
CN100524269C (zh) | 一种突发机制下实现数据读写控制的方法和装置 | |
CN101236776B (zh) | 一种串行接口快闪存储器及其设计方法 | |
CN102279899B (zh) | 对精简标准单元库进行优化的方法 | |
EP1478994B1 (en) | Transferring data between differently clocked busses | |
CN101689851A (zh) | 逻辑状态捕捉电路 | |
CN1980062A (zh) | 一种降低fpga芯片功耗的电路和方法 | |
CN104184456A (zh) | 用于io接口的低频多相位差分时钟树型高速低功耗串行器 | |
CN103412847A (zh) | 基于fpga的usb转多路链路接口电路 | |
CN111506529B (zh) | 一种应用于flash的高速spi指令应答电路 | |
CN100375074C (zh) | 8位嵌入式cpu的ambatm***接口电路 | |
CN100565443C (zh) | 一种基于ctgal的绝热fifo电路 | |
CN206282270U (zh) | 一种处理器 | |
CN101813971B (zh) | 处理器及其内置存储器 | |
Satyaraj et al. | Utilization of power gating technique for the analysis of MPSoC based on dual feedback edge triggered flip flop |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |