一种数据读取电路的制作方法

文档序号:11199151阅读:395来源:国知局
一种数据读取电路的制造方法与工艺

本发明涉及电子技术领域,尤其涉及一种数据读取电路。



背景技术:

源同步技术是一种低延迟的跨时钟域的同步技术,主要应用于同源同频但不同相位的时钟域之间的数据交互过程。其主要的技术原理是:第一时钟域向第二时钟域发送数据的同时发送随路时钟信号(即第一时钟域的时钟信号),第二时钟域根据随路时钟信号写入数据,然后根据本域的时钟信号(即第二时钟域的时钟信号)读取所写入的数据。具体实现过程可以如图1所示,第一时钟域向第二时钟域同时发送数据和随路时钟信号,第二时钟域中的fifo(firstinfirstout,先入先出)缓存器根据随路时钟信号固定每拍写入数据,然后第二时钟域中的dff(d-typeflip-flop,d触发器)根据本域的时钟信号固定每拍读取数据,由于随路时钟信号与第二时钟域的时钟信号频率相同,因此只要确定了两者的相位差,上述读取数据的方法便是可行的。

目前,通过采用伴随数据同步(datasync)信号的方式可以确定上述相位差。请参阅图2,第一时钟域针对随路时钟信号生成一个datasync信号,第二时钟域可以根据datasync信号推算出本域的时钟信号与随路时钟信号之间的相位差。然而,采用datasync信号的方式,需要额外增加一个用于传输datasync信号的i/o(input/output,输入/输出)接口,增大了硬件的开销,另外,在信号的传输过程中要严格保持datasync信号与数据之间的相位关系,增大了实现上的困难。



技术实现要素:

本发明实施例提供了一种数据读取电路,可以确定随路时钟信号与本域的时钟信号的相位差,进而实现数据读取。

本发明实施例提供了一种数据读取电路,该电路应用于第二时钟域,第二时钟域包括用于写入第一时钟域发送的数据的缓存器和用于读取缓存器输出的 数据的触发器,第一时钟域发送数据的同时发送随路时钟信号,随路时钟信号为第一时钟域的时钟信号。该数据读取电路包括相位差确定模块、时延检测模块以及读取控制模块,相位差确定模块接入随路时钟信号和第二时钟域的时钟信号,相位差确定模块与读取控制模块连接,时延检测模块与读取控制模块连接。其中,相位差确定模块用于确定随路时钟信号和第二时钟域的时钟信号之间的相位差,并将其发送至读取控制模块。时延检测模块用于检测数据从缓存器传输到触发器的时延值,并将其发送至读取控制模块。读取控制模块用于根据相位差和时延值,确定触发器能够读取到缓存器输出的数据的第二时钟域的时钟信号的触发边沿。

在第一种可能实现方式中,所述相位差确定模块包括n个相同的延时器、n+1个相同的d触发器以及相位差确定单元,其中,所述n为大于1的整数,所述n个延时器依次串联,第1个延时器的输入端口接入所述第二时钟域的时钟信号,所述n个延时器产生的延时大于所述第二时钟域的时钟信号的时钟周期,所述n+1个d触发器的输入端口接入所述随路时钟信号,第1个d触发器的时钟端口与所述第1个延时器的输入端口连接,其余n个d触发器的时钟端口依次与所述n个延时器的输出端口连接,所述n+1个d触发器的输出端口与所述相位差确定单元连接,所述相位差确定单元接入所述随路时钟信号,所述相位差确定单元用于根据所述n+1个d触发器的输出结果确定所述随路时钟信号和所述第二时钟域的时钟信号之间的相位差,并将其发送至所述读取控制模块。

结合第一种可能实现方式,在第二种可能实现方式中,所述相位差确定单元具体用于:首先,在所述随路时钟信号的电平下降沿对应的时刻,获取第2至第n+1个d触发器的输出信号的电平,在所述输出信号的电平中,前a个为高电平,中间b个为低电平,后c个为高电平,所述a、b和c为正整数。然后,根据公式计算出随路时钟信号和第二时钟域的时钟信号之间的相位差,其中,λ表示所述相位差。

