FPGA GTH 实现QSFP光口通信(三)——单路数据对齐

这篇具有很好参考价值的文章主要介绍了FPGA GTH 实现QSFP光口通信(三)——单路数据对齐。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 背景介绍

2. IP核配置

3. 自环回测试

3.1 数据产生模块

3.2 数据对齐模块

3.3 接口信号使用分析

3.3.1  ZYNQ 7 平台上GTX接口的信号

3.3.2  UltraScale 平台上GTH接口的信号

4. 数据对齐信号说明

4.1 TXCTRL

TXCTRL1 and TXCTRL0

TXCTRL2

4.2 RXCTRL

RXCTRL0

RXCTRL1

 RXCTRL2

RXCTRL3

RXCTRL0 and RXCTRL1

4.3 回环测试信号示例

5. 一些过程测试现象 

6. Reference 


1. 背景介绍

        基于UltraScale xczu9eg 平台欲实现 4 路 GTH 的 QSFP 光口通信,前篇文章介绍了实现流程。此篇文章继续记录调试过程。

        光口通信牵扯数据对齐。数据对齐包含两方面:

1)某一路GTH写出数据,接收读到数据后有bit偏移,需要校正对齐此bit偏移;

2)4路GTH的数据收到后有各自时间上的先后,需要进行对齐同步。

此篇文章先调试探讨场景1),单路数据的bit对齐。因此先激活1路GTH用于调试。

2. IP核配置

UltraScale FPGAs Transceivers Wizard

gth rx_aligned_led,FPGA,fpga开发

gth rx_aligned_led,FPGA,fpga开发

gth rx_aligned_led,FPGA,fpga开发

3. 自环回测试

3.1 数据产生模块

        数据产生模块的代码如下,在计数器 =6'b111 时:txctrl0_reg <= 4'b0010;  txdata_reg <= 32'hbcbcbcbc; 作为一个数据包头标记。其他时间 xctrl0_reg <= 4'b0001;  txdata_reg <= 32'h00050009;

