跳到主要内容
SoC设计

SoC 基本架构

SoC片上系统核心架构详解

SOC 架构

SoC 基本架构

什么是 SoC

SoC(System on Chip,片上系统) 是将整个电子系统集成在单一芯片上的解决方案。它将处理器、存储器、外设接口、总线系统等所有功能模块集成在一个芯片中,形成完整的系统级芯片。

SoC 核心架构图

┌─────────────────────────────────────────────────────────────────┐
│                        SoC 芯片                                  │
├─────────────────────────────────────────────────────────────────┤
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐         │
│  │   CPU 核心   │   │   GPU 核心   │   │  DSP 核心    │         │
│  │  (处理器)    │   │  (图形处理)   │   │(数字信号处理)│         │
│  └──────┬──────┘    └──────┬──────┘    └──────┬──────┘         │
│         │                  │                  │                 │
│         └──────────────────┼──────────────────┘                 │
│                            │                                    │
│  ┌─────────────────────────▼─────────────────────────┐         │
│  │              系统总线 / 互联矩阵                   │         │
│  │           (AXI / AHB / APB / NoC)                 │         │
│  └───┬───────────┬───────────┬───────────┬───────────┘         │
│      │           │           │           │                     │
│  ┌───▼───┐   ┌───▼───┐   ┌───▼───┐   ┌───▼───┐               │
│  │  ROM  │   │  SRAM │   │  DRAM │   │ Flash │               │
│  │       │   │ 控制器 │  │ 控制器 │   │ 控制器 │               │
│  └───────┘   └───────┘   └───────┘   └───────┘               │
│                                                               │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │                    外设接口层                            │ │
│  ├─────────┬─────────┬─────────┬─────────┬─────────┬───────┤ │
│  │  UART   │   SPI   │   I2C   │   USB   │  HDMI   │  ...  │ │
│  └─────────┴─────────┴─────────┴─────────┴─────────┴───────┘ │
│                                                              │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │                    模拟/混合信号                         │ │
│  ├─────────┬─────────┬─────────┬─────────┬─────────────────┤ │
│  │   PLL   │   ADC   │   DAC   │   PHY   │   电源管理       │ │
│  └─────────┴─────────┴─────────┴─────────┴─────────────────┘ │
└──────────────────────────────────────────────────────────────┘

核心组件详解

1. 处理器子系统

1.1 CPU 核心

类型说明应用场景
RISC-V开源指令集,可定制IoT、嵌入式、学习
ARM Cortex-M低功耗微控制器MCU、可穿戴设备
ARM Cortex-A高性能应用处理器智能手机、平板
ARM Cortex-R实时处理器汽车、工业控制
x86复杂指令集PC、服务器

1.2 多核架构

// 多核 SoC 顶层结构示意
module soc_top;
    // CPU 核心阵列
    cpu_core #(.CORE_ID(0)) cpu0 (.clk(clk), .rst_n(rst_n), .bus_if(bus));
    cpu_core #(.CORE_ID(1)) cpu1 (.clk(clk), .rst_n(rst_n), .bus_if(bus));
    cpu_core #(.CORE_ID(2)) cpu2 (.clk(clk), .rst_n(rst_n), .bus_if(bus));
    cpu_core #(.CORE_ID(3)) cpu3 (.clk(clk), .rst_n(rst_n), .bus_if(bus));
    
    // 一致性控制器 (确保多核缓存一致)
    cache_coherency_controller coh (.bus_if(bus), .snoop_if(snoop));
endmodule

2. 存储子系统

2.1 存储层次结构

寄存器文件 (RF)
    ↓  延迟: 0 周期
L1 指令缓存 (I-Cache)
L1 数据缓存 (D-Cache)
    ↓  延迟: 1-2 周期
L2 缓存 (统一)
    ↓  延迟: 5-10 周期
L3 缓存 (可选)
    ↓  延迟: 20-50 周期
主存 (DDR/LPDDR)
    ↓  延迟: 100-200 周期
外部存储 (NAND/eMMC)

2.2 存储控制器

