1. 硬件准备与环境搭建
第一次接触FPGA上的以太网开发时,我被各种专业术语搞得晕头转向。经过多次实践,我发现用AC620开发板配合NIOS II软核是最佳入门选择。这块板子搭载了EP4CE10F17C8N芯片和RTL8201CP百兆PHY,性价比极高,特别适合练手。
开发环境需要准备Quartus II 13.0(这个版本对老器件支持最好)和NIOS II EDS。安装时有个坑要注意:三速以太网IP核需要单独的license文件。我遇到过综合后生成的sof文件带_time_limited后缀的情况,就是因为没正确破解IP核。解决方法很简单——把license.dat放在Quartus安装目录下就行。
硬件连接更是个精细活:
- 确保50MHz晶振正常起振
- MII接口的TX_CLK和RX_CLK必须经过ALTCLKCTRL缓冲
- PHY芯片的复位信号要等PLL锁定后再释放
- SDRAM布线要满足时序要求
记得第一次调试时,网口死活不通,最后发现是忘记在Qsys里连接时钟复位信号。现在我的检查清单里一定会包含这几项:
- 确认PLL锁定信号连接到PHY复位
- 检查MII接口的时钟缓冲设置
- 验证SDRAM控制器参数配置
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Qsys系统搭建技巧
搭建Qsys系统就像组装乐高积木,但每个模块的连接都有讲究。我的经验是先从最小系统开始:NIOS II/e核、JTAG UART、On-Chip Memory作为启动存储器。等能跑通"Hello World"后再添加以太网相关模块。
三速以太网IP核的配置要注意这几个参数:
- 选择10/100M Small MAC模式
- 使能MDIO接口管理PHY
- 接收侧FIFO深度建议设为1024字节
- 发送侧FIFO深度512字节足够
SGDMA的配置最容易出错。需要创建两个实例:
- 发送DMA:内存到流模式
- 接收DMA:流到内存模式
描述符长度建议设成2,形成环形缓冲。我在调试时曾遇到DMA传输卡死的问题,后来发现是忘记在描述符里设置OWNER位。
时钟域处理是另一个难点。系统包含三个时钟域:
- 主时钟(50MHz)
- 接收时钟(PHY提供)
- 发送时钟(PHY提供)
必须在顶层模块用ALTCLKCTRL对收发时钟进行缓冲,否则会出现CRC校验错误。有个诊
