发明内容
本发明所要解决的问题是提出一种实现数据去抖动的数字电路装置,结构简单,可满足协议对抖动指标的要求,且无需外接晶体振荡器。
为了解决上述技术问题,本发明提供了一种实现数据去抖动的数字电路装置,包括数据缓冲电路、基准修正值计算电路、加法运算电路和分频电路,系统时钟信号连接到所有4个电路作为同步时钟信号,其中:
所述数据缓冲电路,用于接收输入的待去抖动的E1或T1数据信号和时钟信号,将输入数据按写地址写入先入先出缓冲器(FIFO缓冲器),按读地址从先入先出缓冲器中读出数据输出为无抖动的数据信号,同时将读地址和写地址信号输出到所述基准修正值计算电路;
所述基准修正值计算电路用于根据当前的工作模式确定一个常数作为基准值,在当前模式为去抖动模式时,将该基准值减去先入先出缓冲器深度,差值作为基准修正值输出到加法运算电路,在当前模式为再定时模式时,将该基准值直接作为基准修正值输出到加法运算电路,先入先出缓冲器深度即所述读地址减去写地址得到的差值;
所述加法运算电路用于以输入的基准修正值信号为加数,上一次的和为被加数进行连续的加法运算,在所述读使能信号有效时执行一次运算,将和保存,并将进位位输出到所述分频电路;
所述分频电路用于对系统时钟信号通过一计数器进行小数分频,产生无抖动的输出时钟,将进位位信号加上为E1或T1信号设置的模作为对系统时钟信号计数的模,同时产生所述读使能信号输出给加法运算电路和数据缓冲电路。
进一步地,上述装置还可具有以下特点:
所述数据缓冲电路是在系统时钟信号采样到该输入时钟信号上升沿时,将1BIT输入数据写入先入先出缓冲器并使写地址加1,在来自所述分频电路的读使能信号有效时,从该先入先出缓冲器读出1BIT数据输出为无抖动的数据信号,并使读地址加1。
进一步地,上述装置还可具有以下特点:
所述系统时钟信号的频率为77.76MHz,所述为E1信号设置的模为37,为T1信号设置的模为50。
进一步地,上述装置还可具有以下特点:
所述数据缓冲电路进一步包括一再同步电路、一大小为2n且数据宽度为1的FIFO缓冲器,一写地址生成单元和一读地址生成单元,其中:
所述再同步电路采用77.76MHz系统时钟信号对输入时钟采样,产生一个在输入时钟信号上升沿有效的77.76MHz脉冲信号,作为写使能信号输出到FIFO缓冲器和写地址生成单元;输入数据信号经过一级触发器采样,同步到77.76M的时钟域,输出给FIFO缓冲器的数据输入端;
所述写地址生成单元和读地址生成单元均为n位的计数器,用于向FIFO缓冲器提供读、写地址信号;
所述写使能信号有效时,将输入数据信号的一个比特数据按当前写地址存入FIFO缓冲器,且写地址加1,写地址值加到2n-1时回到0;所述读使能信号输入到读地址生成单元和FIFO缓冲器,在该读使能信号有效时,按当前读地址从FIFO读出一个比特数据输出为无抖动的数据信号,且读地址加1,读地址值加到2n-1时回到0。
进一步地,上述装置还可具有以下特点:
所述FIFO缓冲器的大小为512BIT,所述读地址生成单元的读地址为9位,在复位时初始化为0,所述写地址生成单元的写地址为9位,复位时初始化为256。
进一步地,上述装置还可具有以下特点:
所述数据缓冲电路还包括一空满控制电路,用于在每个系统时钟信号对读写地址进行采样并判断FIFO缓冲器中数据是否读空或写满,读地址与写地址相等时为满,其中一地址加1后与另一地址相等时为空,如判断出FIFO满或空,将写地址加上2n-1。
进一步地,上述装置还可具有以下特点:
所述基准修正值计算电路进一步包括FIFO缓冲器深度计算电路、基准值选择电路和基准修正值计算电路,其中:
所述FIFO缓冲器深度计算电路用于接收所述读地址和写地址信号,以及一定时信号,在定时时间到时,将所述读地址减去所述写地址,输出到基准修正值计算电路;
所述基准值选择电路用于根据输入的基准选择信号从多路固定常数的基准值信号中选择与当前模式对应的一个,输出到基准修正值计算电路,该基准值信号至少包括E1数据去抖动时的基准信号和T1数据去抖动时的基准信号;
所述基准修正值计算电路用于在工作于去抖动模式时,将输入的基准值减去FIFO缓冲器深度,差值作为基准修正值输出到加法运算电路。
进一步地,上述装置还可具有以下特点:
所述FIFO缓冲器的大小为512BIT,所述FIFO缓冲器深度计算电路接收的所述读地址和写地址信号均为9BIT,接收的定时信号为定时时间为500us的外部信号,输出到基准修正值计算电路的信号共12BIT,包括所述读地址减去所述写地址得到的9BIT,以及低3位的数据,该低3位由所述分频电路中计数器的高3位填充得到,作为FIFO缓冲器深度的小数部分;
所述基准值选择电路是从至少2个固定常数中选择1个作为基准值,在E1数据去抖动时选择17BIT的常数0x1F800作为基准值,在T1数据去抖动时选择17BIT的常数0x0C1B3作为基准值。
进一步地,上述装置还可具有以下特点:
所述基准值选择电路是从4个固定常数中选择1个作为基准值,在E1再定时时选择17BIT的常数0x1F000作为基准值,在T1再定时时选择17BIT的常数0x0B9B3;
所述基准修正值计算电路在工作于再定时模式时,将输入的基准值直接作为基准修正值输出到加法运算电路。
进一步地,上述装置还可具有以下特点:
所述加法运算电路采用一个18比特的加法器实现,在执行一次运算后,将和的低17位尾数及进位位保存,保存的进位位输出到所述分频电路。
进一步地,上述装置还可具有以下特点:
所述分频电路用于通过一个6比特的二进制计数器对77.76HMz系统时钟信号进行不同模的计数,在E1模式下,进位位为0时模为37,进位位为1时模为38;在T1模式下,进位位为0时模为50,进位位为1时模为51;二进制计数器等于10到18之间的任一自然数时输出一个有效的读使能信号;E1模式下二进制计数器小于18或T1模式下二进制计数器小于25时输出时钟CLKOUT为低电平,E1模式下二进制计数器大于等于18或T1模式下二进制计数器大于等于25时输出时钟CLKOUT为高电平。
本发明的显著效果是省略了一个额外的外部58.32MHz晶体振荡器。进一步地,通过配置信号来控制,既可以实现E1、T1输入数据消除抖动的功能,又可以实现E1、T1输入数据的再定时的功能,减少了系统的总体电路规模,降低了系统的成本,提高了系统的可靠性。
具体实施方式
下面结合附图和本发明实施例的具体电路进行详细描述。
如图1所示,本实施例实现数据去抖动的数字电路装置由数据缓冲电路1、基准修正值计算电路2、加法运算电路3和分频电路4四个部分组成。77.76M系统时钟信号连接到所有四个部分,作为这四部分电路的同步时钟信号。其中:
数据缓冲电路1,用于接收输入的待去抖动的E1或T1数据信号DATAIN和时钟CLKIN,由77.76MHz系统时钟采样到输入时钟的上升沿时刻,将1BIT输入数据写入FIFO并使写地址加1,在来自分频电路4的读使能信号rden有效时从FIFO读出1BIT数据输出为无抖动的数据信号DATAOUT,并使读地址加1;同时,将写地址信号和读地址信号输出到基准修正值计算电路2。
如图所示,该数据缓冲电路包括一再同步电路、一512BIT的数据宽度为1的FIFO缓冲器,一写地址生成单元和一读地址生成单元。
再同步电路采用77.76MHz的系统时钟在写侧对CLKIN采样,通过两级的D触发器保存并逐位移位,经过与非运算产生一个在CLKIN信号上升沿有效的77.76MHz脉冲信号,作为写使能信号输出到FIFO缓冲器和写地址计数器,DATAIN信号经过一级触发器采样,同步到77.76M的时钟域,输出给FIFO缓冲器的数据输入端。
为了满足再定时的要求,FIFO最小必须是512BIT,如果不要再定时的功能,FIFO大小可以小到128BIT,满足频偏+/-50ppm时不溢出就行。
写地址生成单元和读地址生成单元均为9位的计数器,用于向FIFO缓冲器提供读、写地址信号。在复位时,读地址初始化为0,写地址初始化为256,即写读地址差初始化为256。
在写侧,再同步电路输出的写使能信号有效时,将数据信号DATAIN的一个比特数据按当前写地址存入FIFO缓冲器,且写地址加1,写地址值加到511时回到0。在读侧,从分频电路引来的读使能信号输入到读地址生成单元和FIFO缓冲器,在读使能信号有效时,按当前读地址从FIFO缓冲器读出一个比特数据输出为无抖动的数据信号DATAOUT,且读地址加1,读地址值加到511时回到0。
空满控制电路(图略)用于在每个sysclk时钟对读写地址进行采样并判断FIFO缓冲器中数据是否读空或写满,读地址与写地址相等时为满,而读地址加1后与写地址相等时为空,如判断出FIFO缓冲器满或空,将写地址加上256,以保持读出数据的连贯性。在同一个时钟域下,不会存在误判的情况。
基准修正值计算电路2用于根据当前的工作模式选择一个常数作为基准值,工作在去抖动模式时,将该基准值减去FIFO缓冲器深度即FIFO缓冲器的读地址减去写地址的差值,得到基准修正值信号并输出给加法运算电路3,否则直接输出该基准值作为基准修正值信号。
如图所示,该电路进一步包括FIFO缓冲器深度计算电路、基准值选择电路和基准修正值计算电路。
FIFO缓冲器深度计算电路用于接收MFP500us定时信号(由外部提供的一个500us定时信号)、从数据缓冲电路输入的9BIT的FIFO缓冲器读地址和写地址信号,以及分频电路4送来的计数器最高3BIT信号。将读地址减去写地址作为高9位,其低3位由分频计数器的高3位充当,得到共12比特信号,每500us时间采样保存一次,即每500us进行一次减法运算,并结合当前分频计数器的高3位,输出到基准修正值计算电路2。数据缓冲器FIFO缓冲器的读地址减去写地址得到的差值反映了目前还有多少数据在FIFO缓冲器中,以作为是否调整分频系数,加快或减缓读出速率的依据。
基准值为固定的常数,但有四个可选值,即四个17bit的二进制常数信号,分别对应四种工作模式:
E1数据去抖动时等于0x1F800(17′b1_1111_1000_0000_0000);
T1数据去抖动时等于0x0C1B3(17′b0_1100_0001_1011_0011);
E1再定时时等于0x1F000(17′b1_1111_0000_0000_0000);
T1再定时时等于0x0B9B3(17′b0_1011_1001_1011_0011)。
因此,设置一基准值选择电路,该电路可以为一个四选一的选择开关,根据输入的基准选择信号从4路输入的基准值信号中选择与当前模式对应的一个,输出到基准修正值计算电路。
基准修正值计算电路用于在当前模式为E1数据去抖动或T1数据去抖动时,将输入的基准值减去FIFO缓冲器深度,差值作为17BIT的基准修正值输出到加法运算电路;在当前模式为E1再定时和T1再定时时,将输入的基准值直接作为17BIT的基准修正值输出到加法运算电路。该电路的工作模式的判断也可根据输入的基准选择信号来进行。
从实际实现的角度,9BIT,12BIT,17BIT这些位宽的参数、包括4个固定常数等,对应前面的FIFO缓冲器深度512BIT,这些常数是确定的。如FIFO缓冲器深度有变化,这些常数可以有相应的变化。
加法运算电路3用于以输入的17BIT基准修正值信号为加数,上一次的和为被加数进行连续的加法运算,从分频电路4送来的读使能信号有效时执行一次运算,并将和的低17位尾数及进位位保存,其中保存的进位位输出到分频电路4。
本实施例中,该加法运算电路采用一个18比特的加法器来实现。
分频电路4用于对77.76HMz系统时钟通过计数器进行小数分频产生输出的无抖动的输出时钟CLKOUT(2.048MHz或者1.544MHz),接收的进位位信号加上为E1或T1信号设置的模作为对系统时钟计数的模,同时产生读使能信号输出给加法运算电路3和数据缓冲电路1,计数器最高3BIT信号输出给基准修正值计算电路2,并产生去抖动后的输出时钟信号CLKOUT。
本实施例中,分频电路4采用一个6比特的二进制计数器对77.76HMz系统时钟进行不同模的计数,模由加法器进位位和E1/T1模式决定。在E1模式下,模为37(进位位为0时)或38(进位位为1时;在T1模式下,模为50(进位位为0时)或51(进位位为1时)。计数值等于10(也可以为10到18之间的任何自然数)的时候输出一个有效的读使能信号。计数器小于18(E1模式)或25(T1模式)时输出时钟CLKOUT为低电平,计数器大于等于18(E1模式)或25(T1模式)时输出时钟CLKOUT为高电平。6比特计数器的高三位连接到基准修正值计算电路,作为FIFO缓冲器深度的小数部分,可以进一步提高调整FIFO缓冲器的精度。
下面以几个应用实例分析描述各个部分电路是如何相互协调工作以完成数据去抖功能的:
实例1
以E1数据去抖功能为例,在读写速度相同的情况下,FIFO缓冲器深度处于一半的状态,写/读地址差为256,就是二进制的9′b1_0000_0000,结合分频计数器的高三位3′b000,得到12′b1000_0000_0000,基准值为17′b1_1111_1000_0000_0000,因此基准修正值为17′b1_1111_0000_0000_0000=17′d126976,并且500us时间内这个值保持不变。
加法运算器用这个值作为加数进行加法运算,上一次保存的和的17位尾数作为被加数进行连续的加法运算,FIFO缓冲器读使能有效时执行一次运算,1024次。加法运算中,共产生126976*1024/131072=992次进位,并且进位分布是均匀的,因此分频电路均匀的产生992次38分频和32次37分频,1024次输出的分频时钟频率平均为77.76*1024/(38*992+37*32)=2.048MHz,正好就是E1数据的标准速率,同时输出时钟由于500us时间段内分频次数的均匀分布,时钟相位是相对均匀的,达到输出相对无抖动的目的。
实例2
仍以E1数据去抖功能为例,假设在某个500us时间段,输入FIFO缓冲器的时钟比上一个时间段多了1比特,写时钟快,这时候读写地址差为257,变大,于是基准偏差值变小,导致加法运算的进位位变少,37分频的次数变多,而38分频的次数变少,促使输出的E1时钟(CLKOUT)加快。可以算出,1024个E1时钟经历的时间变为了499.99919624485596707818930041152us,可见读时钟是在加快,但不是500us一次性将多出的1比特读出来,因为1BIT还没有释放完,下次500us计算得出的基准值还会反映这个变化的后读写地址差值,仍在继续缓慢的释放多出的几分之一BIT(由计数器的高3BIT反映出来),于是1BIT均摊在很多次的500us内逐渐读出,所以达到了输入数据有抖动而输出消除抖动的目的。
对于T1工作模式,原理相同,只是选择的基准不一样,不再重述。
实例3
对于E1或T1再定时的情况,由于基准值直接作为偏差值,也就是说跟FIFO缓冲器的数据深度无关,这时候从77.76MHz的系统时钟按照恒定的分频比进行分频,得到了稳定的无抖动的E1/T1时钟。再定时的协议标准要求数据产生滑动时必须重读一帧数据,在本实施例的电路中通过FIFO缓冲器空满控制机制来实现的,即每当发生FIFO缓冲器满或空的情况,就将写地址加上256,读地址按照原有规律变化,这样可以保持读出数据的连贯性。
综上所述,上述方法和装置直接使用系统77.76MHz时钟进行小数分频,从同步系列数据中恢复出PDH E1(2.048MHz)或T1(1.544MHz)数据和2M/1.5M时钟,省略一个外接晶体振荡器,既能实现对E1数据又能对T1数据去抖,同时又能实现再定时的电路装置,满足G.783和移动通讯系统的抖动指标要求,减少了系统的总体规模,减少了系统整体成本,提高系统可靠性。