《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 基于FPGA控制的IDE磁盘阵列设计

基于FPGA控制的IDE磁盘阵列设计

2008-11-04
作者:宋晓伟,陈伯孝

  摘 要: 设计了一种基于FPGA控制的高速数据存储系统。该系统采用FPGA实现了对四个符合ATA-6规范的、RAID 0配置的IDE磁盘阵列的管理,并配合四个SDRAM实现对数据的高速稳定存储。该磁盘阵列同时挂四个IDE硬盘,平均数据流达到200MB/s,峰值传输速率" title="传输速率">传输速率达到800MB/s,也可以扩展更多硬盘,构成大容量" title="大容量">大容量的磁盘阵列。
  关键词: FPGA;IDE协议;SDRAM;磁盘阵列;PCI 9054

 

  随着雷达技术的不断发展,如何高速稳定地存储回波数据已经成为一个亟待解决的问题。当前高速存储设备主要应用在服务器上,不仅价格高昂,而且功能可扩展性不强。因此,本文使用FPGA实现符合ATA-6规范的IDE接口,配合SDRAM组成了高速数据存储系统。通过FPGA把四块IDE硬盘配置成RAID 0阵列,实现对数据的高速存储。实测时整个系统运行稳定,平均存储速率200MB/s,配合板载的128MB内存,突发存储速率可以达到800MB/s。采集过程中,可以通过软件实时观测回波数据的IQ分解和脉冲压缩。
  作为采集数据系统主要考虑的是存储容量、存储速率和可操作性。由于目前比较通用的FAT32或NTFS格式的采集数据系统用FPGA实现较困难,因此,在自行定义的存储格式及其传输协议的基础上设计了一种实用的IDE硬盘阵列及其采集数据系统,并且通过使用PCI传输卡就可以把磁盘阵列中的数据导入计算机,实现格式上的转化。
1 系统设计
  为使系统的存储速率最大化,硬盘配置成RAID 0模式。工作时,AD采样后得到的信号首先分流成四路,然后流向四个硬盘,每一路磁盘的工作模式都相同。图1给出其中某一路的存储流程图。

 


  由图1可知,分流后的AD数据首先暂存到FPGA内部的FIFO 0中,由于磁盘存储数据时工作在Ultra DMA模式下,所以每传输一帧数据,FPGA都需要给磁盘一个CRC校验结果,磁盘会对FPGA给出的CRC校验结果进行核对。如果正确,磁盘就会存储本帧数据;若出现错误,磁盘会抛弃本帧数据,并向FPGA报错。因此从FIFO 0读取的数据不能直接流向硬盘,而必须流向一个大容量的高速缓存器件,以便在CRC校验结果出错的情况下重新传输出错帧数据。在本系统中高速缓存器件选用HY57V561620C(L)T(P),其数据吞吐率可以达到200MB/s,容量为32MB。
  数据存储完成后,需要通过PCI卡导入到计算机中进行计算和分析。导出数据的流程图和存储数据相似,如图2所示。

 


2 IDE协议的FPGA实现
2.1 IDE协议简介

  IDE(Integrated Drive Electronics)是集成磁盘电路设备, 其正式名称是AT-Attachment。它是Compaq公司为解决老式的ST506/412接口速度慢、开发成本高而开发出的硬盘标准。由于IDE接口的硬盘具有价格低廉、稳定性好、标准化程度高等优点,迅速得到普及[1]
  IDE接口硬盘的几种传输模式" title="传输模式">传输模式有很明显的区别,其经历了三个不同的技术变化,由PIO(Programmed I/O)模式,DMA(Direct Memory Access)模式,直到现在的Ultra DMA 模式。其中PIO模式的传输速率最慢,最老的PIO mode 0传输速率为3.3MB/s,最新的PIO mode 4传输速率为16.7MB/s。本文存储数据时采用了Ultra DMA模式,最高速率100MB/s。在计算机上使用时,PIO传输模式会大量占用中央处理器的资源;而后IDE接口及装置开始有了DMA的支持,DMA模式有Single-DMA和Multi-DMA两种,与PIO模式相比达到了节省处理器资源的效果,但随后被性能更好的Ultra DMA所取代。
