一、构建硬件环境
注意VC709的光纤接口的硬件排列顺序:4、3、1、2。由于FPGA程序中使用的是单lane,并将引脚映射至SPF+通道1,所以将光模块插入到1口中,使用光纤法兰,将收、发对插,完成外部光纤回环。
二、测试
1)下载bit后,未通过IIC接口对SI5324器件进行配置,其输出至GT_REF_CLK的参考时钟不存在;此时用户接口的RESET和PMA_INIT为1。
2)PMA_INIT为1,gt_reset_i_tmp为高→gt_reset_i_delayed为高→gt_reset_i_eff为高→gt_reset_i为高,此时GT处于复位状态;
aurora_64b66b_x1_exdes.v , line 410:
assign gt_reset_i_tmp = PMA_INIT | gtreset_from_vio_r3 | pma_init_from_fsm_r1;
3)reset_i为高,aurora IP处于复位状态;
4)当IIC完成SI5324的配置后,释放用户接口的RESET和PMA_INIT,gt_pll_lock信号变为高电平:
CHANNEL_UP和LANE_UP拉高后,frame_gen和frame_check模块已经开始工作,开始数据测试了。
观察DATA_ERR_COUNT,若保持为0,则证明数据收发正确,若不为0,则链路通道可能存在误码。
注意:光模块的RS引脚无需设置,默认即可;DISABLE引脚设置为0:
assign SFP1_TX_DISABLE = 1‘b0;
assign SFP2_TX_DISABLE = 1‘b0;
约束:
set_property PACKAGE_PIN AB41 [get_ports SFP1_TX_DISABLE]
set_property IOSTANDARD LVCMOS18 [get_ports SFP1_TX_DISABLE]
set_property PACKAGE_PIN Y42 [get_ports SFP2_TX_DISABLE]
set_property IOSTANDARD LVCMOS18 [get_ports SFP2_TX_DISABLE]
在vio1_inst中,可以观察channel_up和lane_up的情况:
在vio2_inst中,reset_test_fsm_from_vio设置为1,可复位状态机;使用reset_test_enable_from_vio使能测试逻辑;reset_quality_cntrs可以复位测试时用的关键计数器;
三、问题
1)CHANNEL_UP或LANE_UP无法拉高:
a.首先确认一下光模块是否工作正常:
将光模块的TX_FAULT和LOS信号引入到FPGA中,并加入到ILA中进行观察,为了防止其被综合优化掉,这里将二者同时引出到LED。
always @ (posedge sys_clk_50m)
begin
SFP1_TX_FAULT_r <= SFP1_TX_FAULT;
SFP2_TX_FAULT_r <= SFP2_TX_FAULT;
SFP1_LOS_r <= SFP1_LOS;
SFP2_LOS_r <= SFP2_LOS;
end
assign BOARD_LED2 = SFP1_TX_FAULT & SFP2_TX_FAULT ;
assign BOARD_LED3 = SFP1_LOS & SFP2_LOS ;
约束:
set_property PACKAGE_PIN AM39 [get_ports BOARD_LED0]
set_property IOSTANDARD LVCMOS18 [get_ports BOARD_LED0]
set_property PACKAGE_PIN AN39 [get_ports BOARD_LED1]
set_property IOSTANDARD LVCMOS18 [get_ports BOARD_LED1]
set_property PACKAGE_PIN Y38 [get_ports SFP1_TX_FAULT]
set_property IOSTANDARD LVCMOS18 [get_ports SFP1_TX_FAULT]
set_property PACKAGE_PIN AA39 [get_ports SFP2_TX_FAULT]
set_property IOSTANDARD LVCMOS18 [get_ports SFP2_TX_FAULT]
set_property PACKAGE_PIN Y39 [get_ports SFP1_LOS]
set_property IOSTANDARD LVCMOS18 [get_ports SFP1_LOS]
set_property PACKAGE_PIN AA40 [get_ports SFP2_LOS]
set_property IOSTANDARD LVCMOS18 [get_ports SFP2_LOS]
正常情况下,FAULT和LOS信号为0,若为1,则需要检查一下光模块的安装、本身的好坏,以及光纤的通断,可以更换光模块和光纤再次尝试;
b.检查GT_REFCLK时钟配置是否正确;可参考前面专门说明SI5342配置的博文。
c.在vio1_inst中尝试复位gt和syreset:
d.调整vio1_inst中的loop_back,使用FPGA内部回环测试GT;
2)周期性的发生channel_up 拉低,同时IP报SOFT_ERR错误:
优先检查时钟!本人出现这个现象是由于之前将SI5324配置为BYPASS模式,并由FPGA提供200MHz的参考时钟,经过SI5324的BYPASS后作为FPGA的GT_REFCLK,该时钟Jitter超出了GT_REFCLK的要求,造成误码。后更改为使用SI5324的PLL输出后,问题解决。
通过了上述测试后,整个光模块部分验证基本结束,用户可以替换掉frame_gen和frame_check及相关的模块,将AXIS接口引出,自己设计数据收发逻辑。