掌桥专利:专业的专利平台
掌桥专利
首页

一种延迟可配置的异步FIFO电路

文献发布时间:2023-06-19 11:49:09


一种延迟可配置的异步FIFO电路

技术领域

本发明涉及集成电路技术领域,特别涉及应用于数字上变频系统中的一种延迟可配置的异步FIFO电路。

背景技术

数字上变频技术是一种将基带的信号搬移到某一中频信号,通过数字模拟转换器将其转换成模拟信号输出,用以提高数据的采样率的技术。采用该技术实现数字上变频电路的特点为:可编程、跳频快、分辨率高、调频精度高等,因此成为当今频率合成技术中的主要技术之一,广泛应用于移动通讯,军用和商用雷达系统等通讯领域。

数字上变频电路在应用中需要与FPGA,或其他电路之间进行信号的传输,在芯片设计中需要额外的接口电路,将高速信号转换成低速的信号便于上变频电路处理。而接口电路和数字上变频电路的工作时钟处于两个不同的时钟域,这两个时钟域往往并不同步,需要额外的时钟同步电路来调整时序才能正确传输数据。异步FIFO结构是常用的时钟同步电路,但一般异步FIFO只能同步延迟量为FIFO深度以内的写时钟周期的数据,而当读写时钟之间的偏差小于一个写时钟周期的时候无法同步,且同步延迟量设定后不可配置。对于数字上变频电路,一般是将低频信号制到高频信号,DAC的时钟往往要快于接口的时钟,DAC时钟周期与读写时钟之间的相位偏差有相应的倍数关系。

因此亟需一种延迟可配置异步FIFO电路,能够同步至少一个DAC时钟周期,至多与FIFO深度相同的写时钟周期的时序差异,同时也要适用于需要同步非固定延迟量的场合。

发明内容

本发明的目的在于提供一种延迟可配置的异步FIFO电路,以解决背景技术中的问题。

为解决上述技术问题,本发明提供了一种延迟可配置的异步FIFO电路,包括存储模块、FIFO读写控制模块、FIFO延迟计算模块和FIFO延迟配置模块;

所述存储模块根据控制信号的指示为数据提供相应的存储空间,当写入FIFO的速率和读取FIFO的速率相同时,实时占用的存储空间大小保持不变,在时钟的有效沿到达时,向所述存储模块写入或读取一个单元的数据;

所述FIFO读写控制模块用于产生FIFO的读写地址、读写指针及同步读写指针,同时产生FIFO满空标识反馈给系统,保证数据正确传输;

所述FIFO延迟计算模块根据读写指针和外部FPGA提供的写时钟及所述异步FIFO电路本身提供的读时钟的相位关系,计算当前FIFO延迟,并反馈当前延迟值至寄存器由SPI读出;

所述FIFO延迟配置模块,由SPI可配置需要设置的延迟值,FIFO延迟配置模块提取新配置的延迟值,与实时延迟值做比较,根据比较的结果进行调整,将FIFO的延迟配置到所设置的值。

可选的,所述存储模块为一个双端RAM,FIFO深度为2

可选的,所述FIFO读写控制模块的读写地址位宽为n,范围为0~2

可选的,所述FIFO读写控制模块对空满状态的判断方法为:将读指针与同步到读时钟域的写指针比较,如果两者相等,则判断为空;将写指针与同步到写时钟域的读指针比较,如果两者最高位相反,其余位相等,则判断为满。

可选的,所述FIFO延迟计算模块对小数延迟的计算方法为:通过不同插值倍数m确定小数延迟的范围为0~m-1个DAC的时钟周期,然后利用m/2个与读时钟同频的采样时钟对写时钟采样,确定写时钟与读时钟的相位差;其中m/2个采样时钟之间依次偏移一个DAC时钟周期,读时钟与第一个采样时钟同相,其中m=2,4,8,16……。

可选的,所述FIFO延迟计算模块对整数延迟的计算方法为:用读时钟对格雷码形式的写指针进行同步,将其同步到读时钟域,同步后的写指针与同步时刻读指针之间的差值即为整数延迟。

可选的,所述FIFO延迟配置模块对小数延迟的配置通过调整读时钟的相位实现:采用新配置的延迟值减去当前实时小数延迟延迟值,所得变化量为读时钟需要延迟的DAC时钟周期,从而改变写时钟与读时钟之间的相位差。