2.2 IDE协议的软件实现
  FPGA对IDE硬盘的控制通过命令寄存器和控制寄存器实现,如表1所示[2]。其中带“-”的信号(如“”)表示低电平有效。对磁盘进行任何操作之前首先需要读取特征寄存器,此寄存器指示磁盘是否处于空闲状态。如果磁盘空闲,可以向命令寄存器写入需要执行的命令代码。如果对磁盘进行无数据操作,只需要写入命令字然后等待磁盘执行任务结束即可。如果执行的是读(写)操作,就需要通过扇区数寄存器确定读(写)扇区总数,通过扇区号寄存器和柱面寄存器确定读(写)地址。命令执行完毕后,FPGA需要读状态寄存器" title="状态寄存器">状态寄存器。如果ERR位有效,表明执行上一个命令的过程中产生了错误,具体错误类型可以通过读错误寄存器得到。

 


  系统上电后要对硬盘进行复位操作,检测到BSY位和DRQ位都为低电平时硬盘复位结束。然后通过Set Feature和Set Multiple Mode等命令完成对硬盘的配置。如图3,对硬盘的配置以及读(写)命令的发送都是用PIO模式实现的。图4给出PIO模式的时序图,表2给出其时序要求[2]。下面以写磁盘为例介绍磁盘工作在48位寻址时PIO命令的执行:FPGA首先连续写两次磁盘的特征寄存器,因为在PIO模式下此寄存器已经废弃,所以值可以任意。然后连续写两次扇区数寄存器,第一次写入写扇区总数的高8位,第二次写入写扇区总数的低8位。再依次写两次扇区号寄存器、柱面寄存器0、柱面寄存器1,顺序写入起始扇区地址的第24~31位、0~7位、32~39位、8~15位、40~47位、16~23位。至此,硬盘就可以确定写数据的起始地址以及写数据总量。然后FPGA需要写驱动器/磁头寄存器以确定磁盘的寻址方式。一般采用逻辑寻址。最后向命令寄存器中写入命令码34H。参数发送完毕后,FPGA至少等待400ns,然后读可选状态寄存器,一旦检测到BSY为低电平、DRQ为高电平" title="高电平">高电平,就说明磁盘已经就绪可以接收数据,此时只需按照PIO时序的要求向数据寄存器写入数据即可。数据写入完成后,FPGA需等待磁盘给出的中断信号INTRQ,此信号有效后FPGA读状态寄存器,整个写扇区的命令执行完毕,磁盘可以继续接收其他命令。

 

 

 

  完成硬盘的复位和配置以后,FPGA循环检测有无读写命令。以写硬盘为例介绍,FPGA完成对硬盘的复位和配置后就进入到命令检测状态。一旦检测到写硬盘命令,程序进入到写状态。FPGA首先向硬盘命令寄存器和状态寄存器写入必要的信息,然后等待DMARQ信号有效,进而对DMA通道进行初始化。全部准备工作完成后,FPGA内部FIFO中的数据就可以存储到硬盘中。数据在传输过程中,硬盘随时可能暂停传输,一旦暂停,FPGA就只能等待硬盘再次就绪。前一帧的DMA数据传输完毕后,FPGA需要向硬盘发送CRC结果,如果CRC结果正确硬盘就会接收当前数据;如果错误,硬盘就会向FPGA报错,此时数据就需要重新传输。图5为写硬盘流程图。读硬盘的过程和写过程相似,本文不再详细介绍。


3 上位机软件设计
  整个磁盘系统通过VC界面进行管理,操作界面如图6。软件提供了最多四个采集通道,用户可以根据自己的需要进行任意配置。采集数据前,可以设置采集时钟为外时钟或内时钟。触发方式分:自动触发、上升沿触发、下降沿触发、低电平采集、高电平采集。针对雷达的特殊工作方式,系统也可以工作在间断采集模式下。

 


    数据采集过程中,磁盘系统配合PCI 9054卡可以得到当前回波的IQ数据以及脉冲压缩结果。采集结束后,可以根据需要导出任何一部分数据。
  本文采用FPGA实现了符合ATA-6规范的IDE协议,将硬盘组成磁盘阵列实现了对数据的高速稳定存储, 平均数据流达到200MB/s,峰值传输速率达到800MB/s。在试验阶段先后使用了希捷、迈拓、西数等厂家的硬盘进行试验。经过测试整个系统的运行比较稳定,长时间采集不会出现数据丢失的情况。如果希望增强系统的抗震性,可以在板卡上挂IDE接口的固态盘,整个系统的性能不会受到影响。


参考文献
[1] Friedhelm Schmidt.SCSI总线和IDE接口协议、应用和编程(第二版)[M].中国电力出版社,2001.
[2] Technical committee.Information Technology-AT Attachment with Packet Interface-6(ATA/ATAPI-6)[S],Revision 3a 14 December,2001.
[3] CARDARILLI G C,LEANDRI A,MARINUCCI P,et al.Desigh of Fault Tolerant Solid State Mass Memory.IEEE   TRANSACTION ON RELIABILITY[J],2003,52(4):2-5.
[4] 黄新财,佃松宜,汪道辉.基于FPGA的高速连续数据采集系统的设计[J].微机计算机信息,2005,2(58):2-5.
[5] 候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计-电子工程师必备知识(修订版)[M].西安:西安电子科技大学出版社,1998.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。