基于FPGA以SDIO模式4条总线读写SD卡


 

SD卡使用 SD 总线与 SD-host (比如读卡器)连接,SD总线的信号包括:

信号名输入输出方向
sdclkhost→ card
sdcmd当发起命令时 host→ card ,当响应命令时 card→host
sddat0、sddat1、sddat2、sddat3当写数据时 host→card ,当读数据时 card→host

这些信号在 SD 卡和 microSD 卡上的引脚定义如下图

pin

SDIO协议

SDIO协议,其中包括“无数据传输的一般命令”,“有数据传输的写命令”,“有数据传输的读命令”。协议包含三个要素:命令Command应答Response数据Data

Command:由HOST发送,DEVICE接收,在CMD信号线上传输。以一个起始位为开始,中止位为结束,命令的长度为48位。

Response:由DEVICE发送,HOST接收,在CMD信号线上传输。应答根据不同命令分为4种,长度有48位或136位。

Data:数据是双向的传送的。可以设置为1线模式(默认),也可以设置为4线模式(通过ACMD6命令)。数据是通过DAT0-DAT3信号线传输的。

有问题可联系q

3551748091

波形图

发送CMD0指令:

发送CMD8指令:

发送 ACMD41指令:

发送CMD2 和 CMD3指令:

发送CMD7指令:

发送CMD16指令:

发送ACMD6 指令开启宽总线模式(4线):

发送CMD18指令开始多块读取:

开始传输数据(DAT0~DAT3):

发送CMD12指令停止读取操作:

有问题可联系w x 号:fi_nd_that_we_

纯Verilog可以运行在任意FPGA芯片

FPGA读写SDVerilog设计逻辑Quartus工程源码文件,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module top_sd_rw( input sys_clk , //系统时钟 input sys_rst_n , //系统复位,低电平有效 //SD接口 input sd_miso , //SDSPI串行输入数据信号 output sd_clk , //SDSPI时钟信号 output sd_cs , //SDSPI片选信号 output sd_mosi , //SDSPI串行输出数据信号 //LED output [3:0] led //LED灯 ); //wire define wire clk_ref ; wire clk_ref_180deg ; wire rst_n ; wire locked ; wire wr_start_en ; //开始写SD数据信号 wire [31:0] wr_sec_addr ; //写数据扇区地址 wire [15:0] wr_data ; //写数据 wire rd_start_en ; //开始写SD数据信号 wire [31:0] rd_sec_addr ; //读数据扇区地址 wire error_flag ; //SD读写错误的标志 wire wr_busy ; //写数据忙信号 wire wr_req ; //写数据请求信号 wire rd_busy ; //读忙信号 wire rd_val_en ; //数据读取有效使能信号 wire [15:0] rd_val_data ; //读数据 wire sd_init_done ; //SD初始化完成信号 //***************************************************** //** main code //***************************************************** assign rst_n = sys_rst_n & locked; //锁相环 pll_clk u_pll_clk( .areset (1'b0 ), .inclk0 (sys_clk ), .c0 (clk_ref ), .c1 (clk_ref_180deg), .locked (locked ) ); //产生SD测试数据 data_gen u_data_gen( .clk (clk_ref), .rst_n (rst_n), .sd_init_done (sd_init_done), .wr_busy (wr_busy), .wr_req (wr_req), .wr_start_en (wr_start_en), .wr_sec_addr (wr_sec_addr), .wr_data (wr_data), .rd_val_en (rd_val_en), .rd_val_da
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值