module gth_aurora_example_stimulus_8b10b (
  input  wire         gtwiz_reset_all_in,
  input  wire         gtwiz_userclk_tx_usrclk2_in,
  input  wire         gtwiz_userclk_tx_active_in,
  output wire  [15:0] txctrl0_out,
  output wire  [15:0] txctrl1_out,
  output wire   [7:0] txctrl2_out,
  output wire [31:0] txdata_out
);

  wire example_stimulus_reset_int = gtwiz_reset_all_in || ~gtwiz_userclk_tx_active_in;
  wire example_stimulus_reset_sync;

  (* DONT_TOUCH = "TRUE" *)
  gth_aurora_example_reset_synchronizer example_stimulus_reset_synchronizer_inst (
    .clk_in  (gtwiz_userclk_tx_usrclk2_in),
    .rst_in  (example_stimulus_reset_int),
    .rst_out (example_stimulus_reset_sync)
  );

  wire prbs_any_gen_en_int = 1'b1;

  wire   [31:0] txdata_prbs;
  wire   [31:0] txdata_char = 32'h5500_00BC ;  //   {4{8'hBC}};
  reg    [31:0] txdata_reg  = 32'b0;
  reg    [15:0] txctrl0_reg = 0  ;          //      = 16'b0 
  reg    [15:0] txctrl1_reg = 0  ;          ///---     = 16'b0
  reg    [8:0]  txctrl2_reg = 0  ;          ///---     = 8'b0
  assign        txctrl0_out = 16'b0 ; //     
  assign        txctrl1_out = 16'b0 ; // txctrl1_reg_w ;       ///---
  assign        txctrl2_out = txctrl2_reg ; // 
  assign        txdata_out  = txdata_reg  ;

  reg [15:0] prbs_slt_ctr = 16'd0;

 
  always @(posedge gtwiz_userclk_tx_usrclk2_in) 
  begin
    if (example_stimulus_reset_sync|| ( prbs_slt_ctr >= 16'hf ) ) begin
      prbs_slt_ctr <= 16'd0;
    end
    else begin
        prbs_slt_ctr <= prbs_slt_ctr + 16'd1;
    end
 end

  always @(posedge gtwiz_userclk_tx_usrclk2_in) begin
    if (example_stimulus_reset_sync  ) begin
      txdata_reg <= 32'h5500_00BC ; //32'hbcbc0000;
      
    end
    else  
        if ( prbs_slt_ctr[5:0] == 6'b111  )
            begin
                txctrl2_reg <= 4'b0001 ; //txctrl0_reg_w ;  //4'b0100;
                txdata_reg <= 32'h5678_9aBC ; //32'hbcbcbcbc;
            end
        else begin
                txctrl2_reg <= 8'b0 ; //probe_out3 ; // 32'h00000001 ; //1'b1 ;
                txdata_reg <= 32'h01234567 ;  //prbs_slt_ctr ;
            end
   end

    gth_aurora_prbs_any # (
    .CHK_MODE    (0),
    .INV_PATTERN (1),
    .POLY_LENGHT (31),
    .POLY_TAP    (28),
    .NBITS       (32)
  ) prbs_any_gen_inst (
    .RST      (example_stimulus_reset_sync),
    .CLK      (gtwiz_userclk_tx_usrclk2_in),
    .DATA_IN  (32'b0),
    .EN       (prbs_any_gen_en_int),
    .DATA_OUT (txdata_prbs)
  );


endmodule

3.2 数据对齐模块

        数据对齐模块的代码如下,由于过程中发现 rxctrl0, rxctrl1, rxctrl2, rxctrl3 都有变化,因此根据这几个信号分别做对齐校正。

module data_align (
    input rst_n ,
    input rx_clk ,
    input [31:0] rx_data ,
    input [3:0] rx_ctrl0 ,
    input [3:0] rx_ctrl1 ,
    input [3:0] rx_ctrl2 ,
    input [3:0] rx_ctrl3 ,
    output reg [31:0] rx_data_align,
    output reg [3:0]  rx_ctrl_align
);
reg[31:0] rx_data_r ;
reg[3:0] align_bit ;
reg[3:0] rx_ctrl_r ;
reg[3:0] rx_ctrl ;
 

always@(posedge rx_clk or negedge rst_n)
begin
    if(!rst_n)
        align_bit <= 16'd0;
    else if(rx_ctrl0 != 16'd0)
        align_bit <= rx_ctrl0;
    else
        align_bit <= align_bit ; //rx_ctrl0 ;  
end

always@(posedge rx_clk or negedge rst_n)
begin
if(!rst_n)
    rx_data_r <= 16'd0;
else
    rx_data_r <= rx_data;
end

always@(posedge rx_clk or negedge rst_n)
begin
    if(!rst_n)
        rx_ctrl_r <= 16'd0;
    else
        rx_ctrl_r <= rx_ctrl0;
end        
        
reg [31:0]  rx_data_align_01    ;
reg [31:0]  rx_data_align_10    ;
always@(posedge rx_clk or negedge rst_n)
begin
    if(!rst_n)
        begin
            rx_data_align <= 32'd0;
        end
    else
        case(align_bit)     //检测到输入的对齐信号时
        4'b0001:
            begin
                rx_data_align       <= rx_data; 
            end
        4'b0010:
            begin
                rx_data_align       <= {rx_data[7:0],rx_data_r[31:8]};   
            end
        4'b0100:
            begin
                rx_data_align <= {rx_data[15:0],rx_data_r[31:16]};
            end
        4'b1000:
            begin 
                rx_data_align <= {rx_data[23:0],rx_data_r[31:24]};
            end
        default:
            begin
                rx_data_align <= 32'd0;
            end
    endcase
end

always@(posedge rx_clk or negedge rst_n)
begin
    if(!rst_n)
        rx_ctrl_align <= 4'd0;
    else
        case(align_bit)
        4'b0001:
            rx_ctrl_align <= rx_ctrl0;
        4'b0010:
            rx_ctrl_align <= {rx_ctrl0[0],rx_ctrl_r[3:1]};           
        4'b0100:
            rx_ctrl_align <= {rx_ctrl0[1:0],rx_ctrl_r[3:2]};  
        4'b1000:                                                 
            rx_ctrl_align <= {rx_ctrl0[2:0],rx_ctrl_r[3]};    
        default:
            rx_ctrl_align <= 4'd0;
    endcase
end 

endmodule

3.3 接口信号使用分析

3.3.1  ZYNQ 7 平台上GTX接口的信号

        在ZYNQ 7平台上,7 Series FPGAs Transceivers Wizard IP中,GTX关于数据对齐的有如下几个信号:

//------------ Receive Ports - RX Byte and Word Alignment Ports ------------
        .gt0_rxbyteisaligned_out        (gt0_rxbyteisaligned_i),
        .gt0_rxbyterealign_out          (gt0_rxbyterealign_i),
        .gt0_rxcommadet_out             (gt0_rxcommadet_i),
        .gt0_rxmcommaalignen_in         (gt0_rxmcommaalignen_i),
        .gt0_rxpcommaalignen_in         (gt0_rxpcommaalignen_i),
        .gt0_rxmcommaalignen_in         (1'b1),
        .gt0_rxpcommaalignen_in         (1'b1),
//----------------- Receive Ports - RX8B/10B Decoder Ports -----------------
        .gt0_rxchariscomma_out          (gt0_rxchariscomma_i),
        .gt0_rxcharisk_out              (gt0_rxcharisk_i),
//------------------- Transmit Ports - TX Gearbox Ports --------------------
        .gt0_txcharisk_in               (tx0_kchar),

        我的理解是,在写数据时,特定位置例如数据包头,给予 tx0_kchar 信号特定值,例如赋 4'b0001。对应传输到rx端的 gt0_rxcharisk_i ,如果接收到的值同样为 4'b0001,则说明数据是对齐的。如果接收到的值为 4'b0010 或 4'b1000 等 ,说明数据有移位。需要根据 “1” 的左右偏移对应校正数据。

        那么由此产生几个疑问:

1)其他几个信号是什么作用,如何使用?

2)K28.5 0xBC 的字节边界和此处的 tx0_kchar 功能是不是有重复?或者二者的功能各自用在哪里?

——K码对齐是GT IP自动完成的,通过K码将连续 1 bit数据分割成 Byte 数据。帧对齐(word alignment)是用户操作 Byte 数据进行对齐。

FPGA:【轻松玩转高速接口系列】、K码对齐、帧对齐规则_哔哩哔哩_bilibili

3.3.2  UltraScale 平台上GTH接口的信号

        关于数据对齐的如下:

   ,.rxcommadeten_in                         (rxcommadeten_in)
   ,.rxmcommaalignen_in                      (rxmcommaalignen_in)
   ,.rxpcommaalignen_in                      (rxpcommaalignen_in)

   ,.tx8b10ben_in                            (tx8b10ben_in)
   ,.txctrl0_in                              (txctrl0_int)
   ,.txctrl1_in                              (txctrl1_int)
   ,.txctrl2_in                              (txctrl2_in)

   ,.rxbyteisaligned_out                     (rxbyteisaligned_out)
   ,.rxbyterealign_out                       (rxbyterealign_out)
   ,.rxclkcorcnt_out                         (rxclkcorcnt_out)

   ,.rxcommadet_out                          (rxcommadet_out)
   ,.rxctrl0_out                             (rxctrl0_int)
   ,.rxctrl1_out                             (rxctrl1_int)
   ,.rxctrl2_out                             (rxctrl2_out)
   ,.rxctrl3_out                             (rxctrl3_out)

        由此产生疑问:

1)为什么 rxctrl 有3个信号,txctrl 有4个?分别是什么作用?

——见下节说明。

2)其他信号是什么作用,如何配置使用?

——TBD

4. 数据对齐信号说明

        Ref:《ug576-ultrascale-gth-transceivers》

4.1 TXCTRL

        TXCTRL Clock Domain is TXUSRCLK2.

TXCTRL1 and TXCTRL0

To accommodate protocols that use disparity to send control information, the running disparity(运行不一致性,RD) not only can be generated by the 8B/10B encoder but is also controllable through TXCTRL1 and TXCTRL0 as shown in Table 3-6. For example, an Idle character sent with reversed disparity might be used to trigger clock correction.

gth rx_aligned_led,FPGA,fpga开发

        为了考虑协议使用极性偏差来发送控制信息。运行极性偏差不仅可以由8B/10B编码器生成,而且可以通过TXCTRL1和TXCTRL0来控制,二者一起使用,如表3-6所示,表明数据 “disparity negative/positive”,极性偏差为正或负。例如,以反向极性偏差发送的空闲字符可能用于触发时钟校正。

        正常使用过程中赋0?

TXCTRL2

K Characters

The 8B/10B table includes special characters (K characters) that are often used for control functions. TXCTRL2 ports are used to indicate if data on TXDATA are K characters or regular data. The 8B/10B encoder checks received TXDATA byte to match any K character if corresponding TXCTRL2 bit is driven High.

        8B/10B表包括经常用于控制功能的特殊字符(K字符)。TXCTRL2 用于指示TXDATA上某些位是K码还是常规数据。如果TXCTRL2某位是1,则8B/10B编码器对应接收到TXDATA的字节为K码。

        例如,TXCTRL2 = 4’b0001,那么“1”位对应的rxdata 8位数据是K码,如采用K28.5,对应收到 8’hBC,将用于K码匹配对齐。

4.2 RXCTRL

        RXCTRL Clock Domain is RXUSRCLK2.

RXCTRL0

Special Characters

8B/10B decoding includes special characters (K characters) that are often used for control functions. When RXDATA is a K character, the decoder drives RXCTRL0 High.

        8B/10B解码包括经常用于控制功能的特殊字符(K字符)。当RXDATA是K字符时,解码器将RXTRL0 对应位驱动为高

RXCTRL1

Decoder Error Detection 解码错误检查

The decoder can provide both disparity check and out-of-table error detection. Disparity check is performed by the decoder. When the data byte on RXDATA arrives with the wrong disparity, RXCTRL1 is asserted High. This is shown in Figure 4-32. The figure shows a waveform at the RX data interface when the decoder receives good data (A), data with disparity error (B), and good data again (C).

gth rx_aligned_led,FPGA,fpga开发

        当RXDATA上的数据字节wrong disparity时,RXCTR1 拉高。

 RXCTRL2

Special Characters

If DEC_PCOMMA_DETECT is set to TRUE, the decoder drives the corresponding RXCTRL2 High whenever RXDATA is a positive 8B/10B comma. If DEC_MCOMMA_DETECT is TRUE, the decoder drives the corresponding RXCTRL2 bit High whenever RXDATA is a negative 8B/10B comma.

gth rx_aligned_led,FPGA,fpga开发

        如果DEC_PCOMMA_DETECT设置为TRUE,则每当RXDATA为正8B/10B逗号时(当RXDATA 是 plus comma),解码器就会驱动相应的RXTRL2高电平。

        如果DEC_MCOMMA_DETECT为TRUE,则每当RXDATA为负8B/10B逗号时(当RXDATA为minus comma),解码器驱动相应的RXCTRL2位为High。

RXCTRL3

Active High indicates the corresponding byte shown on RXDATA was not a valid character in the 8B/10B table.

        为高表示RXDATA对应字节不是有效数据。

RXCTRL0 and RXCTRL1

RXCTRL0 and RXCTRL1 除了上述特殊字符和解码错误检查的功能外,还有表外错误检查功能。

The 8B/10B decoder performs out-of-table error detection and drives the RXCTRL3 port High when it is enabled, but receives a 10-bit character that cannot be mapped into a valid 8B/10B character listed in Appendix A, Valid Data Characters. When this occurs, the non-decoded 10-bit character is piped out of the decoder through the RX data interface with this format:
•The corresponding RXCTRL1 represents the 9th bit
•The corresponding RXCTRL0 represents the 8th bit
•The corresponding RXDATA byte represents the [7:0] bits
•The corresponding RXCTRL3 represents that an invalid 8B/10B character error occurred

Figure 4-33 shows a waveform at the RX data interface when the decoder receives good data (A), data with an invalid character (B), and good data again (C). When an error occurs during (B), RXCTRL0 represent non-decoded data bit [8] and RXCTRL1 represent the non-decoded data bit [9], where the RXDATA represents the non-decoded data bits [7:0].

gth rx_aligned_led,FPGA,fpga开发

表外错误检测

当RXCTRL3启用,但接收到的10位字符无法映射到有效8B/10B字符时,驱动RXCTRL3为高。发生这种情况时,未解码的10位字符通过以下格式的RX数据接口从解码器输出:
•对应的RXCTRL1表示第9位
•对应的RXCTRL0表示第8位
•相应的RXDATA字节表示[7:0]位
•相应的RXCTRL3表示发生了无效的8B/10B字符错误

4.3 回环测试信号示例

  • TXCTRL0 = 0 ,TXCTRL1 = 0 。
  • TXCTRL2 在数据同步位 = 4’b0001,其他时间 = 0。
  • RXCTRL1 = 0 ,表示没有 wrong disparity 。
  • RXCTRL0 在RXDATA为K码时= 1,其他时间为0 。
  • RXCTRL2 在RXDATA为K码时,表明 RD+/- 即 minus / plus comma 出现,此时为1,其他时间为0 。
gth rx_aligned_led,FPGA,fpga开发

5. 一些过程测试现象 

1)rxctrl1 有变化,rx数据偶尔正确;

2)rxctrl2 == 0,其他规律性变化,rx数据不对。

