之前写的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

基于开源SATA核的PCIE-SATA设计相关推荐

  1. [元带你学NVMe协议] ] 插槽接口(M.2 / mSATA / SATA )、总线(PCIE / SATA )、传输协议(NVME / AHCI) 图解

    声明 主页:元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言. 个人辛苦整理,付费内容,禁止转载.. 全文 5700 字, 阅读时间约 19 分钟 文章目录 前言 1. 概述 2. 插槽 ...

  2. SATA 6Gbps/mSATA/M.2/NGFF/PCI-E/SATA Express/U.2/SFF-8639/E1.S硬盘接口综述

    SATA 6Gbps SATA是硬盘接口的标准规范,实际上SATA 6Gbps接口这个说法并不规范,准确的称呼是SATA III,接口速度是6Gbps而已,只是现在大家习惯这个说法了.SATA 6Gb ...

  3. 11,基于JESD204 IP核的设计实现方法

    本篇博主参考了xilinx官方JESD204 IP核的数据手册PG066,具体介绍基于该IP核的JESD204B数据传输实现方法~ 第一次设计 在vivado开发软件中例化JESD204 IP核时,x ...

  4. KU060板卡设计资料原理图第636篇:基于FMC的KU060高性能 PCIe 载板

    基于FMC的KU060高性能 PCIe 载板 一.板卡概述 板卡主控芯片采用Xilinx 公司的 Kintex UltraScale系列FPGA XCKU060-2FFVA1156.板载 2 组 64 ...

  5. 基于C6748+FPGA的高精度北斗接收机设计与实现

    随着计算机技术.通信技术.测控技术的提高,卫星导航技术不断进步,尤其在军事.民用领域应用越来越广泛,逐渐成为衡量国家军事实力和科学技术水平的一个重要标杆.我国在20世纪90年代中期开始建设中国北斗卫星 ...

  6. 基于OMPAL138+FPGA的三相电能质量分析仪设计

    随着我国经济的快速发展,电力资源已经成为人民生活.社会生产的重要能源.由于各种各样的用电设备日益增多,使得实际电网中存在很多不平衡和非线性的冲击性负载,导致电网出现供电电压偏差.频率偏差.谐波.间谐波 ...

  7. NXP LS1046A及飞腾新四核 FT2004 PCIE EP端LINUX设备驱动开发

    文章目录 前言 一.PCIE 硬件简介 二.PCIE EP地址映射原理介绍 1. PCI总线的各种域(存储器域.PCI总线域) 2. 开发EP设备驱动要做的事 三.NXP LS1046A PCIE E ...

  8. 基于Python+Open CV的手势识别算法设计

    素材资料下载: 基于Python+OpenCV的手势识别算法设计源代码材料-机器学习文档类资源-CSDN下载采用Python的集成开发环境Pycharm进行本次课程设计,在Pycharm中进行需要库( ...

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

    本文档是基于FPGA K7 SATA IP控制器的SATA接口调试记录,接口遵循标准的ACHI协议. 操作系统内核版本:5.4.18 由于K7PCIE只有3个bar,AHCI协议规定SATA控制器是在 ...

最新文章

  1. 多个线程同时运行,顺序打印问题
  2. SAP进销存难点分析及对策
  3. 全排列(递归与非递归实现)
  4. Java实现线性表(顺序表,链表)
  5. maven项目不编译xml文件
  6. vlan划分_什么样的网络需要划分VLAN?
  7. 面试前准备这些,成功率会大大提升!(Java篇)
  8. 关于微软的VB和C#:为何Basic需要存在,为何VB如此像C#,为何两者不合并等
  9. Lua中调用C/C++函数 (转)
  10. python类:magic魔术方法
  11. springboot web项目_SpringBoot 源码解析 (一):SpringBoot核心原理入门
  12. 单例模式中为什么用枚举更好
  13. php连接mysql字符串函数_mysql 字符串函数
  14. 作业收集小程序推荐|视频作业收集、图片作业收集、文档作业收集
  15. 项目部署到服务器显示 网页无法访问500 错误的解决办法
  16. c#语言中怎么样把文本转换成数字,如何将字符串转换为数字 - C# 编程指南 | Microsoft Docs...
  17. Grammar-based construction 语法驱动的构造
  18. asciidoc_如何使用AsciiDoc创建博客
  19. Loki告警的正确姿势
  20. Windows必装的3款免费效率工具,排名不分先后

热门文章

  1. 微博内容爬取——陈一发儿微博实例
  2. 如果三国人物做互联网
  3. 电子产品进水后如何处理
  4. 贪婪算法之会议室预定
  5. 国际C语言混乱代码大赛优胜作品详解之“A clock in one line
  6. 讲一个我个人的故事!如何活到今天
  7. 线段覆盖长度(c++)
  8. python上台阶问题_Python解决N阶台阶走法问题的方法
  9. 在anaconda中创建虚拟环境
  10. Mysql查询某一年的的12个月份数据