当前位置:   article > 正文

# RGMII 接口和 IDDR 原语的使用 和phy芯片_rgmii iddr数据错拍怎么

rgmii iddr数据错拍怎么

RGMII 接口和 IDDR 原语的使用 和phy芯片

什么是RGMII

  1. RGMII 是 Reduced GMII(吉比特介质独立接口)。 RGMII 均采用 4 位数据接口,工作时钟 125MHz,并且在上升沿和下降沿同时传输数据,同时兼 容 MII 所 规 定 的 10/100 Mbps 工 作 方 式 , 支 持 传 输 速 率 :10M/100M/1000Mb/s ,其对应 clk 信号分别为: 2.5MHz/25MHz/125MHz。RGMII 数据结构符合 IEEE 以太网标准,接口定义见 IEEE 802.3-2000。因此传输速率可达 1000Mbps。

  2. 相较于GMII少了4根数据线,因为是双沿采样。

  3. 他是phy芯片和fpga芯片连接的接口协议标准

什么是IDDR

属于IOB资源中的挨着接口的ILOGIC,即输入信号处理逻辑
iddr有3种工作模式,使用SAME_EDGE_PIPELINED,一个时钟上升沿下降沿采出的数据q1和q2是对齐的。

这里给到fpga的线有4根数据线,1根控制线,所以对于每个phy芯片传递过来的时钟,要例化5个iddr原语来采样4根数据线和1根控制使能。数据线 0bit 和 4bit 为一组, 1bit 和 5bit 为一组,2bit 和 6bit 为一组, 3bit 和 7bit 为一组。
在这里插入图片描述

代码如下:

generate
	genvar i;
	for(i=0;i<4;i=i+1) begin
		IDDR #(
      .DDR_CLK_EDGE("SAME_EDGE_PIPELINED"), // "OPPOSITE_EDGE", "SAME_EDGE" 
                                     //    or "SAME_EDGE_PIPELINED" 
      .INIT_Q1(1'b0), // Initial value of Q1: 1'b0 or 1'b1
      .INIT_Q2(1'b0), // Initial value of Q2: 1'b0 or 1'b1
      .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC" 
   ) IDDR_rxd_inst (
      .Q1(rxd[i]), // 1-bit output for positive edge of clock
      .Q2(rxd[i+4]), // 1-bit output for negative edge of clock
      .C(i_rx_clk),   // 1-bit clock input
      .CE(1'b1), // 1-bit clock enable input
      .D(rx_dat[i]),   // 1-bit DDR data input
      .R(1'b0),   // 1-bit reset
      .S(1'b0)    // 1-bit set
   );
	end
endgenerate
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

控制使能:

	IDDR #(
      .DDR_CLK_EDGE("SAME_EDGE_PIPELINED"), // "OPPOSITE_EDGE", "SAME_EDGE" 
                                     //    or "SAME_EDGE_PIPELINED" 
      .INIT_Q1(1'b0), // Initial value of Q1: 1'b0 or 1'b1
      .INIT_Q2(1'b0), // Initial value of Q2: 1'b0 or 1'b1
      .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC" 
   ) IDDR_rxctrl_inst (
      .Q1(rxdv), // 1-bit output for positive edge of clock
      .Q2(rxerr), // 1-bit output for negative edge of clock
      .C(i_rx_clk),   // 1-bit clock input
      .CE(1'b1), // 1-bit clock enable input
      .D(rx_ctrl),   // 1-bit DDR data input
      .R(1'b0),   // 1-bit reset
      .S(1'b0)    // 1-bit set
   );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

phy芯片

  1. 芯片的型号为VITESSE VSC8601
  2. PHY 芯片配置:可以通过MDIO对phy芯片中的寄存器进行配置PHY Address,可以配置成不同的网络模式,也可以通过CMODE Pin 对应不同电阻配置 PHY Address 及 PHY 模式
  3. VSC8601 芯片上电后需要进行复位配置, 该芯片复位信号需要在上电保持一段时间后(不少于4ms)才能将复位信号置为高
  4. 发射端和接收端分别有 6 个引脚与 FPGA 相连,分别有一个时钟引脚、一个数据控制使能引脚,四个数据引脚。

fpga芯片接收到是否收到phy芯片数据的检验

首先phy芯片传过来的时钟和数据达到fpga芯片不一定对的很齐,所以需要把时钟相移一下(后续可以通过约束input delay来解决),然后我们上板去检验是否有抓到arp包,包的正确性,来确定相位

请添加图片描述

将程序下载后,首先是phy芯片工作,fpga板卡和电脑已经相连
打开网络连接控制面板可以看到,电脑一直在发arp包
请添加图片描述

用ila抓一下,看是否能抓到arp包
请添加图片描述

可以看到抓到了7个55,一个d5的前导序列和sfd,说明我们的iddr捕获时钟的上下沿的数据捕获成功,时钟和数据对齐情况良好,能采集到

现在把时钟的相位调成180,看看能不能成功捕获到
请添加图片描述

可以看出明显转包错误,说明时钟和数据没有对齐好

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/912274
推荐阅读
  

闽ICP备14008679号