当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]在FPGA网络中,以太网MAC(Media Access Control)负责CSMA/CD退避、帧校验(FCS)、与PHY通过MII/RGMII/SGMII接口交互。根据项目对灵活性、开发周期、资源的要求,通常有三种实现路径。本文基于Xilinx/Intel平台做横向对比与选型建议。



在FPGA网络中,以太网MAC(Media Access Control)负责CSMA/CD退避、帧校验(FCS)、与PHY通过MII/RGMII/SGMII接口交互。根据项目对灵活性、开发周期、资源的要求,通常有三种实现路径。本文基于Xilinx/Intel平台做横向对比与选型建议。


一、方案①:使用厂商硬核MAC(Hard MAC / TEMAC)


Xilinx Zynq PS端GEM、Virtex UltraScale+的 Tri-Mode Ethernet MAC (TEMAC) Hard IP,Intel Cyclone/Arria 的 TSE (Triple Speed Ethernet) Hard MAC,均为芯片内硬化逻辑。


特点


• 不占LUT/DSP,功耗低


• 支持10/100/1000M(Tri-mode),自动填充/剥除前导码、FCS


• 通过AXI4-Stream与用户逻辑对接


• 配置靠寄存器堆(MDIO可配PHY)


示例(Xilinx AXI EthernetLite / TEMAC)


// 例化硬核MAC,用户侧只需连AXI-Stream

axi_ethernet_0 u_mac (

   .s_axi_tx_tdata  (tx_tdata),

   .s_axi_tx_tvalid (tx_tvalid),

   .s_axi_tx_tready (tx_tready),

   .s_axi_rx_tdata  (rx_tdata),

   .s_axi_rx_tvalid (rx_tvalid),

   ...

   .rgmii_txd      (rgmii_txd),

   .rgmii_tx_ctl   (rgmii_tx_ctl),

   .rgmii_txc      (rgmii_txc),

   ...

);



✅ 推荐首选:只要芯片带硬MAC且速率需求≤1G(或部分带10G硬MAC的高端FPGA),应优先用硬核——稳定、省资源、原厂验证过。


二、方案②:使用软核MAC IP(如Xilinx AXI Ethernet Soft MAC / Intel TSE Soft IP)


当FPGA无硬MAC(如Spartan-6、Cyclone IV)或需特殊定制(VLAN Tag、自定义前导码处理),可例化厂商Soft MAC IP。


特点


• 占用逻辑资源(LUT约2k~5k,BRAM若干)


- 功能与硬核相近,支持SGMII/RGMII、统计计数器

• 可配合SGDMA IP做零拷贝DMA


• 配置界面与硬核类似,降低迁移成本


应用代码片段(概念)


// 连接Soft MAC的AXI-Stream与DMA

axi_ethernet_soft u_softmac (

   .axi_str_tx  (tx_axis),

   .axi_str_rx  (rx_axis),

   .phy_interface(rgmii_pins),

   ...

);



⚠️ 注意时序:Soft MAC工作在系统时钟(如125MHz),需确保PHY接口时序约束满足(set_input_delay on RGMII RX)。


三、方案③:自写Verilog MAC(全定制)


完全手写MAC状态机,处理前导码检测、SFD识别、FCS(CRC32)计算、背压(PAUSE帧)等。


适合场景


• 极低速或特殊协议(非标准Eth II帧)


• 教学/研究明确要掌控每一bit


- 资源极度受限且不想要任何IP核授权问题


最小接收状态机示意


parameter IDLE=0, PREAMBLE=1, SFD=2, PAYLOAD=3, FCS=4;

reg [2:0] rx_st;

