一种基于FPGA的SATA接口数据流控制器及控制方法技术

技术编号:14482018 阅读:133 留言:0更新日期:2017-01-25 23:59
本发明专利技术公开了一种基于FPGA的SATA接口数据流控制器及控制方法,包括基元检测和控制模块、速率匹配模块、ROM模块、CRC计算和校验模块、数据加扰和解扰模块、数据选通模块以及SATA物理层模块;通过基元检测和控制模块实现对基元的有效控制,在发送数据时通过基元检测和控制模块对数据流进行AlignP基元的插入,在接收数据时速率匹配模块根据FIFO状态通过针去掉AlignP基元或无用的扰码序列实现打孔操作,通过插入AlignP基元实现插入操作,简化了SATA协议链路层和物理层的数据流控制的实现,简单有效实现对SATA协议基元控制和数据流速率匹配,解决了由于时钟频偏时间积累造成FIFO溢出的问题。

【技术实现步骤摘要】

本专利技术涉及SATA(SerialAdvancedTechnologyAttachment,串行高级技术附件)接口控制
,特别涉及一种基于FPGA(FieldProgrammableGateArray,现场可编程门阵列)的SATA接口数据流控制器及控制方法。该控制器采用FPGA作为硬件平台,利用FPGA内部逻辑实现SATA接口的数据流控制。
技术介绍
SATA(SerialAdvancedTechnologyAttachment)即串行高级技术附件。它是一种计算机总线,主要功能是用作主板和大量存储设备(如硬盘及光盘驱动器)之间的数据传输之用。这是一种完全不同于并行PATA(ParallelAdvancedTechnologyAttachment)的新型硬盘接口类型,由于采用串行方式传输数据而得名。SATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点,目前,SATA分别有SATA1.0速率为1.5Gbit/s、SATA2.0速率为3Gbit/s和SATA3.0速率为6Gbit/s三种规格。未来将有更快速的SATAExpress规格。链路层和物理层的数据流控制是SATA协议的重要组成部分,目前公知的处理方式是根据协议进行状态跳转,通过基元的发送、应答和基元的插入、数据的加扰和解扰、CRC校验、以及8b/10b编码和收发器串化解串功能实现数据流的控制,但上述实现方式不够灵活,处理起来比较繁琐,基元的插入会引入大量的缓存处理,尤其是每隔256拍插入Align基元的要求,会降低应答基元的响应速率。另外,为了提高电路的EMI特性,SATA协议不但对传输的帧数据提出了加扰要求,还对重复基元提出了加扰要求,重复基元的加扰数据不会对数据流的控制产生作用,即不会被接口解扰恢复原始的数据,对于不同的重复基元的加扰,我们可以采用一定长度的同一个扰码序列异或基元代替。速率匹配(ratematching)是指传输信道上的比特被重发或者打孔,以匹配物理信道的承载能力,信道映射时达到传输格式所要求的比特速率。重发就是当输出比特多于输入比特时在当前比特和后面的比特之间插入一次当前比特,打孔是当输入比特数多于输出比特数时,按照一定的规则把一些比特打掉,后面的比特前移。基于FPGA的SATA接口协议实现,FPGA作为主机,与从机(大部分为硬盘)存在时钟不同源,时钟频偏的时间积累会造成接口的FIFO溢出,需要做数据流的速率匹配处理。目前解决的方法是采用高端的FPGA,自带的收发器有速率匹配功能,或者是采用国外的SATA知识产权核,同样也带有速率匹配功能。但此类方法成本过高,对FPGA器件依赖度高,通用性不好。
技术实现思路
本专利技术的目的在于克服现有技术的缺点与不足,提供一种基于FPGA的SATA接口数据流控制器,简化了SATA协议链路层和物理层的数据流控制的实现,能简单有效的实现对SATA协议的基元控制和数据流的速率匹配,并且解决了由于时钟频偏的时间积累造成接口的FIFO溢出的问题。本专利技术的第二目的为提供一种上述控制器实现的基于FPGA的SATA接口数据流控制方法。本专利技术的第一目的通过下述技术方案实现:一种基于FPGA的SATA接口数据流控制器,包括基元检测和控制模块、速率匹配模块、ROM模块、CRC计算和校验模块、数据加扰和解扰模块、数据选通模块以及SATA物理层模块;所述基元检测和控制模块发送基元信号至SATA物理层模块,用于SATA协议基元的检测以及基元的交互应答处理,并且针对进入SATA物理层的数据流每隔256个时钟周期插入2个时钟周期的AlignP基元;所述基元检测和控制模块分别发送控制信号至CRC计算和校验模块、数据加扰和解扰模块以及数据选通模块,用于对数据加扰和解扰模块、CRC计算和校验模块以及数据选通模块进行使能控制;所述ROM模块存储一个一定长度的加扰多项式计算值,用于实现重复基元的加扰;对于进入SATA物理层模块需要加扰的重复基元,其扰码值是从ROM模块读出的加多项式计算值异或该基元后的结果;所述CRC计算和校验模块,在发送帧数据时用于计算CRC值并且将CRC值置于数据最后;在接收帧数据时,用于针对解扰后的帧数据进行CRC校验;所述数据加扰和解扰模块,在发送帧是时用于对包括CRC值在内的帧进行加扰,加扰后的数据发送给SATA物理层模块;在接收帧时,用于对接收到的帧进行解扰;所述SATA物理层模块包括发送数据模块和接收数据模块,其中发送数据模块接收来自基元检测和控制模块、ROM模块以及数据加扰和解扰模块发送的信号,经过8B/10B编码、并串转换以及预加重控制后发送到从设备;接收数据模块接收从设备发送的数据,经过线性均衡器、恢复时钟、串并转换、逗点序列检测以及8B/10B解码后发送给速率匹配模块;速率匹配模块接收SATA物理层模块发送的数据,速率匹配模块发送数据至基元检测和控制模块以及数据选通模块,通过基元检测和控制模块判断速率匹配后的数据是帧数据还是无用的扰码序列;所述速率匹配模块采用FIFO结构,接收数据时,速率匹配模块根据FIFO状态进行速率匹配的打孔或插入操作,其中在打孔操作时,写入数据中去掉AlignP基元或无用的扰码序列,在插入操作时,在读出的FIFO数据中插入AlignP基元;数据选通模块接收基元检测和控制模块发送的控制信号,当基元检测和控制模块判断速率匹配模块发送的数据是帧数据时,控制数据选通模块将帧数据发送给数据加扰和解扰模块进行解扰;当基元检测和控制模块判断速率匹配模块发送的数据是无用的扰码序列时,控制数据选通模块将无用的扰码序列丢弃。优选的,所述速率匹配模块在收到数据时检测FIFO的状态,当FIFO的状态为非满时,控制数据直接写入FIFO,当FIFO的状态为非空时,控制数据直接从FIFO读出;接收数据时,速率匹配模块根据FIFO状态进行速率匹配的打孔操作具体如下:所述速率匹配模块在检测到FIFO几乎满时,在检测到写入数据为AlignP基元或无用的扰码序列时,控制不写入FIFO中,即写入数据中去掉AlignP基元或无用的扰码序列;接收数据时,速率匹配模块根据FIFO状态进行速率匹配的插入操作具体如下:所述速率匹配模块在检测到FIFO几乎空时,在读出的FIFO数据中插入AlignP基元,控制不读取FIFO。优选的,所述CRC计算和校验模块针对介于SOFP基元和EOFP基元的帧数据进行CRC计算和校验;所述CRC计算和校验模块采用CRC32的多项式进行计算;CRC多项式为:G(X)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1;所述数据加扰和解扰模块针对介于SOFP基元和EOFP基元的帧数据和CRC计数值进行加扰和解扰;所述数据加扰和解扰模块为32位并行模块,并行处理32位数据的加扰和解扰控制;所述数据加扰和解扰模块的生成多项式为:G(X)=X16+X15+X13+X4+1。优选的,所述CRC计算值的初始值为0x52325032;CRC计算和校验模块具有同步置位本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201610700006.html" title="一种基于FPGA的SATA接口数据流控制器及控制方法原文来自X技术">基于FPGA的SATA接口数据流控制器及控制方法</a>

