APP下载

基于Flash存储芯片的文件存储系统设计

2015-12-20

电子科技 2015年5期
关键词:列表指令芯片

彭 涛

(西安电子科技大学电子信息攻防对抗与仿真技术教育部重点实验室,陕西西安 710071)

在多数数据采集系统中,都需要将采集到的数据进行处理,以文件形式存储于存储介质中,并且在需要时下载到计算机上,通过高性能计算机来分析数据。根据这一需求,本文提供了一套完整的数据存储,下载软硬件方案;本方案具有自动化程度高,硬件电路简单等优点。系统以Xilinx公司Airtex-7系列FPGA为主控芯片,三星公司的Nand Flash芯片K9NCG08U5M作为文件存储介质,Cypress公司的USB微控制器芯片CY7C68013A作为USB桥接芯片实现了数据存储系统与计算机的通信。

1 硬件系统介绍

图1 硬件方案框图

系统硬件框图如图1所示。其中,D/C表示数据总线与控制总线,USB Cable为普通USB下载线。通过该接口实现存储系统与计算机的连接。

Airtex-7是Xilinx公司推出的FPGA芯片。其高性价比、低功耗,硬件可编程的优点,使它成为在电池供电,可扩展系统中的首选。方案使用的具体型号为XC7A100T。该芯片具体参数如下:(1)101 440个逻辑单元,能够实现复杂的数字逻辑。(2)4 860 kB的RAM资源可以作为双端口RAM实现大容量缓存、FIFO。(3)6个时钟管理模块,可以实现片上高精度多时钟域系统。(4)300个可配置IO,可实现多通道数据采集。K9NCG08U5M是三星公司推出的Nand Flash存储芯片,其容量达到8 GB,能够满足大多数数据采集系统的需求。Flash芯片中的数据寻址分为片地址,块地址和页地址。方案使用的Flash芯片内部分为4个片,每一片通过芯片的片选信号使能,片地址需要2 bit实现;每一片中有8 192个块,所以块地址需要13 bit来实现;每一块中有64页,所以页地址需要6 bit来实现;所以需要21位地址来确定页的物理位置。每一页中可以存储4 096 Byte数据,所以整片K9NCG08U5M的容量为8 GB。

CY7C68013A为Cypress公司推出的高速USB外设控制器,其内部集成了USB 2.0收发器、智能串行接口引擎和增强型8051微处理器。在本方案中CY7C68013A作为USB桥芯片,被配置为一个异步FIFO来作为存储系统与计算机之间的通信接口,其使用简易方便,大幅简化了设计难度。本系统有两种供电方式:系统供电方式与USB供电方式。在系统进行数据采集任务时使用系统供电方式;在使用计算机访问文件系统时使用USB供电方式。

2 文件管理

系统的文件管理通过在Flash芯片的最后一个片选信号中的最后一个存储块中的第一页建立一个文件列表来实现。文件列表格式如表1所示。

表1 文件列表存储格式

其中文件个数信息存放在文件列表页中的前2 Byte中,页里的其余位置均用于存放文件信息;每一个文件的文件信息占用11 Byte的空间;由于页大小的限制,本方案支持的文件数量最大为372个。

图2 文件信息存储格式

其中,D表示该文件是否被删除。计算机读取文件列表时通过该位判断该文件是否已被删除。FileNum:为文件序号,范围为1~512。SCS/ECS:存放文件存储起始/结束地址的片地址,范围为0~3。SBA/EBA:存放文件存储起始/结束地址的块地址,范围为0~8 191。SPA/EPA:存放文件存储起始/结束地址的页地址,范围为0~63。FileSize:存放文件大小,单位为64 kB。

3 USB指令协议

通过向FPGA发送指令的方式来实现计算机对文件的访问。CY7C68013A芯片将这一操作简化为对异步FIFO的读写。当计算机需要发送指令至FPGA时,FPGA直接从CY7C68013A的异步FIFO中读取指令;当FPGA向计算机回传数据时,直接将数据发送至CY7C68013A中的异步FIFO中即可。

USB指令由5 Byte:1 Byte的帧头,1 Byte的指令,2 Byte的数据,1 Byte帧尾组成。USB指令包括:请求文件列表指令,下载文件指令,删除文件指令,格式化指令等。

3.1 请求文件列表指令

请求文件列表指令格式如图3所示。

图3 请求文件列表指令格式

当FPGA接收到来自计算机的指令码0x01时,将文件列表回传至计算机,回传数据格式如图4所示。

图4 文件列表回传格式

其中文件个数为文件列表中的文件个数,数值等于文件列表中的前2 Byte;每个文件信息由5 Byte组成,其中文件序号2 Byte,文件大小3 Byte,所以文件信息字段的大小为文件个数乘以5。

3.2 下载文件指令

下载文件指令格式如图5所示。

图5 下载文件指令格式

当FPGA接收到来自计算机的指令码0x02时,将缓存文件序号字段,并且将字段与对应文件的数据回传至计算机;回传数据格式如图6所示。

图6 文件数据回传格式

删除文件指令的指令码为0x03,格式化指令的指令码为0x04,其余字段与上述类似。

4 FPGA逻辑设计

系统FPGA逻辑包括5个模块:数据缓存模块,控制器模块,坏块列表管理模块,USB管理模块,Flash管理模块。如图7所示,控制器模块为系统中的控制中心与其他几个模块交互。

