本发明专利技术公开了一种提高先入先出FIFO性能的方法和FIFO电路,其通过三级寄存器的方法实现数据的压入和弹出,由于当第二级或第三级寄存器空闲时,所述第一选择器的输出数据只需要压入空闲的寄存器,因此本发明专利技术不仅能够节省电路面积,而且能够减少关键路径的时延。
【技术实现步骤摘要】
本专利技术涉及通信及计算机领域,尤其涉及提高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性能的方法,其特征在于,包括:在写入数据时,判断第三级寄存器在下一个时钟周期是否为空;如果所述第三级寄存器在下一个时钟周期为空,则从所述第一选择器中选择出数据,并将其传输给所述第三级寄存器;如 果所述第三级寄存器在下一个时钟周期不为空,则判断第二级寄存器在下一个时钟周期是否为空,若为空,则从所述第一选择器中选择出一个数据,并将其传输给第二级寄存器,所述第二级寄存器将数据压入,并弹出数据传输给所述第三级寄存器;若第二级寄存器在下一个时钟周期不为空,则从所述第一选择器中选择出一个数据,并将其传输给第一级寄存器,并当第二级寄存器或第三级寄存器不为满时,从所述第一级寄存器中输出数据给所述第二级寄存器,所述第二级寄存器输出数据给所述第三级寄存器;所述第三级寄存器将数据 压入,以及弹出数据,并传输给第二选择器。
【技术特征摘要】
【专利技术属性】
技术研发人员:余娜敏,
申请(专利权)人:北京中星微电子有限公司,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。