1 引言
数据存储是数据采集过程中的一个重要环节,目前大部分数据存储系统都是用内置工控机的方法完成数据保存任务,这种方法系统功耗大,硬件成本高,不适用于具有内记功能要求的系统。本系统采用FPGA和DSP直接控制硬盘进行数据存储,并采用一片FIFO 作为数据缓存,设计思路比较新颖,硬件结构简单,成本低,直接控制硬盘的方法可将系统功耗降至最低,具有自动内记功能,能及时存储采集到的数据。本系统已经应用于某信号采集设备中,实践证明可满足使用要求,能够满足80Khz数据采样率系统的存盘要求。
2 系统实现方案
本设计采用FPGA和DSP直接控制硬盘[1][2],并采用一片FIFO作为数据缓存,系统采用DSP完成文件管理工作,利用FPGA实现DSP与硬盘的接口。具体框图如图1所示。
图1 方案实现框图
首先由采集控制板FPGA将FIFO复位,需要储存数据时数据流直接将数据写入FIFO,当存储控制板FPGA查询到FIFO的状态为非空时就输出BIO信号通知DSP启动存盘程序。DSP先访问硬盘确定所需参数,如下一个文件应使用的文件名,保存文件的逻辑扇区号等。然后DSP向硬盘发出存盘命令,当硬盘响应控制命令后,DSP通知FPGA可以向硬盘传输数据。存盘时FPGA从FIFO中读出数据并将数据打包,由8bit变为16bit,并写入硬盘数据寄存器。当存满40M时,DSP通知采集控制系统已写满一个文件,采集控制系统将FIFO复位完成一次存盘操作。
4 硬盘操作控制流程
我们一般习惯称硬盘接口为IDE接口[3],对硬盘的操作如读写扇区,发送命令等都是通过读写寄存器来完成的,每向硬盘发送一组命令后都要读取状态寄存器中的信息,通过状态寄存器的值来判断硬盘是否已经执行完所发送的命令。
4.1 硬盘启动操作
硬盘加电后应先将硬盘复位,硬盘复位方式有三种,本设计采用的是将SRST置1,当SRST被置1后硬盘立即复位,这时应至少等待2ms才读取Status register。如果Status register的值为80h,则表明硬盘已完成复位。硬盘启动流程见图2。
一周热门 更多>