在第三种可能实现方式中,所述读取控制模块具体用于:若触发器读取缓存器输出的数据的触发边沿为上升沿,则当相位差大于或等于时延值时,将从缓存器写入数据的时刻起第二时钟域的时钟信号的下一个上升沿作为触发器读取数据的时刻,或者,当相位差小于时延值时,根据公式j=(δtmax-λ)/t+2,将 从缓存器写入数据的时刻起第二时钟域的时钟信号的第j个上升沿作为触发器读取数据的时刻,其中,δtmax表示时延值,λ表示相位差,/表示整除符号,t表示第二时钟域的时钟信号的周期。若触发器读取缓存器输出的数据的触发边沿为下降沿,则当相位差大于或等于时延值时,将从缓存器写入数据的时刻起第二时钟域的时钟信号的下一个下降沿作为触发器读取数据的时刻,或者,当相位差小于时延值时,根据公式j=(δtmax-t/2-λ)/t+2,将从缓存器写入数据的时刻起第二时钟域的时钟信号的第j个下降沿作为触发器读取数据的时刻,其中,δtmax表示时延值,λ表示相位差,/表示整除符号,t表示第二时钟域的时钟信号的周期。

结合第一种可能实现方式,在第四种可能实现方式中,所述相位差确定模块还包括开关元件,其中,第1个延时器的输入端口通过开关元件接入第二时钟域的时钟信号,开关元件用于控制第1个延时器的输入端口与第二时钟域的时钟信号的通断。

结合第四种可能实现方式,在第五种可能实现方式中,所述开关元件为内部时钟发生器icg开关。其中,第1个延时器的输入端口与icg开关的输出端口连接,icg开关的输入端口接入第二时钟域的时钟信号,icg开关的使能端口接入使能信号。开关元件具体用于根据使能信号控制第1个延时器的输入端口与第二时钟域的时钟信号的通断。

结合第一种可能实现方式,在第六种可能实现方式中,所述延时器为一个门电路或多个串联的门电路。

结合第二种可能实现方式,在第七种可能实现方式中,所述d触发器为抗亚稳态的d触发器。

由上可见,本发明实施例中的数据读取电路包括相位差确定模块、时延检测模块以及读取控制模块,其中,相位差确定模块可以确定随路时钟信号和本域的时钟信号之间的相位差,时延检测模块可以检测数据在内部传输的时延值,读取控制模块可以根据相位差和时延值确定读取数据的时机,进而实现数据读取。另外,本发明实施例中,除用于传输数据和随路时钟信号以外的i/o接口以外,在两个时钟域之间无需额外增加i/o接口,便可以确定随路时钟信号与本域的时钟信号的相位差,减小了硬件的开销和实现上的困难。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是现有技术中的一种跨时钟域的同步技术的示意图;

图2是现有技术中的另一种跨时钟域的同步技术的示意图;

图3是本发明实施例提供的一种数据读取电路的结构示意图;

图4是本发明实施例提供的一种时延检测模块的结构示意图;

图5是本发明实施例提供的一种信号的时序示意图;

图6是本发明实施例提供的一种数据读取的示意图;

图7是本发明实施例提供的另一种数据读取的示意图;

图8是本发明实施例提供的一种相位差的确定方法的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例应用于跨时钟域的交互场景,该交互场景包括至少两个同源同频但不同相位的时钟域。其中,每个时钟域都可以作为发送端和接收端,作为发送端时向其它时钟域发送数据,作为接收端时接收其它时钟域发送的数据。为了便于理解下文,设定作为发送端的时钟域为第一时钟域,作为接收端的时钟域为第二时钟域,应理解的,由于一个时钟域既可以作为发送端又可以作为接收端,因此第一时钟域和第二时钟域并不是指空间上的两个时钟域,而是指逻辑上的两个时钟域。

图3是本发明实施例提供的一种数据读取电路的结构示意图。

如图3所示本实施例中的第一时钟域向第二时钟域发送数据的同时发送随 路时钟信号,该随路时钟信号为第一时钟域的时钟信号。需要指出的是,由于随路时钟信号从第一时钟域传输到第二时钟域是需要消耗时间的,因而第二时钟域接收到的随路时钟信号与当前第一时钟域实际的时钟信号是存在时延的。

