日拱一卒之FPGA学习计划

日拱一卒之FPGA学习计划

Alex Forencich 的代码库(主要是 verilog-axis​, verilog-ethernet​, verilog-pcie 等)是 FPGA 开源界的一座宝库。

死记硬背或者逐行阅读所有代码("一个个代码看")是非常低效且令人崩溃的 ,因为他的以太网和 PCIe 库非常庞大。反之,如果只是"拿来主义"("只要学会了就可以") ,你虽然能完成项目,但错失了提升自己 Verilog 编码水平和架构设计能力的绝佳机会。

有道理的东西,那么就有价值,不论如何,可以先进行尝试。下面就总体框架进行一个梳理看看效果。

第一阶段:掌握核心"骨架" (AXI Stream 基础设施)

Alex 的所有代码都建立在 AXI4-Stream 接口之上。如果你看不懂他对流控的处理,看复杂的 Ethernet 模块就是看天书。

重点阅读模块(在 ​verilog-axis​ ​ 库中):

  1. ​axis_register.v​ (必看): 一个极其基础的流水线寄存器。 也就是所谓的 Skid Buffer 或 Pipeline Register 。看如何处理 tvalid 和 tready 的握手时序,如何在不丢失数据(不 bubble,不 drop)的情况下打断时序路径。这是 FPGA 高频设计的基石。
  2. ​axis_fifo.v​: 标准的同步 FIFO。 这种通用 FIFO 的指针逻辑和满/空标志生成,以及如何将其转换为 AXI Stream 接口。
  3. ​axis_async_fifo.v​ (必看): 跨时钟域处理。看他如何使用格雷码(Gray Code) 指针,以及如何在两个不同频率的时钟域之间安全地传递 AXI Stream 握手信号。

第二阶段:学习"胶水"逻辑 (仲裁与分发)

  1. ​axis_arbiter.v​ (仲裁器): 多个数据源想发给同一个接口(比如 4 个传感器想把数据发给 1 个串口)。 轮询(Round Robin)算法的 Verilog 实现,以及如何锁定(Lock)当前通道直到一个 Packet 传输结束。
  2. ​axis_demux.v​ (解复用器): 1 个接口的数据根据 TDEST 或 TID 分发给多个下游模块。 如何解析 Header 或 Sideband 信号来决定数据流向。

第三阶段:深入"协议栈" (以太网/UDP 处理)

在 ​verilog-ethernet​ ​ 库中,重点看:

  1. ​udp_complete.v​ 或 ​udp_ip_tx.v​ : 状态机设计。 如何组包。先发以太网头,再发 IP 头,再发 UDP 头,最后发数据。Checksum(校验和)的计算。TCP/UDP 的校验和需要在数据流传输的过程中实时计算,看他是如何利用流水线加法树来实现零延迟校验和计算的。

第四阶段:不仅看代码,更要跑仿真 (Simulation)

这是学习 Alex 库最快的方法。Alex 非常推崇 Cocotb(基于 Python 的验证框架)或者简单的 Python 脚本配合 Icarus Verilog。

做实验: 故意修改代码里的一个逻辑(比如把 prescale 减 1 改成减 2),看看仿真波形会怎么报错。这种"破坏性学习"能让你秒懂代码的鲁棒性在哪里。

第五阶段:模仿与内化 (Copy the Style)

当你自己写代码时,尝试模仿他的风格:

  1. 参数化: 永远不要写死位宽,用 parameter。
  2. 无复位逻辑: 你会发现他的数据路径(Data Path)寄存器通常不复位(if (rst) 下只复位控制信号如 tvalid、ptr)。这能节省大量的全局复位布线资源,有助于时序收敛。
  3. 隐式状态机: 像UART 那样,尝试用计数器代替复杂的状态跳转。
相关推荐
码农小韩11 天前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯
兜里只有三分钱~11 天前
启元机器人 π0 与 GR00T N1 对比:VLA 模型的两条技术路线
机器人·微调·预训练·仿真·vla
兜里只有三分钱~11 天前
从 URDF 到 SDK:开发者视角拆解启元 T1/Q1 机器人架构
机器人·sdk·仿真·ros2·urdf
cyf3113 天前
用 VMware 虚拟机跑通阿里 SimAI:不买 GPU 服务器,也能研究大模型训练(超详细版)
vmware·gpu·仿真·simai·ai大模型训练
Soonyang Zhang22 天前
aisimulate分析(一)——算子workload建模
仿真·1024程序员节·vllm·推理框架·sglang
广州智造22 天前
Radioss破坏模型FAILJOHNSON (Johnson-cook) 和 FAILTAB1
运维·数据库·自动化·仿真·建模·后处理·前处理
七夜zippoe23 天前
启元 Q1 三份 MJCF 仿真文件对比:显示 / 运动学 / 全范围怎么选
ai·机器人·仿真·robot·mjcf
今宏科技1 个月前
2026 仿真软件怎么选?从结构、CFD 到多物理场的工程选型指南
仿真·cae·西门子·simcenter
玖石书2 个月前
LVGL的windows开发环境安装指南
windows·数字人·lvgl·仿真
风合星语2 个月前
2026 机器人工程实例(五):让 Allegro Hand 在 MuJoCo 中完成接触抓取——抓取状态机、稳定抬升与受控释放
c++·python·机器人·仿真