《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 基于IDE硬盘的高速数据存储器研究

基于IDE硬盘的高速数据存储器研究

2009-02-20
作者:吴芝路 任广辉 王桂玲 赵雅琴

  摘 要: 介绍了利用MCS-51系列单片机控制IDE硬盘进行读、写操作,实现高速数据的无丢失存储。
  关键词: 数据存储 IDE接口 PIO传输模式


  随着遥测技术的发展,被测参数迅速增加,数据传输速率越来越高,对系统的存储容量、体积、造价、稳定性等都提出了更高要求。为了实现较高的传输速率和较大的数据量,往往采用多处理机并行处理、传输和并行记录技术。但这类系统对工作环境要求较高,加之体积大、占用系统机时等缺点,很难适用于受空间限制的特殊环境。因此,研制性能可靠、体积小、造价低的数据存储系统是十分必要的。近年来作为数据存储媒介的硬盘,以其容量大、接口智能化程度高、控制方便越来越受到人们的重视。充分发挥硬盘的优势,脱离系统主机,可为用户开发速度高、存储量大、性能可靠的遥测数据存储系统。
  基于上述原因,本文提出了采用单片机控制硬盘对遥测数据进行实时存储的方案,对数千秒遥测数据进行实时无丢失存储,其最大优点是不占用系统机时。本系统的特点:
  ·采用PIO模式进行块操作的写盘方法,从而大大提高了硬盘的写盘速度;
  ·以单片机为核心,采用I/O口与缓冲存储器之间进行高速数据传输的方案,解决了高速遥测数据、CPU和硬盘三者工作速度不一致的矛盾;
  ·采用EPLD器件对部分电路进行集成,提高了系统的稳定性和可靠性,具有较好的通用性,可满足多种场合的需要而无需改动任何硬件。
1 系统的硬件介绍
  系统分为遥测数据采集和存储两部分,采集部分包括采集控制和串/并转换电路;存储部分有:帧计数、读写缓冲地址产生电路、读写控制电路及主存储电路。结构框图如图1所示。


  由于硬盘的工作时序与遥测数据的速率不匹配,从数据采集部分得到的并行数据需采用SRAM作数据缓存,然后在单片机的控制下,将SRAM中的数据直接存入硬盘。而硬盘的寻道时间相对于遥测数据的速率来讲比较慢,因此采用适当的写盘方法,提高硬盘的读写速度是本系统的重点之一。其难点在于如何利用单片机控制硬盘进行读写、复位、检测等操作。
1.1 双片交替式缓冲存储器
  由于时序不匹配,遥测数据无法直接存入硬盘,因此需要一个缓冲存储器进行匹配或缓冲,使遥测数据和硬盘存储可以分别按各自不同的时序和速度对缓冲存储器SRAM进行操作,解决了不同时序的匹配问题。因此采用缓冲存储方法,将遥测数据存满一定容量的SRAM,再对其进行块操作存储,可极大地提高存储的速度。为了实现遥测数据无丢失存储,缓冲存储器采用双片交替式,即两片SRAM分别交替地被写入遥测数据。首先在地址产生电路控制下将遥测数据写入其中一片SRAM,写满后发出溢出中断,并且封闭地址产生电路及遥测数据的通路而接通硬盘地址和数据通路,等待CPU响应中断后,读取数据存入硬盘。与此同时,另一片SRAM的地址和数据端马上被接通到地址产生电路和遥测数据通路上,接受遥测数据的写入。同样写满后发出中断,切换至被读取状态。两片SRAM如此交替地工作,连续不断地将遥测数据缓存、写盘,只要写盘所用的时间不大于遥测数据写满SRAM的时间,数据就会无丢失地全部存储。