可选的,所述FIFO延迟配置模块对整数延迟的设置通过改变读指针的值实现:首先判断小数延迟预设值减去当前小数延迟的正负,结果为正,则读指针变为同步到读时钟域的写指针减去整数延迟的预设值;结果为负,则读指针变为同步到读时钟域的写指针减去整数延迟的预设值再加1,由此改变写指针与读指针的差值。

在本发明提供的延迟可配置的异步FIFO电路中,包含整数延迟和小数延迟。由数字上变频的插值倍数决定FIFO小数延迟的最大允许值,由FIFO存储单元数量决定FIFO整数延迟的最大允许值。根据与读时钟同频,且相位之间固定偏移为DAC时钟周期的采样时钟作为标尺,判断读写时钟相位关系,来获取FIFO小数延迟,其最小单位为输入数据周期除以插值比。通过比较读写指针之间的状态差,来获取FIFO整数延迟,其最小单位为写时钟周期。在此基础上,对FIFO的延迟进行配置以达到目标时序余量。本发明中可设置不同的FIFO延迟值,来配置数据的延迟适用不同的应用环境需求。配置范围为1个DAC时钟周期~(2n-1)个写时钟周期+(m-1)个DAC时钟周期。m,n为可变量,根据具体的设计需求取值。

附图说明

图1是本发明提供的延迟可配置的异步FIFO电路结构图;

图2是8倍插值情况下读写时钟和采样时钟关系示意图;

图3是FIFO小数延迟设计原理框图;

图4是FIFO整数延迟设计原理框图;

图5是FIFO读指针变化流程图。

具体实施方式

以下结合附图和具体实施例对本发明提出的一种延迟可配置的异步FIFO电路作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。

实施例一

本发明提供了一种延迟可配置的异步FIFO电路,其结构如图1所示,包括存储模块1、FIFO读写控制模块2、FIFO延迟计算模块3和FIFO延迟配置模块4。

所述存储模块根据控制信号的指示为数据提供相应的存储空间,当写入FIFO的速率和读取FIFO的速率相同时,实时占用的存储空间大小保持不变,在时钟的有效沿到达时,向所述存储模块写入或读取一个单元的数据;

所述FIFO读写控制模块用于产生FIFO的读写地址、读写指针及同步读写指针,同时产生FIFO满空标识反馈给系统,保证数据正确传输;

所述FIFO延迟计算模块根据读写指针和外部FPGA提供的写时钟及所述异步FIFO电路本身提供的读时钟的相位关系,计算当前FIFO延迟,并反馈当前延迟值至寄存器由SPI读出;

所述FIFO延迟配置模块,由SPI可配置需要设置的延迟值,FIFO延迟配置模块提取新配置的延迟值,与实时延迟值做比较,根据比较的结果进行调整,将FIFO的延迟配置到所设置的值。

所述存储模块为一个双端RAM,FIFO深度为2

所述FIFO读写控制模块的读写地址位宽为n,范围为0~2

所述FIFO延迟计算模块对小数延迟的计算方法为:通过不同插值倍数m确定小数延迟的范围为0~m-1个DAC的时钟周期,然后利用m/2个与读时钟同频的采样时钟对写时钟采样,确定写时钟与读时钟的相位差;其中m/2个采样时钟之间依次偏移一个DAC时钟周期,读时钟与第一个采样时钟同相,其中m=2,4,8,16……。所述FIFO延迟计算模块对整数延迟的计算方法为:用读时钟对格雷码形式的写指针进行同步,将其同步到读时钟域,同步后的写指针与同步时刻读指针之间的差值即为整数延迟。

所述FIFO延迟配置模块对小数延迟的配置通过调整读时钟的相位实现:采用新配置的延迟值减去当前实时小数延迟延迟值,所得变化量为读时钟需要延迟的DAC时钟周期,从而改变写时钟与读时钟之间的相位差。所述FIFO延迟配置模块对整数延迟的设置通过改变读指针的值实现:首先判断小数延迟预设值减去当前小数延迟的正负,结果为正,则读指针变为同步到读时钟域的写指针减去整数延迟的预设值;结果为负,则读指针变为同步到读时钟域的写指针减去整数延迟的预设值再加1,由此改变写指针与读指针的差值。