always @(posedge rx_clk) begin

   case(rx_st)

   IDLE: if(rx_dv && rx_data==8'h55) rx_st<=PREAMBLE;

   PREAMBLE: if(rx_dv && rx_data==8'hD5) rx_st<=PAYLOAD; // SFD

   PAYLOAD: if(!rx_dv) rx_st<=FCS; // dv下降沿=>帧尾

   FCS: /* CRC校验 */ rx_st<=IDLE;

   endcase

end



❌ 生产项目慎用:CRC32、jabber处理、半双工(现已少用)极易出bug,且难通过协议一致性测试。


四、横向对比表


维度 硬核MAC (TEMAC/TSE) 软核MAC IP 自写Verilog MAC


逻辑资源 ≈0 (硬核) 2k~8k LUT + BRAM 1k~3k LUT(功能完整则更多)


开发难度 低(Wizard生成) 中(需配DMA/MDIO) 高(需自测CRC/对齐)


功能完整性 ★★★★★ ★★★★☆ ★★☆☆☆(易漏边角)


可定制性 低(受IP限制) 中(部分参数可调) 高


适合速率 ≤1G(部分10G硬核 exist) ≤1G(少数软核能10G但贵资源) 任意(但性能难保证)


典型应用 Zynq PS Eth、Kintex UL+ Spartan-6、Cyclone IV 无硬MAC 科研/非标协议


五、选型决策树


1. FPGA有硬MAC且速率匹配(通常1G及以下,少数10G) → ✅ 用硬核MAC,配合AXI DMA。

2. 无硬MAC或需特殊VLAN/QinQ处理且不想手写 → ✅ 用厂商Soft MAC IP(例Xilinx AXI Ethernet Soft MAC)。

3. 协议非标准或教学目的,且团队有足够验证资源 → ⚠️ 可考虑自写,但强烈建议用开源成熟核(如 eth_mac_10g from opencores经过验证)而非从零造轮。

4. 10G/25G以上:高端Ultrascale+通常带硬10G MAC或可用UltraScale+ CMAC硬核IP——同样优先硬核。


六、常见坑提醒


• RGMII时序:时钟中心对齐(TX Clk 2ns delay, RX Clk 2ns delay via IDELAYCTRL),务必在XDC中set_input_delay约束。


- FCS处理:硬/软MAC默认自动剥/添FCS;自写MAC需自行算CRC32多项式 0x04C11DB7。

• PHY配置:无论哪种MAC,都需通过MDIO配置PHY(自协商使能、RGMII delay mode等),此步不可省。


七、结语


以太网MAC在FPGA中的实现,能用硬核绝不用软核,能买IP绝不自写。硬核MAC提供最佳性价比与可靠性;软核IP填补无硬核芯片的空缺;全定制Verilog仅限特殊需求或教学验证。按此原则选型,可大幅降低网络接口调试风险。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在汽车智能化、网联化、电动化深度融合的当下,汽车早已跳出单纯代步工具的属性,转型为集感知、计算、互联、交互于一体的“轮上智能终端”。高阶自动驾驶、沉浸式智能座舱、车路协同、整车OTA等技术的普及,让车载数据呈指数级增长,...

关键字: 自动驾驶 以太网 电气架构

在FPGA/ASIC设计中,跨时钟域(CDC,Clock Domain Crossing) 是时序违例与功能Bug的高发区。单比特信号、多比特总线、脉冲需采用不同同步策略。本文给出三种经典CDC方案的RTL实现,并对比S...

关键字: 跨时钟域 FPGA

在高速ADC采集系统中,数字下变频(Digital Down Converter, DDC) 负责将高中频采样信号搬移到基带(或低中频),并完成降采样(Decimation)与抗混叠滤波,是雷达、软件无线电接收链路的标配...

关键字: FPGA DDC

在FPGA中例化DDR4 SDRAM控制器(如Xilinx MIG或Intel UniPHY)后,正确的时序约束(SDC)是让控制器通过时序签核、稳定跑在目标频率(如2400MT/s)的前提。很多"初始化失败"或"校准不...

关键字: FPGA DDR4 时序约束

在FPGA开发中,“时序不收敛”(Timing Closure Failed)是让工程师最头疼的问题之一。当WNS(最差负余量)为负时,设计无法在目标频率下稳定运行。本文总结五大系统性排查思路,帮助你在Vivado/Qu...

关键字: FPGA 时序收敛

在Xilinx UltraScale+系列FPGA中,片上存储器分为BRAM(Block RAM)和URAM(Ultra RAM)两类。BRAM容量18/36Kb,URAM容量288Kb,但URAM延迟略高且占用更多布线...

关键字: FPGA BRAM URAM

我最初在博客上发布了这个项目。在这里,我将更详细地讲解每一步。边缘端的硬件加速正在彻底改变我们处理计算机视觉、机器学习和高性能计算的方式。然而,弥合软件开发与FPGA硬件之间的鸿沟,往往令人感到任务艰巨。

关键字: 硬件 加速器 AI FPGA

我们很高兴宣布,AMD Spartan UltraScale+ SU200P FPGA 将于 2026 年 7 月正式投入量产。SU200P 是 Spartan UltraScale+ 系列中规模最大、性能最强的器件,采...

关键字: FPGA GTH 收发器 交换机

Soan Papdidi 改变了这种体验。它是一款紧凑、易于上手的纯FPGA开发板——无需MCU,也无隐藏式微控制器,只需掌握原始的FPGA功能即可。该板配备8个DIP开关、8个LED灯和10个I/O引脚,非常适合用于学...

关键字: FPGA 开发板 数字电路 Python

当一个嵌入式项目进入方案设计阶段,工程师面临的第一个关键决策往往是:“该选什么芯片?” DSP、FPGA、MCU三者之间的边界在数据手册上看似清晰,但当面对中等算力场景——算力要求介于简单控制和超高性能计算之间的“灰色地...

关键字: DSP FPGA MCU
关闭