异步数据时钟域转换的系统的制作方法

文档序号:6426146阅读:132来源:国知局
专利名称:异步数据时钟域转换的系统的制作方法
技术领域
本发明涉及芯片的接口技术,特别涉及异步时钟域转换技术。
背景技术
芯片的接口模块可以采用先进先出队列(First In First Out,简称“FIFO”)实现,但如果输入输出处于不同的时钟域,则可能导致读、写冲突。例如,当读时钟在一段时间内由于频率抖动超过了写时钟频率,就有可能造成读地址增加过快,该读地址的数据尚未写入,读地址的数据无效或错误,在读操作的时候就会造成读写冲突。因此在接口模块设计中,需要进行异步时钟域转换,以实现数据的流控,避免因异步时钟的抖动而导致数据接收出现错误。
现有的技术方案通常采用双口随机存取存储器(Random AccessMemory,简称“RAM”)构成FIFO队列实现异步时钟域转换。现有技术方案的异步时钟域转换系统的接口信号包含异步的写时钟(W_clk)和读时钟(R_clk),与写时钟同步的写使能(W_en)和写数据(W_data)、与读时钟同步的读使能(R_en)和读数据(R_data)。同时,为了实现正确的读写和避免双口RAM的上溢或下溢,还应该给出与读时钟和写时钟同步的空标志(empty)和满标志(full)以禁止读写操作。
由于空标志和满标志控制了RAM的读、写操作,因此标志错误会引起操作的错误。熟悉本领域的技术人员可以理解,标志的产生是通过对读写地址的比较产生的,当读写时钟完全异步时,对二进制的读写地址进行比较时,可能得出错误的结果。例如,在读地址变化过程中,由于读地址的各位变化并不同步,计算读写地址的差值,可能产生错误的差值,导致产生错误的满标志信号。若将未满标志置为满标志时,可能降低了应用的性能,降低写数据速率;而将满置标志置为未满时,执行一次写操作,则可能产生溢出错误,这对于实际应用来说是绝对应该避免的。同样,空标志信号的产生也可能产生类似的错误。之所以会发生错误是因为在地址变化时,由于多位地址各位变化时间不同,异步时钟对其进行采样时数值可能为不同于地址变化后数值的其他值,异步产生错误的空标志和满标志,以致产生RAM的读、写操作错误。
基于上述考虑,现有的技术方案中,读、写地址在读、写使能的作用下加一,对读、写地址进行格雷码转换后进行比较,进而产生空、满标志,再由空、满标志控制RAM读、写操作的进程。熟悉本领域的技术人员理解,格雷码是一种在相邻计数值之间只有一位发生变化的编码方式,若读写地址采用格雷码编码方式,就可以解决上面的问题。
在实际应用中,上述方案存在以下问题现有的技术方案对时钟抖动的容忍程度设置不灵活,并且可能存在一次读、写时钟导致的冲突引起读、写操作的多次调整。
造成这种情况的主要原因在于,现有的技术方案中空、满标志产生的条件不可更改,即分属于不同时钟域的读、写时钟的冲突条件不可更改,因此对时钟抖动的容忍程度设置不灵活;并且现有技术方案中的空、满信号是通过转格雷码后的读、写地址延迟一定拍数比较而产生的,在读、写地址冲突时可能存在电平抖动,这就一次读、写地址冲突可能会造成空、满信号的多次变化,从而引起读、写操作多次调整。

