SATA硬盘作为新型的存储介质,具有高速、海量、价格低廉、使用方便等优点。SATA2.5协议支持3.0Gb/s的接口速度,SATA2.5硬盘的持续存储速度可达80MB/s,最大存储容量已经达到750GB(如希捷ST3750640AS硬盘)。SATA硬盘已经占据了大部分的PC机硬盘市场,并且正向工作站、服务器的领域迈进。而在嵌入式的应用领域,目前的硬盘存储设备依然广泛采用传统的IDE(ATA)和SCSI硬盘。由于两者存在低速或昂贵的缺点,因此如何将SATA硬盘存储应用到嵌入式系统中就成为今后相关领域的研究重点。
1 SATA2.5协议的性能与结构
1.1 各种硬盘存储接口的比较
通常硬盘根据接口类型进行分类。硬盘接口主要分为:IDE(ATA)、Serial ATA(SATA)、SCSI、Serial Attached SCSI(SAS)和Fiber Channel(FC),此外还存在IEEE1394、USB等。
IDE、SCSI采用的是并行总线接口,随着技术要求的不断提高,并行技术的种种问题如信号扭曲和串扰、电缆和连接器的反射、设备的寻址能力有限等都已成为提高其数据吞吐能力的障碍。FC、SAS和SATA采用串行技术,克服了并行技术存在的缺点,大大提高了速度、可靠性和可扩展性。而SATA硬盘相对于FC和SAS硬盘具有很大的价格优势,并且与SAS接口兼容。
1.2 SATA2.5协议的基本性能[1]
SATA2.5是国际串行ATA组织SATA-IO(Serial ATA International Organization)制订的最新SATA标准。其主要性能特点如下:
(1)传输速率快,由SATA1.0的1.5Gb/s发展到SATA2.5的3.0Gb/s,并且SATA-IO计划今后几年推出6.0Gb/s的接口协议,这比最新的并行IDE接口ATAPI-7的133MB/s的传输速率提高许多。
(2)电缆线宽度降低而长度增加,宽度由IDE的40针/80针减少到7针,长度由18英寸增加到1米。
(3)支持热插拔,这使SATA硬盘可以作为移动硬盘使用。
(4)提高了数据传输的精确度,ATA-3标准引入了基于CRC(循环冗余码校验)的数据包出错检测,但是,没有任何一种并行ATA标准提供命令和状态包的出错检测。SATA提高了CRC对数据、命令和状态包错误的检测能力,从而提高了数据传输的精确度。
(5)支持全速命令队列(NQC),大大提高了硬盘的内部数据传输速度。
此外,SATA2.5协议采用点对点结构,降低了磁盘阵列的出错风险;降低了工作电压,减少了功耗;向下软件兼容并行ATA,横向兼容SAS协议。
1.3 SATA2.5协议的体系结构
SATA2.5采用四层结构:应用层、传输层、链接层和物理层。其中,应用层负责所有ATA命令的执行,包括对控制命令模块寄存器的访问;传输层负责在主机和硬盘设备之间以帧信息结构(FIS)的形式传输控制命令和数据;链接层负责对数据进行8/10编解码,根据需要从结构帧中提取有效数据,或者将控制字插入到结构帧当中;物理层负责在串行数据线上传输已编码的数据。
2 Virtex-5 FPGA芯片简介[2]
Virtex-5系列FPGA芯片[2]是Xilinx公司最新推出的高端产品,它采用65纳米工艺,1.0V核电压,具有灵活的时钟管理模块,100Mb/s~3.2Gb/s的串行连接功能,550MHz的DSP硬核,内置36KB的块RAM, I/O引脚多达1 200个。目前,Virtex5系列FPGA有LX、LXT和SXT三款平台,分别面向高性能逻辑功能、高性能逻辑功能和高速串行连接,以及高速串行连接和DSP功能。
RocketIO GTP收发器是专门为Virtex-5 FPGA实现高速低功耗串行连接而设计的,具有高速、稳定的特点,可以实现PCI Express、FC、SATA等高速接口的物理层协议,而不用外置子板,从而节省了空间和成本。
3 SATA2.5协议在FPGA上的实现[3][4]
3.1 链接层在FPGA内的实现
链接层发送或者接收混合了控制原语的数据流,在数据传输过程中,CRC被加入或者提取出数据流,同时8b/10b编解码被执行。图1给出了链接层在FPGA内部的逻辑结构,左边与传输层相连,右边与物理层相连。
在核时钟域里,数据宽度是32位;而在PHY时钟域里,数据宽度是10位。在发送过程中,异步接口每四个PHY时钟发送一次双字,每个PHY时钟内一个8位数据块通过8b/10b编码器生成10位数据块,并被连续串行发送到物理层。接收过程刚好与此相反。原语是由双字组成的实体,用于控制和提供串行连接的状态。在FPGA内部,原语专门由原语发生器提供,主控制器根据上层命令控制原语的产生。CRC发生器多项式为: