一、引言:典型异构处理系统架构
在航空电子、工业控制、高速信号处理等领域,CPU + FPGA + DSP 的异构处理架构被广泛采用。三者各司其职:
-
CPU:系统管理、任务调度、通信协议、上层控制
-
FPGA:高速并行逻辑、数据汇聚、接口适配
-
DSP:实时数字信号处理、滤波、FFT、调制解调等算法
在这种架构下,一个绕不开的问题是:
为什么 CPU 和 FPGA 之间通常使用 eLBC,而 DSP 和 FPGA 之间却使用 XINTF?
这并非历史包袱或随意选择,而是由器件架构、接口定位以及系统实时性需求共同决定的。
二、系统总体连接关系
一个典型的工程连接关系如下:
eLBC XINTF CPU <--------> FPGA <----------------> DSP
FPGA 位于系统中心,分别与 CPU 和 DSP 连接,但使用了两种完全不同的接口:
-
CPU ↔ FPGA:eLBC(Enhanced Local Bus Controller)
-
DSP ↔ FPGA:XINTF(External Interface)
要理解这种设计,首先需要明确 eLBC 和 XINTF 各自的定位。
三、eLBC:面向 CPU 的本地外设总线
1. eLBC 的本质
eLBC 是 CPU SoC 内部集成的一种本地并行总线控制器,常见于 PowerPC 或部分 ARM SoC 中。它的设计目标是:
-
挂接外部并行设备
-
FPGA
-
NOR Flash
-
CPLD
-
外部 SRAM
-
-
提供灵活的地址映射与时序配置能力
从系统角度看,eLBC 更像是:
CPU 的"外设扩展总线"
2. eLBC 的典型特征
-
多片选(CS)支持
-
灵活的读写时序配置
-
支持不同数据宽度(8/16/32 bit)
-
与 CPU 的 cache、MMU、总线仲裁体系紧密相关
因此,eLBC 非常适合用于:
-
CPU 对 FPGA 寄存器的配置
-
状态查询
-
低到中等带宽的数据交互
四、DSP 的接口哲学:为什么没有 eLBC?
1. DSP 的设计目标不同
DSP 的核心设计目标并不是"系统管理",而是:
-
高吞吐、低延迟的数值运算
-
强实时性、确定性执行
-
尽量减少复杂的总线和仲裁逻辑
因此,大多数 DSP 并不集成 eLBC 这种复杂的外设总线控制器。
2. DSP 提供的解决方案:XINTF
DSP 通常提供的是:
- XINTF / EMIF(External Interface / External Memory Interface)
其定位非常明确:
将外部器件当作"外部存储器"来访问
这正是 XINTF 的核心思想。
五、XINTF:面向 DSP 的外部存储接口
1. XINTF 的工作模型
在 DSP 看来,通过 XINTF 连接的 FPGA 并不是"外设",而是:
一段映射到外部地址空间的存储区域
DSP 访问 FPGA 的方式是:
data = *(volatile Uint16 *)0x90000000;
这条普通的内存读指令,就会自动触发一次完整的 XINTF 总线读时序。
2. XINTF 的典型特征
-
固定或半固定的时序模型
-
确定性的访问延迟
-
无复杂仲裁
-
硬件自动完成总线控制
这使得 XINTF 非常适合:
-
DSP ↔ FPGA 的高速数据交换
-
FIFO、Ping-Pong Buffer
-
实时数据流传输
六、eLBC 与 XINTF 的工程对比
| 对比维度 | eLBC(CPU) | XINTF(DSP) |
|---|---|---|
| 设计目标 | 通用外设扩展 | 实时数据访问 |
| 接口定位 | 本地外设总线 | 外部存储接口 |
| 时序灵活性 | 很高 | 中等 |
| 实时确定性 | 一般 | 很强 |
| 软件模型 | 外设 / 寄存器 | 内存映射 |
| 典型用途 | 配置、控制 | 高速数据流 |
可以看到,两者并不存在"谁更高级"的关系,而是各司其职。
七、为什么 FPGA 可以同时支持 eLBC 和 XINTF?
在整个系统中,FPGA 的角色是:
被访问的从设备
FPGA 本身并不关心对端是 CPU 还是 DSP,它只需要:
-
正确解析地址
-
在匹配的时序下驱动数据线
因此,在 FPGA 内部完全可以实现:
-
一套 eLBC 从接口逻辑
-
一套 XINTF 从接口逻辑
这也是 FPGA 在异构系统中承担"桥接与汇聚"角色的根本原因。
八、从系统架构角度看,这是"最优解"
从工程实践来看:
-
CPU ↔ FPGA(eLBC)
-
偏控制
-
偏配置
-
对实时性要求相对较低
-
-
DSP ↔ FPGA(XINTF)
-
偏数据
-
偏实时处理
-
对确定性要求极高
-
这种接口分工:
-
降低系统复杂度
-
提升实时性能
-
符合各处理器的架构优势
是非常成熟、理性的工程选择。
九、总结
-
eLBC 是 为 CPU 设计的本地外设总线
-
DSP 架构中通常 不包含 eLBC
-
XINTF 是 DSP 的外部存储接口
-
FPGA 可以同时适配多种主设备接口
-
CPU--FPGA--DSP 使用不同接口,是体系结构决定的必然结果