基于开源SATA核的PCIE-SATA设计

news/2024/11/17 18:21:22/

之前写的PCIE-SATA设计论文,摘抄到博客上,供大家参考。摘抄、转载请注明出处。

1. 参考设计

1.1 开源核设计

使用FPGA实现SATA接口主机控制器,国内外在此方面已有研究成果可以借鉴和参考。美国北卡罗莱纳州大学可编程计算机系统实验室,Ashwin A. Mendon、Bin Huang和Ron Sass基于Open Cores的开源IP核,已经在Xilinx公司Virtex 6系列FPGA上,搭建了基于内置CPU,支持SATA2接口的环境。

其中,图中内置的CPU为Xilinx嵌入式软核MicroBlaze,MGA为Multi Gigabit Transciever,MPMC为Multi-port Memory Controller,NPI为Native Port Interface,SSD为Solid State Drive。

1.2  DGWAY设计架构

DGway公司作为一个专业的IP核提供商,实现了基于FPGA的支持4个SATA并行读写的FPGA核,且为SATA核读写性能指标的测试提供了参考设计[1]。它采用Kintex-7评估板作为测试平台,作为SATA通信层的主机,每个SATA-IP使用一对GTX与目标设备进行通信,且相互独立运行,4个盘组成Raid模式。应用程序层在该参考设计控制4 SATA设备操作存储系统,传输速度是单个SATA盘的4倍。

 

设计主要由三部分组成,分别是MicroBlaze、AXI_DDR3、4个AXI_SATA控制器。AXI是MicroBlaze和4个SATA之间传输数据的交互总线,传输的数据是由MicroBlaze组包和解包的SATA FIS包,不同的FIS包类型,存储在DDR3的不同区域,AXI_SATA包含了FIS解码器,每个AXI_SATA和DDR3之间都有自己独立的互联总线。

2.  综合设计

2.1  开源核改进

原有的SATA核采用的是PLB总线,使嵌入式软核可以访问SATA核寄存器,通过NPI总线,可以使SATA核的DMA读写数据和挂载的DDR高速缓存交互。由于7系列FPGA新设计开始支持AXI总线,能够简化多种IP核的总线挂载,明显优于之前Xilinx公司之前的PLB总线。

使用Xilinx Platform Studio(XPS)平台可以非常方便的创建自己的IP,打开XPS后,在HardWare菜单,选择Create Peripheral,就可以定制自己的IP核。首先寄存器访问可以使用AXI4-Lite总线,我们需要将SATA核挂载在AXI4-Lite总线上。

 

AXI-Lite总线由于速度低,适用于简单的寄存器访问接口,可以使主机访问SATA核的寄存器,SATA核和设备交互的高速DMA读写数据,需要使用AXI4总线。可以从Xilinx官网下载参考核设计,XilinxAnswer #37425提供了各种AXI核的参考设计,我们只使用axi_master_v1_00_a参考设计,在其基础上修改设计,建立的AXI4总线和原有的NPI总线有很大不同,需要做一部分移植工作。

参考NPI状态机可知,读写均为由寄存器控制,寄存器包括读写的起始地址和读写的数据长度。首先分析AXI总线结构,分析读写发起的方法和顺序,然后将SATA核数据接口和AXI4总线连接。

2.2 系统搭建

当设计完成各主要模块后,需要使用Xilinx嵌入式版本 Design Suite 的关键组件将Xilinx Platform Studio(XPS)各个模块搭建成系统。

 

本设计包括两条AXI总线,一条为标准AXI4总线,另外一条为AXI-Lite总线,两条总线通过axi2axi_connector(AXI到AXI连接器)关联,以便两条总线的主从设备能够相互访问。

1个axi_pcie桥、4个axi_sata_ip的AXI主端接口,DDR3控制器从端和axi到axi桥接器,连接在标准AXI4总线,用于高速数据读写,其它设备可以通过pcie端口访问总线挂接的所有从设备,包括DDR3内存以及axi桥接器映射到的AXI-LIte总线从设备。

