【技术实现步骤摘要】
本专利技术涉及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编码和收发器串化解串功能实现数据流的控制,但上述实现方式不够灵活,处理起来比较 ...
【技术保护点】
一种基于FPGA的SATA接口数据流控制器,其特征在于,包括基元检测和控制模块、速率匹配模块、ROM模块、CRC计算和校验模块、数据加扰和解扰模块、数据选通模块以及SATA物理层模块;所述基元检测和控制模块发送基元信号至SATA物理层模块,用于SATA协议基元的检测以及基元的交互应答处理,并且针对进入SATA物理层的数据流每隔256个时钟周期插入2个时钟周期的AlignP基元;所述基元检测和控制模块分别发送控制信号至CRC计算和校验模块、数据加扰和解扰模块以及数据选通模块,用于对数据加扰和解扰模块、CRC计算和校验模块以及数据选通模块进行使能控制;所述ROM模块存储一个一定长度的加扰多项式计算值,用于实现重复基元的加扰;对于进入SATA物理层模块需要加扰的重复基元,其扰码值是从ROM模块读出的加多项式计算值异或该基元后的结果;所述CRC计算和校验模块,在发送帧数据时用于计算CRC值并且将CRC值置于数据最后;在接收帧数据时,用于针对解扰后的帧数据进行CRC校验;所述数据加扰和解扰模块,在发送帧是时用于对包括CRC值在内的帧进行加扰,加扰后的数据发送给SATA物理层模块;在接收帧时,用于 ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。