新闻中心

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,则说明是文件最后一个簇,这时该簇 的数据可以不足一个整簇,需要对其中的数据进行取舍,以保证发送数据的正确性。

对配置文件读取和发送的函数伪码如下所示。



评论


相关推荐

技术专区

关闭