3. Quartus Prime工程创建与引脚规划

在SoC嵌入式Linux开发流程中,Quartus Prime工程是承载硬件系统的“容器”。它决定了使用哪颗FPGA/SoC器件、包含哪些IP、引脚如何连接、I/O电气特性是否满足外部电路要求。本节以Cyclone V SoC(示例器件:5CSEMA5F31C6,DE1-SoC开发板常用型号)为对象,完整走一遍从新建工程到引脚约束的流程,并说明每一步背后的判断依据。

一、新建工程与器件选择

启动Quartus Prime后,通过 File → New Project Wizard 进入向导。工程目录建议独立于源码目录,例如 D:/soc_linux/de1soc_hps,工程名与顶层实体名保持一致(如 de1soc_hps_top),避免后续综合时找不到顶层。向导中需要指定源文件、IP文件与EDA工具设置,若暂时没有HDL源文件,可先跳过,后续通过Platform Designer生成后再添加。

器件选择是工程创建中最关键的一步。在 Device Family 中选择 Cyclone V,然后在器件列表中精确匹配封装、引脚数与速度等级。以DE1-SoC为例,应选择 5CSEMA5F31C6:其中 5C 表示Cyclone V,SE 表示SoC with Enhanced逻辑,MA5 为密度等级,F31 为FBGA-896封装,C6 为速度等级。器件选错会导致引脚不可用、HPS外设映射错误,甚至无法生成SOF文件。

若开发板厂商提供了 .qsf 或 .qpf 模板,可直接导入,能省去大量引脚与电压标准的手工配置,但仍需核对器件型号是否与实物一致。

二、添加Qsys/Platform Designer系统

Cyclone V SoC的HPS(Hard Processor System)并非直接例化,而是通过Platform Designer(旧称Qsys)以IP子系统形式生成。在Quartus中打开 Tools → Platform Designer,新建系统并保存为 hps_system.qsys。核心组件是 Arria V/Cyclone V Hard Processor System,添加后需要配置:

  • HPS时钟:输入参考时钟(如50 MHz),配置MPU、L3、DDR等PLL输出频率;
  • SDRAM:选择DDR3,设置位宽(如32位)、时序参数与引脚位置;
  • 外设引脚:使能UART0、SD/MMC、Ethernet、USB等,并映射到HPS专用I/O;
  • FPGA接口:使能HPS-to-FPGA、FPGA-to-HPS、Lightweight桥,供后续逻辑访问。

配置完成后执行 Generate HDL,Platform Designer会输出Verilog/VHDL封装、.qip文件以及引脚约束片段。将该 .qip 加入Quartus工程,并在顶层文件中例化生成的系统模块,把HPS的时钟、复位与外部信号引出。

Cyclone V SoC 工程结构与引脚约束关系 Quartus Prime 工程 de1soc_hps_top HPS 子系统 (hps_system.qsys) 双核 ARM Cortex-A9 800 MHz / 1 GB DDR3 HPS 外设控制器 UART0 / SDMMC / EMAC / USB HPS-FPGA 桥 AXI / Lightweight / 中断 时钟与复位管理 50 MHz 输入 / PLL 输出 生成 HDL + .qip + 引脚约束片段 FPGA 逻辑 PIO / 自定义 IP LED / KEY / 扩展口 片上存储器 On-Chip Memory PLL / 时钟分频 为外设提供时钟 顶层例化 de1soc_hps_top.v 综合 / 布局布线 板级外设 DDR3 SDRAM UART / JTAG SD 卡 / 以太网 LED / KEY / GPIO 引脚约束 .qsf 电压标准 / 驱动 AXI 桥 引脚分配与 I/O 约束回写工程

三、引脚分配与电压标准

引脚分配的本质是把顶层端口映射到器件的物理引脚,并声明其电气标准。在Quartus中打开 Assignments → Pin Planner,或在 .qsf 中直接书写约束。以DE1-SoC为例,HPS的UART0、SD卡、以太网等信号使用HPS专用引脚,通常由Platform Designer自动生成;而FPGA侧的LED、KEY、GPIO则需手工分配。

电压标准必须与开发板实际供电一致。DE1-SoC的FPGA I/O bank普遍为3.3 V,因此LED、KEY等信号应设置为 3.3-V LVTTL;若某bank由2.5 V供电,则必须改为 2.5 V,否则可能损坏器件或导致电平不识别。对于DDR3接口,电压标准为 SSTL-15,且需配合ODT与驱动强度设置。以下为示例约束片段:

set_location_assignment PIN_AB12 -to LED[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LED[0]
set_location_assignment PIN_AC12 -to KEY[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to KEY[0]
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to KEY[0]
set_location_assignment PIN_AF14 -to HPS_UART0_TX
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HPS_UART0_TX

其中 WEAK_PULL_UP_RESISTOR ON 用于按键输入,避免悬空导致误触发。对于输出信号,还可设置 CURRENT_STRENGTH_NEW(如8 mA)与 SLEW_RATE,在驱动能力与EMI之间取得平衡。

四、I/O约束与常见问题

引脚规划完成后,应执行 Processing → Start → Start Analysis & Synthesis,再运行 Start Fitter。若引脚冲突、电压标准与bank供电不匹配,Fitter会报错并指出具体引脚。常见问题包括:

  • 引脚重复分配:同一物理引脚被两个端口占用,需检查Pin Planner中的冲突提示;
  • 电压标准与bank冲突:同一I/O bank内不同电压标准不能混用,需按bank统一;
  • 专用引脚误用:配置引脚(如 nCEO、MSEL)不可作为普通I/O;
  • HPS引脚被覆盖:手工分配时误改HPS专用引脚,导致HPS无法启动。
修改引脚约束后必须重新运行Fitter,仅做Analysis & Synthesis不会更新引脚映射。生成SOF前建议用 Assignments → Device → Device and Pin Options 检查未使用引脚状态,通常设为 As input tri-stated 更安全。

五、工程检查清单

在进入下一阶段前,可用下表快速核对工程状态。该清单为示例性检查项,实际项目中可根据板级差异增删。

检查项预期状态判断依据
器件型号5CSEMA5F31C6与开发板丝印一致
顶层实体de1soc_hps_top与工程名一致,综合无警告
Platform Designer系统已生成HDL并加入工程.qip存在且被引用
引脚分配无冲突、无未分配关键信号Pin Planner无红色提示
电压标准与bank供电一致Fitter无IO_STANDARD错误
未使用引脚As input tri-statedDevice and Pin Options设置

完成以上步骤后,工程已具备生成SOF与后续HPS启动的基础。引脚规划不是一次性动作,当外设增减或板级改版时,需要同步更新 .qsf 并重新编译,确保硬件描述与物理连接始终一致。