周瑞岩 张彦敏
(1.91404部队 秦皇岛 066000)(2.武汉第二船舶设计研究所 武汉 430064)
IDE硬盘在高速数据采集系统中的应用*
周瑞岩1张彦敏2
(1.91404部队 秦皇岛 066000)(2.武汉第二船舶设计研究所 武汉 430064)
分析了利用DSP、FPGA、CPLD和双端口RAM等高速器件设计完成基于IDE硬盘的高速数据采集的实时存储系统。对于硬盘的读写PIO模式及硬盘的数据存储FAT32格式实现方法等进行了详细的论述。
IDE硬盘; PIO传输模式; FAT32
在航空航天、遥感测量、现代电子测试等很多领域,要求能及时保存原始测试数据,用于事后数据分析和处理,同时随着探测器前端性能的提高,对于各种系统存储容量、体积、造价、稳定性等都提出了更高的要求。以往采用多机处理并行处理、传输和并行记录技术。但是这类系统具有对工作环境要求较高,加之体积比较庞大、需配套计算机、存储量小等诸多缺点,很难适用于特殊环境要求。因此研制容量大、功耗低、性能可靠、体积小、造价低的数据存储记录系统是十分必要的。特别是对于大容量、低价格、普及强、速度较高的IDE硬盘,提出了采用DSP控制IDE硬盘对高速采集的数据进行实时无丢失存储。本系统的特点:
1) 采用PIO模式进行块操作的写盘方法,从而大大提高了写盘的速度;
2) 采用CPLDFPGA现场可编程逻辑器件对部分电路进行集成,提高了系统的稳定性和可靠性;具有较好的通用性,还有较强的可扩展性,可满足多种场合的需要而无须改动任何硬件;
3) 以FAT32格式存储数据实现硬盘的在线和脱线操作,操作简单实用;
4) 以DSP为核心,采用了双端口RAM与硬盘数据线间的高速数据传输方案,解决了高速采集数据、DSP、硬盘之间时序的不匹配的问题。
硬盘存储采集系统的原理框图如图1所示。图中整个硬盘存储采集系统分为三大部分: 1) 数据采集及其控制部分; 2) 数据采集的数据缓冲部分; 3) 硬盘存储的主存储及其控制部分。
图1 系统硬件的总体框图
由于IDE硬盘的工作时序和速度与数据采集的时序和速度不匹配,从数据采集部分得到的并行数据需采用双端口RAM做数据的缓存,然后在DSP的控制之下,将双端口RAM中的数据直接写入硬盘,这里使用FPGA完成DSP与硬盘读写时序的兼容转换。硬盘的寻道时间和读写时间相对于数据采集和缓存的速率来讲是相对较慢的,因此采用适当的读写方法,提高硬盘的读写速度,还有采用适当的文件存储格式是本系统设计的重点和难点。
2.1 数据采集及控制电路
数据采集要求数据采集器具有多通道、高速率、高精度、低噪声等性能,设计中采用了TI公司的AD8364数据采集器件。AD8364是一款采样率为250kHz,并行16位,独立6通道同时采样的模拟数字转换器件。具有低噪声无码丢失可以达到14位,低功耗450毫瓦,差分输入,显然满足设计要求。ADS8364六个通道分别是CHA+、CHA-、CHB+、CHB-、CHC+、CHC-,六通道是同时采集分时转换存储,每通道250KHZ,并行的数据输出。CPLD数据采集控制部分是完成对A/D器件的各控制信号的输入,如图2所示RD1、HOLD1、CLKAD1均为AD的控制信号,使六通道同时对数据采样,分时写入到双端口RAM IDT70V26中。
图2 数据采集及缓冲存储系统的控制信号时序
2.2 双端口RAM的缓冲存储器
由于时序的不匹配,使得在高速采集系统中采集的数据无法直接存入硬盘,因此需要一个缓冲存储器进行匹配或缓冲,使得高速数据和硬盘存储可以分别按照各自不同的时序和速度、逻辑分别对双端口RAM的一端写入或读取。将双端口RAM IDT70V26(25/35/55ns三种存取速度)分成高位和低位地址两部分实现乒乓操作,使数据交替存储,实现了数据的高速无丢失存储,同时相对于其它类型的存储方式它的外围电路及相应的控制信号较为简单。
IDT7026内部有8个独立于双端口存储单元的锁存逻辑单元,作为令牌使用,可将空间划分成1~8个区段。或者用双口SRAM的“/BUSY”信号,可以保证两个左右端口可靠的完成数据的交换。但是两种方法都不同程度使读写速度受限。
本系统要求高的数据吞吐率,若使左右端口不对相同的存储单元访问,就能提高吞吐率,只要左右地址总线上的地址不相同就可以了。基于此,左右两个端口的最高位地址AL13和AR13由FPGA和CPLD控制控制,并且互为相反。FLAG0接双口SRAM的右边端口最高位地址AR13,把FLAG0反向后接AL11,就把双口SRAM分为上下各8K×16bit的两个区,当FLAG0=1时,CPLD向双口SRAM的低半区写数据,而FPGA可以从双口SRAM的高半区读数据,完成后转换。可见,FPGA和CPLD对双口SRAM的访问永远不会发生冲突。
2.3 DSP与IDE硬盘的接口
目前还没有在DSP中集成和专门用于硬盘的磁盘驱动器和接口电路,利用DSP控制现有的IDE硬盘,可以极大地提高系统的性价比,同时发挥了DSP指令执行速度快、控制能力强、内部逻辑寻址方便等优点,本系统中采用了一片TMS320C5409作为其控制器。用FPGA连接DSP管脚和IDE硬盘,实现DSP和IDE硬盘的时序的兼容及管脚的兼容。考虑到高速数据的读取和存储设计中必须合理划分软件和硬件功能,把数据从双端口RAM到IDE硬盘的高速数据流交由FPGA中转,把硬盘数据读写控制命令和对硬盘各种参数以及硬盘内部存储扇区的种种寻址功能交由DSP完成,实现连续的高速数据流的存储。
图3 PIO格式DSP控制硬盘读写的基本时序(读)
硬盘读写是一个复杂的过程,这其中涉及到硬盘的接口方式、寻址方式、控制寄存器的读写、硬盘的数据存储格式、硬盘的读写速度等诸多复杂的方面。现代的硬盘经历了从磁性介质、光磁介质到最新的FLASH存储材料,但是ATA标准对它们都是适用的,硬盘的数据传输可以按照PIO方式、DMA方式进行,而硬盘内部数据的寻址方式又可以按照CHS或者是LBA(块)方式。
3.1 IDE硬盘的寄存器模型简介
IDE硬盘的寄存器分为两组(见表1):命令寄存器组和控制寄存器组,DSP便是通过对IDE接口硬盘的控制,就是通过硬盘控制器上的这两组寄存器实现的。
数据寄存器:是主控制器和硬盘控制器的缓冲区之间进行数据交换的寄存器,使用该寄存器进行数据传输的模式成为PIO模式,当然,除了PIO方式之外,数据传输还可以通过DMA的方式进行。
表1 硬盘控制寄存器及其寻址
状态寄存器:在状态寄存器中保存了执行最后一个命令时磁盘驱动器的状态,在本设计中硬盘读写时要不断地对状态寄存器进行检查,而所有命令的执行及数据的读写时状态寄存器都必须满足一定的条件,否则将出现不可预知结果。
错误寄存器:如果在状态寄存器中设置了ERR位,那么在错误寄存器中将会保存最后执行的命令的诊断码。
命令寄存器:在这个寄存器中接受并保存了发送到控制器的命令。命令一发送到命令寄存器中,命令就开始执行。
LBA HIGH、LBA MID、LBA LOW和设备寄存器的低4位和成为介质地址寄存器,介质寄存器可以用CHS或PIO方式进行寻址。
3.2 硬盘的寻址方式
IDE驱动器的介质通过磁头、柱面和扇区组织,采用物理寻址(CHS)或逻辑寻址(LBA)方式。CHS模式中,可以使用柱面、磁头和扇区号唯一地确定一个扇区。而LBA方式,驱动器是以连续序列的通过逻辑块编号寻址的区段组成。LBA模式中,可以使用28个数据位表示逻辑区块的地址信息。设计中采用LBA方式确定要读写的硬盘扇区的地址。
3.3 IDE驱动器的读写过程
在PIO模式下使用READ SECTORS(20H)和WRITE SECTORS(30H)命令向驱动器发出读写数据的请求,然后通过数据寄存器读写数据。命令需要读写数据的起始扇区号、逻辑地址,扇区数等作为参数。注意命令执行前,一定要驱动器空闲,而读写数据命令发出后,要有驱动器数据请求,当然在整个过程中不能有错误,否则转入相应的错误寄存器判断。
3.4 硬盘分区及文件存储
了解硬盘中文件存储的基本结构,可以直接控制硬盘的文件读写。这样,可提高硬盘读写速度,另外可保证与现有操作系统的兼容,必要时还可以建立一定的保密机制。
硬盘经分区、格式化之后,可分为根引导区、根记录区、分区表、数据区四个部分:
1) 读取硬盘的根引导区:根引导区(Boot Sector)位于硬盘的第一个逻辑扇区,其中的硬盘分区表包括四个分区项,每项16个字节,记录了各个分区的信息。读取扇区记录其基本信息(如分区类型、扇区有效结尾字符、当前分区起始扇区号)。为了编程及应用的方便,格式化硬盘为一个区。
表2 系统读入到DSP内部寄存器的硬盘的分区表的内容
2) 对硬盘的DBR(DOS引导记录区)的操作:通过前面(划线)内容读取DBR,它包括引导程序和一个被称为BPB的分区参数记录表等内容。DBR占用三个扇区。第一个扇区为引导记录信息,保存了一些重要的参数和引导程序。在本设计中可以通过读取第一个扇区掌握需要的一些信息,如每区的扇区数、FAT表个数、DBR总扇区数、分区总扇区数等参数,从而可以计算得到FAT1、FAT2的扇区起始地址和根目录的起始扇区地址。
3) 空簇写入文件:通过读取FAT表,我们就把硬盘中的空簇记录下来,将数据写入相应空簇指向的扇区从而完成数据的存储部分。
4) 写文件的根目录项,完成对DIR区的相应的文件属性等信息。这样就完成了一个基本文件的读写,再将硬盘插入到计算机中就可以读出相应的文件。
本文论述了一种基于IDE硬盘和其文件系统的高速数据采集设计方案,编程中硬盘扇区地址最多要10或40(空簇号计算成扇区地址)个指令周期,50M的时钟频率,只要200ns或800ns。理论上,写一个簇的空间32Kbit只需要7×200+1×800=2200ns,与寻道需要的毫秒相比可忽略,使硬盘的平均传输速率高于一般的IDE接口速率,可达8MB(64Mbit)左右,满足16通道的数据采集实时存储要求。实验证明,实际使用效果良好,实现了数据的高速无丢失实时及计算机可识别存储。
[1] J. Masiewicz. Information Technology — AT Attachment with Packet Inerface-7 Volume 3(ATA/ATAPI-7 V3)[J]. Utrecht University Information & Computing Sciences,2000,27.
[2] 王祖麟.A/D转换器ADS7822在高速数据采集中的应用[J].电子元器件应用,2004(5):48-50.
[3] 吴芝路.基于IDE硬盘的高速数据存储器研究[J].电子技术应用,2000,26(5):16-17.
[4] 朱宁.硬盘分区及FAT32文件结构[J].通讯与广播电视,2002(4):27-36.
[5] 徐小玲.IDE硬盘读写技术[J].电子科技大学学报,2002,31(6):636-641.
[6] 吕雷.由FPGA和DSP控制的高速IDE硬盘存储技术[J].航空兵器,2006,29(4):43-45.
[7] 罗悦择,沈建华.嵌入系统的硬盘文件操作[J].计算机工程,2004,30(2):176-177.
[8] 庞晓辉,胡修林,张蕴玉,等.高速数据采集系统的设计与实现[J].仪器仪表学报,2000,21(3):297-299.
[9] TMS320F206对基于FAT32文件系统IDE硬盘的文件操作[J].现代电子技术,2004,27(6):88-91.
[10] FRIEDHELM SCHMIDT. SCSI总线和IDE接口:协议、应用和编程(第二版)[M].北京:中国电力出版社,2001.
Application of Hard Disk in High Speed Data Collection System
ZHOU Ruiyan1ZHANG Yanmin2
(1. No. 91404 Troops of PLA, Qinhuangdao 066000)(2. Wuhan Second Ship Design Research Institute, Wuhan 430064)
This paper analyses the high speed data collection and the real time storage design with the using of DSP、FPGA、CPLD、double-ported RAM and IDE hard disk. Introduces the read-write mode PIO and the FAT32 for data storage of the hard disk.
IDE hard disk, PIO transport protocols, FAT32 Class Number TX971; TP391.9
2016年10月3日,
2016年11月26日
周瑞岩,男,研究方向:水面舰艇作战试验、部队训练。张彦敏,高级工程师,研究方向:援潜救生、水下作业及重要设施安全保障。
TX971; TP391.9
10.3969/j.issn.1672-9722.2017.04.026