micro SD卡
SD 卡很容易與 FPGA 連接。它們有不同的尺寸(標(biāo)準(zhǔn)、迷你和微型),但電氣工作方式相同。我們重點(diǎn)討論微型 SD 卡,因?yàn)樗鼈冃∏煞奖?,如今也很流行?/p>本文引用地址:http://www.ex-cimer.com/article/202312/454089.htm
微型 SD 卡有 8 個(gè)引腳。首先,電源連接在第 4 針和第 6 針上。
然后,根據(jù)您決定使用的操作模式,您需要將 3 到 6 個(gè)引腳連接到 FPGA 引腳。
SPI 模式
在 SPI 模式下,DI/DO 線路是單向的。這意味著
DI/DO 上無需上拉
命令(以及寫扇區(qū)時(shí)的扇區(qū)數(shù)據(jù))發(fā)送到 DI 引腳
從 DO 引腳接收響應(yīng)(以及扇區(qū)讀取時(shí)的扇區(qū)數(shù)據(jù)
SPI 模式通常用于微控制器系統(tǒng)。在 FPGA 中,我們可能更適合使用...
SD 模式
在 SD 模式下,CMD/DATx 線路是雙向的。這意味著
CMD/DATx 上需要上拉(FPGA 通??稍趦?nèi)部提供上拉功能)
在 CMD 引腳上發(fā)送/接收命令/響應(yīng)
從 DATx 引腳發(fā)送/接收扇區(qū)數(shù)據(jù)(用于扇區(qū)讀取和寫入
例如,在 SD 單位模式下,我們需要這些連接:
協(xié)議
SD 卡采用命令/響應(yīng)方案工作。例如,命令 "17 "允許讀取卡內(nèi)存的一個(gè)扇區(qū)(512 字節(jié))。所有通信都與主機(jī)(本例中為 FPGA)提供的時(shí)鐘同步。啟動(dòng)時(shí)時(shí)鐘頻率應(yīng)低于 400KHz,卡初始化后時(shí)鐘頻率可加快。
// 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 FIFO2 reg [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 card assign SD_CLK = cnt[5]; assign SD_CMD = shifting ? data[7] : 1'bZ;
所有命令和大多數(shù)響應(yīng)的長度都是 48 位(6 字節(jié))。扇區(qū)數(shù)據(jù)是 512 字節(jié)的倍數(shù)。例如,下面是一段可以向 SD 卡發(fā)送命令的簡單代碼。
評論