描述
DisplayPort v3.2内核在GTP收发器中使用2字节接口。当针对Spartan-6 FPGA时,DisplayPort内核使用1字节接口时钟方案,这不适合DisplayPort实现。
Spartan-6 FPGA GTP收发器用户指南 (UG386) – “GTPCLKOUT以2字节模式驱动GTP TX”部分为2字节接口实现提供了正确的时钟方案。
解
解决方法:
生成DisplayPort v3.2内核后,请按照以下步骤更正用于GTP 2字节模式的时钟方案:
1)在< project_directory > / src文件夹中找到< core_name > _rx_phy.v(hd)模块
2)找到DCM_SP实例并取消注释此部分。默认情况下,此DCM_SP将被注释掉,如下所示:
// ------------------------------------------------ ---------------------
//如果要使用DCM_SP而不是BUFIO2,请取消注释此代码
// ------------------------------------------------ ---------------------
// DCM_SP
//#(。CLKDV_DIVIDE(5.000),
// .CLKFX_DIVIDE(20),
// .CLKFX_MULTIPLY(2),
// .CLKIN_DIVIDE_BY_2(“TRUE”),
// .CLKIN_PERIOD(3.704),
// .CLKOUT_PHASE_SHIFT(“NONE”),
// .CLK_FEEDBACK(“1X”),
// .DESKEW_ADJUST(“SYSTEM_SYNCHRONOUS”),
// .PHASE_SHIFT(0),
// .STARTUP_WAIT(“FALSE”))
// rx_div2_inst
// //输入时钟
//(.CLKIN(i_clkout0),
// .CLKFB(i_clkout2_buf),
// //输出时钟
// .CLK0(i_clkout2),// 135/81
// .CLK90(),
// .CLK180(),
// .CLK270(),
// .CLK2X(i_clkout0_dcm),// 270/162
// .CLK2X180(),
// .CLKFX(),
// .CLKFX180(),
// .CLKDV(),
// //用于动态相移的端口
// .PSCLK(1'b0),
// .PSEN(1'b0),
// .PSINCDEC(1'b0),
// .PSDONE(),
// //其他控制和状态信号
// .LOCKED(i_rec_clk_dcm_locked),
// 。状态 (),
// .RST(~i_pll_lock_detect_tile_0),
// //未使用的引脚低电平
// .DSSEN(1'b0));
3)找到BUFIO2实例并对此部分进行评论。默认情况下,BUFIO2用于代替DCM_SP;一个例子如下所示:
注意:如果使用BUFIO2,请参阅(Xilinx答复56113)
//使用BUFIO2从GTP rec时钟生成RXUSRCLK2
BUFIO2#(。DIVIDE_BYPASS(“FALSE”),
.DIVIDE(2))
rx_div2_inst
(
.DIVCLK(i_clkout2),
.IOCLK(),
.SERDESSTROBE(),
.I(gtp_rx_rec_clk)
);
4)注释掉以下锁定信号。请注意,在< core_name > _rx_phy.v(hd)中会有一些“if generate”语句,你想从代码的“spartan6”部分编辑以下信号(它应该是第一个模块):
分配i_rec_clk_dcm_locked = 1’b 1;
5)为clkout_0信号编辑以下BUFG,以便它现在从i_clkout0_dcm获取输入:
原始BUFG(之前):
BUFG clkout0_bufg_inst
(
.O(i_clkout0_buf),
.I(i_clkout0)
);
将其更改为(之后):
BUFG clkout0_bufg_inst
(
.O(i_clkout0_buf),
.I(i_clkout0_dcm)
);
有关LogiCORE IP DisplayPort发行说明和已知问题的详细列表,请参阅(Xilinx答复33258) 。
修订记录:
2013年2月6日 – 初始版本
2/8/2013 – 编辑BUFG和锁定信号
没有回复内容