《基于FPGA的DMA读写设计及中断控制.docx》由会员分享,可在线阅读,更多相关《基于FPGA的DMA读写设计及中断控制.docx(7页珍藏版)》请在第一文库网上搜索。
1、基于FPGA的DMA读写设计及中断控制摘要:本设计在基于XiIinXVirte-6FPGA内嵌PC1ExpressCore的基础上,实现了由PC1EXPreSS板卡主动发起而通读写,可完成PC和PC1Express板卡之间数据的高速传输。该设计已经在Xi1inx评估板M1605上完成调试验证,DMA写内存速度稳定可达1520MBs,满足了高速存储系统的要求。随着相控阵雷达、超宽带雷达、数字阵列雷达相继地出现,雷达的回波数据量在不断地增加,因此对高速采集和大容量数据传输提出了越来越高的要求。早期基于PCI总线的高速数据采集系统在带宽、流量控制和数据传送质量上存在一定缺陷,在某种程度上并不能完全适
2、应高速大容量数据存储的要求。相比较而言,PCIEXPreS总线具有鲜明的技术优势,不仅完全兼容PCI总线,而且全面解决了PC1总线所面临的带宽、流量控制和数据传送质量方面问题,由于使用高速差分总线,时钟频率可以达到较高水平,其总线带宽较PCI总线也有大幅度提升,目前X16的PC1EXPrCSS峰值带宽可以达到80GTsoPCIExpress技术的逐步成熟,为高速数据数据传输提供了较好的解决方案。1 DMA控制逻辑设计DMA控制逻辑设计如图1所示,主要有PCIEXPreSSCore,接收引擎、发送引擎、DMA控制状态重音和中断控制等关键模块。/:上片存祈C图1DMA控制逻辑设计框图1.1 PCI
3、ExpressCore主要特点如下:(1)符合PC1ExpressBaseSpecification2.0规范。(2)支持XI、X2、X4或X8模式。(3)片上GTP/GTX收发器凝PHY。(4)具有访问PCIEXPreSS配置空间和内部配置的管理接旦。(5)支持最大的有效载荷(1284096Byte)0(6)可针对存储器或I/O进行配置的基地址寄存器(BAR)01.2 接收引擎在PC1EXPreSS系统逻辑结构中,接收引擎主要是在接口时钟的控制下,按照基本T1P接收时序,解析存储器读写请求并从T1P中提取所需信息并将其传送到存储器访问控制器,存储器访问控制器处理存储器写T1P中写入存储器的数
4、据,并使用存储器中的数据读来响应存储器读T1P;此外接受引擎主要还负责处理存储器读完成T1P,响应板卡发起的DMA读操作。1.3 发送引擎在PC1EXPreSS系统逻辑结构中,发送引擎主要是在接口时钟的控制下,按照基本T1P发送时序,为接收到的存储器读T1P生成完成包,生成该完成包所需的信息会由存储控制器传送到发送引擎;此外发送引擎还负责发起存储器读写请求T1P,实现与PC之间数据的DMA读写。1.4 DMA状态控制寄存器在PC1EXPreSS系统逻辑结构中,DMA状态控制寄存器主要是实现PC1ExpressCore与RoOtComPIeX之间数据的传递。WindowsGU1软件配置DMA控制
5、状态寄存器控制DMA操作。DMA控制状态寄存器映射于PC1ExpressMemoryBARO空间,WindowsGU1软件通过MemOryWrite和ReM_周期访问寄存器。WindowsGUI软件初始化DMA控制寄存器发起DMA传输了而通过状态寄存器,以中断方式通知RoOtComp1exDMA传输完成。1.5 中断控制当DMA传输结束时,为及时通知PC响应并处理中断,中断控制部分使用核的配置层接口信号产生中断。PCIEXPreSS支持两种中断:消息信号中断(MSD和传统中断(1eg些yINT)。在PC1EXPreSS设备枚举过程中,跟联合体会根据自身对中断支持的能力设置配置空间中的命令寄存器
6、和消息信号中断能力寄存器,来决定使用何种中断。2 PCIExpressMasferDMA读写设计验证2.1 DMA写设计验证数据流向:上行F1FO数据fPCIExpressMasterDMAWrite-*PC内存-PC硬盘。整个DMA写过程如下:(1)复位FPGA逻辑,延时1ms;去除FPGA逻辑,延时1ms。(2)检测硬件链路初始化。(3)开启DMA写完成中断。(4)设置DMA写目的地址寄存器,设置DMA写传输长度寄存器。(5)启动DMA写操作,选择记录路径。(6)等待DMA写完成中断。(7)清除中断,内存数据转到硬盘。(8) DMA写是否结束,是则转至步骤(9);否则转至步骤(4)O(9)
7、终止DMA写,关闭DMA写完成中断,断开记录路径。下面给出从PC1ExpressCOre到系统内存的DMA写时序,图2是用ChipScope截取的时序图。w”imm,力MQnneM40km。燮mwwt*g*C:TOT1之间核接收事务接口上maxis_rxtva1id与maxisrxt1ast共同有效了8次,即执行了8次EIO内存读写操作其中第6次为PK)读操作,相应的发送事务接口上s_axis_tx_tva1id与s_axis_tx_t1ast有效,产生CPIC1完成包以回应P1O读操作。乐图中可以看出,DMA荻态控制寄存器配置完成后,dma_wr_start信号有效,即启动DMA写操作。此后
8、PC1ExpressCOre开始在发送事务接口上发送存储器写事物包,事物包的地址、大小已经在DMA状态控制寄存器中配置。2.2 DMA读设计验证数据流向:Pe硬盘fPC内存一PC1ExpressMasterDMARead一下行F1FO数据。整个DMA读过程如下:(1)复位FPGA逻辑,延时1ms;去除FPGA逻辑,延时1ms0(2)检测硬件链路初始化。(3)开启DMA读完成中断。(4)设置DMA读目的地址寄存器,设置DMA读传输长度寄存器。(5)PC硬盘数据转到内存。(6)启动DMA读操作,选择回放路径。(7)等待DMA读完成中断。(8)清除中断,硬盘数据转到内存。(9) DMA读是否结束,是
9、则转至步骤(10);否则转至步骤(4)。(10)终止DMA读,关闭DMA读完成中断,断开回放路径。下面给出从系统内存到PC1ExpressCore的DMA读时序,图3是用ChipScope截取的时序图。图3从系统内存到P(:1ExpressCom的读时荐图T1T2之间核接收事务接口上m_axis_rx_tva1id与m_axis_rx_t1ast共同有效了3次。此处需要说明的是DMA读操作在配置完寄存落后需要比从PC硬盘将数据转到内存开辟的数据缓冲区,此后才能开始DMA读操作,故T1T2之间核接收事务接口上m_axis_rx_tva1id与m_axis_rx_t1ast有效为配置DMA读地址和
10、启动DMA读操作。刍DMA读操作启击后,核的发送事务接口上saxistx_tva1id与s_axis_tx_t1ast有效,发送存储器读请求包,当PC收到PCIExpressCore发出的存储器读请求包后会根据T1P中的信息回复相应的CP1d完成包。根据PCIEXPreSS总线规范中对PC1EXPreSS序的规定,允许接收事务接口在接收Cp1d完成包的同时发送事务接口在发送存储器读请求包,见图中T1T2之间所示。2.3PCIExpress中断控制当DMA写结束,即dma_wr_done或dma_rd_done其中之一有效时,用户应该通过配置接口cfg_interrupt和cfg_interru
11、pt_assert来提交中断,当核接收到有效中断时将cfg_inteirupt_rdy置为有效,表示中断请求被接受。PC通过读DMA中断寄存器从而认领中断事务,响应处理中断后清除中断。用ChipScope捕获的DMA读写完成中断时序,如图4所示。3系统性能测试系统性能测试结果如表1所示。存储器读写DMA数据有效带宽测试为DMA启动到最后一个存储器写T1P或最后一个存储器读完成包,测试数据总量为8GBo表1系统测试结果记录DMA传输DMA读数据DMA写数据大小kB有效带宽/MB有效带宽MBjT32718.64716.43719.47846.47842.20841.6264823.17816.36
12、824.60923.21920.18926.46128I021.00I023.241023.78I204.471208.35I203.20256I264.401267.381267.641428.481430.13I431.17512I286.17I284.201287.811442.191444.461444.7010241302.201309.701307.181460.121464.331461.102048I328.431323.301331.981532.161538.421535.1540961364.40I368.36I368.20I542.16Co1立工诧测试平台:Xi1inx
13、M1605开发板(VirteX-6FPG);Windows764位操作系统,WindriVer驱动;PCIEXPreSS链路宽度:X8,PCIExpressCore版本:V2.5;MaxPay1oadSize:128BytesjMaxReadRequestSize:512Byte;RootComp1exReadComp1etionBoundary:64Byte04结束语研究了基于XiIinXPCIExpressCOre的高速DMA读写设计,适用于现代雷达系统和高速数据采集系统的要求,并具有良好的移植和扩展性。文中给出了DMA设计框图,并对系统各部分进行了分析。系统设计中主要研究了PC1ExpressMasterDMA读写设计及中断控制,并给出了DMA读写和中断控制的采样时序,通过系统性能测试数据,可以看出本文所设计的基于XiIinXPCIExpressCore的高速DMA读写可以满足高速信号处理的要求。