网站大量收购独家精品文档,联系QQ:2885784924

基于FPA的SATA控制器介绍v1.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于FPA的SATA控制器介绍v1

作者邮箱:wu_sata@163.com, 欢迎交流探讨。 基于FPGA的SATA控制器,如图5-1所示,其中SATA协议的应用层由嵌入式处理器PPC440来实现,主要完成硬盘的参数配置和读写操作命令。SATA协议的传输层和链路层是通过硬件描述语言设计在FPGA中生产相应的电路来实现,这两层主要是完成帧的封装,帧的发送、暂停、结束控制,帧的解析和校验。SATA协议的物理层由千兆位级收发器GTX、OOB控制模块和接口传输率选择模块共同实现。千兆位级收发器GTX的主要功能包括8B/10B编码/解码,串并/并串转换,逗点检测,时钟修正,预侧重和线性均衡等。OOB控制模块和接口传输率选择模块能够自动识别硬盘的接口传输率,完成硬盘的上电过程或硬件复位过程,并同SATA控制器建立通信链接。整个SATA协议的四层:物理层、链路层、传输层 、应用层全部在一片FPGA中实现。 图-1 SATA控制器 用户接口设计 用户接口由三部分组成:映像寄存器组,PLB接口和NPI接口。映像寄存器组由32个32比特的寄存器组成,用来存放SATA控制器的控制信息和状态信息等,该寄存器组是地址映射的,是软件读出写入的。PLB接口实现嵌入式处理器和SATA控制器之间控制信息和状态信息的交换。NPI(Native Port Interface)接口实现储存器控制器和SATA控制器之间数据的交换。映像寄存器组 应用层提供一个映像寄存器组,处理器传输各种命令时,向映像寄存器中写入命令或读取状态信息,设备通过发送帧来更新映像寄存器,对主机的命令进行响应。 在SATA协议中定义了有关映像寄存器组中寄存器的类型与用途。本设计中寄存器组由32寄存器组成,其中有5个寄存器是用户自定义的,其余的兼容ATA协议指令集,包括Status、Command、Error、Feature,LBA low等。5个用户自定义的寄存器用于对SATA控制器中某些模块复位、观察状态调试信息参数配置等。其余寄存器用于存放SATA_CONTROL的控制信息、状态信息、LBA地址和参数等。寄存器组的一端与PLB总线相连,用于PPC通过PLB读/写寄存器组,另外一端与SATA_CONTROL模块相连,SATA_CONTROL模块通过该端口读/写寄存器组。PLB接口 PLB 总线是一种高带宽、低延迟、高性能的处理器内部总线,用于连接高性能CPU、高速存储器控制器、仲裁器、高速的DMA控制器等高性能、大宽带的片上设备。PLB总线架构是由IBM开发的,Xilinx公司获得IBM公司的许可在其产品上使用PLB总线。 由于PLB总线协议信号很多,较为复杂,为了让用户更加方便的使用、加快开发进度,XILINX公司为用户开发了PLB生成向导。该向导自动PLB总线与用户逻辑之间的接口,即IPIF(IP Interface)。利用IPIF解决PLB总线接口和用户逻辑接口之间的转换。在用户逻辑看来,PLB接口表现为简单IPIC (IPInterconn- ect)接口。用户使用该向导还可以根据需要选择相应的模块和功能。 采用PLB总线作为用户接口可以使SATA控制器应用范围更加广泛,用户只需要通过PLB总线对映像寄存器进行配置就可以实现SATA控制器的功能。本设计中PLB总线只是用传递少量的参数和状态信息,因此,PLB模块配置成了从(slave)设备,以节约FPGA资源。核心模块SLAVE Attachment提供了PLB从设备的基本功能,它在PLB总线和IPIC之间执行协议和时序的转换。NPI接口 SATA控制器的数据都不经过PLB总线,而是通过NPI接口与多端口储存器控制器(MPMC)相连,直接读写存储单元。避免了由于PLB的竞争和冲突导致有效带宽小、利用率低的情况。这样的设计具有很强的实时性,数据传输带宽高。 NPI接口控制器(NPI_CTRL)用于实现NPI接口协议,数据宽度为64位,支持burst工作模式,一次burst读或写最多可以传输256个字节数据,每次burst之后硬件会自动更新地址,得到下一个burst的起始地址。 发送数据时,NPI接口控制器(NPI_CTRL)根据命令和配置信息从中指定的起始地址处读取指定数量的数据到发送数据缓冲区(send_data_fifo),然后由SATA控制器将数据发送给硬盘;接收数据时,SATA控制器先将接收的数据写入接收数据缓冲区(received_data_fifo),然后由NPI接口控制器(NPI_CTRL)根据命令和配置信息将数据写入存储单元中指定起始地址处。SATA控制器的综合与实现 SATA控制器的开发是在XILINX公司的ISE集成开发环境中进行的,版本号为10.1.3。并且使用XILINX公司提供的综合,编译,布局布线等工具完成逻辑电路的生成。SATA控制器(XC

文档评论(0)

jiaoyuguanliji + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档