欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载
     

    基于FPGA的PCIE总线接口的系统设计.docx

    • 资源ID:8927063       资源大小:14.36KB        全文页数:4页
    • 资源格式: DOCX        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于FPGA的PCIE总线接口的系统设计.docx

    基于FPGA的PCIE总线接口的系统设计中图分类号:TP274 文献标识码:A 文章编号:1671-7597(2014)07-0029-03PCI Express总线是一种完全不同于过去PCI总线的一种全新总线规范,与PCI总线共享并行架构相比,PCI Express总线是一种点对点串行连接的设备连接方式,点对点意味着每一个PCI Express设备都拥有自己独立的数据连接,各个设备之间并发的数据传输互不影响,而对于过去PCI那种共享总线方式,PCI总线上只能有一个设备进行通信,一旦PCI总线上挂接的设备增多,每个设备的实际传输速率就会下降,性能得不到保证。PCI Express总线利用串行连接特点,能轻松的将数据传输速度提到一个很高的频率,远远超出PCI总线的传输速率。PCI Express是一种复杂的协议,它的实现可以采用专用的协议芯片,但是缺乏灵活性和可配置性,限制了系统整体性能。另一种方式是采用FPGA逻辑来实现,PCIE IP硬核一般只实现PCIE的物理层和数据链路层的协议,设计者可以在IP硬核基础上完成PCIE的TLP(数据传输层)和应用层协议,虽然开发过程较复杂,但可根据应用需要进行灵活的配置,具有良好的可移植性,能更好的发挥PCIE高带宽的优势。Xilinx公司的Virtex 5系列FPGA芯片内嵌PCI Express Endpoint Block硬核,为实现单片可配置PCI Expres总线解决方案提供了可能。本文在研究PCI Express 接口协议和PCI Express Endpoint Block硬核的基础上,使用Virtex5 LX330T FPGA芯片设计PCI Express接口硬件电路,实现PCI Express数据传输。1 PCIE接口Burst读写设计1)FPGA内置PCIe硬核特点。在接口电路中,PCI Express物理层和数据链路层的电路采用Xilinx公司的PCI Express Endpoint Block plus v1.9硬核端点模块实现,能够有效完成接口物理层和数据链路层的数据处理功能,提供给上层一个事务层数据接口。图1 设计流程图上层电路主要由4部分电路构成,分别是核配置与辅助控制模块、数据发送控制器、数据接收控制器、BAR地址空间管理,如图1所示,最终通过BAR地址空间与用户逻辑进行交互。各个部分的作用如下。Endpoint for PCIe:FPGA内的硬核,对外负责与其他PCIe设备协议通信对内与TX、RX模块进行64bit并行与高速串行的转换。PIO_TO_CTRL:PCIe核配置与辅助控制。EP_RX:负责主机单字读写FPGA的状态机实现和Burst模式下写操作的数据接收。EP_TX:负责主机单字读FPGA的状态机实现和Burst模式下读操作的数据发送。EP_MEM:映射为PCIe空间的几个BAR地址空间,将电子盘控制寄存器映射到闪存阵列主控,将数据区映射到双口数据缓冲区控制器。由于PCIe核只支持单字访问的模式,所以需要修改数据接收控制器EP_RX、数据发送控制器EP_TX、BAR地址空间管理模块EP_MEM,实现对Burst访问模式的支持。2)TLP数据包结构。当处理器或者其他PCIe设备访问PCIe设备时,所传送的数据报文首先通过事务层被封装为一个或者多个TLP数据包,之后才能通过PCIe总线的各个层次发送出去。TLP的基本格式如图2所示。图2 TLP的基本格式一个完整的TLP由1个或者多个TLP前缀、TLP头、数据有效负载和摘要组成。在整个数据报文中,只有TLP头和数据有效负载需要由用户逻辑代码来完成,其他部分都是PCIe核自动生成的。TLP头是TLP最重要的标志,包含了当前TLP的总线事物类型、路由信息等一系列信息。本文主要涉及到存储器写和存储器读事务。对于32bit地址空间的存储器读写请求,其TLP头格式如图3所示,硬核同时也支持64bit地址空间的操作。请求者通过填写TLP头内的正确信息以及地址并且将数据放在TLP头的后面发送给接收者,接收者便会解析包内的信息将正图3 存储器读写请求报文头格式确的数据放到自己的地址空间中。对于存储器写请求,EP_RX控制器接收到TLP头和数据之后,只需要通过EP_MEM模块将数据存入寄存器或者双口缓冲区中即可。对于存储器读请求,EP_RX控制器接收读请求之后,需要启动EP_TX控制器将应答数据组织在TLP完成报文中,完成读操作。完成报文的头格式如图4所示。图4 完成报文头格式3)Burst写操作的设计与实现。PCIe硬核的PIO模块本身已经支持32bit地址空间的单字存储器读写请求、64bit地址空间的单字存储器读写请求和IO读写请求。本设计主要完成对32bit地址空间Burst方式的存储器读写请求的支持。同时,考虑到实际应用中DMA控制器一般只支持数据8字节对齐的情况,所以本设计也只支持数据8字节对齐的Burst读写访问。对于存储器写请求,实现的主要方法是EP_RX将接收的TLP头中各个字段正确解析,并区分是单字写和Burst写,确定写操作的数据长度,如果是单字写,就将接下来的64位数据存入寄存器或者双口缓冲区中;如果是Burst写,就将数据按照64位写入双口缓冲区中,每个时钟周期,地址自动增加,直到数据全部写入双口缓冲区中。EP_RX控制器的状态机如图5所示。图5 EP_RX控制器状态机图6 EP_TX控制器状态机4)Burst读操作的设计与实现。对于存储器读请求,EP_RX控制器对接收到的TLP进行解析,将请求数据的起始地址和长度发送给EP_TX控制器,然后启动EP_TX完成数据传递。EP_RX控制器的状态机如图6所示。在PCIe总线中,一个存储器读请求TLP可能收到目标设备发出的多个完成报文后,才能完成一次存储器读操作。因为在PCIe总线中,一个存储器读请求最多可以请求4KB大小的数据报文,而目标设备可能会使用多个存储器读完成TLP才能将数据传递完毕。在PCIe设备的配置空间中,Link Control寄存器的RCB(Read Completion Boundary)位决定了读完成报文的边界,本文设计为64B。当读请求跨越了RCB边界时,需要分多个完成报文才能将数据传递完毕。EP_TX收到完全请求,判断是不带有效载荷的完成报文,还是带有效载荷的完成报文。如果是需要带有效载荷,并且长度大于4个字节的情况就启动Burst读周期。Burst读周期先进行合法性检查,对于起始地址或者请求长度不是8字节对齐的请求视为无效请求,不予响应。对于合法读请求,EP_TX控制器按RCB边界进行完成周期拆分,具体的算法流程如图7所示。对于数据同一个RCB边界之内的读请求,第一个周期完成所有数据传递。对于数据跨RCB边界的读请求,按RCB区段划分读写周期,先完成第一个周期,使得剩余数据的起始地址按64字节对齐;接下来每个周期传递64字节,直到数据传递结束;最后一个周期可能不满64字节。图7 读完成的拆分算法2 结果与验证在完成FPGA的程序编写后,用Modlesim仿真环境对程序进行仿真。用VHDL实现TestBench作为激励加载单元对EP_RX和EP_TX控制器进行功能仿真验证。在实践中进一步使用ChipScrop抓图,主要分析由通过EP_RX和EP_TX控制器产生的PCIe总线传输信号时序是否满足要求。图8捕获了Burst的写过程,由波形可以看出,EP_RX控制器正确解析Burst写数据报文,并成功写入双口缓冲区中。图8 Burst写时序读操作的过程相对复杂,图9捕获了Burst读过程,EP_RX控制器接收到读请求后启动EP_TX控制器,EP_TX控制器将主机端发起的一个存储器读请求分成多个存储器读完成报文进行数据传输。图9 Burst读时序经实验测试,如表1所示,采用Burst方式的数据传输,速度明显提高,有效提高了大容量存储系统的传输带宽。参考文献【1】PCI Express Base Spec ification, 1. 0a ed.PC I SIG,2003.【2】Xilinx.LogiCORE? Endpoint v3.6 for PCI Express User Guide.October 10,2007.【3】马鸣锦,朱剑冰.PCI、PCI-X和PCI Express的原理及体系结构.北京:清华大学出版社,2007.【4】李木国,黄影,刘于之.基于FPGA的PCIe总线接口的DMA传输设计.计算机测量与控制,2013(01).【5】沈辉,张萍.FPGA在PCI Express总线接口中的应用.现代电子技术,2010(14).【6】汪精华,胡善清.基于FPGA实现的PCIE协议的DMA读写模块.微计算信息,2010,26(10).作者简介张锐(1982-),女,陕西西安人,工程师,研究生,研究方向:计算机硬件设计。

    注意事项

    本文(基于FPGA的PCIE总线接口的系统设计.docx)为本站会员(rrsccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开