新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于SRAM的FPGA配置數(shù)據(jù)存儲方式解析方案

基于SRAM的FPGA配置數(shù)據(jù)存儲方式解析方案

作者: 時間:2012-06-25 來源:網(wǎng)絡(luò) 收藏

2.發(fā)送數(shù)據(jù)的函數(shù)SendData_Byte,發(fā)送1 字節(jié)的數(shù)據(jù)。

SendData(uint8 data){

拉低CCLK;

將 D0~D7 電平設(shè)置為與data 對應(yīng)的狀態(tài);

拉高 CCLK;

}

3.發(fā)送數(shù)據(jù)的函數(shù)SendData_Sector,發(fā)送SD 卡中1 個扇區(qū)的數(shù)據(jù)。

void SendData_Sector(uint8 * data){

聲明計數(shù)器,并將初始值設(shè)為0;

調(diào)用 SendData_Byte 發(fā)送1 個字節(jié)的數(shù)據(jù),計數(shù)器加1;

檢查 BUSY 管腳的狀態(tài),等待其變?yōu)榈碗娖?

檢查計數(shù)器是否到達(dá)規(guī)定的數(shù)據(jù)塊大小,達(dá)到時函數(shù)返回,未到達(dá)時繼續(xù)發(fā)送數(shù)據(jù);

}

2.3.3 配置文件的格式

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

2.4 文件在SD 卡中的存儲

發(fā)送數(shù)據(jù)前,需要先從SD 卡中讀取配置文件。所有文件在SD 卡中都是按照一定的格式來組織的,本方案默認(rèn)文件采用FAT16 格式進(jìn)行存儲。FAT16 格式下,SD 卡的結(jié)構(gòu)如下圖所示[3]。

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

2.5 配置文件的讀取和發(fā)送

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

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

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

對配置文件讀取和發(fā)送的函數(shù)偽碼如下所示。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