公开/公告号CN101017429A
专利类型发明专利
公开/公告日2007-08-15
原文格式PDF
申请/专利权人 北京中星微电子有限公司;
申请/专利号CN200710064252.0
发明设计人 余娜敏;
申请日2007-03-07
分类号G06F5/06(20060101);
代理机构11291 北京同达信恒知识产权代理有限公司;
代理人李欣
地址 100083 北京市海淀区学院路35号世宁大厦15层
入库时间 2023-12-17 18:59:03
法律状态公告日
法律状态信息
法律状态
2014-04-30
未缴年费专利权终止 IPC(主分类):G06F5/06 授权公告日:20090701 终止日期:20130307 申请日:20070307
专利权的终止
2011-03-09
专利权的转移 IPC(主分类):G06F5/06 变更前: 变更后: 登记生效日:20110119 申请日:20070307
专利申请权、专利权的转移
2009-07-01
授权
授权
2007-10-10
实质审查的生效
实质审查的生效
2007-08-15
公开
公开
技术领域
本发明涉及通信及计算机领域,尤其涉及提高FIFO性能的技术。
背景技术
随着芯片集成度、复杂度和功能需求的增加,在很多数字电路系统中,都需要为芯片内部各个功能模块及外围设备提供不同频率和相位的时钟信号。在这些不同时钟域的功能模块之间传递数据时,需要FIFO(First In First Out,先进先出)电路来实现数据地址译码和数据选出。
目前常见的FIFO电路中包括地址译码器和多路选择器,例如如图1所示,提供了一种FIFO电路,其包括:4个4选1的第一选择器;4个16DW(DoubleWord,双字)的寄存器Cell,分别为Cell ,Cell1,Cell2和Cell3;4个16选1的选择器,以及4个4选1的第二选择器。
在数据压入的时候,每一个4选1的第一选择器驱动每个寄存器Cell选择一个DW写到相关的地址内。随着FIFO深度的增加,地址译码器的复杂度也增大,并且所需要的驱动能力也会增大,这样电路面积和时延都增加了不少。
发明内容
本发明提供一种提高FIFO性能的方法和FIFO电路,其不仅能够节省电路面积,而且能够减少关键路径的时延。
本发明通过如下技术方案实现:
本发明提供一种提高先入先出FIFO性能的方法,其包括:
在写入数据时,判断第三级寄存器在下一个时钟周期是否为空;
如果所述第三级寄存器在下一个时钟周期为空,则从所述第一选择器中选择出数据,并将其传输给所述第三级寄存器;
如果所述第三级寄存器在下一个时钟周期不为空,则判断第二级寄存器在下一个时钟周期是否为空,若为空,则从所述第一选择器中选择出一个数据,并将其传输给第二级寄存器,所述第二级寄存器将数据压入,并弹出数据传输给所述第三级寄存器;若第二级寄存器在下一个时钟周期不为空,则从所述第一选择器中选择出一个数据,并将其传输给第一级寄存器,并当第二级寄存器或第三级寄存器不为满时,从所述第一级寄存器中输出数据给所述第二级寄存器,所述第二级寄存器输出数据给所述第三级寄存器;
所述第三级寄存器将数据压入,以及弹出数据,并传输给第二选择器。
其中,所述第一级寄存器和第三级寄存器的深度小于所述第二级寄存器。
本发明还提供一种先入先出FIFO电路,其包括:
第一选择器、第一级寄存器、第二级寄存器、第三级寄存器和第二选择器;
所述第一选择器,用于当所述第三级寄存器在下一个时钟周期为空时,选择出数据给所述第三级寄存器;以及,当所述第三级寄存器在下一个时钟周期不为空,且第二级寄存器在下一个时钟周期为空时,则选择出数据,并将其传输给第二级寄存器;当所述第三级寄存器在下一个时钟周期不为空,且第二级寄存器在下一个时钟周期不为空时,则选择出数据,并将其传输给第一级寄存器;
所述第一级寄存器,用于将所述第一选择器传输的数据压入,并当第二级寄存器或第三级寄存器不为满时,弹出数据;
所述第二级寄存器,用于将所述第一级寄存器所弹出数据,或所述第一选择器传输的数据压入,并在第三级寄存器不为满时弹出数据;
所述第三级寄存器,用于将所述第一级寄存器所弹出数据,或所述第一选择器传输的数据压入,并弹出数据给所述第二选择器。
其中,所述第一级寄存器和所述第三级寄存器的深度小于所述第二级寄存器的深度。
7其中,所述第三级寄存器的深度为1DW。
本发明还提供另一种提高FIFO性能的方法,其包括:
判断第三级寄存器在下一个时钟周期是否为空;
如果所述第三级寄存器在下一个时钟周期为空,则从所述第一选择器中选择出数据,并将其传输给所述第三级寄存器;
如果所述第三级寄存器在下一个时钟周期不为空,则从所述第一选择器中选择出一个数据,并将其传输给第一级寄存器;
判断第三级寄存器在下一个时钟周期是否为空,若为空,则从所述第一级寄存器中输出数据给所述第三级寄存器;若不为空,则从所述第一级寄存器中输出数据给所述第二级寄存器,所述第二级寄存器输出数据给所述第三级寄存器;
所述第三级寄存器将所述第一级寄存器所传输的数据,或所述第一选择器传输的数据,所述第二级寄存器所传输给的数据压入,并弹出数据给所述第二选择器。
其中,所述第一级寄存器和所述第三级寄存器的深度小于所述第二级寄存器的深度。
本发明还提供另一种FIFO电路,其包括:
第一选择器、第一级寄存器、第二级寄存器、第三级寄存器和第二选择器;
所述第一选择器,用于当所述第三级寄存器在下一个时钟周期为空时,选择出数据,并将其传输给所述第三级寄存器;以及,当所述第三级寄存器在下一个时钟周期不为空时,选择出数据,并将其传输给第一级寄存器;
所述第一级寄存器,用于将所述第一选择器传输的数据压入;以及,当第三级寄存器在下一个时钟周期为空时,弹出数据,并将所述数据传输给所述第三级寄存器;以及,当第三级寄存器在下一个时钟周期不为空时,弹出数据,并将所述数据传输给所述第二级寄存器;
所述第二级寄存器,用于将所述第一级寄存器所弹出数据压入,以及,弹出数据,并将所述数据传输给所述第三级寄存器;
所述第三级寄存器,用于将所述第一级寄存器所弹出数据,或所述第一选择器传输的数据,所述第二级寄存器所传输给的数据压入,并弹出数据给所述第二选择器。
其中,所述第一级寄存器和所述第三级寄存器的深度小于所述第二级寄存器的深度。
其中,所述第三级寄存器的深度为1DW。
由上述本发明提供的具体实施方案可以看出,其通过三级寄存器,实现数据压入与弹出,由于当第二级或第三级寄存器空闲时,所述第一选择器的输出数据只需要压入空闲的寄存器,因此当驱动所述空闲寄存器选择一个DW写到相关的地址时,不仅能够节省电路面积,而且能够减少关键路径的时延。
附图说明
图1为现有技术提供的FIFO电路;
图2为本发明提供的第一实施例的工作原理图;
图3为本发明提供的第二实施例的流程图;
图4为本发明提供的第三实施例的工作原理图;
图5为本发明提供的第四实施例的流程图。
具体实施方式
本发明提供的第一实施例是一种FIFO电路,其工作原理如图2所示,包括:
4选1的第一选择器4S1、深度为1DW的第一级寄存器L1、深度为14DW第二级寄存器L2、深度为1DW的第三级寄存器L3,以及4选1的第二选择器4S1;
其中所述第一选择器4S1的输出分别对应第一级寄存器L1的输入、第二级寄存器L2的输入,以及第三级寄存器L3的输入;所述第一级寄存器L1的输出对应第二级寄存器L2的输入;所述第二级寄存器L2的输出对应所述第三级寄存器L3的输入;第三级寄存器L3的输出对应第二选择器4S1的输入。
各个元器件之间的数据传递关系如下:
当所述第三级寄存器在下一个时钟周期为空时,所述第一选择器选择出数据,并将其给所述第三级寄存器;
当所述第三级寄存器在下一个时钟周期不为空,且第二级寄存器在下一个时钟周期为空时,所述第一选择器选择出数据,并将其传输给第二级寄存器;
当所述第三级寄存器在下一个时钟周期不为空,且第二级寄存器在下一个时钟周期不为空时,所述第一选择器选择出数据,并将其传输给第一级寄存器;
所述第一级寄存器将所述第一选择器传输给的数据压入,并当第二级寄存器或第三级寄存器不为满时,弹出数据;
所述第二级寄存器将所述第一级寄存器所弹出的数据,或所述第一选择器传输给的数据压入,并在第三级寄存器不为满时弹出数据;
所述第三级寄存器将所述第一级寄存器所弹出的数据,或所述第一选择器传输给的数据压入,并弹出数据给所述第二选择器。
所述第二选择器按照先入先出的原则,将输入到所述第二选择器中的数据依次输出。
对应所述第一实施例,本发明提供的第二实施例是一种提高FIFO性能的方法,其流程如图3所示,包括:
步骤S101,在写入数据时,判断第三级寄存器在下一个时钟周期是否为空;
如果所述第三级寄存器在下一个时钟周期为空,则执行步骤S102,从所述第一选择器中选择出数据,并将其传输给所述第三级寄存器;然后执行步骤S108。
如果所述第三级寄存器在下一个时钟周期不为空,则执行步骤S103,判断第二级寄存器在下一个时钟周期是否为空;
若第二级寄存器在下一个时钟周期为空,则执行步骤S104,从所述第一选择器中选择出一个数据,并将其传输给第二级寄存器;接下来执行步骤S105,所述第二级寄存器将数据压入,以及弹出数据并传输给所述第三级寄存器;然后执行步骤S108。
若第二级寄存器在下一个时钟周期不为空,则执行步骤S106,从所述第一选择器中选择出一个数据,并将其传输给第一级寄存器;接下来执行步骤S107,当第二级寄存器或第三级寄存器不为满时,从所述第一级寄存器中弹出数据并传输给所述第二级寄存器;当第二级寄存器或第三级寄存器为满时,第一级寄存器就不弹出数据。然后执行步骤S105,即所述第二级寄存器将数据压入,以及弹出数据并传输给所述第三级寄存器;然后执行步骤S108。
步骤S108,所述第三级寄存器将所述第一选择器传输给的数据,或,所述第二级寄存器传输给的数据压入,以及弹出数据,并传输给第二选择器。
步骤S109,所述第二选择器,按照先入先出的原则,将输入到所述第二选择器中的数据依次输出。
第二实施例中的所述第一级寄存器和第三级寄存器小于所述第二级寄存器;其中,所述第三级寄存器的深度可以为1DW。
本发明提供的第三实施例是一种FIFO电路,其工作原理如图4所示,包括:
4选1的第一选择器4S1、深度为1DW的第一级寄存器L1、深度为14DW第二级寄存器L2、深度为1DW的第三级寄存器L3,以及4选1的第二选择器4S1;
其中所述第一选择器4S1的输出分别对应第一级寄存器L1的输入,以及,第三级寄存器L3的输入;所述第一级寄存器L1的输出对应第二级寄存器L2的输入,以及,第三级寄存器L3的输入;所述第二级寄存器L2的输出对应所述第三级寄存器L3的输入;所述第三级寄存器L3的输出对应第二选择器4S1的输入。
各个元器件之间的数据传递关系如下:
第一选择器、第一级寄存器、第二级寄存器、第三级寄存器和第二选择器;
当所述第三级寄存器在下一个时钟周期为空时,所述第一选择器选择出数据,并将其传输给所述第三级寄存器;当所述第三级寄存器在下一个时钟周期不为空时,所述第一选择器选择出数据,并将其传输给第一级寄存器;
所述第一级寄存器将所述第一选择器传输给的数据压入;以及,当第三级寄存器在下一个时钟周期为空时,弹出数据,并将所述数据传输给所述第三级寄存器;以及,当第三级寄存器在下一个时钟周期不为空时,弹出数据,并将所述数据传输给所述第二级寄存器;
所述第二级寄存器,将所述第一级寄存器所弹出给的数据压入,以及,弹出数据,并将所述数据传输给所述第三级寄存器;
所述第三级寄存器,将所述第一级寄存器传输给的数据,或所述第一选择器传输给的数据,或所述第二级寄存器所传输给的数据压入,并弹出数据给所述第二选择器;
所述第二选择器按照先入先出的原则,将输入到所述第二选择器中的数据依次输出。
对应所述第三实施例,本发明提供的第四实施例是一种提高FIFO性能的方法,其流程如图5所示,包括:
步骤S201,判断第三级寄存器在下一个时钟周期是否为空;
如果所述第三级寄存器在下一个时钟周期为空,则执行步骤S202,从所述第一选择器中选择出数据,并将其传输给所述第三级寄存器;然后执行步骤S208。
如果所述第三级寄存器在下一个时钟周期不为空,则执行步骤S203,从所述第一选择器中选择出一个数据,并将其传输给第一级寄存器;然后执行步骤S204。
步骤S204,判断第三级寄存器在下一个时钟周期是否为空;
若为空,则执行步骤S205,从所述第一级寄存器中弹出数据并传输给所述第三级寄存器;
若不为空,则执行步骤S206,从所述第一级寄存器中弹出数据并传输给所述第二级寄存器;
步骤S207,所述第二级寄存器将传输给自己的数据压入,以及弹出数据并传输给所述第三级寄存器;
步骤S208,所述第三级寄存器将所述第一选择器传输给的数据,或所述第一级寄存器传输给的数据,或,所述第二级寄存器传输给的数据压入,以及弹出数据,并传输给第二选择器。
步骤S209,所述第二选择器,按照先入先出的原则,将输入到所述第二选择器中的数据依次输出。
上述实施例中,所述第一级寄存器和所述第三级寄存器的深度小于所述第二级寄存器的深度。所述第三级寄存器可以为1DW。
由上述实施例可以看出,由于当第三级寄存器空闲时,所述第一选择器的输出数据只需要压入第三级寄存器,而第三级寄存器的深度远远小于第二级寄存器的深度,因此第三级寄存器的负载比较小,从而当驱动所述空闲的第三级寄存器选择一个DW写到相关的地址时,所需要的驱动能力也比较小,因此本发明不仅能够节省电路面积,而且能够减少关键路径的时延。
另外,当所述第三级寄存器的深度仅仅为1DW时,无需在所述第三级寄存器与所述第二选择器4S1之间设置其它的选择器,从而能够节省电路面积,并能够减少时延。
下面是在如下实验条件的测量得到现有技术提供的FIFO电路与本发明提供的第一实施例和第三实施例提供的FIFO电路在面积和速度性能数据:
试验条件:
Library: TSMC 130 1ibrary
Clock period: 1.5
Clock uncertainty: 0.3
Clock transition: 0.3
Input delay: 0.5(all inputs)
Output delay 0.5(all outputs)
Driver: 0(all inputs)
Load: 60 AND2X4/A0
现有技术提供的FIFO电路的面积性能数据:
Number of ports: 278
Number of nets: 13549
Number of cells: 12174
Number of references: 171
Combinational area: 73988.827256
Noncombinational area: 29471.725652
Net Interconnect area: undefined(Wire load has zero net area)
Total cell area: 10368.750000
本发明实施例提供的FIFO电路的面积性能数据:
Number of ports: 277
Number of nets: 1937
Number of cells: 1670
Number of references: 121
Combinational area: 36509.083011
Noncombinational area: 30149.220699
Net Interconnect area: undefined(Wire load has zero net area)
Total cell area: 66640.984384
现有技术提供的FIFO电路的速度性能数据Setup timing violation:
Output violation:-0.14
Input violation:-0.08
本发明实施例提供的FIFO电路的速度性能数据Setup timing violation:
Output no violation
Input violation:-0.01
可以看出,本发明的实施例能够减少FIFO电路的面积,以及关键路径的时延,从而能够是的FIFO电路的性能得到加强。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
机译: 先入先出(FIFO)缓冲中间场景非均匀性校正方法
机译: 先入先出(FIFO)缓冲中间场景非均匀性校正方法
机译: 先入先出(FIFO)缓冲中间场景非均匀性校正方法