- 论坛徽章:
- 0
|
本人在FPGA中开发了一个SATA控制器, SATA协议的应用层由嵌入式处理器PPC440来实现,主要完成硬盘的参数配置和读写操作命令。SATA协议的传输层和链路层是通过硬件描述语言设计在FPGA中生产相应的电路来实现,这两层主要是完成帧的封装,帧的发送、暂停、结束控制,帧的解析和校验。SATA协议的物理层由千兆位级收发器GTX、OOB控制模块和接口传输率选择模块共同实现。千兆位级收发器GTX的主要功能包括8B/10B编码/解码,串并/并串转换,逗点检测,时钟修正,预侧重和线性均衡等。OOB控制模块和接口传输率选择模块能够自动识别硬盘的接口传输率,完成硬盘的上电过程或硬件复位过程,并同SATA控制器建立通信链接。
PLB接口实现嵌入式处理器PPC440和SATA控制器之间控制信息和状态信息的交换,NPI接口来实现片外存储芯片DDR2和SATA控制器之间数据的交换。该控制器既可以作为主设备控制器又可以作为从设备控制器,既支持SATA I (接口传输率是1.5Gbps)又支持第二代SATA II(接口传输率是3.0Gbps),而且可以自动识别连接的设备是符合第一代SATA接口标准还是第二代SATA接口标准,并选择相应的接口传输率与其建立通信链接。使用该控制器控制普通台式机SATA硬盘持续读写速度可以达到了85-110MB/S。要是使用SSD硬盘可以获得更高的存储速度。下图是该控制器在XC5VFX130T-2FF1738中实现的资源占用情况,从图4可以看出在XC5VFX130T-2FF1738中实现一个SATA控制器PLB2SATAIP只占用4%左右的可编程逻辑资源,所以在该片FPGA中就可以多个SATA控制器,同时控制多个SATA硬盘,形成RAID,增加存储带宽。
使用资源名称 使用量 总的资源量 所占比重
BUFDSs 1 10 10%
BUFGs 8 32 25%
DCM_ADVs 2 12 16%
GTX_DUALs 1 10 10%
RAMB36_EXP 8 298 2%
Slice Registers 2224 81920 2%
Flip Flops 2223 ------ ------
Latches 1 ------ ------
Slice LUTS 2611 81920 3%
Slice LUT-Flip Flop pairs 3530 81920 4%
有感兴趣的朋友可以联系我,相互交流。
联系方式: wuwei811204@126.com |
|