FPGA:SD卡
SD 卡可輕松與 FPGA 連接。我們的SD卡項目分為兩部分:
本文引用地址:http://cafeforensic.com/article/202401/454549.htmSD 卡 1 - FPGA 連接
SD 卡可輕松與 FPGA 連接。 它們有不同的尺寸(標準、迷你和微型),但在電氣上它們的工作方式相同。 讓我們關(guān)注 micro-SD 卡,因為它們非常小且現(xiàn)在很受歡迎。
Micro-SD 卡有 8 個針腳。首先,電源連接在引腳 4 和 6 上。
然后,您需要 3 到 6 個 FPGA 引腳連接,具體取決于您決定使用的操作模式。
SPI模式
在SPI模式下,DI/DO線是單向的。這意味著:
無需在 DI/DO 上上拉
命令(以及執(zhí)行扇區(qū)寫入時的扇區(qū)數(shù)據(jù))將發(fā)送到 DI 引腳
響應(yīng)(以及執(zhí)行扇區(qū)讀取時的扇區(qū)數(shù)據(jù))從 DO 引腳接收
SPI模式通常用于微控制器系統(tǒng)。 有了FPGA,我們可以更好地為...
SD 模式
在 SD 模式下,CMD/DATx 線是雙向的。這意味著:
CMD/DATx 上需要上拉(FPGA 通??梢栽趦?nèi)部提供)
命令/響應(yīng)在CMD引腳上發(fā)送/接收
扇區(qū)數(shù)據(jù)(用于扇區(qū)讀取和寫入)從 DATx 引腳發(fā)送/接收
例如,我們需要在 SD 1 位模式下進行這些連接:
SD 卡 2 - 協(xié)議
SD 卡使用命令/響應(yīng)方案。 例如,命令“17”允許讀取卡內(nèi)存的一個扇區(qū)(512字節(jié))。 所有通信都與主機提供的時鐘同步(在本例中為FPGA)。 啟動時時鐘應(yīng)低于 400KHz,并且在一些卡初始化后可以更快。
所有命令和大多數(shù)響應(yīng)的長度為 48 位(6 字節(jié))。 扇區(qū)數(shù)據(jù)以 512 字節(jié)的倍數(shù)表示。 例如,這里有一個簡單的代碼,允許向 SD 卡發(fā)送命令。
// we use the Xylo-E FX2 FIFO2 as data source for "commanding" an SD card
// the SD card is used in one-bit SD mode
// first we are going to drive the SD card at a much slower speed than the FPGA itself
// let's create a "shift" signal that is asserted once every 64 clock periods
reg [5:0] cnt=0;
always @(posedge clk) cnt <= cnt+1;
reg shift=0;
always @(posedge clk) shift <= &cnt;
// now we serialize every byte we get from the FIFO2reg [2:0] cntbit=0;
reg shifting=0;
reg [7:0] data=0;
always @(posedge clk) if(shift) shifting <= shifting ? ~(&cntbit & ~FIFO2_data_available) : FIFO2_data_available;
always @(posedge clk) if(shift & shifting) cntbit <= cntbit+1;
always @(posedge clk) if(shift) data <= (FIFO2_data_available & (~shifting | &cntbit)) ? FIFO_DATAIN : {data[6:0],1'b0};
assign FIFO_RD = shift & (~shifting | &cntbit);
// and send the serial data to the SD cardassign SD_CLK = cnt[5];
assign SD_CMD = shifting ? data[7] : 1'bZ;
有些命令沒有回復,而其他一些命令會在SD_DAT行發(fā)出響應(yīng)。 例如,要初始化卡,我們從 CMD0 開始,然后是 CMD8:
CMD0 “GO_IDLE_STATE”
CMD8“SEND_IF_COND”,預(yù)期響應(yīng)
以下是使用 Xylo-E 演示軟件錄制的會話:
?SD.exeUSB driver opened CMD0 400000000095 CMD8 48000001AA87... OK CMD55 770000000065... OK CMD41 694018000019... OK CMD55 770000000065... OK CMD41 694018000019... OK SDHC/SDXC (high capacity) card CMD2 42000000004D... OK ASTC 3.4 CMD3 430000000021... OK RCA=0100 CMD7 4700010000DD... OK CMD13 4D0001000053... OK CMD17 510000000055... OK FAT32 detected Reading 1 sector(s) starting at 8192 CMD17 5100002000B1... OK Directory /
經(jīng)過一些初始化后,卡接受 CMD17“READ_SINGLE_BLOCK”,以便可以從卡中讀取文件。
評論