图4 码元跳变沿脉冲产生电路
固定延迟单元的作用是,将经过跳变沿提取电路之后的码元信号进行固定时钟周期的延迟,使之与计数器的输出同相,从而达到位同步。
本设计的关键点是带清零抖动判断的N进制计数器的设计。当计数器清零输入没有抖动,而严格按照t=n×2NT时间出现时(当出现连“1”或是连“0”时,式中n>1,否则n = 1),计数器计到“0”和清零脉冲同时生效,计数器输出翻转,这时的输出时钟是稳定的。计数器的清零输入信号是由码元的边沿脉冲提供的,所谓清零抖动实际上就是输入码元的边沿位置出现抖动,这是符合实际情况的,因为信号的传输路径上不可避免地会产生衰减,并受到干扰,发送方的数据发送时钟也有可能存在抖动。下面讨论这种抖动对N进制计数器输出产生的影响:
1.当输入的不归零码元的跳变沿出现的时间略小于2NT的整数倍时,称之为前向抖动。此时计数器的清零脉冲出现在计数器还没有计数到 “0”的某个计数值的位置,比如当计数器计到N-1时,清零脉冲出现,于是计数器被清零脉冲清零,同时输出脉冲翻转。这种情况会使输出的时钟脉冲比估计的翻转时间提前aT=(0+N-(N-1)+1)T=2T,这对时钟输出不会产生不利影响。而且,时钟的翻转时间实时反映出码元的变化,有利于后续电路功能的实现。
2.当输入的不归零码元的跳变沿出现的时间略大于2NT的整数倍时,称之为后向抖动。此时计数器的清零脉冲出现在计数器计数到“0”之后的某个计数值的位置,比如当计数值为2时,清零脉冲出现。现在来看计数器的输出,首先当计数器计到“0”前,计数器输出一直维持在“0”;计数器计到“0”后,计数器输出自动翻转为“1”,然后继续计数;当计数值为2时,清零脉冲出现,于是计数器被清零脉冲清零,同时输出脉冲翻转为“0”,计数器输出就会出现持续时间为bT=(2-0)T=2T的窄脉冲。当接收电路的时钟里出现这种不可预测的窄脉冲时,接收电路位同步之后的后续电路的功能也就无法正常实现了,这也就是本文刚开始讨论的采用开环结构的快速位同步电路的缺点。
本文的设计方案中所采用的计数器是利用VHDL语言设计的、带清零抖动判断功能的计数器。具体来说,它可以判断清零抖动为前向抖动还是后向抖动。如果是后者,则忽略此次清零脉冲,同时将此之后的某个计数值减去b,这样做的目的是防止这种抖动带来的影响出现累加。依照以上分析及处理办法,可以设计出带有清零抖动判断功能的计数器。
a:process(clk,clr) begin
if clk'event and clk='1' then
if clr='1' and count>c then count0 and countc。这样可以在码元跳边沿之间的计数值凑够N的整数倍,避免了这种抖动带来的影响出现累加。程序中对清零信号有效且n=0的情况作了特殊考虑。
本设计方案在Altera的Cyclone II系列FPGA芯片EP2C5上进行了实现,在Quartus II环境下,用VHDL硬件描述语言和电路图输入混合设计的方法,完成了整个时钟提取电路的设计,其仿真结果如图5所示。仿真中采用的CLK频率为10MHz,参数取值为N=32、c=4。仿真图中各输入输出标号与图3中标号对应。