首页资源分类FPGA/CPLD > 用FPGA实现PCI_E接口和DMA控制器设计_王嘉良.pdf

用FPGA实现PCI_E接口和DMA控制器设计_王嘉良.pdf

已有 445476个资源

下载专区

FPGA/CPLD热门资源

本周本月全部

文档信息举报收藏

标    签:FPGAPCI_EDMA

分    享:

文档简介

基于XILINX的pcie ip core的DMA的设计

文档预览

第 21卷 第 6期 2011年 6月 计算机技术与发展 COM PUTER TECHNO LOGY AND D EV ELO PM EN T V o.l 21 N o. 6 June 2011 用 FPGA实现 PCI- E接口和 DMA控制器设计 王嘉良, 赵曙光 ( 东华大学, 上海 201620) 摘 要: PCI- Express接口是第三代总线通信接口标准, 它采用点对点串行连接方式, 具有高速率和高带宽等特点, 这是传 统 PCI并行结构所不能比拟的。为了实现 FPGA 与 CPU 之间高速相互通信, 介绍了一种用单片 FPGA 实现 PCI- Express 接口和高速 DMA 控制器的设计方法, 并在 X ilinx V irtex- 6 FPGA 系列平台上实现。运用 X ilinx提供的 PCI- Express端点 硬核, 提出并设计了基于 PCI- Express总线的 DMA 数据传输方案。通过仿真及硬件测试表明, 该设计方案成本低、高效, 可满足如 10Gb以太网数据帧抓取等高速数据采集及分析系统的需要。 关键词: PCI- Express总线; FPGA; 直接存储器访问 中图分类号: TP39 文献标识码: A 文章编号: 1673- 629X( 2011) 06- 0181- 04 PCI- E Interface Imp lem entation and DMA Engine D esign w ith FPGA W ANG Jia- liang, ZHAO Shu- guang ( D onghua U nive rsity, Shanghai 201620, Ch ina) A bstract: PC I- E xp ress in terface is th e 3rd generation bu s in terface stand ard, w h ich is poin t to po int serial in terconnect ion w ith h igh speed and h igh bandw idth, w h at th e trad itional PC I paral lel structure canno t be com p ared w ith. Propose a design o f h igh- speed comm u n icat ion w ith C PU through the PC I- Express in terface and aDM A eng inem ethod based on a single FPGA. It is im plem en ted on the X i l inx V irtex - 6 FPG A series p latfo rm. W ith the hard PC I- Express endpo in t IP core, th e tran saction of data through DM A based on PC I - Express bu s is ach ieved. The resu lts of sim ulation and hardw are test show that it is app licab le and can b e u sed to the 10G b E thernet en v ironm en t and o th er data acqu isition sy stem s. K ey words: PC I- Express bu s; FPG A; DM A 0引 言 随着网络的飞速 发展, 人 们可 获取的 信息量 日益 增长, 数据的处理及 存储 速率的 要求也 越来 越高。万 兆网 ( 10G b以太网 )的普及, 高 速存储 设备的应 用 (如 DDR 2, 传输速率可 达 800M ) 对 系统 带宽 带来 极 大的 挑战。而传统的总线架构, 虽历经多年发展, 但其带宽 已经成为制约系统性能的主要瓶颈。文中介绍了一种 基于高速 的 I /O 串 行 互联 技 术, PC I- Exp ress ( 简称 PC Ie) , 提出了在系 统设计 中基 于 FPGA 的 PC Ie总线 接口设计及应用于该总线的 高速 DM A En gine设计方 案。 1 PC I- Express总线简介 PC Ie总线是 In tel公司于 1997年提出的第 3代 I/ O 总线技术, 用以取代 PCI总线和芯片内部 连接, 并在 2002年提出 PCI Exp ress 1. 0 标 准 [ 1] 。 与 PCI并行 总 线相比, PCIe采用差分 LVDS 串行传输方式, 一 条数据 链路 (称为 PCIe x1 )由 2 对 LVDS 差分 信号 线来 实现 发送 和接 收, 信 号传 输速 率为 2. 5Gbps。与 PCI采 用 共享总线方式 不同, PCIe采 用点 对 点连 接, 设 备均 可 以通过专 用 数 据 链路 直 接 与 总 线 相 连, 可以 组 合 成 x1, x2, x4, x8, x16 及 最新 x32 链路 模式。这 种总 线拓 扑方式使得 PCIe具有很 好的 扩展性 和灵 活性。 串行 数据传输采用工业标准的 8 b /10b 编码实现数据恢复。 PCIe x1可以提供 500M B / s带宽, 这相当于普通 PCI带 宽的 3. 78 倍 [ 2 ] 。 PC Ie总 线不 但提 供了 更高 的 性能, 更大大减少了接口管脚, 降低电路板布线难度, 并减少 了信号线间产生的互相干扰。 收稿日期: 2010 - 10- 28; 修回日期: 2011- 03- 03 基金项目: 国家自然科学基金 ( 60073053, 60133010 ) 作者简介: 王嘉良 ( 1986- ), 男, 硕士研究生, 研究方向 为通信系统、 SoC设计与验证; 赵曙光, 教授, 博士生导师, 研究方向为 电子设计自 动化、进化电子系统等。 2 FPGA 系统设计方案 2. 1 传统 FPGA设计方案 传统 FPGA 并不具备 LVDS 信号驱 动能力。 一般 以 PEX 8311 桥接芯片 实现 PCIe物理 层接 口, 再 配合 CPLD 实现用 户 逻 辑 设 计 [ 3] 。 PEX 8311 提 供 2 个 端 18 2 计算机技术与发展 第 21卷 口, 一个为 兼容 PCI Express 1. 0 标准 的 PC Ie接 口, 另 一个为 Local Bu s总线接 口, 用于与 CPLD 相连。 Loca l Bu s总 线工作 于 66MH z时钟, 32 - b it总线 宽度, 可以 提供 266M B / s 带宽。 同时, PEX 8311 还 提 供 了 2 组 DMA 通道 [ 4 ] 。使用 PEX 8311 可以方便地从 PCI平滑 过渡到 PCIe, 从而降低开发成本, 因此被广 泛使用 [ 5 ]。 然而, PEX 8311并不能有 效发挥出 PC Ie高带 宽优势, 也缺乏可配置性和灵活性, 难以提高系统整体性能。 2. 2 基于 PCIe硬核接口设计 X ilinx新 推 出 V irtex - 6 系 列 的 FPGA, 集 成 了 PC Ie IP硬核模块。 该模块 兼容 PCI Exp ress 2. 0 标准 分层协议 (为物理层、数据链 路层和事 物层, 又 称传输 层 ), 提 供 了 系 统 接 口 ( SYS )、外 部 传 输 接 口 ( PC I EXP )、配置接 口 ( CFG )、事物 接口 ( TRN )和 物理 链路 接口 ( PL ) [ 6 ]。其 V irtex- 6 GTX 可配置高速串行传输 器为 PCIe信号可 靠传输 提供 了保 障。 文中 便是 针对 该硬核的事物层提出片上系统的 PCIe设计方案。 3 PC I- Express接口及应用层设计 一 个 基 本 的 高 速 数 据 采 集 系 统, 由 微 处 理 器 ( CPU )、FPGA 和外部存储器等组成 [ 7 ]。 CPU 与 FPGA 通过 PC Ie总线进行数据传输, FPGA 通过 DMA 方式对 外部存储器 进行 数 据读 写操 作。文 中给 出基 于 PCIe x1传输方式的接口设计方案。 3. 1 PCIe接口及事物层设计 较之 使用 PEX 8311 桥接 芯片 的系统 设计 [ 8 ] , 采 用基于 X ilinx的 IP 核的设计方案, 用户 可以根 据自己 的需求灵活设计面 向事物层 接口 电路, 并 方便加 入特 殊功能, 如与内部总 线连 接、实现 DMA 传输 等。该设 计充分利用 FPGA 集成度高、可配置性强 等特点 , [9] 来 发 挥 PC Ie接 口 性 能。 FPGA 的 PCIe 接 口 设 计 包 括 X ilinx PC Ie端点硬核和面向 事物层 的应用逻 辑设 计 2 个部分, 这里将详细给出应用层设计, 如图 1所示。 X ilinx PC Ie硬核支持 64- b it数据通路, 分 别用于 发送和接收数据。该硬核 提供 6 个 32- b it基地 址寄 存器 BAR0 ~ BAR5 ( Bass A dd ress Reg ister, 简称 BAR ), 可以根据 用户 设计 需 求进 行配 置。在 本设 计 中使 用 BAR0和 BAR 1组成一组 64 - b it地 址空间, 用于 存储 外部 CPU 访问 FPGA 内部寄存器地址。使用 BAR 2和 BAR3组成 另 一组 64 - b it地 址 空间, 用 于存 储 DMA Eng ine控制器和缓存器地址。通过判断 trn _rb ar_h it_n [ 6: 0] 来区分 BAR0 和 BAR2, 其主要代码如下: T`RN_RX _MEM _RD 64_DW 1DW 2: beg in req_bar0_o< = ~ trn_rbar_h it_n_q [ 0]; req_bar2_o< = ~ trn_rbar_h it_n_q [ 2]; end 以外部 CPU 读 FPGA 内部 寄存器 为例, FPGA 将 收到的 PCIe总线上数据帧经由硬核的事物层, 以 64b it带宽送出, 应用层通过 TRN _RX 接收状态机 来判断 请求访问的地址空间, 然后将 请求数 据缓 写入一 个双 端口的 req _fifo[ 10] ; 用户逻辑通过读取 req_ fifo, 将有效 的寄存器数据写入另一个 双端口 data_ f ifo中 [ 11], 最后 通过 TRN _TX发送状态机发送给硬核事物层。 3. 2 基于 PCIe的 DM A Eng ine设计 通过 DM A 访问外部存储 器的最 大优 势在于 CPU 在配 置 完 DM A Eng ine 后 可 以 继 续 其 他 指 令 操 作, DMA Eng ine会通过 请求 PC Ie总 线 中断 的方 式, 来 完 成数 据 传 输。本 设 计 将 PCIe BAR 0 地 址 空 间 存 储 DMA Eng ine控制和缓存器地址, 其定义如图 2所示。 图 1 FPGA 的 PC Ie接口及事物层设计 图 2 DM A 控制器和缓存器设计 DWORD 0 [ 0] , run, 写 1 开启 DMA; DWORD 0 [ 1] , in t, 写 1开启 DM A 中断方式; DWORD 1 [ 31] rw, 写 1读 fpga外部存储器; DWORD 1 [ 23: 0 ] dword coun t, DM A 操作数据个 数, 以 dw ord为单位; DWORD 2 [ 31: 0] fpga_mem _address, fpga外部存 第 6期 王 嘉良等: 用 FPGA 实现 PCI- E接口和 DMA 控制器设计 1 83 储器地址; DWORD 3 [ 31: 0] cpu_add ress_ lo, cpu 低 32位地 址; DWORD 4 [ 31: 0 ] cpu _address_h,i cpu 高 32位地 址。 修改 PCIe数据帧类 型 ( tlp _ type < = trn _ rd [ 62: 56 ] ), 加入 DM A 数据帧, 使其有别于对 BAR 的读写操 作, 部分代码如下: d`e fine TRN _RX_DMA _TLP_TYPE 7 b10_01010; /* DMA 数据类型 * / d`efine TRN _RX _DMA _DATA 1 10 b01 _0000_0000; /* DMA 操作状态 * / case ( state) R` ST: beg in case ( tlp_type) state< = T`RN _TX _DMA _REQ; end FPGA 的 DM A Engine状态 转移图 如图 3所 示, 分 DMA 读操 作和写 操作 2部 分。 DM A Eng ine处于 R ST 状态时, 通过读取 DMA 信息标识符来判断当前是否处 于空闲状态, 并 从 FPGA 内 部 RAM 中 读取 DMA 控制 信息 (读或写 ), 并进入相应状态 READ _ST 或 W R ITE _ ST。以 CPU 写 FPGA 外部存储器为例, CPU 通过 PCIe 总线写 BAR0 地 址 数 据 来 配 置并 开 启 DM A Eng ine。 FPGA 将发 出对 CPU 的 DMA 读 请 求, 然 后 等 待 CPU 发送 DM A 数据。此时 DM A Eng ine处 于 W A IT _FOR _ DATA 状态, 等待 来自 PCIe 接口 的 DMA 数据 包。同 样, CPU 读 FPGA 外部 存储器时, FPGA 将 发出对 CPU 的 DM A 写请求, 并 当 DMA 完成 读 操作 后, 等 待 PCIe 接口发送 DMA 数据包, 并由中断标志位判断是否开启 PC Ie 中断。 T`RN _RX _DMA _TLP _TYPE: beg in state< = T`RN _RX _DMA _DATA1; end T`RN _RX _DM A_DATA1: beg in end endcase 以同样的方式在 TRN _TX 状态机中加入 DMA 请求, 其代码如下: d`efineTRN _TX _DM A _REQ 10 b01_0000_0000; case ( state) R` ST: beg in if ( dm a_tlp_ready) beg in /* DMA Engine准备好读操 作数据帧 * / state< = T`RN _TX_DMA _REQ; dm a_ tlp_ rd_en< = 1 b1; /* DMA 缓存读使能 */ end e lse if ( ) end 图 3 DMA Eng in e状态机描述 4 仿真及测试结果 为了测试该 DMA Engine设计, 对 FPGA 外部 64b it DDR2 DRAM 进行 32 个 dwords ( 128 bytes)读 与写 操作, 得到 的仿真 波形如图 4和图 5所示。图 4是对 DMA 进行写操作的 PC Ie事 物层接 口波形。图 5 是对 DMA 进行读操作的 PCIe事 物层接口 波形。该设 计方 案在 questas mi 6. 3 f下 验 证 通 过。可 以 估 算 出 一 次 PCIe x1写操作为 1720M b / s, 读为 1684M b / s[ 12 ] 。 同样, 在实际的应用环境中测试本文 DMA Eng in e T`RN _TX _DM A _REQ: beg in if ( ~ tlp_dm a_data_eo f) /* 数据帧结束标志位 * / state< = T`RN _TX_DONE; else 图 4 CPU 通过 PCIe对 DMA 进行写操作 18 4 计算机技术与发展 第 21卷 图 5 CPU 通过 PCIe读 FPGA 外部 DRAM 设计, 也 获 得 比 较 好 的结 果。 图 6就 是 系 统 以 本 文 DMA 方式进行 4096 bytes读外部存储器的结果。 图 6 DMA 读操作及结果 5 结束语 FPGA 较 AS IC的强大之处, 在于灵 活性和可 配置 性。文中凭借 X ilinx PCIe硬核, 很好地实现了 PCIe x1 总线接口, 并在此 基础上 加入高 速 DMA Engine设计, 可以有效地提高系统数据存储效率。 该设计方案通 过简 单修 改也 同样 适用 于 32- b it 带宽传输系统设计。 参考文献: [ 1] Bhatt A, T echno logy and R esearch Labs, Intel Corporatiob. C reating a PCI Expre ssTM Interconnect [ E B /OL ]. 2002. ht tp: / /www. pc isig. com /specifications/ pciexpress/resources /PC I_Express_W h ite _Paper. pd.f [ 2] PCI Express Base Spec ification, 1. 0a ed [ S ]. PC I SIG, 2003. [ 3] D esign No te: Optmi izing PEX8311 PCI Express- to- L oca l Bus DMA Perform ance[M ]. [ s. .l ]: PLX Technology, 2007. [ 4] Data Book: PEX 8311Deta iled T echnical Specifications[M ]. [ s. .l ]: PLX Technology, 2009. [ 5] 马 萍, 唐卫华, 李绪志. 基于 PCI Express总线高速数采 卡的设计与实现 [ J]. 微计算机信息, 2008( 25): 116- 118. [ 6] LogiCORETM IP V irtex- 6 FPGA Integrated B lock Da ta Sheet [M ]. [ s. .l ]: X ilinx, 2009. [ 7] L i B, Peng Y, L iu D T. A H igh Speed DM A T ransaction M ethod fo r PCI Express Devices [ J]. Journal o f E lectronic Science and T echno logy o f China, 2009, 7( 4): 94- 98. [ 8] 强 俊, 楚 宁, 周鸣争. 基于 PCI EXPRESS总线的视音 频采集卡的设计 [ J]. 计算机技术与发展, 2007, 17( 5): 85 - 88. [ 9] 李 攀, 田 泽, 蔡叶芳, 等. 基于 SOPC的 PC I通信接口设 计与实现 [ J]. 计算机技术与发展, 2009, 19( 9): 217- 220. [ 10] 张维旭, 贺占庄. 基于 FPGA 的异步 F IFO 设计 [ J]. 计算机 技术与发展, 2006, 16( 7): 174- 176. [ 11] 余志强, 戎蒙恬, 袁丹寿. 一种单端口 SRAM 构成 F IFO 的 ASIC设计 [ J]. 计算机技术与发展, 2008, 18( 9): 59- 61. [ 12] 徐君明, 裴先登, 王海卫, 等. 高性能计算机 I/O 技术 PC I Express分析 [ J]. 计算机工程, 2004, 30( 12): 7- 8. ( 上接第 180页 ) 备的交互。通过绘制 机场图 片、飞 机位置 坐标点 和飞 机图标, 在飞行模拟器中实现了飞机位置的实时显示。 采用 双缓冲 技术 极大 地提 高了 飞行 轨迹 的绘 制效 率, 绘制出的飞行轨迹 无闪 烁, 画面 刷新 速度快, 完全 满足显示要求。 参考文献: [ 1] 周长发. C# 面向对象编程 [M ]. 北京: 电子工业出版社, 20 07. [ 2] 陈本峰, 苏 琦. W indows GD I + 的研究与应用 [ J]. 计算 机应用研究, 2003 ( 3): 56- 59. [ 3] G raus C. Starting w ith GD I+ [ EB /OL ]. 2003- 05. http: / / www. codepro jec.t com /KB /GD I- plus/startinggdiplus. aspx, codeprojec.t [ 4] Chand M. GD I + 图形程序设计 [M ]. 北京: 电子工业出 版社, 2005. [ 5] N agel C, Evjen B, G lynn J, et a.l C# 高级编程 [M ]. 第 4版. 北京: 清华大学出版社, 2006. [ 6] M icroso ftM SDN [ EB /OL]. 2008. http: / /m sdn. m icrosof.t com / library, M icrosof.t [ 7] 闫宇晗, 常 鑫. 在 C# 中用 GD I + 实现图 形动态显示 [ J]. 计算机技术与发展, 2006, 16( 12): 117- 118. [ 8] 张卫华. 在 GD I+ 中利用双缓冲技术实现橡皮筋效果 [ J]. 电脑编程技巧与维护, 2009( 5): 70- 80. [ 9] M azdak. Double Buffering W ith GD I+ [ EB /OL ]. 2002- 12. http: / /www. codepro jec.t com /GDI - plus/gdiplus. aspx, codeprojec.t [ 10] 齐立波. C#入门经典 [ M ]. 第 4版. 北京: 清 华大学出版 社, 2008. [ 11] 梁斌玉. 叩响 c#之门 [M ]. 北京: 电子工业出版社, 2009. [ 12] 周 靖. V isual C# 2010从入门到精通 [M ]. 北京: 清华大 学出版社, 2010.

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。