<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

FPGA:SD卡

作者: 時(shí)間:2024-01-08 來(lái)源:EPW編譯 收藏

SD 卡可輕松與 連接。我們的項目分為兩部分:

本文引用地址:http://dyxdggzs.com/article/202401/454549.htm

SD 卡 1 - 連接

SD 卡可輕松與 連接。 它們有不同的尺寸(標準、迷你和微型),但在電氣上它們的工作方式相同。 讓我們關(guān)注 micro-SD 卡,因為它們非常小且現在很受歡迎。

Micro-SD 卡有 8 個(gè)針腳。首先,電源連接在引腳 4 和 6 上。

然后,您需要 3 到 6 個(gè) FPGA 引腳連接,具體取決于您決定使用的操作模式。

SPI模式

在SPI模式下,DI/DO線(xiàn)是單向的。這意味著(zhù):

  • 無(wú)需在 DI/DO 上上拉

  • 命令(以及執行扇區寫(xiě)入時(shí)的扇區數據)將發(fā)送到 DI 引腳

  • 響應(以及執行扇區讀取時(shí)的扇區數據)從 DO 引腳接收

SPI模式通常用于微控制器系統。 有了FPGA,我們可以更好地為...

SD 模式

在 SD 模式下,CMD/DATx 線(xiàn)是雙向的。這意味著(zhù):

  • CMD/DATx 上需要上拉(FPGA 通??梢栽趦炔刻峁?/p>

  • 命令/響應在CMD引腳上發(fā)送/接收

  • 扇區數據(用于扇區讀取和寫(xiě)入)從 DATx 引腳發(fā)送/接收

例如,我們需要在 SD 1 位模式下進(jìn)行這些連接:

SD 卡 2 - 協(xié)議

SD 卡使用命令/響應方案。 例如,命令“17”允許讀取卡內存的一個(gè)扇區(512字節)。 所有通信都與主機提供的時(shí)鐘同步(在本例中為FPGA)。 啟動(dòng)時(shí)時(shí)鐘應低于 400KHz,并且在一些卡初始化后可以更快。

所有命令和大多數響應的長(cháng)度為 48 位(6 字節)。 扇區數據以 512 字節的倍數表示。 例如,這里有一個(gè)簡(jiǎn)單的代碼,允許向 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;

有些命令沒(méi)有回復,而其他一些命令會(huì )在SD_DAT行發(fā)出響應。 例如,要初始化卡,我們從 CMD0 開(kāi)始,然后是 CMD8:

  • CMD0 “GO_IDLE_STATE”

  • CMD8“SEND_IF_COND”,預期響應

以下是使用 Xylo-E 演示軟件錄制的會(huì )話(huà):

?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)過(guò)一些初始化后,卡接受 CMD17“READ_SINGLE_BLOCK”,以便可以從卡中讀取文件。



關(guān)鍵詞: FPGA SD卡

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>