【技术保护点】
一种基于FPGA的SATA接口数据流控制器,其特征在于,包括基元检测和控制模块、速率匹配模块、ROM模块、CRC计算和校验模块、数据加扰和解扰模块、数据选通模块以及SATA物理层模块;所述基元检测和控制模块发送基元信号至SATA物理层模块,用于SATA协议基元的检测以及基元的交互应答处理,并且针对进入SATA物理层的数据流每隔256个时钟周期插入2个时钟周期的AlignP基元;所述基元检测和控制模块分别发送控制信号至CRC计算和校验模块、数据加扰和解扰模块以及数据选通模块,用于对数据加扰和解扰模块、CRC计算和校验模块以及数据选通模块进行使能控制;所述ROM模块存储一个一定长度的加扰多项式计算值,用于实现重复基元的加扰;对于进入SATA物理层模块需要加扰的重复基元,其扰码值是从ROM模块读出的加多项式计算值异或该基元后的结果;所述CRC计算和校验模块,在发送帧数据时用于计算CRC值并且将CRC值置于数据最后;在接收帧数据时,用于针对解扰后的帧数据进行CRC校验;所述数据加扰和解扰模块,在发送帧是时用于对包括CRC值在内的帧进行加扰,加扰后的数据发送给SATA物理层模块;在接收帧时,用于对接收到的帧进行解扰;所述SATA物理层模块包括发送数据模块和接收数据模块,其中发送数据模块接收来自基元检测和控制模块、ROM模块以及数据加扰和解扰模块发送的信号,经过8B/10B编码、并串转换以及预加重控制后发送到从设备;接收数据模块接收从设备发送的数据,经过线性均衡器、恢复时钟、串并转换、逗点序列检测以及8B/10B解码后发送给速率匹配模块;速率匹配模块接收SATA物理层模块发送的数据,速率匹配模块发送数据至基元检测和控制模块以及数据选通模块,通过基元检测和控制模块判断速率匹配后的数据是帧数据还是无用的扰码序列;所述速率匹配模块采用FIFO结构,接收数据时,速率匹配模块根据FIFO状态进行速率匹配的打孔或插入操作,其中在打孔操作时,写入数据中去掉AlignP基元或无用的扰码序列,在插入操作时,在读出的FIFO数据中插入AlignP基元;数据选通模块接收基元检测和控制模块发送的控制信号,当基元检测和控制模块判断速率匹配模块发送的数据是帧数据时,控制数据选通模块将帧数据发送给数据加扰和解扰模块进行解扰;当基元检测和控制模块判断速率匹配模块发送的数据是无用的扰码序列时,控制数据选通模块将无用的扰码序列丢弃。...

