本帖最后由 222zhumingming 于 2019-8-31 21:58 编辑
SATA全称为SerialAdvanced TechnologyAttachment,即串行硬盘接口技术。2001年8月,Seagate公司在IDFFALL2001大会上第一闪宣布了Serial ATA 1.0标准,Serial ATA规范正式确立SATA 1.0a协议于2003年1月7号正式发布。 SATA是一种完全不同于并行PATA的新型硬盘接口类型,采用串行方式传输数据。与并行PATA相比,SATA具有比较大的优势。首先,SATA由于采用串行差分方式传输数据,并使用嵌入式时钟信号,对传输数据进行编解码处理,这就彻底解决了并行总线PATA无法解决的四大难题,即码间干扰、信号偏移、串音干扰和直流偏置。这使用SATA的工作频率可以提升至非常高的水平,同时具备了更强的纠错能力,进一步提高了传输质量。 SATA3.0 协议继承了先前的协议结构,同样是由物理层、链路层、传输层和应用层构成,其结构如图 2-1 所示。其中物理层位于协议的最底层,它的功能是通过信号检测以及原语交互实现主机端控制器与设备端控制器的链路初始化,建立数据通道,实现并行转串行、串行转并行操作,并且从接收的数据中提取时钟。链路层位于物理层的上一层。链路层分为发送和接收两个过程,在发送数据时,发送模块首先计算需要发送数据的 32bitsCRC 校验和,然后将该校验和与需要发送的有效数据进行加扰,并将计算得到的CRC 校验和放在有效数据帧的最后一帧,最后 8B/10B 编码后发送到物理层。设备端在收到数据后,通过计算对比 CRC 校验和来检验数据传输是否正确;在接收数据时,首先对接收到的有效数据进行8B/10B 解码和解扰码操作,在恢复原始数据后,计算本组数据的 CRC 校验和,并与设备端发来的校验和比较,验证正确性。传输层同样分为发送和接收两个过程,在发送数据时,会按照要求将需要发送的数据封装成协议规定的FIS 帧数据;而在接收数据时解析收到的 FIS 帧,判断该 FIS 帧是哪种类型的帧,并将解析出的信息发送到应用层。应用层是整个协议的顶层,应用层负责命令解析、寄存器值更新以及实现 DMA 方式的数据读取。
基于MK7325FA板子进行测试,MZ7100的板子的SATA连接到FPGA的GTX bank 109上。
SATA的GTX参考时钟需要150MHZ,通过CDCM61002可以配置,将拨码开关改成000011
采用三星V-NAND SSD 850 120G固态硬盘和七彩虹SL500DDR 512GB进行测试:
三星硬盘总的扇区是 0x0DF94BB0个,总容量=0xDF94BB0*512/1024/1024/1024=111.8GB 七彩虹硬盘总的扇区是 0x3B9E12B0个,总容量=0x3B9E12B0*512/1024/1024/1024=476GB DMA长度设置256扇区,测试2GB 三星2GB 平均509MB/s
七彩虹2GB 平均453MB/s
|