Skip to content

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

License

Notifications You must be signed in to change notification settings

ljtjerry/FPGA-SDcard

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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卡初始化的设备提供另一种初始化方式。

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • SystemVerilog 99.7%
  • Mathematica 0.3%