图7 FPGA逻辑框图

4.1 数据缓存模块

当系统工作在采集模式时,前端采集的数据缓存于本模块。本模块中例化了128 kB的双口RAM作为数据缓存,以64 kB为单位做乒乓操作。当低地址空间64 kB存时,向控制器模块发送存储请求信号,并等待数据存储,当低64 kB成功存入Flash后,等待高地址空间64 kB存满,存满后再次向控制器模块发送存储请求信号,并等待数据存储;依次重复工作。

4.2 USB管理模块

USB管理模块主要功能是与外部USB芯片通信,并且确定当前系统工作模式。当使用USB供电方式时为USB模式,否则为采集存储模式。外部USB芯片配置为异步FIFO,计算机发送的指令将写入此FIFO中,USB管理模块从此FIFO中读取该指令并将其发送至控制器模块,控制器译码该指令后做出相应响应。

4.3 Flash管理模块

闪存管理模块主要实现了与外部闪存芯片接口的交互,以及接收并执行来自控制器模块的读写指令。控制器模块发送来的指令格式如图8所示。

图8 Flash指令格式

其中,CMD:读写指令,00表示读指令,01表示写指令。STCS:起始片地址,8 GB容量Flash片地址范围为00~11,对应片地址译码为1110~0111。STBLK:起始块地址,每个片地址下有8 192个块,对应13位块地址。STPG:起始页地址,每个Flash块中有64页,对应6位页地址。EDCS,EDBLK,EDPG:分别对应结束片地址,块地址,页地址。

4.4 坏块管理模块

Flash芯片在出厂时,内部就会有一些无法正常读写的坏块,在对Flash进行读写操作时,需要跳过这些坏块。坏块管理模块的主要功能,就是给控制器模块和Flash管理模块提供了查询板上Flash芯片的坏块地址的接口,其中包含了一个16 bit×32的ROM,支持的最大坏块数为32个。

4.5 控制器模块

控制器模块主要实现了存储数据的文件管理,接收并译码来自USB模块的指令,并作出响应。发送指令至Flash管理模块,读写外部Flash芯片,以及接收来自数据缓存模块的数据。

控制器模块实现了简易文件列表系统,能够实现文件的写入、删除、下载和格式化等功能,并在模块内部建立映射文件列表的RAM。每次上电初始化时,先将Flash中存入的文件列表加载到内部RAM中,以便后续对文件列表操作。对文件列表进行操作时,先修改模块内部RAM数据,再在需要时发送Flash写指令至Flash管理模块,将文件列表写入Flash中文件列表所分配的固定位置。控制器模块中的状态转移图如图9所示。

图9 控制器状态转移图

其中 LoadFileList、LoadInfo、ModeSelect、UpdataFileList的4个状态为初始化状态。系统上电后,首先将文件列表读入内部RAM中,并且将文件列表中携带的一些关键信息加载到系统内部寄存器中;然后根据USB管理模块反馈的信息来确定目前的工作模式。若工作在USB模式则直接跳转至Parsing状态;相反则跳转至UpdataFileList状态,建立新文件的文件信息,随后进入Parsing状态等待数据缓存模块的数据。

在数据采集模式下,当数据缓存模块的数据已准备好时进入BadBlockSkip状态,跳过坏块管理模块中的坏块,保证写入数据的存储块为好的存储块;并将新文件列表信息写入RAM中,然后将更新的文件列表回写至Flash,最后将数据缓存模块中的数据写入Flash中的对应位置并完成一次写入操作。数据写完成后回到Parsing状态等待下一次数据写入。

在USB工作模式下,控制器将依次完成指令译码与指令执行,等待下一个指令到来。

5 结束语

本文介绍的这种文件存储系统适用于大多数情况。基于FPGA多端口的特点,本方案可以用于多通道的数据采集任务,避免了使用额外芯片管理文件的问题。

[1]Xilinx.7 Series FPGAs configuration user guide[M].USA:Xilinx,2013.

[2]Xilinx.7 Series FPGAs clocking resources user guide[M].USA:Xilinx,2014.

[3]潘松.EDA技术使用教程[M].北京:科学出版社,2007.

[4]Bhasker J.Static timing analysis for nanometer designs[M].USA:Springer,2009

[5]Xilinx.PLBV46 Slave Single[M].USA:Xilinx,2008.

[6]李志敏.USB虚拟串口通信实现[J].电子科技,2014,27(3):120-122.

[7]张文强.基于 CY7C68013单片机 USB接口[J].制作天地,2010(2):19-24.

[8]张胜勇.基于FPGA的NAND Flash坏块处理方法[J].计算机工程,2010(6):239-243.

[9]李庆诚.基于NAND型闪存的嵌入式文件系统设计[J].计算机应用研究,2006(4):231-239.

[10]陈育智.嵌入式系统中的Flash文件系统[J].单片机与嵌入式系统应用,2002(1):19-22.

猜你喜欢

列表指令芯片
芯片会议
学习运用列表法
关于射频前端芯片研发与管理模式的思考
扩列吧
ARINC661显控指令快速验证方法
杀毒软件中指令虚拟机的脆弱性分析
多通道采样芯片ADS8556在光伏并网中的应用
列表画树状图各有所长
中断与跳转操作对指令串的影响
一种基于滑窗的余度指令判别算法