百度网站是百度公司做的吗,网络营销方式有哪些分类,企业网站建设与管理,广州视频制作今天来讲一篇如何在fpga上实现sata ip#xff0c;然后利用sata ip实现读写sata 盘的目的#xff0c;如果需要再速度和容量上增加#xff0c;那么仅仅需要增加sata ip个数就能够实现增加sata盘#xff0c;如果仅仅实现data的读写整体来说sata ip设计比较简单#xff0c;下面… 今天来讲一篇如何在fpga上实现sata ip然后利用sata ip实现读写sata 盘的目的如果需要再速度和容量上增加那么仅仅需要增加sata ip个数就能够实现增加sata盘如果仅仅实现data的读写整体来说sata ip设计比较简单下面从sata 协议角度来聊聊sata ip应该如何实现。下图就是在FPGA上实现3张SATA SSD硬盘组成RAID0的结构图。 sata速度分为三个等级sata在硬件接口上是一对收发差分信号硬件是全双工模式但实际SATA协议是半双工工作模式为什么会如此奇怪再link层会讲解到。sata gen1 速度1.5Gbpssata gen2速度3.0 Gbpssata gen3 速度6.0Gbps然后编码都是8b/10b编码所以对于sata gen3的有效带宽速度6*1000 * 0.8 / 8 600MB/s注意这里的速度都是按照1000进制计算这里的有效带宽包含了FIS数据和一些握手 Primitives实际的纯data的有效带宽一般是在570MB/s如果带了sata盘那么就和每家的ssd盘有一定关联目前速度做的最快和最稳定的当是三星大哥了。
链路层
物理层不需要我们设计用xilinx的ip就行我们从链路层开始讲解。
链路层的帧结构如下所示Primitives FIS CRC组成FIS在链路层看层是data我们在传输层时候在讲解CRC是FIS的CRCPrimitives用于HOST和device之间如何通讯如何握手。每个FIS的传输都离不开Primitives和CRC. 常见的Primitives如下图所示这里只列举一些Primitives。
SOF :表示数据传输的start
EOF:表示数据传输的end
X_RDY:向对端发起请求我要抢占总线传输数据
R_RDY接受者向发起者发送该Primitives表示我已经准备好了
R_IP表示一直在收数据或者在发数据这就是为什么sata是半双工的原因需要一直握手。
SYNC表示事情做完了可以让出总线处于Idle状态 传输层
传输层设计相对简单很多传输主要是解析FIS帧或者组FIS帧常用的FIS帧如下所示。 从上图可以看到FIS层一共有8中类型的FIS我们在设计FPGA SATA IP时可以不用设计BIST Activate FIS因为该FIS用于验证链路的下面列举几个常见FIS帧,
从下面FIS帧我们可以清晰的看到lba,count和Command等栏位lba就是访问sata硬盘的逻辑扇区count是lba的数量count最大是16bit表示那么可以看出单次命令最大的size32MBcount0表示32MBcommand表示应用层的cmd code这个在应用层会讲解。
H2D FIS帧格式如下 D2H FIS帧格式如下 DATA FIS帧格式如下 SDB FIS帧格式如下NCQ发送DATA FIS之后需要发送SDB FIS反馈状态。 DMA Activate FIS帧格式如下DMA Write和NCQ Write命令特有的。 DMA Setup FIS帧格式如下这个是NCQ命令特有的 PIO Setup FIS帧格式如下这个是PIO命令特有的。 应用层
应用层常用的是ATA指令集,ATA指令集如下所示。 ATA指令集command偏多这里讲解identifytrimflush cache和ncq read write命令下面贴图都是4KB size,和NCQ qd1这样是为了方便理解单个命令FIS交互过程。flush cache命令比较简单就是一个non-data命令只需要H2D FIS和D2H FIS两个FIS就能完成命令的实现。
identify命令是一个pio read命令只要不是Error情况device是不需要响应D2H FIS NCQ Read命令 NCQ Wrtie命令细心的同学发现了Write命令比Read命令多了一个DMA Activate并且这个FIS在第一笔DATA FIS传输是可以省略的可以在Set feature命令中设置 最后一个很重要的就是硬复位命令了这个COMRESET在Primitives实现的。 总体来说SATA设计比较简单因为不需要考虑什么low power等仅仅需要实现NCQ命令就行NCQ命令可以最大支持qd32但是速度还是很慢有条件就上pcie无论在单lane速率还是lane得数量上都是吊打sata反正结合项目实际需求找到适合自己的设计方案。