1.2 采用MCS-51系列单片机驱动硬盘的方案
  由于目前还没有为单片机设计的专用硬盘驱动器及接口电路,利用单片机系统控制现有的硬盘驱动器,可极大地提高系统的性能价格比。因此,本系统采用单片机控制硬盘进行高速数据的存储。
  IDE接口的硬盘驱动器提供了两种数据传输模式:DMA模式和PIO模式。由于PIO模式控制相对容易,提供了一种编程控制输入输出的快速传输方法。该模式采用了高速的数据块I/O,以扇区为单位,用中断请求方式与处理机进行批量数据交换。在扇区读写操作时,一次按16位长度通过内部的高速PIO数据寄存器实现传输。通常情况下,数据传输以扇区为单位,每传输一扇区数据产生一个中断。在块模式下以块为单位,在读写一个块期间,硬盘驱动器不产生中断,这样就大大地节省了时间。由于本系统遥测数据的码速率提高到8Mb/s,对硬盘的写盘速度要求非常高,因此本系统采用了块传输模式以提高硬盘的读写速度。硬盘在读写16位数据时,PC机中使用INSW指令或OUTSW指令实现16位数据读/写操作,由I/O端口直接到内存。而在本系统中采用MCS-51系列单片机控制硬盘,使数据传输在硬盘端口寄存器与缓冲存储器之间进行,不经过单片机,单片机只是对硬盘进行初始化,并发相应的写命令。这样,在单片机的控制下,两片SRAM交替工作,实现了高速遥测数据无丢失存储。
2 系统的软件介绍
2.1 硬盘速度测试

  硬盘的存取速度是决定8Mb/S码速率硬盘存储方案可行性的关键。是否存在足够高速的硬盘与系统相配,是本系统方案能否实现的一个决定性问题。但是,利用现有的硬盘测试软件只能比较几种硬盘之间的优劣和差异,而不能比较同一硬盘采用不同写盘方法的速度差异。为了得到一种较快的写盘方法,在对硬盘读写原理进行深入剖析后,自己编程进行测试。以迈拓4.3GB硬盘为例,采用三种不同的写盘方法:调用BIOS的INT13;利用非块模式和块模式写盘;对硬盘速度进行测试。结果证明:采用PIO4及块模式写盘速度最快,可以达到3.496MB/s。完全可以满足本系统的需要。
2.2 单片机控制硬盘读写操作
  IDE接口是一种任务寄存器结构的接口,所有输入输出操作均通过对相应寄存器的读/写来完成的。如果主机要对硬盘机进行写数据操作,首先进行(命令和参数)寄存器选择,通过数据总线将相应的命令码用IOW写入命令寄存器,以及有关参数写入硬盘参数寄存器。数据由数据总线(16位宽)传递至数据寄存器,通过数据寄存器存入缓存器。IDE接口会根据命令自动将数据写到由参数寄存器指的磁道号、头号、扇区号。硬盘的读操作与写操作相似,区别在于首先发出中断请求,然后进行数据传输。IDE控制器端口寄存器地址分配见表1。


  主状态寄存器(CS0置0)反映硬盘控制器的操作状态,决定查询状态后的不同流向。定义如下:

  
  在向控制器发出命令之前,必须先检测控制器是否忙碌(D7=1)。如果在规定时间内控制器一直忙碌,则置超时错,否则表示控制器空闲可接受命令。
  设计过程中,采用PIO模式以块为单位进行读写操作,从硬盘读数据的过程描述如下:
  (1)在相关寄存器中写入所需的参数,如读取扇区的起始柱面号、磁头号、扇区号、读写扇区数等;
  (2)向命令寄存器中写入命令代码;
  (3)驱动器置BSY位,准备数据传输;
  (4)当驱动器准备好数据后,置DRQ位,清除BSY位,发出中断请求;
  (5)主机检测到中断,读出状态寄存器。测试ERR位,若为1则转入出错处理,否则循环使用IN指令通过数据寄存器读一个扇区或一个块的数据。
  (6)驱动器清除DRQ位,如果还有要传输的数据。从第4步重复执行。
  数据的写入过程与读出过程大致相似,区别在于首先进行数据传输,然后发出中断请求,具体过程不再赘述。PIO模式编程的简单流程图见图2。


  实验证明,本存储方案可行,系统运行稳定,实现了遥测数据正确、无丢失存储,并应用到实际系统中。
参考文献
1 Maury Wright.Disk Drivers at 40 Lean.Mean Storage Machines,1996;41(23)
2 魏梓栋.硬磁盘机的接口技术.计算机与通信,1996;(9):20~23
3 徐厚骏等.IDE接口和IDE硬盘驱动器.新浪潮,1996; (7):17~183

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