axi桥接器作为AXI-LIte总线主设备,可把AXI4总线访问请求转换为AXI-Lite总线协议访问挂载的axi-bram(AXI片上内存块),4个axi_sata_ip的寄存器接口,以及axi-pcie桥的从设备接口。

clock_generator、PCIe_Diff_Clk、utili_vector_logic、reset模块为时钟和复位模块单元,为各工作模块提供所需的时钟和复位信号。

2.3  板卡设计

 

板卡采用标准VPX 6U导冷结构设计,选用4片250G mSATA存储盘作为存储体,外部高速接口采用PCIE接口,用于和主控进行大速率数据传输。经上电测试,整个存储系统运行正常,4盘并行写速率约800MB/S,读速率约1GB/S。

3. 备注说明

开源SATA核链接:  https://github.com/CospanDesign/nysa-sata

开源SATA核文章:  https://download.csdn.net/download/web_star/10514755

我写的论文链接:   https://download.csdn.net/download/web_star/11376337


http://www.ppmy.cn/news/807166.html

相关文章

大话存储(终极版)读书笔记二 硬盘接口技术之 SATA接口

SATA硬盘接口 SATA接口全称 serial ATA,即串行传输ATA。 SATA优势: 传输速率高:SATA0传输速率达到150MB/S。数据可靠性高:SATA可以同时对指令和数据封包进行CRC,不仅可以检测出所有的单比特和双比特的错误&#xff…

服务器磁盘IO是什么意思?SATA和固态硬盘的性能差异

服务器磁盘IO是什么意思?SATA和固态硬盘的性能差异 IO实际上是计算机用语,也写作I/O,指输入/输出(Input/Output)。硬盘IO就是指对字节的读取速度,即硬盘的读写能力。今天咱们主要讲一下服务器磁盘IO。服务器硬盘IO的性能也是服务器…

SATA I, SATA II, SATA III区别

1.简介 SATA即Serial ATA,为串行接口。 SATA I为版本为1.x接口,即第一代SATA接口,总线最大传输带宽为1.5Gb/S; SATA II为版本为2.x接口,即第二代SATA接口,总线最大传输带宽为3.0Gb/S; SATA…

FPGA SATA IP控制器的SATA接口调试记录

本文档是基于FPGA K7 SATA IP控制器的SATA接口调试记录,接口遵循标准的ACHI协议。 操作系统内核版本:5.4.18 由于K7PCIE只有3个bar,AHCI协议规定SATA控制器是在第四个BAR上,另外由于PCIE配置空间设备类寄存器和能力寄存器未配置成…

sata和sas硬盘Linux,SAS硬盘与SATA硬盘的功能对比

不同于常见的SATA硬盘,SAS(Serial Attached SCSI)硬盘天生就是为企业级用户设计的。要说SAS与SATA的关系,可以这样概述,对IT产品来讲,一般都是首先设计生产适应当时生产制造水平的顶级产品,未来根据产品自身特点&#…

linux sata reset 指令,SATA系列专题之四:4.1 Command Layer命令分类详细解析

一、故事前传 在之前的文章中, 我们已经介绍了传输层(Transport Layer),链路层(Link Layer)以及物理层(Physical Layer)的相关内容。详见前期文章: 1,浅析SATA Physical Layer物理层OOB信号; 2,SATA Link Layer链路层解…

windows c语言 sata 序列号,读取SATA硬盘序列号的方法?解决方法

读取SATA硬盘序列号的方法? 本帖最后由 VisualEleven 于 2012-10-10 07:32:12 编辑 各位大侠,VC环境下要去取SATA硬盘序列号与IDE硬盘序列号的方法一样吗? 我用网上的DeviceIoControl这个函数写的, char sFilePath[64]={0}; sprintf(sFilePath,"\\\\.\\PHYSICALDRIVE%…

SATA3.0中FIS的八种类型

1 Register - Host to Device 描述:将映像寄存器内容由主机发送至设备,用于发送命令; 发送: �初始化:c"1"时,写命令寄存器;c"0"时,写设备控制…