做FPGA网络通信项目,千兆以太网IP核是绕不开的一块。很多同学拿到IP核配好参数,仿真波形一抓全对,但实际板子上UDP包发出去就丢,或者收到乱序。问题往往出在你对IP核每一层信号的理解上。
一句话:MII跑100Mbps及以下,RGMII跑千兆必须用。RGMII在MII基础上多了TXC和RXCLK两条专用时钟线,数据采样从单沿变双沿,同样8bit数据宽度,实际有效数据率是125MHz×2=250MHz,刚好匹配千兆线速。
配置IP核选RGMII模式时,PHY芯片端的TXC和RXCLK要正确送到FPGA的IO。这两根是差分信号,走线长度差控制在几十mil以内,否则双沿采样会偏。很多初学者把RGMII当普通8bit并口接,漏掉TXC,结果网口根本协商不上。
另外RX_CTL和RX_ER这两根线,千兆模式下RX_ER一般悬空或接低,RX_CTL在IP核内部处理,不需要外部额外逻辑。
丢包基本逃不出三个位置:IP核输入FIFO溢出、帧间间隔(IFG)不对、前导码没发够。
第一步,看IP核内部FIFO水位。千兆模式下MAC层每8ns要喂1字节,上游逻辑(比如从DDR或AXI_STREAM读数据)供不上这个速率,FIFO满就丢。用ILA抓almost_full信号,看丢包时刻是否拉高。
第二步,确认IFG。以太网标准IFG是8字节(64bit),IP核里默认就是8。你手动改成4,连续发两个包时第二个包的前导码可能被PHY吞掉,对端直接判坏帧。
第三步,前导码加帧起始定界符(SFD)合计8字节,IP核正常模式会自动加。但如果你用RAW模式自己拼帧,7字节前导码加1字节SFD一个不能少,否则PHY不认。
排查顺序:FIFO→IFG→前导码,九成丢包问题落在这三步里。
千兆以太网IP核的坑,七成在物理层,三成在MAC参数。RGMII时钟和FIFO深度吃透,UDP就不会反复丢。思考:上游AXI_STREAM速率恰好等于千兆线速时,IP核FIFO最小深度该设多少?
想系统啃下FPGA网络通信,从IP核配置到完整UDP收发工程,宸极教育2026年9月班已开课,涵盖以太网、SRIO、JESD204B等高速接口实战。点击页面右下角客服窗口,发"以太网"领取课程大纲与试听安排,帮你规划从入门到项目落地的完整路径。
未经许可,禁止转载!
下一篇:没有了