控制器类型功能典型接口
DDR 控制器主存访问DDR3/DDR4/LPDDR4/5
SRAM 控制器片上高速存储SRAM/TCM
Flash 控制器非易失存储NAND/NOR/eMMC
OTP 控制器一次性编程eFuse

3. 总线互联

3.1 AXI 总线架构

主设备 (Master)                    从设备 (Slave)
┌─────────┐                    ┌─────────┐
│  CPU    │───AXI Master──────│  DDR    │
│  Core   │    读/写通道       │ 控制器   │
└─────────┘                    └─────────┘
     │                              │
     │    ┌─────────────────────┐   │
     └────│    AXI 互联矩阵     │───┘
          │  (Crossbar/NoC)     │
     ┌────│                     │───┐
     │    └─────────────────────┘   │
     │                              │
┌─────────┐                    ┌─────────┐
│  DMA    │───AXI Master──────│  SRAM   │
│ 控制器   │                    │ 控制器   │
└─────────┘                    └─────────┘

3.2 AXI 信号接口

// AXI4 接口定义 (简化版)
interface axi_if(input logic aclk, input logic aresetn);
    // 写地址通道
    logic [31:0] awaddr;
    logic [7:0]  awlen;
    logic [2:0]  awsize;
    logic        awvalid;
    logic        awready;
    
    // 写数据通道
    logic [31:0] wdata;
    logic [3:0]  wstrb;
    logic        wlast;
    logic        wvalid;
    logic        wready;
    
    // 写响应通道
    logic [1:0]  bresp;
    logic        bvalid;
    logic        bready;
    
    // 读地址通道
    logic [31:0] araddr;
    logic [7:0]  arlen;
    logic [2:0]  arsize;
    logic        arvalid;
    logic        arready;
    
    // 读数据通道
    logic [31:0] rdata;
    logic [1:0]  rresp;
    logic        rlast;
    logic        rvalid;
    logic        rready;
endinterface

4. 外设接口

4.1 通信接口

接口速率特点应用
UART115.2K-3M bps异步、简单调试、低速通信
SPI1-100 MHz同步、全双工Flash、传感器
I2C100K-3.4M bps多主、多从EEPROM、RTC
USB1.5-20 Gbps即插即用外设连接
PCIe2.5-32 GT/s高速、点对点显卡、SSD
Ethernet10M-400Gbps网络通信以太网
HDMI2.25-48 Gbps高清视频显示输出

4.2 低速外设

外设功能
GPIO通用输入输出,可配置方向
Timer定时器,产生中断或PWM
Watchdog看门狗,防止系统死锁
RTC实时时钟,低功耗计时
ADC/DAC模数/数模转换

5. 中断系统

5.1 中断控制器架构

外设中断源                    中断控制器                 CPU
┌─────────┐                ┌─────────────┐          ┌─────────┐
│  UART   │──IRQ[0]───────│             │───FIQ────│         │
│  SPI    │──IRQ[1]───────│   GIC       │───IRQ────│  CPU    │
│  I2C    │──IRQ[2]───────│  (通用中断   │          │  Core   │
│  Timer  │──IRQ[3]───────│   控制器)    │          │         │
│  GPIO   │──IRQ[4]───────│             │          │         │
│  DMA    │──IRQ[5]───────│  ┌────────┐ │          │         │
│  ...    │──...──────────│  │优先级   │ │          │         │
│  SGI    │──IRQ[n]───────│  │仲裁器   │ │          │         │
└─────────┘                │  └────────┘ │          └─────────┘
                           └─────────────┘

5.2 中断类型

类型说明
FIQ (Fast IRQ)快速中断,低延迟
IRQ (Interrupt Request)普通中断
SGI (Software Generated)软件触发中断
PPI (Private Peripheral)私有外设中断
SPI (Shared Peripheral)共享外设中断

6. DMA 控制器

