您好,欢迎来到硕远科技网站!

最新动态

当前位置:网站首页 > 最新动态 > 正文

利用FPGA和无风扇工控机 DSP直接控制硬盘实现存储控制的方法

blog 2021-05-13 19 0

  数据存储是数据采集过程中的一个重要环节,目前大部分数据存储系统都是用内置工控机的方法完成数据保存任务,这种方法系统功耗大,硬件成本高,不适用于具有内记功能要求的系统。本系统采用进行数据存储,并采用一片FIFO 作为数据缓存,设计思路比较新颖,硬件结构简单,成本低,的方法可将系统功耗降至最低,具有自动内记功能,能及时存储采集到的数据。本系统已经应用于某信号采集设备中,实践证明可满足使用要求,能够满足80Khz数据采样率系统的存盘要求。

  本设计采用FPGA[1][2],并采用一片FIFO作为数据缓存,系统采用DSP完成文件管理工作,利用FPGA实现DSP与硬盘的接口。具体框图如图1所示。

  首先由采集控制板FPGA将FIFO复位,需要储存数据时数据流直接将数据写入FIFO,当存储控制板FPGA查询到FIFO的状态为非空时就输出BIO信号通知DSP启动存盘程序。DSP先访问硬盘确定所需参数,如下一个文件应使用的文件名,保存文件的逻辑扇区号等。然后DSP向硬盘发出存盘命令,当硬盘响应控制命令后,嵌入式工控机。DSP通知FPGA可以向硬盘传输数据。存盘时FPGA从FIFO中读出数据并将数据打包,由8bit变为16bit,并写入硬盘数据寄存器。当存满40M时,DSP通知采集控制系统已写满一个文件,采集控制系统将FIFO复位完成一次存盘操作。

  程序启动后,首先将硬盘Device register中的SRST置1使硬盘复位,在硬盘复位后读取MBR0和BPB0,在FAT中找到Special Sector并检查是否有标志位0x55FF,如果没有则说明硬盘是第1次被使用,如果有则从中读取参数准备传输数据。

  (1) 为了在每次启动程序后能迅速查找到应使用的文件名、下一个空簇的位置、正在使用的磁盘等参数,将硬盘第3簇中第1扇区标志为Special Sector,用于储存这些参数。

  (2)每个磁盘被划分出200M空间为保留区,当发现磁盘空间不足200M时即显示磁盘已满,不在用当前磁盘存储数据而是使用下一个磁盘。

  (3)每个磁盘第2簇为目录区,因使用短文件名无子目录,所以当每簇为16扇区时目录区共可储存256个文件名。

  如果硬盘是第一次被使用,则主机顺次读取MBR0、BPB0、MBR1、BPB1直到查询到最后一个硬盘分区,并将相关参数如每个分区的大小、分区的逻辑地址、每个分区数据空间起始段的逻辑地址、FAT表逻辑地址等信息写入Special Sector,并做一个文件的目录(32字节)将第一个文件命名为“000.dat”。

  当FAT中第三簇被标志为坏簇时,表明已经在硬盘上划分Special Sector并已存入硬盘参数。主机从Special Sector中读取下一个可用空簇,并计算这一簇在FAT中的位置并将FAT读入C54的RAM中,读取Special Sector中的文件名及相关参数并将其写入目录区。然后查询BIO,当BIO为低电平时开始传输数据(参见储存板接口),传输数据时FPGA启动元件 trans_data,由主机发出XF作为启动信号。FPGA从FIFO中每读出2Bytes向硬盘写一次,连续写256次,即向硬盘传输512字节数据。主机每发出一个XF下降沿FPGA就从FIFO中读取512字节数据并存入硬盘。

  传输40M数据结束后,主机将根据传输的扇区数填写FAT表,判断硬盘空间是否小于200M、已储存的文件数是否大于256,如果为真则再次存储数据时将使用下一个磁盘分区。

  我们一般习惯称硬盘接口为IDE接口[3],对硬盘的操作如读写扇区,发送命令等都是通过读写寄存器来完成的,每向硬盘发送一组命令后都要读取状态寄存器中的信息,通过状态寄存器的值来判断硬盘是否已经执行完所发送的命令。

  硬盘加电后应先将硬盘复位,硬盘复位方式有三种,本设计采用的是将SRST置1,当SRST被置1后硬盘立即复位,这时应至少等待2ms才读取Status register。如果Status register的值为80h,则表明硬盘已完成复位。硬盘启动流程见图2。

  数据采集及存储系统一般都有采样率要求,采样率一般要求大于50K,才能满足快速实时采集数据的要求。本系统中速度较慢的环节是硬盘存储环节,硬盘接口设计存盘速度为7.8Mbyte/S,显然采集速率与存盘速率并不匹配,解决的措施为采用一片 FIFO作为数据缓冲区。由于对硬盘操作过程中,需不断查询其状态,而硬盘状态改变时间又不确定,所以要选用存储深度较大的FIFO作为缓存,IDT公司的72V2101满足设计要求[5]。工作时数据直接将数据写入FIFO,FPGA查询FIFO的状态,为非空时,协调DSP访问硬盘,进行存储操作,这样采用FIFO作为缓存的方案解决了速率匹配问题[4],当采样率为80k时,数据流为5Mbyte/S,本系统设计存盘速度为7.8Mbyte/S,可以满足80K以内数据采样率系统的存盘要求。

  硬盘中数据如何存储是本设计中另一个重点问题,主要考虑文件存储的地址及文件目录情况。本设计中硬盘文件的存储采用FAT32文件系统,引导扇区记录了文件分配表的地址、个数、大小、簇的大小等信息。文件逻辑地址=数据段起始地址+(簇号 RootClus)×SecPerClus;数据段起始地址=BPB地址+RsvdSecCn+FATSz32×NumFATs。)文件目录设计采用短文件名,每个文件名和相关信息占用32字节,每个磁盘第2簇为目录区,因使用短文件名无子目录,所以当每簇为16扇区时目录区共可储存256个文件名。

  本系统数据存储量较大,较传统使用工控机进行数据存储功耗较低,适合于工作环境局限、系统要求具有自动内记功能的工况下。本系统已经应用于某信号采集设备中,实践证明可满足使用要求,系统工作稳定,没有数据溢出现象。当然本系统还有一定不足,如不能存储任意长度数据文件,只能存储40M长度文件,还需进一步完善。

