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