如图3所示本实施例中的第二时钟域包括用于写入第一时钟域发送的数据的缓存器和用于读取缓存器输出的数据的触发器dff。需要指出的是,由于数据和随路时钟信号从第一时钟域传输到第二时钟域的过程会严格保持相位差不变(如通过设计传输线路的长度一致、线路位置相邻等方式保持相位差不变),因而根据随路时钟信号来写入数据是可行的。具体实现过程中,第二时钟域中的缓存器可以为如图3所示的fifo缓存器,fifo缓存器根据随路时钟信号固定每拍写入数据。

如图3所示本实施例中的数据读取电路包括相位差确定模块110、时延检测模块120以及读取控制模块130,相位差确定模块110接入随路时钟信号和第二时钟域的时钟信号,相位差确定模块110与读取控制模块130连接,时延检测模块120与读取控制模块130连接,其中:

相位差确定模块110,用于确定随路时钟信号和第二时钟域的时钟信号之间的相位差,并将其发送至读取控制模块130。具体的,所述相位差确定模块110可以如图4所示进一步包括n个相同的延时器(buf1、buf2、buf3、……、bufn-1和bufn)、n+1个相同的d触发器(dff0、dff1、dff2、……、dffn-1和dffn)以及相位差确定单元,其中,所述n为大于1的整数。

具体实现过程中,buf1的输入端口接入第二时钟域的时钟信号clk_rx,buf1、buf2、buf3、……、bufn-1和bufn依次串联,dff0、dff1、dff2、……、dffn-1和dffn的输入端口d接入随路时钟信号clk_tx,dff0的时钟端口cp与buf1的输入端口连接,dff1、dff2、……、dffn-1和dffn的时钟端口cp依次与buf1、buf2、buf3、……、bufn-1和bufn的输出端口连接,dff0、dff1、dff2、……、dffn-1和dffn的输出端口q与相位差确定单元连接,相位差确定单元接入随路时钟信号,相位差确定单元的输出端口out与读取控制模块130连接。

其中,延时器用于对信号进行相移,buf1、buf2、buf3、……、bufn-1和bufn一级一级地对clk_rx进行相移,分别输出延迟时钟信号clk_rx_dly_1、clk_rx_dly_2、clk_rx_dly_3、……clk_rx_dly_n-1和clk_rx_dly_n,要求这n个延 时器产生的总延时大于clk_rx的时钟周期(即clk_rx_dly_n与clk_rx_dly_0之间的相位差超过360°)。应理解的,d触发器在时钟端口cp检测到电平上升沿时,其输出端口q将输入端口d所接收的信号输出,由于clk_rx与clk_tx只是在相位上存在差别的信号,因而n+1个d触发器的输出端口q0、q1、……、qn-1和qn实际输出的信号可以看作是clk_rx_dly_0、clk_rx_dly_1、clk_rx_dly_2、……clk_rx_dly_n-1和clk_rx_dly_n。

进一步的,相位差确定单元根据n+1个d触发器的输出结果(即q0、q1、……、qn-1和qn输出的信号)确定随路时钟信号和第二时钟域的时钟信号之间的相位差,具体方式如下:

在随路时钟信号的电平下降沿对应的时刻,获取q1、……、qn-1和qn的输出信号的电平,在这些电平中,若前a个为高电平,中间b个为低电平,后c个为高电平所述a、b和c为正整数,则可以根据公式计算出随路时钟信号和第二时钟域的时钟信号之间的相位差,其中,所述λ表示所述相位差。举个例子,假设随路时钟信号clk_tx、第二时钟域的时钟信号clk_rx以及clk_rx_dly_0至clk_rx_dly_n的相位如图5所示,那么在clk_tx的电平下降沿(图5中a所示),对clk_rx_dly_1至clk_rx_dly_n采样的结果为0x111110000000001111(其中“1”表示高电平,“0”表示低电平),进而得到a=5,b=9,c=4,根据“b=9”可知clk_tx从电平下降沿到电平上升沿之间有9个单位延迟,所以clk_tx的一个周期对应的相位为2x9个单位延迟,根据“a=5,b=9”可知clk_rx的电平上升沿距离clk_tx的电平下降沿有5个单位延迟,所以clk_rx的上升沿距离clk_tx的上一个上升沿有9-5个单位延迟,从而得到clk_rx滞后于clk_tx的相位差为((9-5)/2x9)x360°=80°。需要指出的是,也可以在检测到q0的输出为电平上升沿时(图5中b所示),计算随路时钟信号和第二时钟域的时钟信号之间的相位差,具体推导方法本质不变,这里不再赘述,但该实施方式缺点是:需要在随路时钟信号的第2个电平上升沿时,才能获取到q1至qn的输出信号的电平,降低了计算速度。

