|
发表于 2015-4-29 15:08:32
|
显示全部楼层
本帖最后由 tmfjek 于 2015-4-29 15:12 编辑
时钟数据恢复电路数字实现所要考虑的因素
只考虑固定数据速率下通过本地时钟移相恢复数据时钟,对于有多种速率变换情形用多速率并行检测即可。
先假设数据发送端的周期陡动最大值为dts=ts0-ts,再假设接收端有N个可能的等相位差恢复时钟,分别为
clk0,clk1,.......clkN-1,分辨率为dte=te/N,如下图所示。(ts=te)
dte
| |
|--------|
clkn---| | -------
|--------|
clkn+1-----| | -------
----\/------------\
data----/\------------/
考虑set_up和hold,显然采用clkn或者clkn+1作为恢复时钟都不合适。由于源端的陡动可能变快也可能变慢,所以最理想的恢复时钟
(最大陡动情况下保证尽可能多的连续数据采样的set-up hold不违规),应该是以clkg其中g是n+1+(N-2)/2对N取模。用这个恢复时钟
采样,允许的data在时间轴上的变化窗口为dte*((N-2)/2),否则可能会出现set-up或hold违规。到此就可以算出能正确恢复出的最长数
据为
dte*((N-2)/2)
num = -------------
|dts|
如果接收数据长度超过num,可能会因为亚稳态导致数据出错。num是可以确信无误的最大传输长度。同时由于接收端时钟也会存在陡动,
考虑到数据和时钟相位的相对性,可以把接收端的陡动叠加到发送端进行计算。根据前面的分析,数字恢复时钟策略对于已存在的标准
通讯协议(像以太网PHY),只有当允许的最大传输长度满足协议要求才有意义。虽然增大N能扩大变化窗口,但N过大PR会存在问题,
同时精细的相位控制不易实现。所以这种策略对自定义的通信接口可能更有意义,对于发送数据长度超过num的情况,可以在num边界点
上重发同步头重新提取时钟来解决。 |
|