相关推荐

  • 为什么带工控机 嵌入式工控机的设备一般设备的控制软件都是用C语言开发的啊?

    为什么带工控机 嵌入式工控机的设备一般设备的控制软件都是用C语言开发的啊?

      2011-03-17·TA获得超过175个赞知道答主回答量:144采纳率:0%帮助的人:85.3万关注与硬件打交道的软件系统设计中,C语言的效率很高。嵌入式工控机,评论收起百度网友e4f9c3b  201...

    2021-05-13 21 0

  • 研华嵌入式工控机UNO在风力无风扇工控机 发电中的应用

    研华嵌入式工控机UNO在风力无风扇工控机 发电中的应用

      随着国家对风电行业的扶持力度加大,风电产业发展迅猛。2007年中国大陆新增风电机组3155台,装机容量330.4万KW。与2006年当年新增装机133.7万KW相比,2007年当年新增装机增长率为147.1%。...

    2021-05-13 25 0

  • 工 嵌入式工控机控机在火灾自动报警系统的应用

    工 嵌入式工控机控机在火灾自动报警系统的应用

      随着城市建设和经济建设的快速发展,越来越多的高层建筑和公共活动场所呈现在人们面前。随之而来,火灾隐患增加,每年的火警有数万起之多,特重大火灾时有发生。这不仅给国家财产和公民生命财产带来重大损失,也在一定程度上影响了国家的经济...

    2021-05-13 19 0

  • 嵌入式工控机工控板软件开发用什么语言?发展的趋势是哪方面?

    嵌入式工控机工控板软件开发用什么语言?发展的趋势是哪方面?

      刚刚入门,听说有wince,linux,android等,好像wince用得比较多,但是感觉趋势不在这,android好像稳定性不够?有没有前辈帮忙指点下关于这方面的行业状况~  版主有没有了解Andro...

    2021-05-13 28 0

  • 工无风扇工控机 控机助力无人机多行业应用

    工无风扇工控机 控机助力无人机多行业应用

      随着无人机技术逐渐成熟,我国民用无人机市场已经爆发,广告、影视、农业、电力等行业越来越多地出现无人机身影,无人机市场空间大大拓展。  近年来工控机在台风前、后供电应急查障的资讯受到关注。因为无人机进行电网...

    2021-05-13 24 0

  • 工 嵌入式工控机控机在火灾自动报警系统的应用

    工 嵌入式工控机控机在火灾自动报警系统的应用

      随着城市建设和经济建设的快速发展,越来越多的高层建筑和公共活动场所呈现在人们面前。随之而来,火灾隐患增加,每年的火警有数万起之多,特重大火灾时有发生。这不仅给国家财产和公民生命财产带来重大损失,也在一定程度上影响了国家的经济...

    2021-04-15 31 0

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论: