引言:从工程实践中的连接方式说起
在实际工程中,我们常看到这样的系统连接拓扑:
CPU <-- eLBC --> FPGA <-- XINTF --> DSP
初看之下,这种组合常让人产生疑惑:为什么 CPU 和 FPGA 之间用 eLBC?为什么 DSP 和 FPGA 却要用 XINTF?这种组合为何被称为'异构处理系统架构'?而文档中提到的'同构型双余度产品'又是什么含义?
这些问题看似零散,实则指向同一个核心:如何从体系结构层面理解处理器组合、接口选型与系统可靠性设计?
为什么 CPU + FPGA + DSP 被称为'异构处理系统架构'?
1. '异构'的工程定义
在处理系统架构中,**异构(Heterogeneous)**并非指器件数量多,而是指:
系统中包含多种在指令体系、执行模型或计算范式上本质不同的处理单元。
这是一个体系结构层面的定义。
2. CPU、DSP、FPGA 的本质差异
| 处理单元 | 主要职责 | 计算/执行范式 |
|---|---|---|
| CPU | 系统控制、调度、管理 | 控制流驱动 |
| DSP | 实时数值运算 | 数据流 / 向量化 |
| FPGA | 并行逻辑与时序处理 | 空间并行 |
三者在以下方面存在根本差异:
- 指令体系(ISA)
- 并行方式
- 编程模型
- 实时性保障机制
因此,CPU + FPGA + DSP 的组合不是简单的'多核',而是'多范式协同',这正是'异构处理系统架构'的本质。
接口选型背后的架构逻辑
1. CPU ↔ FPGA:为什么使用 eLBC?
eLBC(Enhanced Local Bus Controller)是 CPU SoC 内部集成的本地外设总线控制器,其核心定位是扩展 CPU 的并行外设访问能力。其工程特征包括灵活的地址映射、多片选支持、可配置读写时序,以及与 cache/MMU/总线体系的深度耦合。
因此,eLBC 非常适合用于:
- CPU 对 FPGA 的配置
- 状态监控
- 中低速数据交互
2. DSP ↔ FPGA:为什么使用 XINTF?
DSP 的设计目标与 CPU 不同,它更强调确定性实时性、数据吞吐效率以及简化系统复杂度。
XINTF(External Interface)是 DSP 提供的外部存储接口,其核心思想是将外部 FPGA 映射为 DSP 的一段外部存储空间。DSP 访问 FPGA 的方式,本质上是普通的内存读写操作:
data = *(volatile Uint16 *)FPGA_BASE;
XINTF 具备硬件自动生成总线时序、固定或半固定访问延迟以及极强的实时确定性,非常适合 DSP ↔ FPGA 之间的高速数据流交互。
3. 这不是'能力限制',而是'架构选择'
CPU 使用 eLBC、DSP 使用 XINTF,并非谁'用不了'谁的接口,而是:
不同处理器按照自身架构优势,选择最匹配的接口模型。

