跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言算法

FPGA 以太网接口设计:纯 Verilog 实现 UDP/TCP 协议与校验重发

介绍基于纯 Verilog 实现的 FPGA 以太网接口方案,无 IP 核依赖。涵盖 MAC 层与 TCP/IP 层,支持 RMII 及 GMII/RGMII 接口。TCP 模块含校验和与重发机制,可封装为 AXI 接口。工程基于 Vivado,适配 Xilinx FPGA,资源约 2000 LUT,支持 PC 端 Socket 通信,适用于网络协议学习与基础通信参考。

JavaCoder发布于 2026/4/5更新于 2026/7/845 浏览
FPGA 以太网接口设计:纯 Verilog 实现 UDP/TCP 协议与校验重发

FPGA 以太网接口设计

本设计基于纯 Verilog 手写代码,不依赖现成 IP 核,从底层逻辑实现 UDP 和 TCP 协议。工程基于 Vivado,资源消耗约 2000 LUT(Xilinx FPGA),功能齐全,适合学习和参考。

模块划分

整个设计分为两个主要模块:MAC 层和 TCP/IP 层。MAC 层负责处理物理接口,TCP/IP 层则负责协议栈的实现。物理接口可根据需求定制,目前有百兆网的 RMII 接口和千兆网的 GMII 转 RGMII 接口。GMII 和 RGMII 均经过下板测试,运行稳定。

MAC 层

MAC 层的代码相对简单,主要是处理物理接口的数据收发。以 RMII 为例,核心是根据 crs_dv 和 rxd 信号解析出有效的数据,并输出 rx_data 和 rx_valid 信号。

module rmii_rx (
    input wire clk_50m,
    input wire rst_n,
    input wire [1:0] rxd,
    input wire crs_dv,
    output reg [7:0] rx_data,
    output reg rx_valid
);
    // 状态机和数据处理逻辑
    always @(posedge clk_50m or negedge rst_n) begin
        if (!rst_n) begin
            rx_data <= 8'b0;
            rx_valid <= 1'b0;
        end else begin
            // 根据 crs_dv 和 rxd 信号解析数据
        end
    end
endmodule

TCP/IP 层

TCP/IP 层的实现涉及校验和、重发等功能。以下是 TCP 校验和计算部分的示例:

function [15:0] tcp_checksum;
    input [15:0] data [0:9];
    reg [31:0] sum;
    integer i;
    begin
        sum = 0;
        for (i = 0; i < 10; i = i + 1) begin
            sum = sum + data[i];
        end
        while (sum >> 16) begin
            sum = (sum & 16'hFFFF) + (sum >> 16);
        end
        tcp_checksum = ~sum;
    end
endfunction

该函数计算 TCP 报文的校验和,输入是一个 16 位的数据数组,输出是 16 位的校验和。计算过程是将所有数据相加,然后对结果进行进位处理,最后取反得到校验和。

AXI 接口封装

为了方便集成到 SoC 系统中,这个设计还支持封装为 AXI 接口,可以是 AXI Stream 或 AXI Lite。以 AXI Stream 为例,核心是根据 tvalid 和 tready 信号处理数据流,并输出 rdata 和 rvalid 信号。

module axi_stream_interface (
    input wire aclk,
    input wire aresetn,
    input wire [31:0] tdata,
    input wire tvalid,
    output reg tready,
    output reg [31:0] rdata,
    output reg rvalid,
    input wire rready
);
    // 状态机和数据处理逻辑
    always @(posedge aclk or negedge aresetn) begin
        if (!aresetn) begin
            tready <= 1'b0;
            rdata <= 32'b0;
            rvalid <= 1'b0;
        end else begin
            // 根据 tvalid 和 tready 信号处理数据
        end
    end
endmodule

测试与通信

该设计可以和电脑端的网络调试助手、Python 或 C 的 Socket 进行通信。测试时,使用 Wireshark 抓包验证了数据的正确性。TCP 模块支持校验和重发功能,和电脑端进行一对一通信时稳定性良好。

配套资料涵盖抓包实测说明、以太网协议介绍、TCP 代码说明及报文基本概念。

文章配图

SoC 版本网口为从机,RISC-V 核为主机,通过 AXI Interconnect 桥接,也可灵活增加其他从设备。非 SoC 版本仅包含网口的硬件代码。

文章配图

此 FPGA 以太网接口设计涵盖了从 MAC 层到 TCP/IP 层的完整实现,代码全部手写,理解起来相对容易,适合初学者学习和参考。

目录

  1. FPGA 以太网接口设计
  2. 模块划分
  3. MAC 层
  4. TCP/IP 层
  5. AXI 接口封装
  6. 测试与通信
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • WebAssembly 逆向分析:反编译 Wasm 二进制并修改游戏数据
  • C++ STL list 容器特性与常用接口解析
  • C++ 异常处理机制详解
  • 基于大模型的信息采集模型实现与提示词优化
  • Cursor 集成 MCP 服务实战指南
  • ZeroClaw Gateway + LM Studio + Reflex 本地 AI 管理面板搭建
  • 大模型时代的技术趋势与产业机遇
  • 前端反爬分析:基于环境日志补全 Window 对象缺失属性
  • C++ 控制台常见错误码及调试方法
  • 大模型幻觉问题深度治理:技术体系与工程实践
  • EasyPostman:开源免费的 Postman 替代方案,支持国产化操作系统
  • Spring Boot+Vue3 多租户自助门店系统:IoT 硬件集成与无人值守方案
  • Windows 10/11 部署 OpenClaw:环境搭建与机器人互联实战
  • LLaMA Factory 微调训练可视化:Loss 曲线解析与性能优化
  • MySQL 8.0.x 跨平台安装实战:Windows、CentOS、Ubuntu 配置详解
  • Python 图形界面与游戏开发实战:计算器、记事本及经典小游戏
  • Llama 3 在华为云 ModelArts 上的适配部署实战
  • 基于 FPGA 的 TDC 抖动测试系统设计
  • 大模型架构解析:Attention is all you need 论文详解
  • 腾讯云 VOD AIGC 视频生成工具回调实现

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online