发明内容
有鉴于此,本发明的主要目的在于提供一种异步数据时钟域转换的系统,使得可以根据硬件时钟的实际情况,在容忍时钟抖动的情况下最大限度的满足输入、输出数据的延时固定,同时避免一次冲突引起读、写操作多次调整。
为实现上述目的,本发明提供了一种异步数据时钟域转换的系统,包含双口随机存取存储器模块,所述双口随机存取存储器模块用于存储数据并根据所述读写地址模块中的地址进行相应的存取操作;还包含读写地址模块,冲突判断模块,保护电路模块和地址置位模块;所述读写地址模块用于存储并提供读、写地址;所述冲突判断模块用于在所述读写地址模块中的所述读、写地址冲突时将地址调整信号置为有效;所述保护电路模块用于从所述冲突判断模块接收所述地址调整信号并向所述地址置位模块输出,在输出有效的所述地址调整信号有效后的一段时间内,屏蔽所述地址调整信号;所述地址置位模块用于在接收到有效的所述地址调整信号时,调整所述读写地址模块中的读、写地址。
其中,所述冲突判断模块还用于根据读地址是否落在所述写地址前后的禁区内决定是否将所述地址调整信号置为有效。
所述冲突判断模块中,所述写地址前后的禁区的大小可以通过参数设定。
所述冲突判断模块还包含延时寄存器组和冲突逻辑判断子模块;所述延时寄存器组用于将读、写地址转换为格雷码后在读时钟域分别经过多个延时寄存器生成具有不同延时的格雷码表示的读、写地址;所述冲突逻辑判断子模块用于以所述延时寄存器组生成的具有不同延时的格雷码表示的读、写地址为输入,产生所述地址调整信号。
所述冲突逻辑判断子模块还包含组合电路模块和多路选择器;所述组合电路模块用于以所述延时寄存器组产生的具有不同延时的格雷码表示的读、写地址作为输入,产生所有可能参数对应的所述地址调整信号作为所述多路选择器的多路输入;所述多路选择器以所述参数作为控制信号,选择该参数对应的所述地址调整信号输出。
所述冲突逻辑判断子模块中,在延时拍数之差小于等于所述参数的格雷码转换后的所有读、写地址对中,如果有任何一对相同则将所述地址调整信号置为有效。
所述读写地址模块中二进制表示的所述读地址和所述写地址的初始值最高位相反,其它位相同。
所述保护电路模块在输出有效的所述地址调整信号时置位一个计数器并开始计数,当该计数器的计数值小于特定值时,屏蔽所述地址调整信号。
和所述计数器的计数值比较的所述特定值由所述参数确定,不同参数对应不同特定值。
所述地址置位模块在收到有效的所述地址调整信号后,将当前二进制表示的所述写地址的最高位取反,其它位不变,赋给所述读地址。
所述地址置位模块中,将所述延时寄存器组中存储的格雷码表示的所述写地址转换为二进制后,加上与当前写地址的延时后得到调整读地址信号,将所述调整读地址信号最高位取反后得到所述读地址需要调整到的数值。
通过比较可以发现,本发明的技术方案与现有技术的区别在于,本发明可以用参数控制读、写地址冲突范围,即可以提供一个随机存取存储器(Random Access Memory,简称“RAM”)活动窗,并且同时提供一种读、写地址冲突后的延时保护机制,在读、写地址冲突后一段时间内不输出Adjust信号。
这种技术方案上的区别,带来了较为明显的有益效果,即,应用本发明异步时钟域转换的系统,首先,可以通过参数改变RAM活动窗大小,灵活控制读、写地址的冲突范围,使得接口模块完成异步时钟域转换时,既能灵活控制时钟抖动的范围,又能最大程度的保持输入、输出时序延时固定的要求,从而大大提高了接口模块的灵活性;其次,由于本发明方案的延时保护机制在读、写地址冲突后一段时间内不输出Adjust信号,因此可以避免一次冲突后的电平抖动造成的读、写地址多次调整,提高了系统的稳定性。


