1. 项目背景与核心价值
在嵌入式系统开发中,SD卡作为大容量存储介质被广泛应用。传统SPI模式虽然接口简单,但速度瓶颈明显(通常不超过10MB/s)。而SDIO模式通过4位并行数据传输,理论带宽可达50MB/s以上,特别适合需要高速数据采集或大文件读写的场景。
这个开源项目提供了一套完整的FPGA SDIO控制器实现,具有以下核心优势:
- 纯Verilog编写,不依赖特定厂商IP核,可移植性强
- 完整实现SD协议3.0规范,支持高速模式(HS, 25MHz时钟)
- 实测读写速度可达22MB/s(受限于SD卡本身性能)
- 提供AXI4-Lite接口,方便集成到各类SoC系统
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件架构设计
2.1 整体模块划分
verilog复制module sdio_controller (
// SDIO物理接口
output sdio_clk,
inout [3:0] sdio_dat,
output sdio_cmd,
input sdio_cd_n, // 卡检测
// AXI4-Lite从接口
input axi_aclk,
input axi_aresetn,
input [31:0] axi_awaddr,
// ...其他AXI信号...
);
关键子模块包括:
- 时钟分频器:根据SD卡工作模式动态调整时钟频率(识别阶段400kHz,传输模式25MHz)
- 命令引擎:处理CMD线协议,包括CRC7生成与校验
- 数据通路:处理DAT[3:0]线上的数据流,含CRC16校验
- 寄存器组:提供32个可编程寄存器,用于状态监控和控制
2.2 关键状态机设计
SDIO协议的核心是三个状态机协同工作:
mermaid复制stateDiagram-v2
[*] --> IDLE
IDLE --> CMD_SEND: 收到命令
CMD_SEND --> RESP_WAIT: 发送完成
RESP_WAIT --> DATA_XFER: 需要数据传输
RESP_WAIT --> IDLE: 无数据
