/FPGA-SDcard

有关 SD卡 的各种 FPGA 实现,使用SD总线,纯 RTL

Primary LanguageSystemVerilogMIT LicenseMIT

test docs

FPGA SDcard

全面的,兼容性强的,有关 SD卡 的各种 FPGA实现

SDv1.1 card SDv2 card SDHCv2 card FPGA模拟SDHCv2 card
FPGA读取扇区 ✔️ ✔️ ✔️ ✔️
FPGA读取根目录中的文件(FAT16) ✔️ ✔️ NaN NaN
FPGA读取根目录中的文件(FAT32) ✔️ ✔️ ✔️ ✔️
读卡器读取 ✔️
  • 该库完全使用 SD总线 实现,而不是 SPI 。笔者也有 SPI版本,但读取速度不如该库的 SD总线 ,因此推荐使用该库。
  • 提供FPGA读取SD卡功能:FPGA作为 SD-host , 指定文件名 读取文件内容 ;或指定扇区号 读取扇区内容
  • 提供FPGA模拟SD卡功能:FPGA作为 SD-device ,能实现 FPGA模拟SD卡。目前已经成功使用 FPGA 模拟了一个 FAT32格式SDHCv2.0只读卡,并能被读卡器识别。
  • 兼容性强 : 自动适配 SD协议版本 ,自动适配 FAT16/FAT32文件系统
  • 纯 RTL 实现 :完全使用 SystemVerilog ,方便移植

目录组织

  • ./RTL : 包含 SD卡相关的核心代码,这些模块留出明确的输入输出接口,方便Verilog开发者调用它们进行二次开发。
  • ./example : 几个示例,展示了 ./RTL 中的模块如何调用。
  • ./UART : UART发送器代码,虽然与SD卡本身无关,但 example 中的很多示例都用到了它。
  • ./images : 一些图片

核心代码

RTL目录 包含 SD卡的核心代码 , 它们可以当作 IP核 被调用,实现二次开发。

虽然核心代码文件很多,但并不是每种应用都要用到全部的文件,而是根据实际情况选择合适的顶层文件去调用。详见 RTL目录 里的 README

示例

仿真波形 图:仿真波形

应用场景

  • 在没有 MCU 或 软核 辅助的 FPGA 系统中,实现一些离线配置,例如任意波发生器的波形配置。
  • 为 FPGA 中的软核配置运行程序或操作系统。
  • FPGA 模拟 SD卡,为一些需要用 SD卡初始化的设备提供另一种初始化方式。