本发明中可设置不同的FIFO延迟值,来配置数据的延迟适用不同的应用环境需求。配置范围为1个DAC时钟周期~(2n-1)个写时钟周期+(m-1)个DAC时钟周期。m,n为可变量,根据具体的设计需求取值。

该实施方案中插值倍数m设置为2、4、8,读写地址位宽n设置为3,FIFO的深度为8,数据位宽为16位。

所述存储模块1是一个双端口RAM,共有8个存储单元,读写时钟和DAC时钟关系为f

所述FIFO读写控制模块2实现对存储模块的读写操作,读写地址位宽为3,范围为000-111,表示FIFO中的0-7个存储单元。读写指针位宽为4,由读写地址和一位最高有效位组成,最高位用于判断FIFO的空满,范围为0000-1111,在每一个读写时钟控制下环形遍历两次FIFO。当器件上电或复位时,将读指针设置为0,写指针设置为4,保持FIFO最佳时序余量。同时将二进制的读写指针转换为格雷码形式的读写指针,并通过两级寄存器分别同步到另一时钟域,从而可以将不同时钟域的读写指针进行比较,以判断FIFO的空满状态。

FIFO延迟计算模块3实现对当前FIFO延迟的计算。在不同插值倍数下对读写时钟进行不同的分频,利用与读时钟同相和有固定相位偏差的采样时钟对写时钟进行采样,确定写时钟与读之中之间相差几个DAC时钟周期,实现小数延迟的计算。如图2所示为8倍插值情况下读写时钟和采样时钟关系,其中Rd表示小数延迟,即写时钟与读时钟之间的相位差,通过采样时钟PCLK采样求得,采样时钟采样结果对应的小数延迟大小如表1所示。

表1小数延迟计算结果

同时,将格雷码形式的写指针通过两级寄存器同步到读时钟域,用同步后的写指针减去同步时刻的读指针,实现整数延迟的计算。

FIFO延迟配置模块4实现对FIFO延迟值的配置。如图3所示,检测到小数延迟变化后,根据变化值对读时钟延时相应的时钟周期。以8倍插值为例,假设配置前小数延迟为实时值为0,配置新的小数延迟值为100,而在8倍插值时,小数延迟调节范围为1~7个DAC时钟周期,新的小数延迟相比于当前小数延迟增大,变化量为4,因此将读时钟延迟4个DAC周期,增大读写时钟之间的相位差,完成小数延迟的配置。

上述举例为配置小数延迟值大于当前小数延迟值,当情况相反,需要减小小数延迟值时,同样以8倍插值情况下为例,当前小数延迟大小为7个DAC时钟周期,配置新的小数延迟为1个DAC时钟周期,此时变化量为2,将读时钟延迟2个DAC时钟周期,小数延迟变为9个DAC时钟周期,而8倍插值的小数延迟范围0~7个DAC时钟周期,因此在对读时钟延迟第1个DAC时钟周期时,小数延迟值重新变为0,读写时钟相位差之间变为1个写时钟周期,则此时整数延迟在原有基础上增大1,小数延迟变为0,读时钟再延迟1个DAC时钟周期,使小数延迟变为1个DAC时钟周期。针对上述整数延迟由于配置小数延迟而增加的情况,需要再整数配置部分进行修正,才能保证实时FIFO延迟与配置值相同。

通过调整读指针配置整数延迟,如图4所示,检测到整数延迟变化后,根据当前写指针和新配置的整数延迟得到读指针。当小数延迟未对整数延迟产生进位时,新的读指针值为当前写指针减去需要设置的整数延迟值;当产生进位时,使读写指针之间的大小增加1个写时钟周期,整数延迟增大1,则新的读指针应为当前写指针减去需要设置的整数延迟值再加上1,修正进位。图5所示为FIFO读指针变化流程图。

通过将所述FIFO延迟计算模块和所述FIFO延迟配置模块设计结合在一起,即能正确实现FIFO延迟的配置,下面以一个例子说明。假设目前插值为8,FIFO延迟为回读值为51,其中5代表FIFO整数延迟为5个写时钟周期,即读写指针的状态差值为5,1代表FIFO小数延迟为1个DAC时钟周期,即写时钟和读时钟的相位差大小为T

上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

相关技术
  • 一种延迟可配置的异步FIFO电路
  • 一种钟控异步先入先出FIFO存储器的标志电路的标志电路
技术分类

06120113067084