0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于PCI Expres总线实现DMA控制逻辑的设计

牵手一起梦 来源:电子科技 作者:李涛涛,燕一松, 2020-04-18 13:45 次阅读

随着相控阵雷达、超宽带雷达、数字阵列雷达相继地出现,雷达的回波数据量在不断地增加,因此对高速采集和大容量数据传输提出了越来越高的要求。早期基于PCI总线的高速数据采集系统在带宽、流量控制和数据传送质量上存在一定缺陷,在某种程度上并不能完全适应高速大容量数据存储的要求。相比较而言,PCI Expres总线具有鲜明的技术优势,不仅完全兼容PCI总线,而且全面解决了PCI总线所面临的带宽、流量控制和数据传送质量方面问题,由于使用高速差分总线,时钟频率可以达到较高水平,其总线带宽较PCI总线也有大幅度提升,目前X16的PCI Express峰值带宽可以达到80 GT/s。PCI Express技术的逐步成熟,为高速数据数据传输提供了较好的解决方案。

1、 DMA控制逻辑设计

DMA控制逻辑设计如图1所示,主要有PCIExpress Core、接收引擎、发送引擎、DMA控制状态寄存器和中断控制等关键模块。

基于PCI Expres总线实现DMA控制逻辑的设计

1.1 PCI Express Core

主要特点如下:(1)符合PCI Express Base Specification 2.0规范。(2)支持X1、X2、X4或X8模式。(3)片上GTP/GTX收发器实现PHY。(4)具有访问PCI Express配置空间和内部配置的管理接口。(5)支持最大的有效载荷(128~4 096 Byte)。(6)可针对存储器或I/O进行配置的基地址寄存器(BAR)。

1.2 接收引擎

在PCI Express系统逻辑结构中,接收引擎主要是在接口时钟的控制下,按照基本TLP接收时序,解析存储器读写请求并从TLP中提取所需信息并将其传送到存储器访问控制器,存储器访问控制器处理存储器写TLP中写入存储器的数据,并使用存储器中的数据读来响应存储器读TLP;此外接受引擎主要还负责处理存储器读完成TLP,响应板卡发起的DMA读操作。

1.3 发送引擎

在PCI Express系统逻辑结构中,发送引擎主要是在接口时钟的控制下,按照基本TLP发送时序,为接收到的存储器读TLP生成完成包,生成该完成包所需的信息会由存储控制器传送到发送引擎;此外发送引擎还负责发起存储器读写请求TLP,实现与PC之间数据的DMA读写。

1.4 DMA状态控制寄存器

在PCI Express系统逻辑结构中,DMA状态控制寄存器主要是实现PCI Express Core与Root Complex之间数据的传递。Windows GUI软件配置DMA控制状态寄存器控制DMA操作。DMA控制状态寄存器映射于PCI Express Memory BAR0空间,Windows GUI软件通过Memory Write和Read周期访问寄存器。Windows GUI软件初始化DMA控制寄存器发起DMA传输,而通过状态寄存器,以中断方式通知Root Complex DMA传输完成。

1.5 中断控制

当DMA传输结束时,为及时通知PC响应并处理中断,中断控制部分使用核的配置层接口信号产生中断。PCI Express支持两种中断:消息信号中断(MSI)和传统中断(Legacy INT)。在PCI Express设备枚举过程中,跟联合体会根据自身对中断支持的能力设置配置空间中的命令寄存器和消息信号中断能力寄存器,来决定使用何种中断。

2、 PCI Express Masfer DMA读写设计验证

2.1 DMA写设计验证

数据流向:上行FIFO数据→PCI Express Master DMA Write→PC内存→PC硬盘。

整个DMA写过程如下:(1)复位FPGA逻辑,延时1 ms;去除FPGA逻辑,延时1 ms。(2)检测硬件链路初始化。(3)开启DMA写完成中断。(4)设置DMA写目的地址寄存器,设置DMA写传输长度寄存器。(5)启动DMA写操作,选择记录路径。(6)等待DMA写完成中断。(7)清除中断,内存数据转到硬盘。(8)DMA写是否结束,是则转至步骤(9);否则转至步骤(4)。(9)终止DMA写,关闭DMA写完成中断,断开记录路径。

下面给出从PCI Express Core到系统内存的DMA写时序,图2是用ChipScope截取的时序图。

基于Xilinx PCI Express Core的高速DMA读写设计

T0~T1之间核接收事务接口上m_axis_rx_tvalid与m_axis_rx_tlast共同有效了8次,即执行了8次PIO内存读写操作。其中第6次为PIO读操作,相应的发送事务接口上s_axis_tx_tvalid与s_axis_tx_tlast有效,产生Cpld完成包以回应PIO读操作。从图中可以看出,DMA状态控制寄存器配置完成后,dma_wr_start信号有效,即启动DMA写操作。此后PCI Express Core开始在发送事务接口上发送存储器写事物包,事物包的地址、大小已经在DMA状态控制寄存器中配置。

2.2 DMA读设计验证

数据流向:PC硬盘→PC内存→PCI Express Master DMA Read→下行FIFO数据。

整个DMA读过程如下:(1)复位FPGA逻辑,延时1 ms;去除FPGA逻辑,延时1 ms。(2)检测硬件链路初始化。(3)开启DMA读完成中断。(4)设置DMA读目的地址寄存器,设置DMA读传输长度寄存器。(5)PC硬盘数据转到内存。(6)启动DMA读操作,选择回放路径。(7)等待DMA读完成中断。(8)清除中断,硬盘数据转到内存。(9)DMA读是否结束,是则转至步骤(10);否则转至步骤(4)。(10)终止DMA读,关闭DMA读完成中断,断开回放路径。

下面给出从系统内存到PCI Express Core的DMA读时序,图3是用ChipScope截取的时序图。

基于Xilinx PCI Express Core的高速DMA读写设计

T1~T2之间核接收事务接口上m_axis_rx_tvalid与m_axis_rx_tlast共同有效了3次。此处需要说明的是DMA读操作在配置完寄存器后需要先从PC硬盘将数据转到内存开辟的数据缓冲区,此后才能开始DMA读操作,故T1~T2之间核接收事务接口上m_axis_rx_tvalid与m_axis_rx_ tlast有效为配置DMA读地址和启动DMA读操作。当DMA读操作启动后,核的发送事务接口上s_axis_tx_tvalid与s_axis_tx_tlast有效,发送存储器读请求包,当PC收到PCI Express Core发出的存储器读请求包后会根据TLP中的信息回复相应的Cpld完成包。根据PCIExpress总线规范中对PCI Express序的规定,允许接收事务接口在接收Cpld完成包的同时发送事务接口在发送存储器读请求包,见图中T1~T2之间所示。

2.3 PCI Express中断控制

当DMA写结束,即dma_wr_done或dma_rd_done其中之一有效时,用户应该通过配置接口cfg_interrupt和cfg_interrupt_assert来提交中断,当核接收到有效中断时将cfg_interrupt_rdy置为有效,表示中断请求被接受。PC通过读DMA中断寄存器从而认领中断事务,响应处理中断后清除中断。用ChipScope捕获的DMA读写完成中断时序,如图4所示。

基于Xilinx PCI Express Core的高速DMA读写设计

3、 系统性能测试

系统性能测试结果如表1所示。存储器读写DMA数据有效带宽测试为DMA启动到最后一个存储器写TLP或最后一个存储器读完成包,测试数据总量为8 GB。

基于Xilinx PCI Express Core的高速DMA读写设计

测试平台:Xilinx ML605开发板(Virtex-6 FPGA);Windows7 64位操作系统,Windriver驱动;PCIExpress链路宽度:X8,PCI Express Core版本:V2.5;MaxPayload Size:128 Bytes;Max Read Request Size:512 Byte;Root Complex Read Completion Boundary:64 Byte。

4 、结束语

