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的时钟、复位与外部信号引出。
三、引脚分配与电压标准
引脚分配的本质是把顶层端口映射到器件的物理引脚,并声明其电气标准。在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无法启动。
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-stated | Device and Pin Options设置 |
完成以上步骤后,工程已具备生成SOF与后续HPS启动的基础。引脚规划不是一次性动作,当外设增减或板级改版时,需要同步更新 .qsf 并重新编译,确保硬件描述与物理连接始终一致。