可选的,相位差确定单元计算随路时钟信号和第二时钟域的时钟信号之间的相位差的过程,可以通过软件实现,也可以通过硬件电路实现,这里不做具体限定。

又可选的,相位差确定模块110还可以如图4所示进一步包括开关元件, 其中,buf1的输入端口通过开关元件接入第二时钟域的时钟信号clk_rx,所述开关元件用于控制buf1的输入端口与clk_rx的通断。进一步的,开关元件为icg(insideclockgenerator,内部时钟发生器)开关,其中,buf1的输入端口与icg开关的输出端口连接,icg开关的输入端口接入clk_rx,所述icg开关的使能端口接入使能信号enable,icg开关用于根据enable控制buf1的输入端口的输入端口与clk_rx的通断。优点在于,开关元件可以在无需确定相位差时关闭电路,实现降低功耗。

又可选的,延时器(buf1、buf2、buf3、……、bufn-1或bufn)为一个门电路或多个串联的门电路。

又可选的,d触发器为抗亚稳态的d触发器,其中,所述亚稳态是指触发器无法在规定时间段内达到一个稳定的状态。优点在于,抗亚稳态的d触发器可以提高电路的稳定性。

时延检测模块120,用于检测数据从缓存器传输到触发器的时延值,并将其发送至读取控制模块130。

具体的,请参阅图3,时延检测模块120检测数据从fifo缓存器的输出端口传输到触发器的输入端口d的时延值。可选的,读取控制模块130检测时延值的过程,可以通过软件实现,也可以通过硬件电路实现,这里不做具体限定。

读取控制模块130,用于根据相位差和时延值,确定触发器能够读取到缓存器输出的数据的第二时钟域的时钟信号的触发边沿。

需要指出的是,触发器的触发边沿根据其种类可以分为上升沿触发和下降沿触发,例如,上升沿触发器的触发边沿为上升沿,当其时钟端口cp检测到电平上升沿时,其输出端口q将输入端口d所接收的信号输出。

一方面,若触发器的触发边沿为上升沿,则当判定上述相位差对应的时间值大于或等于上述时延值时,将从fifo缓存器写入数据的时刻起的第二时钟域的时钟信号的下一个上升沿作为触发器读取数据的时刻。例如,请参阅图6,假设第二时钟域的时钟信号clk_rx的时钟周期是1ns,与随路时钟信号clk_tx的相位差为72°,数据传输的时延值为150ps,那么可以计算得相位差对应的时间值为200ps(=1000ps*72°/360°),由于200ps>150ps,因而将clk_rx的下一个上升沿(图6中圆圈所示)作为读取数据的时刻,便可以实现数据读取。当判定上述相位差对应的时间值小于上述时延值时,根据公式j=(δtmax-λ)/t+2,将 从fifo缓存器写入数据的时刻起第二时钟域的时钟信号的第j个上升沿作为触发器读取数据的时刻,其中,δtmax表示时延值,λ表示相位差,/表示整除符号,t表示第二时钟域的时钟信号的时钟周期。例如,请参阅图7,假设第二时钟域的时钟信号clk_rx的时钟周期是1ns,与随路时钟信号clk_tx的相位差为72°,数据传输的时延值为700ps,那么可以计算得相位差对应的时间值为200ps(=1000ps*72°/360°),由于200ps<700ps,计算得j=(700-200)/1000+2=2,因而将clk_rx的第2个上升沿(图7中圆圈所示)作为读取数据的时刻,便可以实现数据读取。

另一方面,若触发器的触发边沿为下降沿,则当判定上述相位差对应的时间值大于或等于所述时延值时,将从fifo缓存器写入数据的时刻起第二时钟域的时钟信号的下一个下降沿作为触发器读取数据的时刻。当判定上述相位差对应的时间值小于上述时延值时,根据公式j=(δtmax-t/2-λ)/t+2,将从缓存器写入数据的时刻起第二时钟域的时钟信号的第j个下降沿作为fifo触发器读取数据的时刻,其中,δtmax表示时延值,λ表示相位差,/表示整除符号,t表示第二时钟域的时钟信号的周期。

