新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于SRAM的FPGA配置數據存儲方式解析方案

        基于SRAM的FPGA配置數據存儲方式解析方案

        作者: 時間:2012-06-25 來源:網絡 收藏

        2.發送數據的函數SendData_Byte,發送1 字節的數據。

        SendData(uint8 data){

        拉低CCLK;

        將 D0~D7 電平設置為與data 對應的狀態;

        拉高 CCLK;

        }

        3.發送數據的函數SendData_Sector,發送SD 卡中1 個扇區的數據。

        void SendData_Sector(uint8 * data){

        聲明計數器,并將初始值設為0;

        調用 SendData_Byte 發送1 個字節的數據,計數器加1;

        檢查 BUSY 管腳的狀態,等待其變為低電平;

        檢查計數器是否到達規定的數據塊大小,達到時函數返回,未到達時繼續發送數據;

        }

        2.3.3 配置文件的格式

        支持將配置文件生成為幾種不同的格式,但在本方案中不是所有格式都可以使用 的。一般最常用的格式是.BIN 和.BIT 格式。由于.BIT 格式包含頭部開銷,會增加額外的處 理過程,因此本方案沒有支持.BIT 格式的數據,僅推薦使用.BIN 格式。

        2.4 文件在SD 卡中的存儲

        發送數據前,需要先從SD 卡中讀取配置文件。所有文件在SD 卡中都是按照一定的格式來組織的,本方案默認文件采用FAT16 格式進行存儲。FAT16 格式下,SD 卡的結構如下圖所示[3]。

        主引導記錄中最重要的參數是邏輯扇區的起始地址。獲得該參數后即可以讀取BIOS 參 數數據塊(BPB)。BPB 中存儲了扇區(Sector)、簇(Cluster)、文件分配表(FAT)的 大小,以及分區總扇區數等參數,是文件進行操作時必不可少的。文件分配表則是指明了文 件存儲的位置,這些位置是以簇為單位的。每個簇包含的扇區數目在BPB 中說明。根文件 夾中存儲了各不同文件的文件名和起始簇以及文件大小等信息。

        2.5 配置文件的讀取和發送

        根據上述SD 卡存儲格式的說明,可以對存儲在其中的配置數據進行讀取并發送出去。在本方案中,數據的讀取和發送是同時進行的。

        在對 SD 卡進行讀取時,首先需要讀取主引導記錄(MBR),獲得邏輯扇區的位置,然 后根據該位置讀取BIOS 參數數據塊(BPB),得到文件分配表(FAT)的位置以及扇區大 小等參數。在讀取文件分配表之前,需要先讀取根文件夾來獲得文件的起始位置,然后再 通過文件分配表獲得后續數據的位置。

        得到文件的起始簇號之后,在文件分配表中讀取對應該起始簇的字節,獲得文件存儲的 下一個簇的簇號,這樣可以連續的進行讀取。在讀取一個簇后,即將整簇的數據發送出去。 如果發現文件分配表中某一簇對應的數值是0xFFFF,則說明是文件最后一個簇,這時該簇 的數據可以不足一個整簇,需要對其中的數據進行取舍,以保證發送數據的正確性。

        對配置文件讀取和發送的函數偽碼如下所示。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 法库县| 奎屯市| 石阡县| 阿勒泰市| 固原市| 阿鲁科尔沁旗| 乾安县| 怀宁县| 枞阳县| 德江县| 徐闻县| 屏山县| 新密市| 寻乌县| 通渭县| 武城县| 华安县| 台南县| 三门县| 馆陶县| 福泉市| 葫芦岛市| 富宁县| 阿鲁科尔沁旗| 曲沃县| 景德镇市| 宣威市| 梁河县| 西青区| 梁山县| 长阳| 平遥县| 乌拉特中旗| 洪湖市| 定安县| 余庆县| 樟树市| 长宁区| 南开区| 南宫市| 新丰县|