2. SoC架构与HPS-FPGA桥接
Cyclone V SoC 与 Arria 10 SoC 都属于“双世界”芯片:一侧是硬核处理器系统 HPS(Hard Processor System),另一侧是可编程逻辑 FPGA。两者不是简单拼接,而是通过一组专用桥接通道连接,使 HPS 能像访问普通外设一样访问 FPGA 中的寄存器与存储器,FPGA 也能反向访问 HPS 的 DDR 与片上 RAM。理解这套桥接结构,是后续用 Platform Designer 搭建互联系统的前提。
一、HPS 内部结构与 FPGA 的角色
HPS 内部集成了 ARM Cortex-A9(Cyclone V)或 Cortex-A10(Arria 10)双核、L2 Cache、DDR 控制器、片上 RAM、SD/MMC、USB、以太网、UART、I2C、SPI 等硬核外设,以及一个轻量级 FPGA 接口。FPGA 侧则由逻辑单元、DSP、Block RAM、PLL 和大量可配置 I/O 组成。二者共享同一封装,但供电域、时钟域和复位域相互独立,因此桥接设计必须处理跨时钟域与地址映射问题。
从软件视角看,HPS 把 FPGA 当作一段可读写的地址空间;从硬件视角看,FPGA 把 HPS 当作一个 AXI/Avalon 主机或从机。这种“双向主从”关系,正是 SoC 桥接的核心。
二、三类桥接通道
HPS 与 FPGA 之间通常有三类桥:
- HPS-to-FPGA 桥:HPS 作为主机,访问 FPGA 中的 Avalon-MM 从机(如自定义寄存器、DMA 描述符、片上 RAM)。
- FPGA-to-HPS 桥:FPGA 作为主机,访问 HPS 的 DDR、片上 RAM 或外设寄存器,常用于 DMA 搬运和硬件加速器回写结果。
- 轻量级 HPS-to-FPGA 桥:带宽较低、延迟较小,适合访问控制寄存器、状态寄存器等小数据量场景。
在 Cyclone V 中,HPS-to-FPGA 桥通常映射到 0xC0000000 起始的地址段,FPGA-to-HPS 桥则映射到 HPS 侧 0xC0000000 附近的不同窗口。具体基地址由 Quartus 的 HPS 配置决定,必须在 Platform Designer 中与软件头文件保持一致。
三、AXI、Avalon-MM 与 Avalon-ST
三种协议各有分工:
- AXI:ARM 生态标准,支持突发传输、读写通道分离、多主机多从机互联,适合高带宽 DDR 访问与复杂 SoC 互联。
- Avalon-MM:Intel FPGA 传统存储器映射总线,信号简单,适合寄存器读写和轻量级外设,Platform Designer 中大量 IP 默认使用它。
- Avalon-ST:面向流数据,带
valid、ready、data、empty、error等信号,适合视频、ADC、DMA 等连续数据通路。
桥接时,Platform Designer 会自动插入协议转换器,例如把 HPS 的 AXI 主机转换为 Avalon-MM 从机,或把 Avalon-ST 流接入 DMA。设计者需要关注的是位宽、突发长度、时钟域和地址对齐,而不是手动编写转换逻辑。
四、用 Platform Designer 搭建互联系统
Platform Designer(旧称 Qsys)是 Intel 的 SoC 集成工具。典型流程如下:
- 新建系统,添加
HPS组件,配置 DDR 时序、外设引脚、时钟与复位。 - 在 HPS 的 FPGA Interfaces 页中使能所需桥:
HPS-to-FPGA、FPGA-to-HPS、Lightweight HPS-to-FPGA,并设置数据位宽(如 64 位或 128 位)。 - 添加自定义 Avalon-MM 从机 IP,将其
avalon_slave接口连接到 HPS-to-FPGA 桥的主端口。 - 若需要 FPGA 主动搬运数据,添加 DMA 或 Avalon-MM Master IP,连接到 FPGA-to-HPS 桥的从端口。
- 为每个 IP 分配基地址,确保地址区间不重叠,并生成
.qsys与.sopcinfo文件。 - 在 Quartus 中综合、布局布线,生成
.sof;在 SoC EDS 或 Linux 中根据.sopcinfo生成头文件,供驱动使用。
一个常见的教学示例是:HPS 通过 HPS-to-FPGA 桥向 FPGA 中的 0x0000_0000 偏移写入控制字,启动 FPGA 侧的流式处理;处理完成后,FPGA 通过 FPGA-to-HPS 桥把结果写入 HPS DDR 的 0x3F00_0000 缓冲区,并触发中断。软件读取该缓冲区即可验证结果。这里的地址、位宽和中断号都必须在 Platform Designer 与软件中保持一致,否则会出现“写进去读不出”或“DMA 不搬数”的典型问题。
.sopcinfo。
五、协议选择与常见排障
选择协议时,可以遵循以下判断:控制寄存器用 Avalon-MM;高带宽 DDR 访问用 AXI;连续数据流用 Avalon-ST。若 IP 只支持 Avalon-MM,而 HPS 侧是 AXI,Platform Designer 会自动插入 AXI to Avalon-MM 转换器,但会引入额外延迟,必要时可手动优化突发长度。
常见问题包括:地址映射错误导致访问越界;时钟域未正确约束导致亚稳态;位宽不匹配导致数据截断;DMA 描述符未对齐导致传输失败。排查时先用 System Console 读取桥接状态寄存器,确认桥是否使能、地址是否命中,再检查时序约束与复位释放顺序。