FPGA以太网接口设计,纯Verilog实现UDPTCP协议,支持校验和重发功能,适合学习和简单通信

FPGA以太网接口设计,纯Verilog实现UDPTCP协议,支持校验和重发功能,适合学习和简单通信

fpga以太网接口设计,支持udp和tcp协议,纯verilog手写代码,纯逻辑实现udptcp协议,接口类似于axi stream 。 mac层和tcp/ip层模块是分开的,物理接口可根据要求定制,目前的百兆网版本接口为RMII,千兆网版本接口为GMII转RGMII,Gmii和rgmii均下板测试过,tcp模块支持校验和重发功能,可和电脑端进行一对一通信。 可封装为axi接口(axi stream 或 axi lite)。 适合简单基础通信和参考学习,工程基于vivado,已有代码框图如下,其中图三为soc版本,网口为从机,riscv核为主机,通过axi interconnect桥接,也可灵活增加其他从设备。 非soc版本就只有网口的硬件代码,如图四。 可以和网络调试助手和python或c的socket通信。 注:资源消耗将近2000lut(xilinx fpga) 附带四份文档,1为抓包实测的文档说明,2为以太网协议介绍的ppt,3为tcp实现的代码说明,4为报文基本概念

最近在搞一个FPGA的以太网接口设计,支持UDP和TCP协议,纯Verilog手写代码,没有用任何现成的IP核,完全从底层逻辑实现。这个设计的目标是做一个简单、基础的通信模块,适合学习和参考。整个工程基于Vivado,资源消耗大概2000个LUT(Xilinx FPGA),不算特别大,但功能还算齐全。

模块划分

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

MAC层

MAC层的代码相对简单,主要是处理物理接口的数据收发。以RMII为例,代码大致如下:

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

这个模块的核心是根据crsdv和rxd信号解析出有效的数据,并输出rxdatarxvalid信号。rxvalid信号表示当前rx_data是有效的。

TCP/IP层

TCP/IP层的实现稍微复杂一些,特别是TCP协议,涉及到校验和、重发等功能。这里简单看一下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为例,代码大致如下:

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

这个模块的核心是根据tvalidtready信号处理数据流,并输出rdatarvalid信号。rvalid信号表示当前rdata是有效的。

测试与通信

这个设计可以和电脑端的网络调试助手、Python或C的Socket进行通信。测试时,我用Wireshark抓包验证了数据的正确性,抓包文档也附在了工程里。TCP模块支持校验和重发功能,和电脑端进行一对一通信时,稳定性还不错。

总结

这个FPGA以太网接口设计虽然不算特别复杂,但涵盖了从MAC层到TCP/IP层的完整实现,适合初学者学习和参考。代码全部手写,没有依赖任何现成的IP核,理解起来相对容易。如果你对FPGA和网络协议感兴趣,这个工程应该能给你一些启发。

附带的文档里还有以太网协议的介绍、TCP实现的代码说明和报文基本概念,感兴趣的话可以深入了解一下。

Read more

【Coze智能体开发】(三)解锁 Coze 智能体超能力:插件 + 知识库 + 数据库全解析,让 AI 从 “会聊天“ 到 “能办事“!

【Coze智能体开发】(三)解锁 Coze 智能体超能力:插件 + 知识库 + 数据库全解析,让 AI 从 “会聊天“ 到 “能办事“!

目录 编辑 前言 一、Coze 资源全景:不止于 "聊天" 的能力延伸 二、插件:给智能体装上 "手脚",让 AI 能 "动手办事" 2.1 什么是插件?—— 智能体的 "工具扩展包" 2.2 插件的分类:按需选择,精准赋能 1. 按功能场景分类 2. 按收费方式分类 2.3 插件的使用:3 步快速集成,零代码也能上手 第一步:创建插件智能体 第二步:添加插件(核心步骤)

从零开始:在本地搭建一个带知识库的 AI 助手(Ollama + Open WebUI)

从零开始:在本地搭建一个带知识库的 AI 助手(Ollama + Open WebUI)

一文讲清楚:要选哪些工具、需要什么环境、整体架构长什么样,以及一步步实现到能用的程度。 一、为什么要在本地搭一个 AI 助手? 过去一年,大模型从“新奇玩意儿”迅速变成“日常生产力工具”。但如果你只用网页版 ChatGPT / 文心一言 / 通义千问,会碰到几个很现实的问题: * 数据隐私:公司内部文档、个人笔记、聊天记录,你敢全部塞到线上吗? * 网络依赖:在飞机上、高铁里,或者公司内网严格管控时,在线 AI 直接“失联”。 * 额度与费用:免费额度有限,稍微重度一点就要付费,而且你也不知道自己的数据会不会被拿去训练。 本地部署一套 “AI + 知识库” 的好处就非常直观: 1. 数据完全不出本地,满足隐私合规要求。 2. 断网也能用,随时随地调取你的“第二大脑”。 3. 可定制:可以给团队搭一个“

前端国际化最佳实践:让你的网站走向世界

前端国际化最佳实践:让你的网站走向世界 毒舌时刻 前端国际化?这不是大公司才需要的吗? "我的网站只面向国内用户,要什么国际化"——结果业务拓展到海外,临时抱佛脚, "我直接用中文写死,多简单"——结果需要支持英文时,满世界找字符串, "我用Google翻译,多快"——结果翻译质量差,用户体验差。 醒醒吧,国际化不是可选的,而是现代前端开发的标配! 为什么你需要这个? * 全球用户覆盖:吸引来自不同国家和地区的用户 * 业务拓展:为未来的海外业务做准备 * 用户体验:让用户使用自己熟悉的语言 * 品牌形象:展现专业、全球化的品牌形象 * 合规要求:满足某些国家的语言法规要求 反面教材 // 反面教材:硬编码字符串 function Header() { return ( <div className="header"

OpenClaw 最新版本 v2026.3.7 功能详解:AI 代理的革命性升级!

OpenClaw 最新版本 v2026.3.7 功能详解:AI 代理的革命性升级!

OpenClaw 最新版本 v2026.3.7 功能详解:AI 代理的革命性升级! 大家好!我是Maynor,今天我们来聊聊 OpenClaw 这个开源 AI 代理框架。OpenClaw 是一个运行在本地硬件上的个人 AI 助手,能帮你清理邮箱、发送邮件、管理日历,甚至处理航班值机等任务。它通过 WhatsApp、Telegram 等聊天 app 互动,保持隐私且功能强大。最近,它发布了 v2026.3.7 版本,带来了大量新功能和优化,让 AI 代理更智能、更稳定。让我们一起来看看这些更新吧! OpenClaw Logo 新功能亮点:更灵活的上下文管理和集成 v2026.3.7 于