【技术特征摘要】
1.一种基于FPGA的SATA接口数据流控制器,其特征在于,包括基元检测和控制模块、速率匹配模块、ROM模块、CRC计算和校验模块、数据加扰和解扰模块、数据选通模块以及SATA物理层模块;所述基元检测和控制模块发送基元信号至SATA物理层模块,用于SATA协议基元的检测以及基元的交互应答处理,并且针对进入SATA物理层的数据流每隔256个时钟周期插入2个时钟周期的AlignP基元;所述基元检测和控制模块分别发送控制信号至CRC计算和校验模块、数据加扰和解扰模块以及数据选通模块,用于对数据加扰和解扰模块、CRC计算和校验模块以及数据选通模块进行使能控制;所述ROM模块存储一个一定长度的加扰多项式计算值,用于实现重复基元的加扰;对于进入SATA物理层模块需要加扰的重复基元,其扰码值是从ROM模块读出的加多项式计算值异或该基元后的结果;所述CRC计算和校验模块,在发送帧数据时用于计算CRC值并且将CRC值置于数据最后;在接收帧数据时,用于针对解扰后的帧数据进行CRC校验;所述数据加扰和解扰模块,在发送帧是时用于对包括CRC值在内的帧进行加扰,加扰后的数据发送给SATA物理层模块;在接收帧时,用于对接收到的帧进行解扰;所述SATA物理层模块包括发送数据模块和接收数据模块,其中发送数据模块接收来自基元检测和控制模块、ROM模块以及数据加扰和解扰模块发送的信号,经过8B/10B编码、并串转换以及预加重控制后发送到从设备;接收数据模块接收从设备发送的数据,经过线性均衡器、恢复时钟、串并转换、逗点序列检测以及8B/10B解码后发送给速率匹配模块;速率匹配模块接收SATA物理层模块发送的数据,速率匹配模块发送数据至基元检测和控制模块以及数据选通模块,通过基元检测和控制模块判断速率匹配后的数据是帧数据还是无用的扰码序列;所述速率匹配模块采用FIFO结构,接收数据时,速率匹配模块根据FIFO状态进行速率匹配的打孔或插入操作,其中在打孔操作时,写入数据中去掉AlignP基元或无用的扰码序列,在插入操作时,在读出的FIFO数据中插入AlignP基元;数据选通模块接收基元检测和控制模块发送的控制信号,当基元检测和控制模块判断速率匹配模块发送的数据是帧数据时,控制数据选通模块将帧数据发送给数据加扰和解扰模块进行解扰;当基元检测和控制模块判断速率匹配模块发送的数据是无用的扰码序列时,控制数据选通模块将无用的扰码序列丢弃。2.根据权利要求1所述的基于FPGA的SATA接口数据流控制器,其特征在于,所述速率匹配模块在收到数据时检测FIFO的状态,当FIFO的状态为非满时,控制数据直接写入FIFO,当FIFO的状态为非空时,控制数据直接从FIFO读出;接收数据时,速率匹配模块根据FIFO状态进行速率匹配的打孔操作具体如下:所述速率匹配模块在检测到FIFO几乎满时,在检测到写入数据为AlignP基元或无用的扰码序列时,控制不写入FIFO中,即写入数据中去掉AlignP基元或无用的扰码序列;接收数据时,速率匹配模块根据FIFO状态进行速率匹配的插入操作具体如下:所述速率匹配模块在检测到FIFO几乎空时,在读出的FIFO数据中插入AlignP基元,控制不读取FIFO。3.根据权利要求1所述的基于FPGA的SATA接口数据流控制器,其特征在于,所述CRC计算和校验模块针对介于SOFP基元和EOFP基元的帧数据进行CRC计算和校验;所述CRC计算和校验模块采用CRC32的多项式进行计算;CRC多项式为:G(X)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1;所述数据加扰和解扰模块针对介于SOFP基元和EOFP基元的帧数据和CRC计数值进行加扰和解扰;所述数据加扰和解扰模块为32位并行模块,并行处理32位数据的加扰和解扰控制;所述数据加扰和解扰模块的生成多项式为:G(X)=X16+X15+X13+X4+1。4.根据权利要求3所述的基于FPGA的SATA接口数据流控制器,其特征在于,所述CRC计算值的初始值为0x52325032;CRC计算和校验模块具有同步置位和使能控制功能,置位时输出为0x0,使能拉低时输出为当前计算值;所述数据加扰和解扰模块加扰的初始值为0xF0F6;所述数据加扰和解扰模块具有同步置位和使能控制功能,置位时输出为0x0,使能拉低时输出为当前加扰值。5.根据权利要求1所述的基于FPGA的SATA接口数据流控制器,其特征在于,所述ROM模块存储的加扰多项式计算值的长度为256个时钟周期。6.根据权利要求1所述的基于FPGA的SATA接口数据流控制器,其特征在于,还包括多路选择器模块,多路选择器模块接收基元检测和控制模块发送的控制信号,基元检测和控制模块、ROM模块以及数据加扰和解扰模块分别将输出的信号对应发送至多路选择器模块各输入通道中;多路选择器模块通过基元检测和控制模块的控制信号控制其中一个输入通道选通,将基元检测和控制模块、ROM模块或数据加扰和解扰模块输出的信号传送至给SATA物理层模块。7.一种基于权利要求1所述的基于FPGA的SATA接口数据流控制器实现的基于FPGA的SATA接口数据流控制方法,其特征在于,包括发送帧时数据流控制过程和接收帧时数据流控制过程;所述发送帧时数据流控制过程具体步骤如下:S11、基元检测和控制模块发送两个时钟周期的X_RDYp基元至SATA物理层模块,由SATA物理层模块将两个时钟周期的X_RDYp基元发送至从设备,通知从设备准...

【专利技术属性】
技术研发人员:王将符永逸
申请(专利权)人:广州慧睿思通信息科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1