CN100465934C - 一种在异步时钟域传输数据的装置及其方法 - Google Patents

一种在异步时钟域传输数据的装置及其方法 Download PDF

Info

Publication number
CN100465934C
CN100465934C CNB2006100783219A CN200610078321A CN100465934C CN 100465934 C CN100465934 C CN 100465934C CN B2006100783219 A CNB2006100783219 A CN B2006100783219A CN 200610078321 A CN200610078321 A CN 200610078321A CN 100465934 C CN100465934 C CN 100465934C
Authority
CN
China
Prior art keywords
data
counter
output terminal
links
input end
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.)
Expired - Fee Related
Application number
CNB2006100783219A
Other languages
English (en)
Other versions
CN1983225A (zh
Inventor
吴奇祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2006100783219A priority Critical patent/CN100465934C/zh
Publication of CN1983225A publication Critical patent/CN1983225A/zh
Application granted granted Critical
Publication of CN100465934C publication Critical patent/CN100465934C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种在异步时钟域传输数据的装置以及一种在异步时钟域传输数据的方法。其中发送方位于数据随路时钟域,接收方位于系统工作时钟域,所述方法包括以下步骤:A.发送方在写使能信号有效时,将数据缓存在存储单元中,同时产生一个数据就绪指示信号并发送给接收方;B.接收方在检测到所述数据就绪指示信号边沿时产生数据指示信号;C.根据所述数据指示信号调整第一计数器的相位,并在第一计数器的相位达到预先设定的相位时从存储单元读取数据。本发明实现了数据在异步时钟域之间稳定地传输,并且将传输延迟误差控制在接收方的一个时钟周期内,这样只需要通过提升接收方系统工作时钟的频率就能有效地降低误差的绝对值。

Description

一种在异步时钟域传输数据的装置及其方法
技术领域
本发明涉及数据传输技术领域,特别是一种在异步时钟域传输数据的装置及其方法。
背景技术
在大多数系统中,数据在不同单板之间的传输采用串行方式,而不同单板之间为异步时钟。但是,即使不同单板的异步时钟是同源的,但由于它们是经过不同的锁相环(PLL)或者不同的途径得到的,各自的时钟信号抖动(Jitter)是不同的,而且在任何一个短时间内它们都会存在频差,只是从长时间的统计结果来看是同步到时钟源上的,因此不同单板的两个时钟在一定时间内会出现相位漂移,相位漂移的最大值取决于时钟源、PLL等部件的质量。
目前绝大多数的系统都是使用先进先出存储器(FIFO)来实现在两个时钟域之间传递数据。典型的FIFO为一个双口访问的存储器,如图1所示,FIFO包括存储单元、写地址计数器、读地址计数器、写地址格雷码发生器、读地址格雷码发生器以及清空检测和溢出检测逻辑。其中存储单元用来缓存数据,可以采用随机存取存储器(RAM)或者寄存器实现,它的深度决定了FIFO能够容忍的最大时钟抖动、相位漂移以及频率波动;写地址计数器和读地址计数器用来产生访问存储单元的地址,它们为循环计数器,即地址计数到存储单元的最大地址后从0开始重新计数;写地址格雷码发生器和读地址格雷码发生器,在每写入一个数据或者读出一个数据时就将写地址格雷码和读地址格雷码增加1,并将写地址格雷码或读地址格雷码输入清空检测和溢出检测逻辑;清空检测和溢出检测逻辑根据写地址格雷码和读地址格雷码以及即将发生的读写操作来判断FIFO是否发生了被清空或者溢出了,发出清空指示或溢出指示的信号,读写控制端则根据这些信号作出相应的操作,如停止写或者停止读。
FIFO可以在频率发生偏差或读写时钟的抖动和相位漂移时,将数据稳定地从一个时钟域传到另一个时钟域上。但当FIFO的读、写端口中任一端口发生异常导致读、写地址发生跳变时,FIFO是不能够检测出来的,也不可能调整数据在FIFO的传输延迟,因此FIFO不能满足对传输延迟误差敏感的应用场合。
发明内容
有鉴于此,本发明提出了一种在异步时钟域传输数据的装置,其目的在于,实现数据在异步时钟域之间稳定传输的同时,有效地控制传输延迟误差。本发明的另一个目的在于提供一种在异步时钟域传输数据的方法。
根据上述目的,本发明提供了一种在异步时钟域传输数据的装置,该装置包括:存储单元,用于缓存数据;写数据端,工作于数据随路时钟域,用于在写使能信号有效时将数据缓存在存储单元中;数据就绪指示信号发生电路,工作于所述数据随路时钟域,用于在写使能信号有效时产生在所述数据随路时钟域的数据就绪指示信号,所述数据就绪指示信号为一个高电平或低电平脉冲;沿检测电路,工作于系统工作时钟域用于检测数据就绪指示信号发生电路产生的数据就绪指示信号的边沿,在检测到所述数据就绪指示信号的边沿时产生在所述系统工作时钟域的数据指示信号;包括第一计数器的相位监测和数据采集相位发生器,工作于所述系统工作时钟域,所述第一计数器的计数周期等于输入数据的周期对应在系统工作时钟域上的时钟周期数;若在第一计数器的预先设定的计数周期检测到所述数据指示信号,则在所述第一计数器的相位达到预先设定的相位时产生数据采集使能信号;若检测到所述数据指示信号的出现周期与所述计数周期的差值超过预设值,则对第一计数器清零后重新计数,并在第一计数器的相位达到预先设定的相位时产生数据采集使能信号;读数据端,用于根据相位监测和数据采集相位发生器产生的数据采集使能信号从存储单元读取数据。
该装置进一步包括位于数据就绪指示信号发生电路与沿检测电路之间的信号延迟电路,用于将所述数据就绪指示信号锁存至少两个时钟周期后输入所述沿检测电路。
所述信号延迟电路由多个串连的D触发器组成。
所述数据就绪指示信号发生电路包括第一选择器、第二选择器、D触发器和延时器。其中,第一选择器的1输入端被输入0,0输入端与所述D触发器的输出端相连,控制端与所述延时器的输出端相连,输出端与第二选择器的0输入端相连;第二选择器的1输入端被输入1,0输入端被与第一选择器的输出端相连,控制端被输入写使能信号,输出端与所述D触发器的D输入端相连;所述D触发器的D输入端与第二选择器的输出端相连,输出端与所述沿检测电路、第一选择器的0输入端以及所述延时器的输入端相连;所述延时器的输入端与所述D触发器的输出端相连,输出端与第一选择器的控制端相连。
所述延时器由多个串连的D触发器组成,或者为等待多个时钟周期输出信号的计数器。
所述相位监测和数据采集相位发生器进一步包括第三选择器、第四选择器、第五选择器、第一D触发器、第二D触发器以及第二计数器。其中,第三选择器的1输入端被输入1,0输入端与第一D触发器的输出端相连,控制端被输入所述数据指示信号,输出端与第一D触发器的D输入端相连;第四选择器的1输入端被输入所述数据指示信号,0输入端被输入0,控制端与第一计数器的输出端相连,输出端与第五选择器的输入端相连;第五选择器的1输入端被输入所述数据指示信号,0输入端与第四选择器的输出端相连,控制端与第一D触发器的输出端相连,输出端与第一计数器的清零端相连;第一D触发器的D输入端与第三选择器的输出端相连,输出端与第三选择器的0输入端、第五选择器的控制端以及第一计数器的使能端相连;第二D触发器的D输入端与第一计数器的输出端相连,使能端被输入所述数据指示信号,输出端与第二计数器的清零端相连;第一计数器的清零端与第五选择器的输出端相连,使能端与第一D触发器的输出端相连,输出端与第四选择器的控制端以及第二D触发器的D输入端相连,第一计数器的输出端输出数据采集使能信号;第二计数器的清零端与其输出端以及第二D触发器的输出端相连,使能端被输入所述数据指示信号,输出端与其清零端相连。
所述存储单元为随机存取存储单元或寄存器。
本发明还提供了一种在异步时钟域传输数据的方法,其中发送方位于数据随路时钟域,接收方位于系统工作时钟域并包括第一计数器,该方法包括以下步骤:A.发送方在写使能信号有效时,将数据缓存在存储单元中,同时产生一个数据就绪指示信号并发送给接收方,所述数据就绪指示信号为一个高电平或低电平脉冲;B.接收方在检测到所述数据就绪指示信号边沿时产生数据指示信号;C.若所述接收方在第一计数器的预先设定的计数周期检测到所述数据指示信号,则在所述第一计数器的相位达到预先设定的相位时产生数据采集使能信号;若所述接收方检测到所述数据指示信号的出现周期与所述计数周期的差值超过预设值,则对第一计数器清零后重新计数,并在第一计数器的相位达到设定相位时从存储单元读取数据;所述计数周期等于输入数据的周期对应在系统工作时钟域上的时钟周期数。
步骤B前进一步包括将所述数据就绪指示信号锁存一个以上时钟周期的步骤。
步骤C中所述对第一计数器清零后重新计数的步骤包括:判断数据指示信号到达时第一计数器当前相位是否等于其最大相位,在不等于的情况下,判断所述当前相位与最大相位的相差绝对值是否大于1,如果大于1,则在下一个数据指示信号到达时,触发所述第一计数器重新计数,如果小于等于1,则在连续多个数据指示信号到达时所述第一计数器当前相位与其最大相位的差值保持不变的情况下,触发所述第一计数器重新计数。
步骤C中所述在第一计数器的相位达到设定相位时从存储单元读取数据的步骤包括:在第一计数器的相位到达预先设定的相位时产生数据采集使能信号;根据所述数据采集使能信号从存储单元读取数据。
从上述技术方案中可以看出,由于本发明采用传递数据指示信号的方式来实现异步时钟域时间数据相位的锁定,从而实现数据在异步时钟域之间稳定地传输,并且将传输延迟误差控制在接收方的一个时钟周期内,这样只需要通过提升接收方系统工作时钟的频率就能有效地降低误差的绝对值。与现有技术的FIFO相比,不需要复杂的格雷码转换以及溢出清零判断,实现比较简单。
附图说明
图1为现有技术中FIFO的结构示意图。
图2为本发明实施例中装置的结构示意图。
图3为本发明实施例中各信号的时序图。
图4为本发明实施例的装置中相位监测和数据采集相位发生器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。
参考图2,本发明采用的装置包括写数据端、存储单元、数据就绪指示信号发生电路、信号延迟电路、沿检测电路、相位监测和数据采集相位发生器、以及读数据端。其中,发送方的写数据端和数据就绪指示信号发生电路工作在数据随路时钟域Clk_in,接收方的信号延迟电路、沿检测电路、相位监测和数据采集相位发生器、以及读数据端都工作在系统工作时钟域Clk_sys。下面分别介绍各部分的结构及功能。
写数据端包括一个D触发器,在写使能信号Data_wt_en有效时,写入数据Data_in,即将数据缓存在存储单元中。
存储单元为RAM或者寄存器,用来缓存从写数据端输入的数据,并由读数据端读取输出这些数据。
数据就绪指示信号发生电路,根据写使能信号Data_wt_en产生一个数据就绪指示信号Data_rdy,信号Data_rdy用来通知接收方当前数据已经准备就绪。为了保证在系统工作时钟域采集到Data_rdy信号,Data_rdy信号的高低电平脉冲宽度必须大于系统工作时钟域中一个时钟周期的宽度。参见图3,图3中所示的Data_rdy信号的高低电平脉冲宽度远大于系统工作时钟域Clk_sys的一个时钟周期的宽度,这样能保证系统工作时钟域的模块能够采集到Data_rdy信号。
继续参考图2,该数据就绪指示信号发生电路包括两个二选一的选择器、一个D触发器和一个延时器,所述两个二选一的选择器为第一选择器和第二选择器。其中,第一选择器和第二选择器分别根据自身控制端的控制信号为0或1,相应地输出0输入端或1输入端的信号;D触发器在使能端(En端)的输入信号有效时,输出D端的输入,在En端没有输入信号时,输出上一个时钟周期时的D端输入信号;延时器用于将Data_rdy信号延迟N个时钟周期,它可以由N个串连的D触发器构成,也可以由等待N个时钟周期后输出输入信号的计数器实现。在数据就绪指示信号发生电路中,第一选择器的1输入端被输入0,0输入端与所述D触发器的输出端相连,控制端与所述延时器的输出端相连,输出端与第二选择器的0输入端相连;第二选择器的1输入端被输入1,0输入端被与第一选择器的输出端相连,控制端被输入写使能信号,输出端与所述D触发器的D输入端相连;所述D触发器的D输入端与第二选择器的输出端相连,输出端与所述沿检测电路、第一选择器的0输入端以及所述延时器的输入端相连;所述延时器的输入端与所述D触发器的输出端相连,输出端与第一选择器的控制端相连。
在工作过程中,第一选择器1输入端被输入0,0输入端被输入Data_rdy信号,并根据被延时器延迟N个时钟周期的Data_rdy信号的控制向第二选择器的0输入端输出信号,第二选择器的1输入端为1,它根据写使能信号Data_wt_en向D触发器输出信号,然后D触发器向信号延迟电路、第一选择器的0输入端以及延时器输出Data_rdy信号。
信号延迟电路,用于将Data_rdy信号锁存至少两个系统工作时钟域时钟周期后再输入沿检测电路,其目的在于尽可能地减少亚稳态出现的概率。这里的信号延迟电路通过串连的多个D触发器实现。图2中所示的信号延迟电路包括3个D触发器,将Data_rdy信号锁存三个时钟周期后,再输入到沿检测电路。
沿检测电路用于对Data_rdy信号进行边沿检测,当检测到Data_rdy的上升沿时,产生在系统时钟域的数据指示信号Data_rdy_sync,Data_rdy_sync信号只有一个时钟周期宽度。本实施例采用将当前Data_rdy信号与一个时钟周期之前的Data_rdy信号相比较的方法对Data_rdy信号进行边沿检测,即比较信号延迟电路最后一个D触发器之前的信号(一个时钟周期之前的Data_rdy信号)和之后的信号(当前Data_rdy信号),显然在当前Data_rdy信号为1、一个时钟周期之前的Data_rdy信号为0时,Data_rdy信号有上升沿,然后根据该上升沿产生Data_rdy_sync信号,并将Data_rdy_sync信号输入相位监测和数据采集相位发生器。
相位监测和数据采集相位发生器,用于将传输迟延控制在一个时钟周期内,以及产生一个数据采集使能信号Data_sample_en,并将Data_sample_en信号输入读数据端。如图3中所示,所产生的Data_sample_en信号刚好在数据缓存寄存器信号Data_tmp前后两个变化点的中间位置,这样使得异步时钟域间的抖动和相位漂移对数据传输的影响达到最小。异步时钟域间的抖动和相位漂移可以等效为Clk_sys相对于稳定不变的Clk_in左右移动,显然在数据前后变化的中间时刻采集数据能得到最稳定的传输效果。
如图4所示,相位监测和数据采集相位发生器包括计数器A(第一计数器)、计数器B(第二计数器)、以及辅助它们实现功能的三个二选一的选择器和两个D触发器,所述三个二选一的选择器为第三选择器、第四选择器和第五选择器,所述两个D触发器为第一D触发器和第二D触发器。其中,第三选择器的1输入端被输入1,0输入端与第一D触发器的输出端相连,控制端被输入所述数据指示信号,输出端与第一D触发器的D输入端相连;第四选择器的1输入端被输入所述数据指示信号,0输入端被输入0,控制端与计数器A的输出端相连,输出端与第五选择器的输入端相连;第五选择器的1输入端被输入所述数据指示信号,0输入端与第四选择器的输出端相连,控制端与第一D触发器的输出端相连,输出端与计数器A的清零端相连;第一D触发器的D输入端与第三选择器的输出端相连,输出端与第三选择器的0输入端、第五选择器的控制端以及计数器A的使能端相连;第二D触发器的D输入端与计数器A的输出端相连,使能端被输入所述数据指示信号,输出端与计数器B的清零端相连;计数器A的清零端与第五选择器的输出端相连,使能端与第一D触发器的输出端相连,输出端与第四选择器的控制端以及第二D触发器的D输入端相连,计数器A的输出端输出数据采集使能信号;计数器B的清零端与其输出端以及第二D触发器的输出端相连,使能端被输入所述数据指示信号,输出端与其清零端相连。
计数器A在第一个Data_rdy_sync信号到来时根据指示接收数据开始的Receive_start信号启动计数,即清零开始计数。如图4所示,由第三选择器和第一D触发器根据Data_rdy_sync信号产生上述Receive_start信号,第三选择器1输入端被输入1,0输入端被输入Receive_start信号,根据Data_rdy_sync信号的控制向第一D触发器输入相应信号,第一D触发器输出Receive_start信号,该Receive_start信号分别输入上述第三选择器的0输入端、计数器A的使能端以及第五选择器的控制端。
计数器A的计数周期PH_A等于输入数据的周期对应在系统工作时钟域上的时钟周期数。计数器A还在一个固定的相位CON_A产生数据采集使能信号Data_sample_en,其中CON_A是预选设定的,为了满足前面所述的Data_sample_en在Data_tmp前后两个变化点的中间位置的条件,较佳地将CON_A设定为PH_A的一半左右。并且,计数器A还在满足下面逻辑表达式(1)的时候,输出一个Phase_error信号,Phase_error信号用于控制将计数器A清零。
{(|Cnt_A-PH_A|>1)||(|Cnt_A-PH_A|=1&&Cnt_B>=CON_B)}&&Data_rdy_sync==1  (1)
逻辑表达式(1)中,|Cnt_A-PH_A|>1表示在Data_rdy_sync信号到达时如果计数器A的相位Cnt_A与计数器A的计数周期PH_A的相位差的绝对值大于1个时钟周期的情况。|Cnt_A-PH_A|=1&&Cnt_B>=CON_B表示通过计数器B对在Data_rdy_sync信号到达时计数器A的相位Cnt_A与计数器A的计数周期PH_A的相位差的绝对值等于1个时钟周期的连续事件进行计数,并且计数器B的相位Cnt_B大于等于预先设定的CON_B的情况。Data_rdy_sync==1表示当前Data_rdy_sync信号有效,即Data_rdy_sync到达时。综上,逻辑表达式(1)表示满足发生上述两个情况之一并且Data_rdy_sync有效的情形。
参考图4,Phase_error信号将计数器A清零是通过第四选择器和第五选择器实现的,第四选择器的1输入端被输入Data_rdy_sync、0输入端被输入0,根据Phase_error的控制向第五选择器的1输入端输入相应信号;第五选择器的0输入端被输入Data_rdy_sync信号,它根据上述Receive_start信号的控制向计数器A的清零端输入控制信号,控制计数器A进行清零。计数器A的清零端clr的优先级高于使能端en,且高电平有效。
计数器B,用来统计在给定的CON_B个数据样点的时间内是否所有的Data_rdy_sync到来时计数器A的相位Cnt_A与计数器A的计数周期PH_A的相位差都等于1,且每一次计数器A的值都相等。如果是则计数器B不断累加,直到计数器B的值等于预先设置的CON_B后停止并将计数器A清零,这通过上述的Phase_error信号实现;如果不是则计数器B被清零,这通过下面的清零信号实现,即计数器B在满足下面逻辑表达式(2)的时候输出一个清零信号,该清零信号输入计数器B的清零端,用于将计数器B清零。计数器B的清零端clr的优先级高于使能端en,且高电平有效。
Cnt_A!=Cnt_A_back&&|Cnt_A-PH_A|==1&&Data_rdy_sync==1    (2)
在逻辑表达式(2)中,Cnt_A_!=Cnt_A_back表示当前Data_rdy_sync到达时计数器A的相位Cnt_A_与上次Data_rdy_sync到达时计数器A的相位Cnt_A_back不同的情况;|Cnt_A-PH_A|==1表示Data_rdy_sync到达时计数器A的相位Cnt_A_与计数器A的计数周期PH_A的相位差的绝对值为1的情况;Data_rdy_sync==1表示当前Data_rdy_sync信号有效,即Data_rdy_sync到达时。综上,上述逻辑表达式(2)表示同时满足上述两个情况并且Data_rdy_sync有效的情形。
相位监测和数据采集相位发生器的工作过程如下:
步骤10,计数器A在第一个Data_rdy_sync到来时启动计数。
步骤20,后面每一个Data_rdy_sync信号到来时,计数器A判断自身的相位是否等于计数周期最大值,如果是则表示正常,计数器A继续计数;否则执行步骤30。
步骤30,计数器A判断自身的相位与计数周期最大值的差的绝对值是否大于一个时钟周期,如果大于一个时钟周期,则表明发生了异常状态使得相位有了较大的跳变,那么在下一个Data_rdy_sync信号到来时立即更新计数器A的相位,即将计数器A清零重新计数,这时的输出数据的Data_out的间隔发生改变。如果两者差的绝对值小于等于一个时钟周期,执行步骤40,此时有两种可能:1、两个时钟域的时钟都处于正常状态,这个误差由于抖动引起的;2、两个时钟域中至少一个时钟的相位发生了偏移。
步骤40,用计数器B统计连续一段时间(即上述CON_B个数据采样点)内Data_rdy_sync到达时对应的计数器A的相位是否都等于相同的值,如果是则表示数据相位已经发生了改变,并在下一个Data_rdy_sync到达时更新计数器A的相位,即清零重新计数;否则,将计数器B清零执行步骤2重新开始判断。
在上述过程中,当计数器A的相位等于预先设置的CON_A时,产生数据采集使能信号Data_sample_en,并输入读数据端。
读数据端在数据采集使能信号Data_sample_en有效时,从存储单元读取数据并输出。
采用本发明上述装置在异步时钟域内传输数据的过程如下:
步骤100,在写使能信号Data_wt_en有效时,将数据缓存在存储单元中,同时产生一个数据就绪指示信号Data_rdy并发送给接收方;
步骤200,接收方对所述数据就绪指示信号Data_rdy延迟至少两个时钟周期后,对其进行边沿检测,在检测到所述数据就绪指示信号上升沿时产生数据指示信号Data_rdy_sync;
步骤300,在所述数据指示信号Data_rdy_sync到达时,判断此时计数器A的相位Cnt_A_与计数器A的计数周期PH_A的关系,
在计数器A相位Cnt_A_等于其计数周期PH_A的情况下,即两者差值等于零时,计数器A正常计数,并在计数器A的相位达到预先设定相位CON_A时产生数据采集使能信号Data_sample_en;
在两者差值的绝对值大于系统工作时钟域一个时钟周期的情况下,在下一个Data_rdy_sync到达时将计数器A清零重新计数。在此期间内,在计数器A的相位达到预先设定相位CON_A时产生数据采集使能信号Data_sample_en;
在两者差值的绝对值小于等于一个时钟周期的情况下,进一步判断是否在连续CON_B次Data_rdy_sync信号到达时计数器A的相位都等于相同的值,如果是,则在下一个Data_rdy_sync到达时将计数器A清零重新计数;否则将计数器B清零并执行步骤C重新判断。在此期间内,在计数器A的相位达到预先设定相位CON_A时产生数据采集使能信号Data_sample_en。
步骤400,读数据端根据所述数据采集使能信号从存储单元读取数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1、一种在异步时钟域传输数据的装置,其特征在于,该装置包括:
存储单元,用于缓存数据;
写数据端,工作于数据随路时钟域,用于在写使能信号有效时将数据缓存在存储单元中;
数据就绪指示信号发生电路,工作于所述数据随路时钟域,用于在写使能信号有效时产生在所述数据随路时钟域的数据就绪指示信号,所述数据就绪指示信号为一个高电平或低电平脉冲;
沿检测电路,工作于系统工作时钟域,用于检测数据就绪指示信号发生电路产生的数据就绪指示信号的边沿,在检测到所述数据就绪指示信号的边沿时产生在所述系统工作时钟域的数据指示信号;
包括第一计数器的相位监测和数据采集相位发生器,工作于所述系统工作时钟域,所述第一计数器的计数周期等于输入数据的周期对应在系统工作时钟域上的时钟周期数;若在第一计数器的预先设定的计数周期检测到所述数据指示信号,则在所述第一计数器的相位达到预先设定的相位时产生数据采集使能信号;若检测到所述数据指示信号的出现周期与所述计数周期的差值超过预设值,则对第一计数器清零后重新计数,并在第一计数器的相位达到预先设定的相位时产生数据采集使能信号;
读数据端,用于根据相位监测和数据采集相位发生器产生的数据采集使能信号从存储单元读取数据。
2、根据权利要求1所述的装置,其特征在于,该装置进一步包括位于数据就绪指示信号发生电路与沿检测电路之间的信号延迟电路,用于将所述数据就绪指示信号锁存至少两个时钟周期后输入所述沿检测电路。
3、根据权利要求2所述的装置,其特征在于,所述信号延迟电路由多个串连的D触发器组成。
4、根据权利要求1所述的装置,其特征在于,所述数据就绪指示信号发生电路包括第一选择器、第二选择器、D触发器和延时器,其中,
第一选择器的1输入端被输入0,0输入端与所述D触发器的输出端相连,控制端与所述延时器的输出端相连,输出端与第二选择器的0输入端相连;
第二选择器的1输入端被输入1,0输入端被与第一选择器的输出端相连,控制端被输入写使能信号,输出端与所述D触发器的D输入端相连;
所述D触发器的D输入端与第二选择器的输出端相连,输出端与所述沿检测电路、第一选择器的0输入端以及所述延时器的输入端相连;
所述延时器的输入端与所述D触发器的输出端相连,输出端与第一选择器的控制端相连。
5、根据权利要求4所述的装置,其特征在于,所述延时器由多个串连的D触发器组成,或者为等待多个时钟周期输出信号的计数器。
6、根据权利要求1所述的装置,其特征在于,所述相位监测和数据采集相位发生器进一步包括第三选择器、第四选择器、第五选择器、第一D触发器、第二D触发器以及第二计数器,其中,
第三选择器的1输入端被输入1,0输入端与第一D触发器的输出端相连,控制端被输入所述数据指示信号,输出端与第一D触发器的D输入端相连;
第四选择器的1输入端被输入所述数据指示信号,0输入端被输入0,控制端与第一计数器的输出端相连,输出端与第五选择器的输入端相连;
第五选择器的1输入端被输入所述数据指示信号,0输入端与第四选择器的输出端相连,控制端与第一D触发器的输出端相连,输出端与第一计数器的清零端相连;
第一D触发器的D输入端与第三选择器的输出端相连,输出端与第三选择器的0输入端、第五选择器的控制端以及第一计数器的使能端相连;
第二D触发器的D输入端与第一计数器的输出端相连,使能端被输入所述数据指示信号,输出端与第二计数器的清零端相连;
第一计数器的清零端与第五选择器的输出端相连,使能端与第一D触发器的输出端相连,输出端与第四选择器的控制端以及第二D触发器的D输入端相连,第一计数器的输出端输出数据采集使能信号;
第二计数器的清零端与其输出端以及第二D触发器的输出端相连,使能端被输入所述数据指示信号,输出端与其清零端相连。
7、根据权利要求1所述的装置,其特征在于,所述存储单元为随机存取存储单元或寄存器。
8、一种在异步时钟域传输数据的方法,其中发送方位于数据随路时钟域,接收方位于系统工作时钟域并包括第一计数器,其特征在于,该方法包括以下步骤:
A.发送方在写使能信号有效时,将数据缓存在存储单元中,同时产生一个数据就绪指示信号并发送给接收方,所述数据就绪指示信号为一个高电平或低电平脉冲;
B.接收方在检测到所述数据就绪指示信号边沿时产生数据指示信号;
C.若所述接收方在第一计数器的预先设定的计数周期检测到所述数据指示信号,则在所述第一计数器的相位达到预先设定的相位时产生数据采集使能信号;若所述接收方检测到所述数据指示信号的出现周期与所述计数周期的差值超过预设值,则对第一计数器清零后重新计数,并在第一计数器的相位达到设定相位时从存储单元读取数据;所述计数周期等于输入数据的周期对应在系统工作时钟域上的时钟周期数。
9、根据权利要求8所述的方法,其特征在于,步骤B前进一步包括将所述数据就绪指示信号锁存一个以上时钟周期的步骤。
10、根据权利要求8所述的方法,其特征在于,步骤C中对第一计数器清零后重新计数的步骤包括:
判断数据指示信号到达时第一计数器当前相位是否等于其最大相位,在不等于的情况下,判断所述当前相位与最大相位的相差绝对值是否大于1,如果大于1,则在下一个数据指示信号到达时,触发所述第一计数器重新计数;如果小于等于1,则在连续多个数据指示信号到达时所述第一计数器当前相位与其最大相位的差值保持不变的情况下,触发所述第一计数器重新计数。
11、根据权利要求8所述的方法,其特征在于,步骤C中所述在第一计数器的相位达到设定相位时从存储单元读取数据的步骤包括:
在第一计数器的相位到达预先设定的相位时产生数据采集使能信号;
根据所述数据采集使能信号从存储单元读取数据。
CNB2006100783219A 2006-05-09 2006-05-09 一种在异步时钟域传输数据的装置及其方法 Expired - Fee Related CN100465934C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100783219A CN100465934C (zh) 2006-05-09 2006-05-09 一种在异步时钟域传输数据的装置及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100783219A CN100465934C (zh) 2006-05-09 2006-05-09 一种在异步时钟域传输数据的装置及其方法

Publications (2)

Publication Number Publication Date
CN1983225A CN1983225A (zh) 2007-06-20
CN100465934C true CN100465934C (zh) 2009-03-04

Family

ID=38165776

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100783219A Expired - Fee Related CN100465934C (zh) 2006-05-09 2006-05-09 一种在异步时钟域传输数据的装置及其方法

Country Status (1)

Country Link
CN (1) CN100465934C (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101166151B (zh) * 2007-09-20 2010-07-14 北大方正集团有限公司 跨时钟域不同位宽数据传递的方法及装置
CN101996149B (zh) * 2009-08-12 2012-09-26 炬力集成电路设计有限公司 一种数据采集方法及装置
JP5915105B2 (ja) * 2011-11-14 2016-05-11 株式会社ソシオネクスト データ転送システム、受信回路、及び受信方法
CN105988959B (zh) * 2015-02-13 2021-06-01 中兴通讯股份有限公司 一种异步数据传输方法及系统
JPWO2016158063A1 (ja) * 2015-03-30 2018-01-25 ソニーセミコンダクタソリューションズ株式会社 非同期インタフェース
CN107220204B (zh) * 2016-03-21 2020-05-08 华为技术有限公司 一种数据读取电路
CN108958701A (zh) * 2017-05-22 2018-12-07 深圳市中兴微电子技术有限公司 一种数据传输控制方法、装置及存储介质
CN109254941B (zh) * 2017-07-13 2020-04-24 凌云光技术集团有限责任公司 基于fpga的串行信号时钟同步方法、串转并方法及装置
CN111221378B (zh) * 2018-11-27 2021-08-24 成都鼎桥通信技术有限公司 周期信号的时钟域转换方法、装置及可读存储介质
CN110175091B (zh) * 2018-12-11 2023-06-23 中国航空工业集团公司西安航空计算技术研究所 一种Lockstep架构下的节点间信号同步方法、装置及电路
CN110647067B (zh) * 2019-08-26 2020-11-03 珠海格力电器股份有限公司 一种数据采集系统及其控制方法、装置、设备和介质
CN112213622B (zh) * 2020-09-23 2023-04-28 博流智能科技(南京)有限公司 高速外设系统及其控制方法
CN112866339B (zh) * 2020-12-30 2022-12-06 金蝶软件(中国)有限公司 数据传输方法、装置、计算机设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1391227A (zh) * 2001-06-07 2003-01-15 扬智科技股份有限公司 非同步fifo控制器
CN1560868A (zh) * 2004-02-10 2005-01-05 中国科学院计算技术研究所 用双端口随机存取存储器实现异步先进先出数据传输
US20050091429A1 (en) * 2003-10-24 2005-04-28 Anand Pande System and method for designing data structures
CN1642010A (zh) * 2004-01-01 2005-07-20 华为技术有限公司 时钟锁定和频率偏差的检测装置
CN1741188A (zh) * 2004-08-29 2006-03-01 华为技术有限公司 异步数据时钟域转换的系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1391227A (zh) * 2001-06-07 2003-01-15 扬智科技股份有限公司 非同步fifo控制器
US20050091429A1 (en) * 2003-10-24 2005-04-28 Anand Pande System and method for designing data structures
CN1642010A (zh) * 2004-01-01 2005-07-20 华为技术有限公司 时钟锁定和频率偏差的检测装置
CN1560868A (zh) * 2004-02-10 2005-01-05 中国科学院计算技术研究所 用双端口随机存取存储器实现异步先进先出数据传输
CN1741188A (zh) * 2004-08-29 2006-03-01 华为技术有限公司 异步数据时钟域转换的系统

Also Published As

Publication number Publication date
CN1983225A (zh) 2007-06-20

Similar Documents

Publication Publication Date Title
CN100465934C (zh) 一种在异步时钟域传输数据的装置及其方法
CN100518051C (zh) 使用基准信号进行同步数据传输的装置和方法
TWI395425B (zh) 用以實現虛擬大小為m之彈性緩衝器之方法、虛擬大小為m之彈性緩衝器電路及積體電路
CN100376006C (zh) 具有数据选通脉冲电路的半导体内存装置
US20090150706A1 (en) Wrapper circuit for globally asynchronous locally synchronous system and method for operating the same
US20080147916A1 (en) Data synchronization method of data buffer device
CN113009961B (zh) 一种跨时钟同步电路及SoC系统
CN101621372B (zh) 一种传送网络异步背板主备倒换的方法及装置
CN102122956A (zh) 相位选择器与相位选择方法以及时钟脉冲数据恢复电路
CN105242903B (zh) 随机数生成装置和方法
CN115426438B (zh) 一种dp视频信号时序恢复装置及其工作方法
CN103490995B (zh) 报文发送方法和装置
CN105227288B (zh) Gmii数据发送方法和装置
KR101515360B1 (ko) 저 레이턴시 직렬 상호 접속 아키텍처에서의 피드백 루프의 제공
KR100433079B1 (ko) 입력 데이터 처리 회로
US7694176B2 (en) Fault-tolerant computer and method of controlling same
CN103576740B (zh) 一种usb设备的时钟检测系统及其时钟检测方法
CN103888211A (zh) 一种交叉芯片间进行数据传输的方法及装置
CN101682500A (zh) 定时恢复电路、通信节点、网络系统以及电子设备
US5825834A (en) Fast response system implementing a sampling clock for extracting stable clock information from a serial data stream with defined jitter characeristics and method therefor
CN112148655B (zh) 多位数据跨时钟域的处理方法及装置
CN100536340C (zh) 一种分频方法及分频计数器
KR20050082280A (ko) 비동기식 이중선 버스를 이용한 데이터 전송 장치 및 그방법
CN101090307B (zh) 全数字化无损伤切换装置及方法
US7478257B2 (en) Local receive clock signal adjustment

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090304

Termination date: 20160509