当前位置: 首页 > news >正文

基于龙芯 2K1000处理器和复旦微 FPGA K7 的全国产RapidIO 解决方案研究

RapidIO 总线协议 [1] 经过 20 多年的发展,已成为基
于数据分组交换的高性能系统互联 [2] 首选解决方案之
一,广泛应用于无线通信、军事、超算、医学图像处理和
工业控制等多个领域,而这些领域无一例外地关系到国
计民生和国家安全。目前,提供 RapidIO 总线接口的芯
片主要来自美国恩智浦公司的 PowerPC 、德州仪器公司
C6000 系列 DSP 、瑞萨公司的 TSI 系列 RapidIO 交换芯
片和 PCIe RapidIO 桥片,以及赛灵思公司的 RapidIO
IP 软 核,而 国 内 则 鲜 见 对 标 上 述 芯 片 的 国 产 化 替 代
方案。
本文提出一种基于龙芯 2K1000 处理器 [3] 和复旦微
FPGA 的全国产 RapidIO 解决方案,并结合具体项目验
证该方案的可行性。
1 方案设计
1.1 总体设计
复杂的嵌入式设备,如核心网高端交换机、路由器、
5G 基站、飞机航电系统等,一般采用多子卡机架式设
计,这些子卡由机架背板布线信号联通,从而实现相互
间的通信。子卡间的通信一般包括数据平面通信和控
制平面通信。数据平面通信一般要求实现高可靠、高带
宽、低延迟的全双工通信,相应的数据平面系统互联方
案包括 RapidIO 总线、以太网和 PCIe 总线等,而 RapidIO
总线以其传输带宽高、互联信号线少、抗干扰性强、易于
扩展等优势成为如飞机航电系统等复杂系统的首选子
卡数据平面高速互联方案。
龙芯 2K1000 处理器(下文简称 CPU )是中科院计算
所研发的面向网络应用、工业控制等领域的嵌入式 SoC
理器。片内集成两个 64 位的双发射超标量 GS264 处理器
核,兼 容 MIPS64 体 系 结 构,主 频为 1 GHz ,集 成 64
DDR3 控制器、 SATA3 控制器、 2 x4 PCIe 2.0 控制器、
2 个千兆以太网控制器等多种外设。龙芯 2K1000 处理
器具有丰富的外设资源,适合作为控制子卡的处理器,但
由于片上没有集成 RapidIO 控制器,比较可行的替代方
案是使用复旦微 JFM7K325T FPGA 配合 RapidIO IP 软核
来实现 RapidIO 总线接口,再选取 PCIe 2.0 总线接口作为
龙芯 2K1000 处理器与复旦微 FPGA 之间交换数据的通
路。 FPGA RapidIO 总 线 采 用 LP⁃Serial x1 物 理 层 接
口,工作频率为 3.125 GHz ,数据带宽为 2.5 Gb/s 。软件
方面,在龙芯 2K1000 处理器上运行国产锐华实时操作系
统,并研发锐华系统下的 PCIe 驱动程序和 RapidIO 驱动
程 序;硬 件 方 面,使 用 中 航 通 用 公 司 自 行 研 发 的 国 产
RapidIOIP 软 核 。 以 龙 芯 2K1000 处 理 器 和 复 旦 微 电
JFM7K325T FPGA 为核心构建最小子系统,系统总体设
计方案 [4] 如图1所示。
CPU FPGA 之间通过 PCIe 总线和 LPC 总线相连,
其中高速信号使用 PCIe 总线传输,控制信号使用 LPC
总 线 传 输。 RapidIO 差 分 信 号 由 FPGA 引 出。 CPU
FPGA 均使用基于 SPI 总线的 NOR FLASH 存储启动固
件, CPU 的大容量文件存储使用并行的 Nand FLASH
CPU 外接 4 x16 的国产 DDR3 颗粒, CPU 片上集成的
两 路 GMAC 以 太 网 控 制 器 通 过 RGMII 接 口 外 接
88E1111 千兆以太网 PHY FPGA 除引出 RapidIO 信号
外,还实现了 HDLC 同步串口信号和 RS 422 高速串口
信号。子系统的外围均使用国产化芯片,例如兆易创
新 公 司 研 发 的 FLASH 芯 片 、长 江 存 储 公 司 研 发 的
DDR3 芯片和中电 32 所研发的 88E1111 以太网 PHY
片等。
1.2
数据传输
FPGA CPU 之间通过 PCIe 总线 [5] 交换数据的方式
主要有两种,分别是 PIO 方式和 DMA 方式。 PIO 方式的
原理是: FPGA PCIe BAR 区间划出一定范围,实现数
据寄存器、控制寄存器和状态寄存器, CPU 使用 MMU
PCIe BAR 空间,并基于简单的数据拷贝算法实现数
据交换 [6] 。使用 PIO 方式进行 PCIe 数据传输时, CPU
次读、写数据寄存器都会触发 PCIe TLP 事务包,当数
据 寄 存 器 为 4 B 时 ,净 荷 数 据 只 占 到 TLP 事 务 包 的
4 256 ,加上 PCIe 每次 TLP 事务建立开销,容易得出 PIO
方式效率低的结论,因此不适合作为高速 RapidIO 总线
的数据通路。
DMA 方式使用 FPGA 中的 DMA 通道,在 CPU 内存
FPGA 内存间搬运数据,每次搬运时尽可能保证 TLP
事务包中的净荷数据最大,且搬运过程不需要 CPU
与。当 CPU FPGA 发送数据时, CPU 仅向 FPGA 告知
需要发送数据的地址和长度,由 DMA 通道负责搬运数
据,数据搬运完成后, FPGA PCIe MSI 中断的异步方
式 通 知 CPU 数 据 搬 运 完 成;当 CPU FPGA 接 收 数 据
时, CPU 首先告知 FPGA 写入数据的内存地址,当 FPGA
数据就绪时, DMA 通道将数据搬运到该内存地址中,然
后向 CPU 发送 PCIe MSI 中断,通知 CPU 数据搬运完成,
CPU 可以通过读取 FPGA 特定的寄存器来获取搬运数
据的实际长度。
本方案采纳的是一种改进的 XDMA 方式 [7] ,该方法
的 核 心 思 想 是 使 用 数 据 描 述 符 链 表 来 控 制 CPU
FPGA 之间的 PCIe 数据收发与同步。 XDMA 数据描述
符如图 2 所示,数据描述的长度为固定的 32 B ,存储数
据描述符的缓冲区地址要保持与 CPU 缓存行对齐,保
证内存吞吐效率最优。描述符中存储了 DMA 通道需要
搬运数据的长度、数据的源地址(从 CPU FPGA 搬运
数据时使用) / 目的地址(从 FPGA CPU 搬运数据时使
用);控制字字段包括数据搬运完成标志位,用于标识数
据搬运的状态。描述符之间通过下一个相邻描述符地
址字段连接成单向链表,链表中最后一个描述符的该字
段为空,作为链表尾部标识。 CPU 在接收和发送数据前
按需准备好数据描述符链表,并把链表首个描述符的地
址设置到 FPGA 的 XDMA 寄存器中。
信迈提供龙芯+FPGA国产化解决方案。