// DMA 控制器简化模型
module dma_controller (
    input  logic        clk,
    input  logic        rst_n,
    
    // AXI Master 接口
    axi_if.master       axi_m,
    
    // 通道控制
    input  logic [31:0] src_addr,
    input  logic [31:0] dst_addr,
    input  logic [31:0] transfer_size,
    input  logic        start,
    output logic        done
);
    // DMA 传输状态机
    typedef enum logic [2:0] {
        IDLE,
        READ_BURST,
        WRITE_BURST,
        DONE
    } state_t;
    
    state_t state;
    
    always_ff @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            state <= IDLE;
        end else begin
            case (state)
                IDLE: if (start) state <= READ_BURST;
                READ_BURST: if (arready) state <= WRITE_BURST;
                WRITE_BURST: if (wready) state <= DONE;
                DONE: state <= IDLE;
            endcase
        end
    end
endmodule

7. 时钟与复位

7.1 时钟域

外部晶振 (24MHz)


┌─────────┐
│   PLL   │──── CPU_CLK (1.2GHz)
│         │──── MEM_CLK (800MHz)
│         │──── PER_CLK (100MHz)
│         │──── IO_CLK (48MHz)
└─────────┘


┌─────────────────────────────────────┐
│           时钟分发网络                │
├─────────────────────────────────────┤
│  CPU 域     │  存储域   │  外设域    │
│  (高频)     │  (中频)   │  (低频)    │
└─────────────────────────────────────┘

7.2 复位策略

复位类型说明优先级
Power-on Reset上电复位最高
External Reset外部复位引脚
Watchdog Reset看门狗超时
Software Reset软件触发
Brown-out Reset欠压复位自动

8. 电源管理

8.1 电源域划分

┌─────────────────────────────────────────┐
│              电源域 (Power Domain)        │
├─────────────────────────────────────────┤
│  PD_ALWAYS    │ 始终供电 (RTC, WDT)      │
├───────────────┼─────────────────────────┤
│  PD_CPU       │ CPU 域 (可关闭)          │
├───────────────┼─────────────────────────┤
│  PD_GPU       │ GPU 域 (可关闭)          │
├───────────────┼─────────────────────────┤
│  PD_IO        │ IO 域 (可降压)           │
├───────────────┼─────────────────────────┤
│  PD_MEM       │ 存储域 (自刷新)          │
└─────────────────────────────────────────┘

8.2 低功耗模式

模式功耗唤醒时间说明
Active-正常工作
Idle立即CPU 时钟停止
Sleep毫秒大部分模块关闭
Deep Sleep极低仅保持 RAM
Power-off0手动完全断电

9. 安全架构

9.1 安全组件

┌─────────────────────────────────────────────┐
│                安全子系统                     │
├─────────────────────────────────────────────┤
│  ┌─────────┐  ┌─────────┐  ┌─────────┐     │
│  │ TrustZone│  │   TEE   │  │ Crypto  │     │
│  │  (ARM)  │  │  安全区  │  │ Engine  │     │
│  └─────────┘  └─────────┘  └─────────┘     │
│                                             │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐     │
│  │ Secure  │  │  Debug  │  │  eFuse  │     │
│  │ Boot    │  │  Auth   │  │  密钥   │     │
│  └─────────┘  └─────────┘  └─────────┘     │
└─────────────────────────────────────────────┘

9.2 TrustZone 区域

区域权限用途
Secure World高权限安全启动、密钥管理、DRM
Non-secure World普通权限正常应用运行
Monitor Mode切换世界切换处理

10. 典型 SoC 产品对比

产品线CPUGPU应用
STM32Cortex-MMCU、工业控制
i.MX RTCortex-M7IoT、边缘计算
RP2040Cortex-M0+教育、原型
SnapdragonCortex-A78Adreno智能手机
Apple M系列Firestorm/IcestormApple GPUPC、工作站

SoC 设计流程

需求分析 → 架构设计 → RTL 编写 → 功能验证 → 综合实现 → 后端设计 → 流片
    │          │          │          │          │          │         │
    ▼          ▼          ▼          ▼          ▼          ▼         ▼
  规格书    模块划分   Verilog   Testbench  门级网表   物理版图   芯片

参考资源

  • AMBA 协议规范: ARM 官方文档
  • RISC-V 架构手册: riscv.org
  • 《数字设计与计算机体系结构》: Harris & Harris
  • 《SoC 设计方法与实现》: 蒋本珊

最后更新: 2026-07-13