新聞中心

        FPGA:SD卡

        作者: 時間:2024-01-08 來源:EPW編譯 收藏

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

        本文引用地址:http://www.104case.com/article/202401/454549.htm

        SD 卡 1 - 連接

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

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

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

        SPI模式

        在SPI模式下,DI/DO線是單向的。這意味著:

        • 無需在 DI/DO 上上拉

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

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

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

        SD 模式

        在 SD 模式下,CMD/DATx 線是雙向的。這意味著:

        • CMD/DATx 上需要上拉(FPGA 通常可以在內部提供)

        • 命令/響應在CMD引腳上發送/接收

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

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

        SD 卡 2 - 協議

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

        所有命令和大多數響應的長度為 48 位(6 字節)。 扇區數據以 512 字節的倍數表示。 例如,這里有一個簡單的代碼,允許向 SD 卡發送命令。

        // 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行發出響應。 例如,要初始化卡,我們從 CMD0 開始,然后是 CMD8:

        • CMD0 “GO_IDLE_STATE”

        • CMD8“SEND_IF_COND”,預期響應

        以下是使用 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 /

        經過一些初始化后,卡接受 CMD17“READ_SINGLE_BLOCK”,以便可以從卡中讀取文件。



        關鍵詞: FPGA SD卡

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 辉县市| 金秀| 固镇县| 青神县| 墨脱县| 金阳县| 郑州市| 无锡市| 黄骅市| 普陀区| 平原县| 渭源县| 临泉县| 临城县| 德惠市| 仙桃市| 陆丰市| 玛曲县| 周宁县| 潞西市| 巧家县| 堆龙德庆县| 林芝县| 屯留县| 上饶市| 晋宁县| 大石桥市| 乌什县| 庆云县| 绵阳市| 清新县| 嘉祥县| 垦利县| 自治县| 镇巴县| 青龙| 宣汉县| 邯郸市| 祥云县| 利津县| 峨眉山市|