基于FPGA的SATA主机控制器

发布: 2017-7-15 19:07 | 作者: axpro | 来源: EETOP 赛灵思(Xilinx) 社区

本人在北京工作7年以上,非常熟悉Spartan-6, Virtex-5/Virtex-6/7 Series/UltraScale Series FPGA,从事FPGA外围接口设计,非常熟悉SATA协议,设计调试了多个基于SATA接口的固态大容量存储设备. 基于FPGA的SATA主机控制器特性如下: 1. 支持SATA 1(1.5Gbps)、SATA 2(3Gbps)以及SATA 3(6Gbps) 2. 符合SATA Rev 3.0规范 3. 实现Phy Layer(物理层)协议,包括OOB等 4. 实现Link Layer(链路层)协议,包括8B/10B编解码,扰码,CRC,流量控制,成帧/解帧,通信握手序列等 5. 实现Transport Layer(传输层)协议,包括FIS构造和解析,错误重传机制等 6. 实现Command Layer(命令层)协议,包括Software Reset协议,PIO Data-In协议,PIO Data-Out协议,DMA-In协议,DMA-Out协议等 7. 实现Application Layer(应用层)协议,包括设备自检,执行IDENTIFY DEVICE command(获取设备参数),DATA SET MANAGEMENT command(Trim),DMA控制器 8. 实现SATA设备带电热插拔 9. 利用多个SATA Host Controller,可以组成RAID阵列控制器 基于FPGA的SATA主机控制器接口特性如下: 1. 支持1.5Gbps, 3Gbps, 6Gbps线速率 2. 提供FIFO数据流接口,支持扁平式地址访问(只需提供首扇区地址和总扇区长度,控制器内置DMA控制器实现连续的扇区地址管理访问),实现大流量数据的读写 3. 提供双端口RAM接口,支持单个扇区地址访问,实现512-byte字节数据的读写 4. 提供双端口RAM接口,支持1~16个扇区地址访问,实现最多8192-byte字节数据的读写 5. 提供双端口RAM接口,支持1~16个512-byte block(LBA Range Entry列表),实现Trim功能 6. 提供SATA Host寄存器接口,包括状态和错误寄存器输出 7. 提供设备自检状态输出、设备参数输出(设备最大可用扇区数等)、Trim支持 本人已经在多个SSD(英特尔,三星,美光,OCZ,金士顿,Sandisk等)上测试验证,控制器性能如下: 1. SATA 2接口,连续写速度大于230MB/s,连续读速度大于250MB/s. 2. SATA 3接口,连续写速度大于520MB/s,连续读速度大于540MB/s. 通过集成多个SATA主机控制器以及Raid控制器,实现对多个SSD的并行读写,也就是RAID 0方式的读写。 如有SATA相关方面的技术合作,可联系我。 联系方式:[url=mailto:neteasy163z@163.com]neteasy163z@163.com[/url]

网络资源