由上可见,本发明实施例中的数据读取电路包括相位差确定模块110、时延检测模块120以及读取控制模块130,其中,相位差确定模块110可以确定随路时钟信号和本域的时钟信号之间的相位差,时延检测模块120可以检测数据在内部传输的时延值,读取控制模块130可以根据相位差和时延值确定读取数据的时机,进而实现数据读取。另外,本发明实施例中,除用于传输数据和随路时钟信号以外的i/o接口以外,在两个时钟域之间无需额外增加i/o接口,便可以确定随路时钟信号与本域的时钟信号的相位差,减小了硬件的开销和实现上的困难。

图8是本发明实施例中一种相位差的确定方法的流程示意图,所述方法可以应用于图3和/或图4所描述的方法中的时延检测模块110。如图所示本实施例中的相位差的确定方法的流程可以包括:

s101,获取随路时钟信号。

s102,对第二时钟域的时钟信号进行n级延迟,得到每一级的延迟时钟信号,其中,所述n为大于1的整数,所述n级延迟所产生的总延时大于所述第 二时钟域的时钟信号的时钟周期。

例如,对第二时钟域的时钟信号clk_rx进行多级延迟,分别得到每一级的延迟时钟信号clk_rx_dly_1、clk_rx_dly_2、clk_rx_dly_3、……clk_rx_dly_n-1和clk_rx_dly_n,clk_rx_dly_n与clk_rx_dly_0之间的相位差超过360°,如图5所示。

需要指出的是,步骤s101和步骤s102不分先后顺序,是同步进行的。

s103,在所述随路时钟信号的电平下降沿对应的时刻,获取所述每一级的延迟时钟信号的电平。

需要指出的是,在获取的多个电平中,前a个为高电平,中间b个为低电平,后c个为高电平,所述a、b和c为正整数。

例如,假设随路时钟信号clk_tx、第二时钟域的时钟信号clk_rx以及clk_rx_dly_1至clk_rx_dly_n的相位如图5所示,那么当检测到clk_tx的电平下降沿(图5中a所示)时,获取clk_rx_dly_1至clk_rx_dly_n的电平为0x111110000000001111(其中“1”表示高电平,“0”表示低电平),得到a=5,b=9,c=4。

s104,根据所述每一级的延迟时钟信号的电平,确定所述随路时钟信号和所述第二时钟域的时钟信号之间的相位差。

可选的,根据公式计算出所述随路时钟信号和所述第二时钟域的时钟信号之间的相位差,其中,所述λ表示所述相位差。

例如,假设a=5,b=9,c=4,根据“b=9”可知clk_tx从电平下降沿到电平上升沿之间有9个单位延迟,所以clk_tx的一个周期对应的相位为2x9个单位延迟,根据“a=5,b=9”可知clk_rx的电平上升沿距离clk_tx的电平下降沿有5个单位延迟,所以clk_rx的上升沿距离clk_tx的上一个上升沿有9-5个单位延迟,从而得到clk_rx滞后于clk_tx的相位差为((9-5)/2x9)x360°=80°。

由上可见,本发明实施例中,对第二时钟域的时钟信号进行n级延迟,得到每一级的延迟时钟信号,再根据在随路时钟信号的电压下降沿时每一级的延迟时钟信号的电平,可以确定随路时钟信号和第二时钟域的时钟信号之间的相位差。

本发明实施例中的数据读取电路包括相位差确定模块、时延检测模块以及 读取控制模块,其中,相位差确定模块可以确定随路时钟信号和本域的时钟信号之间的相位差,时延检测模块可以检测数据在内部传输的时延值,读取控制模块可以根据相位差和时延值确定读取数据的时机,进而实现数据读取。另外,本发明实施例中,除用于传输数据和随路时钟信号以外的i/o接口以外,在两个时钟域之间无需额外增加i/o接口,便可以确定随路时钟信号与本域的时钟信号的相位差,减小了硬件的开销和实现上的困难。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1