gth rx_aligned_led,FPGA,fpga开发

gth rx_aligned_led,FPGA,fpga开发

2024.4.15尝试:

3)txctrl2 在对齐位=1,其他时间为0时,rxctrl0、rxctrl2伴随变化。rx数据txctrl2=0时不对,但align模块可调。

gth rx_aligned_led,FPGA,fpga开发

4)txctrl2 始终为1时,rxctrl0、rxctrl2伴随变化且rxctrl1伴随反相变化。rx数据正确。

gth rx_aligned_led,FPGA,fpga开发

5)txctrl2 ,txctrl0 均始终为1时,rxctrl0、rxctrl1、rxctrl2伴随变化。rx数据正确。

gth rx_aligned_led,FPGA,fpga开发

6)(  ~3))txctrl0 在对齐位=1,其他时间为0时,rxctrl1伴随变化为2/0。rx数据正确。

gth rx_aligned_led,FPGA,fpga开发

7)(  ~4))txctrl0 始终为1时,rxctrl1伴随变化为2/1。rx数据正确。

gth rx_aligned_led,FPGA,fpga开发

6. Reference 

1. https://blog.csdn.net/weixin_44327074/article/details/137033356

2. UltraScale+ GTH ip核使用_ibufds_gte4-CSDN博客

3. Ultrascale/Ultrascale+ FPGA GTH IP及结构详解(一)_gth接口-CSDN博客