研究了基于Xilinx PCI Express Core的高速DMA读写设计,适用于现代雷达系统和高速数据采集系统的要求,并具有良好的移植和扩展性。文中给出了DMA设计框图,并对系统各部分进行了分析。系统设计中主要研究了PCI Express Master DMA读写设计及中断控制,并给出了DMA读写和中断控制的采样时序,通过系统性能测试数据,可以看出本文所设计的基于Xilinx PCI Express Core的高速DMA读写可以满足高速信号处理的要求。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5030

    浏览量

    117734
  • 存储器
    +关注

    关注

    38

    文章

    7150

    浏览量

    161998
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87218
收藏 人收藏

    评论

    相关推荐

    PCI总线接口芯片9054及其应用

    接口,本地总线时钟可和PCI时钟异步。PC9054内部有6种可编程的FIFO,以实现零等待突发传输及本地总线PCI
    发表于 10-09 11:23

    一种基于PCI IP核的码流接收卡的设计

    ,它是本设计的核心部分,对输入的ASI信号保留有效的DVB传输流,发送到FIFO输入端进行缓存。并将FIFO缓存后输出的数据用DMA传输方式通过PCI总线实现对PC内存的存取,同时利用
    发表于 11-28 15:38

    基于IP核的PCI总线接口设计与实现

    的部分功能,造成了资源的浪费,同时接口芯片占用了板卡上的有限空间,给应用设计带来不便。(2)使用可编程逻辑器件实现PCI总线控制器,使用这种
    发表于 12-04 10:35

    PCI总线接口芯片9054及其应用

    异步。PC9054内部有6种可编程的FIFO,以实现零等待突发传输及本地总线PCI总线之间的异步操作;支持主模式、从模式、DMA传输方式,
    发表于 12-05 10:12

    采用PCI IP核实现码流接收卡设计

    。并将FIFO缓存后输出的数据用DMA传输方式通过PCI总线实现对PC内存的存取,同时利用FIFO的标志信号控制
    发表于 05-05 09:29

    基于PCI总线的CPLD实现

    实现突出的优点就在于其灵活的可编程性,这使得硬件电路的升级只需改进软件就可实现,大大提高了硬件平台的通用性;此外CPLD内部有丰富的逻辑资源,可将用户控制
    发表于 05-29 05:00

    ISA总线的标准DMA技术在Linux中的实现

    数据传输是通过ISA总线控制芯片组中的两个级联8237 DMAC来实现的。这种DMA机制也称为“标准DMA”(standard
    发表于 07-01 08:10

    总线接口控制PCI9052资料推荐

    PCI9052是美国PLX科技有限公司推出的一款PCI总线从属接口芯片(但不具有DMA功能)。它可以提供高性能的从目标PCI接口板卡与
    发表于 04-15 07:02

    PCI总线仲裁器的设计及实现

    本文简要介绍了PCI 总线的仲裁机制, 完成了PCI 总线仲裁器核心的设计、实现。通过ModelSim 进行了软件仿真,最后在XILINX
    发表于 09-03 08:18 27次下载

    PCI总线目标控制器的设计

    本文在PCI2.2 总线规范的基础上,给出了一种PCI 总线目标控制器的设计方案。重点从控制
    发表于 12-12 16:58 33次下载

    PCI总线从设备控制器的设计与实现

    本文重点分析了PCI 总线设备控制器的设计方案。以PCI 总线协议的分析和理解为基础,对PCI
    发表于 01-13 16:57 49次下载

    PCI总线至UTOPIA接口控制的CPLD设计实现

    摘 要: 本文采用Altera的CPLD实现PCI总线至UTOPIA接口的逻辑转换控制,为低成本
    发表于 03-11 13:16 884次阅读
    <b class='flag-5'>PCI</b><b class='flag-5'>总线</b>至UTOPIA接口<b class='flag-5'>控制</b>的CPLD设计<b class='flag-5'>实现</b>

    PCI Express总线介绍与光纤通道HBA卡DMA引擎的设计与实现

    本文基于Xilinx公司的PCI Express IP核,为光纤通道HBA卡成功设计并实现DMA引擎。
    发表于 10-11 11:09 8次下载
    <b class='flag-5'>PCI</b> Express<b class='flag-5'>总线</b>介绍与光纤通道HBA卡<b class='flag-5'>DMA</b>引擎的设计与<b class='flag-5'>实现</b>

    如何设计一种以PCI总线为核心的微弱数据信号采集电路?

    PCI9054是PLX公司生产的32位,33MHz的PCI总线通用桥接芯片,具有最高132MB/S的突发传输速率,可以将PCI总线复杂的
    发表于 08-01 10:52 1228次阅读
    如何设计一种以<b class='flag-5'>PCI</b><b class='flag-5'>总线</b>为核心的微弱数据信号采集电路?

    基于PCI Core的链式DMA控制器设计

    介绍一种基于PCI总线的高效链式DMA控制器的设计与实现,用于高速宽带的计算机外设接口。利用Altera公司的
    发表于 12-06 13:56 2849次阅读
    基于<b class='flag-5'>PCI</b> Core的链式<b class='flag-5'>DMA</b><b class='flag-5'>控制</b>器设计