图1是根据本发明的一个较佳实施例的异步数据时钟域转换系统的系统组成示意图;图2是根据本发明的一个较佳实施例的读、写地址的延时寄存器组31的电路图;图3是根据本发明的一个较佳实施例的冲突逻辑判断子模块32的电路图;图4是根据本发明的一个较佳实施例的保护电路模块40的电路图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
首先说明本发明的基本原理。本发明方案根据设定的参数确定RAM活动窗,当读地址落入以写地址为中心的RAM活动窗内时输出有效的地址调整信号(Adjust)并将读地址调整到写地址180°相位,即将二进制表示的写地址最高位取反,其它位不变赋给读地址。其中,该RAM活动窗的大小可以由管理人员根据硬件情况设定。另外,本发明方案还设置了保护电路,在输出有效的Adjust后,在一段时间内屏蔽掉Adjust信号以避免一次地址冲突造成多次地址调整。
根据本发明的一个较佳实施例的异步数据时钟域转换系统的系统组成示意图如图1所示。
异步数据时钟域转换系统包含双口RAM模块10,读写地址模块20,冲突判断模块30,保护电路模块40和地址置位模块50。
双口RAM模块10用于存储数据并根据读、写地址进行相应的存取操作。双口RAM模块10为本领域技术人员公知,在读操作时读取读地址内的数据,在写操作时向写地址写入相应数据,在此不详细说明。
读写地址模块20用于存储读写双口RAM模块10时需要的地址。其中,读写地址模块10只是逻辑上的概念,在具体实现时,读写地址分别存储在读时钟域和写时钟域中。需要说明的是,读、写地址初始值在二进制表示时具有180°相位差,即二进制的读、写地址除了最高位相反,其它位均相同。在本发明的一个较佳实施例中,读、写地址可以分别为两个循环计数的计数器,其计数的深度等于双口RAM模块10的存储深度,读地址在每次读操作时计数加1,写地址在每次写操作时计数加1。例如,在本发明的一个较佳实施例中,双口RAM模块10的存储深度为2n,则读写地址计数器的计数值为0~2n-1。
冲突判断模块30用于在读地址和写地址冲突时将地址预调整信号(Pre_Adjust)置为有效,并传给保护电路模块40。其中,读地址和写地址的冲突范围可以设定。在本发明的一个较佳实施例中,通过设定参数(PARAMETER)的值设定冲突范围,当读地址落入写地址前后X个周期的范围内时读、写地址冲突,其中,X=PARAMETER。熟悉本领域的技术人员可以理解,若双口RAM模块10的存储深度为2n,则PARAMETER的取值范围为0~n-1。需要说明的是,冲突判断模块30中将二进制的读、写地址转换为格雷码后进行比较。
在本发明的一个较佳实施例中,冲突判断模块30还包含延时寄存器组31和冲突逻辑判断子模块32。其中,延时寄存器组31分别将读、写地址转换为格雷码后经过延时寄存器缓存生成具有不同延时的格雷码表示的读写地址;冲突逻辑判断子模块32根据PARAMETER从延时寄存器组31中取得转换为格雷码的具有不同延时的读、写地址进行逻辑判断,在读、写地址冲突时将Pre_Adjust信号置为有效。
根据本发明的一个较佳实施例的读、写地址的延时寄存器组31的具体电路图如图2所示。延时寄存器组31包含用于将输入的二进制数据转换为格雷码的格雷码转换模块311和用于将输入按照控制时钟延时一拍的D触发器312。为了表述清晰,图2中将处理读写地址的功能完全相同的模块分别用R和W区分,对于均为处理读地址或处理写地址的功能完全相同的模块,在R或W后加自然数(1、2......)加以区分。其中,W_add和R_add分别为写地址和读地址,W_clk和R_clk分别为写时钟和读时钟,W_reg_n和R_reg_n分别为格雷码转换后的读地址和写地址延时n拍锁存在D触发器中的数据。之所以需要将格雷码延时锁存,是因为格雷码是无权码,对格雷码的比较只能得是否相等,无法直接计算格雷码的差值,这样就不能通过直接的格雷码相减得到读写地址的差值,因此读写地址的差值就需要通过读写地址的格雷码的延时差值得到。熟悉本领域的技术人员可以理解,假设双口RAM的深度为2n,为了产生所有读写地址可能产生的差值,需要分别锁存W_reg_1~W_reg_n和R_reg_1~R_reg_(2n-1),因此D触发器312在读地址延时寄存中需要n个,分别是D触发器312-R1~312Rn,在写地址延时寄存中需要2n-1个,分别是D触发器312-W1~312-W(2n-1)。在本发明的一个较佳实施例中,将格雷码转换后的读写地址转换到读时钟域,即所有D触发器312的时钟均采用R_clk,这样可以避免由于读写时钟域的差异造成格雷码比较时的错误。
冲突逻辑判断子模块32将锁存的格雷码表示的读写地址进行组合逻辑的判断,判定读写地址是否落入了可以由PARAMETER设定范围的冲突区域内,如果是则输出有效的Pre_Adjust信号给保护电路模块40。在本发明的一个较佳实施例中,当读地址落入写地址前后X个周期的范围内时读、写地址冲突,其中,X=PARAMETER。在该较佳实施例中,双口RAM模块10存储深度为2n,冲突逻辑判断子模块输入W_reg_1~W_reg_n和R_reg_1~R_reg_(2n-1),通过组合电路生成P(i)作为Adjust标志,其中,i等于PARAMETER的取值,熟悉本领域的技术人员可以理解,将延时拍数之差小于等于i的所有格雷码转换后的读写地址进行比较得出P(i)。例如i=2时,P(i)=((W_reg_3==R_reg_1)|(W_reg_3==R_reg_2)|(W_reg_3==R_reg_3)|(W_reg_3==R_reg_4)|(W_reg_3==R_reg_5));i=1时,P(i)=((W_reg_2==R_reg_1)|(W_reg_2==R_reg_2)|(W_reg_2==R_reg_3))。其中,==表示逻辑相等运算,若两个变量相同,值为1,否则为0;|表示逻辑或运算。熟悉本领域的技术人员可以看出,在该较佳实施例中,Pre_Adjust置为1时有效。
根据本发明的一个较佳实施例的冲突逻辑判断子模块32的具体的电路实现如图3所示,冲突逻辑判断子模块32包含用于产生P(i)(i=0~n-1)的组合电路模块321和一个以PARAMETER作为控制信号选择特定的P(i)输出的多路选择器322。其中,该较佳实施例的双口RAM模块10的存储深度为2n,组合电路模块321输入W_reg_1~W_reg_n和R_reg_1~R_reg_(2n-1),输出P(i)(i=0~n-1);将P(i)(i=0~n-1)输入控制端为PARAMETER多路选择器322选择输出P(i)(i=PARAMETER)。关于P(i)的实现逻辑,可以参照下表。
其中,第一行为格雷码转换后的写地址的延时拍数,第一列为格雷码转换后的读地址的延时拍数,Pi(i=0~n-1)仅在对应的读、写地址相等时值为1,表中所有Pi值相或的结果即为PARAMETER为i时的地址调整信号,也就是对应的P(i)(i=0~n-1)。熟悉本领域的技术人员据此可以很容易实现冲突逻辑判断子模块32。
保护电路模块40用于在收到冲突判断模块30输出的Pre_Adjust信号时输出地址调整信号(Adjust),并在输出有效的Adjust信号后的一段时间内,屏蔽Adjust信号。在本发明的一个较佳实施例中,保护电路模块40主要可以通过计数器实现,当输出有效Adjust信号后,计数器清零并开始计数,在计数值未达到一定数值之前屏蔽Adjust信号的输出。
根据本发明的一个较佳实施例的保护电路模块40的电路图如图4所示。保护电路模块40包含三个D触发器(分别用401,402和403表示),两个采集上升沿模块410(分别用410-1和410-2表示),计数器420,比较器430,多路选择器470,倒相器450和逻辑与模块460。其中,该电路的所有控制时钟采用读时钟R_clk,D触发器401将从冲突判断模块30接收到的Pre_Adjust信号缓存一拍后输出到D触发器402,D触发器402的清零端信号由比较器430的输出经采集上升沿模块410-1得到,D触发器402的输出经采集上升沿模块410-2输出到逻辑与模块460的一个输入端,逻辑与模块460的另一个输入端输入比较器430的输出信号,逻辑与模块460的输出信号经D触发器403缓存一拍后作为Adjust信号输出给所述地址置位模块50,同时,逻辑与模块460的输出信号还作为计数器420的清零信号;计数器420的输入端接入R_clk,使能端接入比较器430的输出信号的取反,计数器420的输出信号作为比较器430的一个输入信号;多路选择器470根据PARAMETER选择输入作为Sign信号输入比较器430的一个输入端;比较器430在计数器420的输出大于等于Sign信号时输出高电平。需要说明的是,多路选择器470的输入端数据根据最后产生的Adjust信号相对真正实时的冲突信号的延时决定,例如,在本发明的一个较佳实施例中,产生Adjust信号时距离冲突发生已经延时了6个读时钟周期,则多路选择器470的输入依次为6,7,9,11......7+2*(n-1),即当PARAMETER=0时,Sign=6;当PARAMETER=(1~(n-1))时,Sign=7+2*(PARAMETER-1)。需要说明的是,计数器420为循环计数,当双口RAM模块10的存储深度为2n时,计数值为0~8n-1。
所述地址置位模块50用于在接收到有效的Adjust信号后,向读写地址模块20发出地址调整信号调整所述读、写地址。本发明的一个较佳实施例中,采用读、写地址冲突时,写地址不变,调整读地址的方式使读地址调整到写地址180°的位置,即读、写地址最高位不同,其他位相同。由于读、写地址在不同时钟域,异步域采样存在不确定性,因此本发明的一个较佳实施例中,通过一个中间信号R_adjust得到读地址需要调整的值,R_adjust等效于当前的写地址在读时钟域的体现,当Adjust有效时,对R_adjust信号最高位取反,其他位不变得方式得到读地址。其中,R_adjust=W_binary+5,W_binary为W_reg_3转二进制后的数据,是写地址在读时钟域的体现,之所以采用写地址格雷码转换后延时3拍的方式完成时钟域转换,主要是为了消除采样中可能会出现的亚稳态。
虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。
权利要求
1.一种异步数据时钟域转换的系统,包含双口随机存取存储器模块,所述双口随机存取存储器模块用于存储数据并根据所述读写地址模块中的地址进行相应的存取操作;其特征在于,还包含读写地址模块,冲突判断模块,保护电路模块和地址置位模块;所述读写地址模块用于存储并提供读、写地址;所述冲突判断模块用于在所述读写地址模块中的所述读、写地址冲突时将地址调整信号置为有效;所述保护电路模块用于从所述冲突判断模块接收所述地址调整信号并向所述地址置位模块输出,在输出有效的所述地址调整信号有效后的一段时间内,屏蔽所述地址调整信号;所述地址置位模块用于在接收到有效的所述地址调整信号时,调整所述读写地址模块中的读、写地址。
2.根据权利要求1所述的异步数据时钟域转换的系统,其特征在于,所述冲突判断模块还用于根据读地址是否落在所述写地址前后的禁区内决定是否将所述地址调整信号置为有效。
3.根据权利要求2所述的异步数据时钟域转换的系统,其特征在于,所述冲突判断模块中,所述写地址前后的禁区的大小可以通过参数设定。
4.根据权利要求3所述的异步数据时钟域转换的系统,其特征在于,所述冲突判断模块还包含延时寄存器组和冲突逻辑判断子模块;所述延时寄存器组用于将读、写地址转换为格雷码后在读时钟域分别经过多个延时寄存器生成具有不同延时的格雷码表示的读、写地址;所述冲突逻辑判断子模块用于以所述延时寄存器组生成的具有不同延时的格雷码表示的读、写地址为输入,产生所述地址调整信号。
5.根据权利要求4所述的异步数据时钟域转换的系统,其特征在于,所述冲突逻辑判断子模块还包含组合电路模块和多路选择器;所述组合电路模块用于以所述延时寄存器组产生的具有不同延时的格雷码表示的读、写地址作为输入,产生所有可能参数对应的所述地址调整信号作为所述多路选择器的多路输入;所述多路选择器以所述参数作为控制信号,选择该参数对应的所述地址调整信号输出。
6.根据权利要求4所述的异步数据时钟域转换的系统,其特征在于,所述冲突逻辑判断子模块中,在延时拍数之差小于等于所述参数的格雷码转换后的所有读、写地址对中,如果有任何一对相同则将所述地址调整信号置为有效。
7.根据权利要求1所述的异步数据时钟域转换的系统,其特征在于,所述读写地址模块中二进制表示的所述读地址和所述写地址的初始值最高位相反,其它位相同。
8.根据权利要求1所述的异步数据时钟域转换的系统,其特征在于,所述保护电路模块在输出有效的所述地址调整信号时置位一个计数器并开始计数,当该计数器的计数值小于特定值时,屏蔽所述地址调整信号。
9.根据权利要求8所述的异步数据时钟域转换的系统,其特征在于,和所述计数器的计数值比较的所述特定值由所述参数确定,不同参数对应不同特定值。
10.根据权利要求1所述的异步数据时钟域转换的系统,其特征在于,所述地址置位模块在收到有效的所述地址调整信号后,将当前二进制表示的所述写地址的最高位取反,其它位不变,赋给所述读地址。
11.根据权利要求10所述的异步数据时钟域转换的系统,其特征在于,所述地址置位模块中,将所述延时寄存器组中存储的格雷码表示的所述写地址转换为二进制后,加上与当前写地址的延时后得到调整读地址信号,将所述调整读地址信号最高位取反后得到所述读地址需要调整到的数值。
全文摘要
本发明涉及芯片的接口技术,公开了一种异步数据时钟域转换的系统,使得可以根据硬件时钟的实际情况,在容忍时钟抖动的情况下最大限度的满足输入、输出数据的延时固定,同时避免一次冲突引起读、写操作多次调整。这种异步数据时钟域转换的系统用参数控制读、写地址冲突范围,即提供一个RAM活动窗,并且提供一种读、写地址冲突后的延时保护机制,在读、写地址冲突后一段时间内不输出调整信号。
文档编号G06F12/00GK1741188SQ20041007673
公开日2006年3月1日 申请日期2004年8月29日 优先权日2004年8月29日
发明者李红霞, 李刚 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1