新闻中心

EEPW首页>EDA/PCB>设计应用> 基于FPGA的高速时钟数据恢复电路的实现

基于FPGA的高速时钟数据恢复电路的实现

作者: 时间:2009-10-23 来源:网络 收藏

2.1 超前滞后鉴相器
鉴相器使用可以识别输入信号连0和连1的超前滞后鉴相器,具体电路如图3所示。利用四个D触发器对输入信号Din采样产生s1、s2、s3三个信号,如果s2=s3≠s1,则表示时钟超前,up-down为高电平;如果s1=s2≠s3,则表示时钟滞后,up-down为低电平;当输入信号连0或连1时s1=s2=s3,valid为低电平,此时up-down无效。这两个信号都必须用时钟信号进行同步产生,否则电路可能由于s1、s2、s3的延迟差而进入一种死锁状态。这种鉴相器只有超前或滞后两种状态,如果直接将其输出用作控制时钟相位的调整,则时钟切换会过于频繁,而且输入信号中的毛刺会引起误操作。所以将其输出信号送给up-down计数模块,进行一段时间的积累后,再产生用于控制时钟相位的信号。

本文引用地址://m.amcfsurvey.com/article/191906.htm

2.2 up-down计数器模块
计数器模块的功能是在鉴相器送来的信号控制下进行计数,产生相位调整的控制信号。计数器的初始值为M,当输入信号valid为高电平时,判断up-down信号。如果该信号为1,则计数器加计数,否则减计数。当计数器的值为2M时,early产生高电平脉冲;当为0时,later产生高电平脉冲。
2.3 时钟产生调整模块
2.3.1 电路结构
时钟产生调整模块的主要功能是产生和输入信号频率相同的时钟信号,并根据相位判断模块发送过来的控制信号,不断地调整输出时钟相位,使得输出时钟的上升沿维持在输入信号中间位置,其结构如图4所示。不同相位的同频时钟是利用EP2C5T144C6 中的锁相环产生的,由于课题项目的需要,1个片子内部必须含有2个时钟,受到全局时钟数目的限制,采用6个时钟信号进行切换。在该模块电路设计设置6个状态,每一状态对应某一相位的时钟信号。当检测到early信号为高电平时,状态就跳变到比当前时钟信号相位提前1个相位的状态上(若相位超前则再继续超前),而当later信号为高电平时跳变到比当前时钟信号滞后1个相位的状态上去(相位滞后则继续滞后),然后再根据当前的状态选择相应的时钟信号,作为当前工作时钟即输出时钟信号Rclk。

2.3.2 时钟切换
采用时钟切换实现该相位调整,首要问题就是必须消除时钟切换时产生的毛刺,因此所有子电路都采用恢复出来的时钟信号作为其工作时钟,这样所有的时钟切换情况都可用图5表示。假定此时的工作时钟为clk_l,只要能够保证时钟切换避开上面的阴影区域,而是处在上图中的红色区域,则无论是时钟向前还是向后切换,都不会出现毛刺。以工作频率为200MHz计算,每段红色区域大约为1.6ns,而Altera中的LE单元延迟大约为0.23ns,所以采用buffer弥补延迟完全可以使时钟切换发生在合适的位置。
2.3.3 时钟相位偏移的补偿
该电路结构的另一关键是必须保证不同相位时钟信号经过时钟判断调整模块后,它们之间的相位关系不会因延迟的不同而失效而必须仍然成立,否则就会导致相位调整过大或过小,电路会因此变得不稳定。电路延迟由门延迟和连线延迟组成。对于连线延迟在AlteraCyclone II中只要两个LE之间的连线类型相同,延迟也就相同,而每个LAB中有16个LE也有16个LOCAL LINE布线资源,因此同一个LAB 中LE之间的互连线延迟都是相同的。对于门延迟,在Cyclone II中每个LE有A、B、C、D四个输入端,各端口延迟不同。首先通过在某些路径上插入buffer,使得所有时钟信号经过的LE的数目相同。然后再在3个时钟信号中各插入一个buffer,再根据最终的布线情况,调整这3个buffer的端口连接,就可以使得各时钟信号经过的门延迟基本相同。除了上述两种方法,在应用中使用了Quartus II的logiclock功能,按照设计的需要将同一功能模块的逻辑放在相同的LAB中,这样可以使连线延迟对电路的影响降到最小。同时利用该功能也可以直接将调整好的时钟应用于整个通信系统中,使得其他电路的布局布线不会对该电路产生影响。



评论


相关推荐

技术专区

关闭