【IF-05】总线互连与桥接 – SRI/FPI体系
作者:Infineon AURIX技术深度解析系列
发布时间:2026-06-12
目录
1. 概述:为什么需要总线互连?
在现代高性能微控制器(MCU)中,芯片上集成了大量的处理器核、存储单元、外设和专用加速器。这些模块需要通过高速互连网络进行数据交换。总线互连(Bus Interconnect)就是连接这些模块的"高速公路",其性能直接影响整个系统的运行效率。
AURIX TC3xx系列采用了双层总线架构:
- SRI(System Router Interface):系统路由接口,用于高性能计算单元之间的高速互联
- FPI(Fast Peripheral Interface):快速外设接口,用于CPU与低速外设之间的通信
title="图1 SRI/FPI总线架构概览"/>
2. SRI总线体系架构
2.1 SRI总线拓扑结构
SRI是一种基于Crossbar(交叉开关)的片上互联架构,支持多个主设备(Master)和从设备(Slave)同时进行数据传输而互不干扰。相比传统的共享总线架构,SRI具有以下优势:
- 并行性:多个事务可以同时进行
- 低延迟:点对点直连,无仲裁等待
- 高带宽:每对主从之间可达到独立的最大带宽
title="图2 TC37x Block Diagram"/>
2.2 SRI主设备(Initiators)
TC3xx系列中的SRI主设备包括:
// SRI主设备列表
typedef enum {
SRI_INITIATOR_CPU0 = 0, // CPU0 TriCore
SRI_INITIATOR_CPU1, // CPU1 TriCore
SRI_INITIATOR_CPU2, // CPU2 TriCore
SRI_INITIATOR_CPU3, // CPU3 TriCore
SRI_INITIATOR_CPU4, // CPU4 TriCore
SRI_INITIATOR_CPU5, // CPU5 TriCore
SRI_INITIATOR_DMA, // DMA控制器
SRI_INITIATOR_HSM, // 硬件安全模块
SRI_INITIATOR_DEBUG // JTAG/OCDS调试
} SRI_InitiatorType;
2.3 SRI从设备(Targets)
SRI从设备包括各大存储区域和外设接口:
// SRI从设备地址映射
#define SRI_ADDR_FLASH0 0x80000000 // Program Flash 0
#define SRI_ADDR_FLASH1 0x80100000 // Program Flash 1
#define SRI_ADDR_SRAM0 0x50000000 // Data SRAM 0
#define SRI_ADDR_SRAM1 0x50100000 // Data SRAM 1
#define SRI_ADDR_EMEM 0x10000000 // Extension Memory
#define SRI_ADDR_SRI_REG 0xF0030000 // SRI配置寄存器
title="图3 FPI基本事务"/>
3. SRI从设备访问与仲裁
3.1 仲裁策略
当多个主设备同时访问同一个从设备时,SRI使用可配置的仲裁策略:
- 固定优先级:每个主设备分配固定优先级
- 轮询(Round-Robin):公平访问
- 时间片:按时间片轮换
3.2 访问属性
// SRI访问属性
typedef struct {
uint32_t addr; // 访问地址
uint8_t len; // 数据长度 (0=byte, 1=halfword, 2=word)
uint8_t burst; // 突发传输长度
bool privileged; // 特权模式访问
bool secure; // 安全区域访问
bool writeThrough; // 写穿缓存
bool readAlloc; // 读分配缓存
} SRI_AccessAttrType;
4. FPI总线详解
4.1 FPI总线特性
FPI(Fast Peripheral Interface)是连接CPU子系统与外设的低延迟总线。相比SRI,FPI具有:
- 简化的协议,减少协议开销
- 更低的访问延迟(通常2-3个时钟周期)
- 支持DMA直接访问
- 集成EDC(错误检测与纠正)
4.2 FPI事务类型
// FPI事务类型
typedef enum {
FPI_READ = 0x0, // 单次读
FPI_WRITE = 0x1, // 单次写
FPI_BURST4 = 0x2, // 4拍突发读/写
FPI_BURST8 = 0x3, // 8拍突发读/写
FPI_BURST16 = 0x4 // 16拍突发读/写
} FPI_TransactionType;
4.3 FPI地址映射
// FPI外设地址示例
#define FPI_ADDR_MSC0 0xF0020000 // MultiSPI 0
#define FPI_ADDR_CAN0 0xF0028000 // CAN/CAN-FD 0
#define FPI_ADDR_ETHERNET 0xF002C000 // Ethernet MAC
#define FPI_ADDR_DMA 0xF0034000 // DMA控制单元
5. SRI与FPI的协同工作
5.1 桥接架构
SRI和FPI通过桥接器(Bridge)进行互联。桥接器的主要功能:
- 协议转换:SRI协议 ↔ FPI协议
- 地址转换:SRI地址空间 ↔ FPI地址空间
- 数据宽度适配:64位/32位互转
- 事务排队与调度
title="图5 FPI EDC保护"/>
5.2 跨域访问延迟
// 访问延迟参考(以CPU时钟为基准)
// CPU核心 -> SRI -> SRAM: 3-4 周期
// CPU核心 -> SRI -> Flash: 6-8 周期 (取决于预取)
// CPU核心 -> FPI Bridge -> 外设: 5-7 周期
// DMA -> SRI -> SRAM: 2-3 周期
6. EDC错误检测与纠正
6.1 EDC机制概述
FPI总线集成了Enhanced Data Correction(EDC)机制,用于检测和纠正数据传输错误:
- 奇偶校验:基础错误检测
- ECC:单比特纠错,多比特检测
title="图6 FPI EDC报警"/>
6.2 EDC配置
// FPI EDC寄存器配置
typedef struct {
uint8_t edcMode; // EDC模式 (0=关闭, 1=奇偶, 2=ECC)
uint8_t dataParity; // 数据奇偶校验使能
uint8_t addrParity; // 地址奇偶校验使能
bool correctOnRead; // 读时自动纠错
bool trapOnError; // 错误时触发陷阱
} FPI_EDCConfigType;
7. 触发机制与调试
7.1 地址触发
SRI/FPI支持基于地址的触发功能,可用于:
- 调试:捕获特定地址的访问
- 性能分析:统计访问模式
- 安全监控:检测非法访问
title="图7 地址触发示意"/>
7.2 信号触发
除了地址触发,还支持信号级触发:
// 触发条件类型
typedef enum {
TRIG_READ = 0, // 读访问
TRIG_WRITE = 1, // 写访问
TRIG_BURST = 2, // 突发传输
TRIG_USER0 = 4, // 用户自定义信号0
TRIG_USER1 = 5, // 用户自定义信号1
TRIG_ERROR = 7 // 错误条件
} SRI_TriggerConditionType;
title="图8 信号触发"/>
8. TC3xx系列总线互连实例
8.1 TC37x Block Diagram分析
8.2 关键特性
// TC37x总线配置示例
// SRI主设备
– 6个TriCore CPU (含Lockstep对)
– 1个DMA控制器
– 1个HSM硬件安全模块
// SRI从设备
– 2个Program Flash (共4MB)
– 3个SRAM区域 (共736KB)
– 1个EMEM接口
// FPI外设
– 3x CAN/CAN-FD
– 2x MultiSPI
– 1x Ethernet (1Gbps)
– 1x GTM定时器
– 1x ADC/DMA接口
9. 总结
本文详细介绍了AURIX TC3xx系列的总线互连体系:
理解SRI/FPI体系对于AURIX系统设计和性能优化至关重要。下一篇文章将深入探讨TC3xx的DMA传输机制。
title="图10 思维导图:总线互连与桥接"/>