参考设计
可以从 http://www.xilinx.com/cn/bvdocs/appnotes/xapp861.zip 下载参考设计文件。
过采样器模块称为 oversample_8x。其端口如表1 所示。
oversample_8x 模块还接受一个称为 IDELAY_45_DEGREES 的 Verilog 参数或 VHDL 类属参数,其默认值为 6。此值设置 IDELAY 的延迟量,以便在数据上获得一个 45 度的相移(八分之一位周期)。默认值 6 是对应 270 Mb/s 的正确 IDELAY 值 (78 ps * 6 ≈ (1 / 270 MHz) / 8)。如果比特率是 270 Mb/s 以外的其他值,就必须将 IDELAY_45_DEGREES 的正确值传输到该模块。
在内部差分终端 (DIFF_TERM) 开启的状态下,用 IOSTANDARD 属性值“LVDS_25”在oversample_8x 模块内实例化 IBUFDS_DIFF_OUT 输入缓冲器。如果应用要求不同的IOSTANDARD 属性或者要求关闭差分终端,则必须修改在 oversample_8x 模块中的IBUFDS_DIFF_OUT 缓冲器上设置的约束条件.IBUFDS_DIFF_OUT 只能用于 LVDS I/O 标准。
DRU 模块称为 os48_1011x20bTo10b_top2。其端口如表2 所示。名称以 A/B 开头的所有端口实际上都是双端口,其中一个对应 A 通道,另一个对应 B 通道。
DRU 的 A_recclk 和 B_recclk 端口必须由连接到各自 oversample_8x 模块 clk0 输入端口的同样的比特率时钟驱动。过采样器的 dout 和 dout_rdy 端口分别驱动 DRU 的 A/B_din20b 和A/B_en 端口。
为 DRU 正确指定信号位顺序至关重要。DRU 有两个位顺序输入端,一个指定 DRU 输入数据的位顺序,另一个指定 DRU 输出数据的位顺序。不能独立地指定 DRU 两个通道的位顺序。
10 位和 20 位输出端口均由 DRU 提供。两个端口始终处于活动状态,应用可选择使用任一个。各通道的 10 位和 20 位端口各有其输出使能,通常用作对下游逻辑的时钟使能。在典型应用中,驱动 oversample_8x 的 clk0 端口和 DRU 的 A/B_recclk 端口的比特率参考时钟用作接收器中下游逻辑的时钟,如解码器、成帧器和查错器等。当 DRU 的输出端口上有新的恢复数据字时,用 DRU 的时钟使能输出仅在这些时钟周期上启用下游逻辑。