4. FPGA GTH 全网最细讲解,aurora 8b/10b协议,HDMI板对板视频传输,提供2套工程源码和技术支持_原语gthe2_common-CSDN博客

5. FPGA光纤通信--A7、ZU7EG间光纤通信_plus comma-CSDN博客 

6. disparity/Running disparity(RD)和8b/10b线路编码_8b10b running disparity-CSDN博客

7. 8b/10b编码技术系列(二):Disparity、RD、8b/10b编码-CSDN博客文章来源地址https://www.toymoban.com/news/detail-860893.html

到了这里,关于FPGA GTH 实现QSFP光口通信(三)——单路数据对齐的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA高端项目:基于GTH的 4K HDMI 视频收发例程,提供工程源码和技术支持

    FPGA高端项目:基于GTH的 4K HDMI 视频收发例程,提供工程源码和技术支持 没玩过GT高速接口和4K 高清视频都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。GT资源是Xilinx系列FPGA的重要卖点,也是做高速接口的基础,不管是PCIE、SATA、MAC等,都需要

    2024年02月04日
    浏览(116)
  • FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持

    没玩过GT资源都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。 GT资源是Xilinx系列FPGA的重要卖点,也是做高速接口的基础,不管是PCIE、SATA、MAC等,都需要用到GT资源来做数据高速串化和解串处理,Xilinx不同的FPGA系列拥有不同的GT资源类型,低端

    2024年02月09日
    浏览(37)
  • 1.ultraScale GTH核使用说明

    1.2.1复位信号 gtwiz_reset_clk_freerun_in: 复位控制器辅助块的运行时钟,要启用此模块,必须提供此时钟(注意改时钟频率要和我们在ip核的Physical Resources 配置的一致)且不能以用户时钟为源。 gtwiz_reset_all_in:复位TX和RX的PLL和Datapath(Datapath=PMA+PCS)。 gtwiz_reset_tx_pll_and_datapath_in:复

    2024年02月14日
    浏览(37)
  • 7 Series FPGAs GTX/GTH Transceivers

    本博客为Xilinx 7系列FPGA的千兆比特高速收发器(Gigabit Transceiver, GT)介绍 ug476 - 7 Series FPGAs GTX GTH TransceiversUser Guide sp002 - Aurora 8B/10B protocol spec pg046 - Aurora 8B/10B v11.1 LogiCORE IP Product Guide

    2024年02月09日
    浏览(38)
  • FPGA基于SFP光口实现10G万兆网UDP通信 10G Ethernet Subsystem替代网络PHY芯片 提供工程源码和技术支持

    目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代

    2024年02月01日
    浏览(48)
  • FPGA基于SFP光口实现千兆网UDP通信 1G/2.5G Ethernet PCS/PMA or SGMII替代网络PHY芯片 提供工程源码和技术支持

    目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代

    2024年02月08日
    浏览(65)
  • FPGA基于SFP光口实现1G千兆网UDP通信 1G/2.5G Ethernet PCS/PMA or SGMII替代网络PHY芯片 提供工程源码和技术支持

    目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代

    2024年02月08日
    浏览(47)
  • FPGA高端项目:SFP光口+UDP通信 1G/2.5G Ethernet PCS/PMA or SGMII替代网络PHY芯片 提供工程源码和技术支持

    目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代

    2024年02月04日
    浏览(42)
  • FPGA纯verilog实现UDP协议栈,sgmii接口SFP光口收发,提供工程源码和技术支持

    目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但中间的FIFO或者RAM等调用了IP,或者不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的

    2024年02月16日
    浏览(40)
  • E7—使用IBERT IP对QSFP+通信链路眼图测试2023-08-11

            通常在使用光纤接GT收发器进行通信之前,要测试信号质量以确认硬件链路工作正常,xilinx提供了IBERT(Integrated Bit Error Ratio Tester)进行高速串行通信接口的测试和调试,以KU系列QSFP+光纤收发器4路GTY为例介绍IBERT眼图测试,7系列的GTP、GTX的眼图测试大致一样。对应

    2024年02月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包