selectio(serdes)

目录

1.1 clock

1.1.1  byte clock

1.1.2 master device clock

1.1.3 slave device clock

1.2 reset

2. IODELAY

2.1 IODELAY

2.2 IDELAYCTRL

2.3 REFCLK、 TAP

3. Bitslip

4. 相位


相比于源同步接口,SerDes的主要特点包括:

 

  • SerDes在数据线中时钟内嵌,不需要传送时钟信号。
  • SerDes通过加重/均衡技术可以实现高速长距离传输,如背板。
  • SerDes使用了较少的芯片引脚。

 

1. clock & reset

1.1 clock

1.1.1  byte clock

byte clock * 10  / (DDR or SDR)= bit clock ,(注: 采用8B/10B编码)。

ex. byte clock = 30MHz,10B编码后的Date Rate = 300Mbps,考虑采用DDR,则bit clock = 150MHz.

1.1.2 master device clock

master device, 可采用内部时钟,即采用FPGA PLL输出时钟;

1.1.3 slave device clock

多个slave device,需采用external clock,以保证时钟一致性。

即使用收到的bit_clk,再进入PLL,产生本地的bit_clk和byte_clk. 即保证了使用了同一个外部时钟,也保证了本地的驱动能力。

1.2 reset

对于iserdes reset, 若使用External clock,则会有clk_reset(bit_clk)和io_reset(byte_clk);

对于iserdes,若使用External clock,则会有clk_reset(bit_clk)和io_reset(byte_clk);

            若使用Internal Clock,则只有io_reset.

对于oserdes,一般都使用Internal clock,

            若勾选Clock Forwarding,则会有clk_reset(bit_clk)和io_reset(byte_clk);

            反之,若不选则只有io_reset.

对于clk_reset和io_reset,必须先复位clk_reset,之后再复位io_reset,不可反置;

clk_reset在先,相当于使bit数据先稳定,之后再使byte稳定。

 

 

2. IODELAY


2.1 IODELAY

每个 I/O 模块包含一个可编程绝对延迟单元,称为 IODELAY。 IODELAY 可以连接到
ILOGIC/ISERDES 或 OLOGIC/OSERDES 模块,也可同时连接到这两个模块。


 

2.2 IDELAYCTRL

在电压、温度等因素变化时,可能会影响到系统的时序,此时IDELAYCTRL模块就可以连续补偿时钟域内所有个体的delay taps (IDELAY/ODELAY)。如果使用了IOB上的IDELAY或ODELAY资源,那么就必须使用IDELAYCTRL资源。请注意,整个IO BANK里面只有一个IDELAYCTRL。

在vivado device可以看到它的位置,它一定是和IODELAY模块一起使用的,端口RDY代表了IODELAY模块经过正常校准后的结果。它能够根据器件的PVT(工艺、电压和温度)差异给IO delay模块提供精确的delay tap。

2.3 REFCLK、 TAP

SerDes采用差分方式传送数据。一般会有多个通道的数据放在一个group中以共享PLL资源,每个通道仍然是相互独立工作的。

SerDes需要参考时钟(Reference Clock),一般也是差分的形式以降低噪声。接口端Rx和发送端Tx的参考时钟可以允许几百个ppm的频差(plesio-synchronous system),也可以是同频的时钟,但是对相位差没有要求。

 

IDELAYCTRL可以通过一个较高频率的参考时钟REFCLK(通常默认使用200MHz)为IDELAY或ODELAY提供延时抽头,可选0~31。

IDELAYCTRL以Ref_clk为基准对整个IO BANK进行输入延时控制,是为IDELAY模块服务的,补偿时钟域内所有模块的时序参考,这个时钟必须由BUFG或BUFH驱动。 REFCLK必须保证在FIDELAYCTRL_REF+IDELAYCTRL_REF_PRECISION(MHz)ppm才能保证 IDELAY/ODELAY的延时分辨率:

(TIDELAYRESOLUTION=1/(32x 2 x FREF))

vivado,data_delay 可调tap范围0~31,clock_delay可调范围0~31;

             即 data_delay 和clock_delay各占用ref_clock的半个周期。clock_delay即相当于data 前置,与data_delay是相反方向的相位设置。

ex,ref_clock = 200MHz, ref_clock_period = 1/ 200MHz = 0.5 ns = 5000ps

则data_delay 1个tap = 5000ps / 2  / 32 = 78ps

同样的,clock_delay 1个tap也是78ps。

3. Bitslip

LVDS包括一对差分时钟线和一对差分数据线,而没有帧同步信号,故需要对单bit进行字对齐(10bit对齐)。
Bitslip就是来调整数据字对齐的,即同步sync code,若超过N次Bitslip依然同步失败,则表示数据异常。

部分参考资料:熊猫君的文章“Zynq高速串行CMOS接口的设计与实现”,都已经说清楚了,大神~~

4. 相位

在LVDS输入接收时,时钟和数据的相位可能是不确定的,因此我们需要将时钟的相位作出调整,使得时钟能稳定的采集到输入数据。动态相位调整(DPA)(ALTERA)主要是实现LVDS接口接收时对时钟和数据通道的相位补偿,以达到正确接收的目的。但低端FPGA芯片没有此功能,需要自己实现。

工作的核心就是用锁相环PLL的相位调整功能,产生若干个时钟的不同相位,看哪些相位能准确的采集到输入数据,然后取窗口中间的一个时钟相位,作为正常工作时的采样时钟。比如通过PLL产生0,45,90,135,……,315度8个相移的时钟,如果0,45,90度相移的时钟能正确采样到输入,那么最后选取中间相位,即45度的时钟作为采样时钟。这样接口上具有最大的时序裕量,从而保证链路的可靠性。下图为这个设计的基本结构,通过PLL调整相位的接口,产生了时钟的不同相位来采集数据,最后选择一个最合适的相位。
参考:https://blog.csdn.net/woshifennu1234/article/details/79576380 
 

 

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值