上电自动加载 FPGA 程序 — SOPC Flash 烧录实验教程

来源:FPGA 培训资料(2012年),Altera SOPC 上电自动加载实验 云盘路径:/工作相关/FPGA培训资料/FPGA培训_2012_07/sopc实验/上电自动加载程序.pdf


实验目标

实现 FPGA 上电后自动从 Flash 加载配置文件并运行软件程序,无需每次通过 JTAG 下载。

系统架构

FPGA (SOPC System)
  ├── Nios II Processor (Standard)
  ├── On-Chip Memory (RAM/ROM)
  ├── Flash Memory (CFI) — 程序存储
  ├── Avalon-MM Tristate Bridge
  └── PIO (Parallel I/O) — LED 控制

关键组件配置

1. Nios II Processor

  • 版本:Standard(非 Fast,适合教学)
  • Reset Vector 指向 cfi_flash(Flash 起始地址)

2. Avalon-MM Tristate Bridge

  • Incoming Signals:Registered
  • Shared Signals:data, address, read_n 全选
  • 作用:实现 Flash 和 On-Chip Memory 的总线分时复用

3. Flash Memory (CFI)

  • Presets:Custom
  • 地址线宽度:22 位(4MB 寻址空间)
  • 数据线:8 位
  • Timing:Setup=40ns, Wait=160ns, Hold=40ns

4. PIO (Parallel I/O)

  • 模式:位输出
  • 位数:8 位(控制 8 个 LED)
  • 用途:跑马灯演示

实验步骤

  1. 建立 SOPC 工程:在 SOPC Builder 中构建 ftest 系统,添加上述组件
  2. 生成系统:点击 Generate 生成 .sof 文件
  3. Quartus 顶层设计:
    • 建立 Verilog 顶层模块,实例化 SOPC 系统
    • 添加 Flash Reset 输出管脚,连接到全局 Reset
    • 所有 Nios II 系统信号引出管脚
  4. 引脚锁定:分析综合后进入 Pin Planner 锁定管脚
  5. 全编译:生成 .sof 配置文件
  6. Nios II IDE 软件设计:
    • 使用 Nios II LED 示例工程
    • 指定 SOPC Builder System PTF File
  7. Flash 烧录:
    • Tool → Flash Programmer
    • 点击 Program Flash 将程序烧入 Flash
  8. 验证:断电重启后,FPGA 配置从 Flash 加载,程序自动运行

关键技术点

  • Tristate Bridge 的作用:Flash 和 On-Chip Memory 不能同时驱动总线,通过三态桥实现分时访问
  • Reset Vector 配置:必须指向 Flash 起始地址,确保上电后 CPU 从 Flash 取指令
  • Flash 时序:CFI Flash 的 Setup/Wait/Hold 参数需匹配实际硬件时序

相关文件

  • SOPC Builder 系统配置文件(.ptf)
  • Quartus 项目文件(.qpf)
  • Nios II 应用软件(C 代码)
  • Flash Programmer 烧录配置