[发明专利]基于FPGA的SATA接口链路层功能实现方法在审
申请号: | 201911078439.5 | 申请日: | 2019-11-06 |
公开(公告)号: | CN110941577A | 公开(公告)日: | 2020-03-31 |
发明(设计)人: | 杜鹃;胡茂海 | 申请(专利权)人: | 南京理工大学 |
主分类号: | G06F13/16 | 分类号: | G06F13/16 |
代理公司: | 南京理工大学专利中心 32203 | 代理人: | 朱沉雁 |
地址: | 210094 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 fpga sata 接口 链路层 功能 实现 方法 | ||
1.一种基于FPGA的SATA接口链路层功能实现方法,其特征在于:SATA3.0协议链路层负责数据编码、数据验证、添加帧边界以及为来自传输层的帧数据提供流量控制,链路层是在上层控制下执行要传输的原始数据或帧数据,链路层在SATA通讯中参与的过程如下:传输层模块(2)传送FIS数据包给链路层(1),链路层(1)计算FIS数据包的CRC值、加扰码并加上原语封装成frame传递给物理层(3),在物理层(3)进行8b/10b编码;
链路层(1)插入各种原语进行流量控制,在成功传递完有效数据后,链路层(1)等待对方的应答,并把结果传给传输层(2);
链路层(1)从物理层(3)接收到已经过10b/8b编码的有效数据时,将数据剥离原语,并将剥离原语的数据进行解扰以及CRC校验后,保持一帧缓存入一个FIFO模块,下一帧缓存入另一个FIFO模块,交替缓存帧数据,并将FIFO模块中数据交替传递给传输层(2)。
2.根据权利要求1所述的基于FPGA的SATA接口链路层功能实现方法,其特征在于:所述的链路层(1)包括发送模块和接收模块,发送模块包括FIS缓存器(101)、扰码器(102)、原语发生器(103)、双端口RAM(106)和总线控制器(105);接收模块包括接收控制器(107)、原语剥离器(108)和数据缓存器(109);
FIS缓存器(101):将传输层(2)发送来的各类FIS数据包进行封装放入保存;
扰码器(102):产生扰码,在总线控制器(105)控制下,将扰码通过总线(104)写入双端口RAM(106);
原语发生器(103):产生原语,在总线控制器(105)控制下,将原语通过总线(104)写入双端口RAM(106);
总线控制器(105):控制FIS缓存器(101)将各种FIS数据包通过总线(104)写入双端口RAM(106);
双端口RAM(106):读、写时钟相同,写入时,第一个Word到第四个Word初始化为两个ALIGN原语,从第5个Word到第512个Word写入FIS数据包、扰码、原语;读出时,从第一个Word到第512个Word依次循环读出并发送至物理层(3);
接收控制器(107):从物理层(3)接收到已经进行过10b/8b编码的有效数据时,控制原语剥离器(108)和数据缓存器(109)解扰以及CRC校验后,将数据传递给传输层(2);
原语剥离器(108):对在物理层(3)已进行10b/8b编码的数据,捕捉完整的一帧数据,并将数据剥离原语;
数据缓存器(109):设置有两块FIFO模块,将数据剥离原语,并将剥离原语的数据进行解扰以及CRC校验后,保持一帧缓存入一个FIFO模块,下一帧缓存入另一个FIFO模块,交替缓存帧数据,并将FIFO模块中数据交替传递给传输层(2)。
3.根据权利要求2所述的基于FPGA的SATA接口链路层功能实现方法,其特征在于:所述的CRC校验均采用CRC-32位模式,计算公式符合SATA协议规范要求的CRC计算公式,
即:G(x)=x32+x26+x23+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1,并且计算初始值设定为0x52325032。
4.根据权利要求2所述的基于FPGA的SATA接口链路层功能实现方法,其特征在于:所述的扰码器(102)产生扰码以及原语剥离器(108)中的解扰都采用了符合SATA协议规范要求的扰码计算公式,即:G(x)=x16+x15+x13+x4+1,并且计算初始值设定为0xF0F6。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京理工大学,未经南京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911078439.5/1.html,转载请声明来源钻瓜专利网。