相关文章:

  • Maven插件学习(三)——插件配置依赖和执行目标
  • 代码随想录算法训练营Day34
  • 【Java面试笔记:基础】4.强引用、软引用、弱引用、幻象引用有什么区别?
  • LangChain 核心模块学习:Chains
  • 配置spark
  • 嵌入式:ARM公司发展史与核心技术演进
  • 基于函数下降趋势的FISTA算法
  • el-form里面的input输入框按回车自动刷新页面的问题
  • Hyper-V 管理工具
  • 12.5/Q1,GBD高分文章解读
  • 深度强化学习 pdf 董豪| 马尔科夫性质,马尔科夫过程,马尔科夫奖励过程,马尔科夫决策过程
  • 香港免费云服务器申请教程,配置4核8G
  • 制作一款打飞机游戏17:敌人
  • G1 人形机器人软件系统架构与 Python SDK
  • SystemV-消息队列与责任链模式
  • Discuz!+DeepSeek:传统论坛的智能化蜕变之路
  • 鸿蒙移动应用开发--渲染控制实验
  • C++异步操作 - future async package_task promise
  • Vue项目依赖注入的使用
  • 深度学习模型搭建的基础原理详细介绍
  • 匈牙利总理投票反对乌克兰加入欧盟
  • 黎巴嫩“伊斯兰集团”组织证实其高级成员在以军空袭中丧生
  • 国务院国资委:推动央企强化资金统筹,确保及时付款
  • 经济大省中川、豫、浙一季报已发:GDP增速均高于全国
  • 沙龙 | 新书分享:中国电商崛起的制度密码
  • 全国登记在册民营企业超过5700万户