三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

告别迷茫!Quartus II 18.1 Platform Designer (Qsys) 保姆级配置流程,从新建工程到引脚分配

告别迷茫!Quartus II 18.1 Platform Designer (Qsys) 保姆级配置流程,从新建工程到引脚分配

告别迷茫!Quartus II 18.1 Platform Designer (Qsys) 保姆级配置流程,从新建工程到引脚分配

第一次打开Quartus II 18.1的Platform Designer(原Qsys)时,那些密密麻麻的IP核选项和复杂的参数设置确实容易让人望而生畏。作为FPGA开发中最关键的软核配置工具,Platform Designer的掌握程度直接决定了后续嵌入式系统开发的效率。本文将用实验室手把手教学的方式,带你从零开始搭建一个完整的Nios II最小系统,过程中不仅会标注每个按钮的位置,更会解释每个参数背后的设计逻辑——比如为什么经济型Nios II/e内核不支持JTAG调试,以及如何避免全局时钟网络配置错误导致的时序违例问题。

1. 工程创建与环境准备

在开始之前,建议先检查Quartus II 18.1的安装完整性。打开软件后,在Help菜单选择"About Quartus Prime"确认版本号包含"18.1 Standard Edition"。这个版本开始,Intel将传统的Qsys工具全面升级为Platform Designer,界面布局和部分功能逻辑都有显著变化。

新建工程时需要注意三个关键设置:

  1. 器件选择:Cyclone IV E系列的EP4CE10F17C8是性价比极高的入门型号
  2. 文件目录:建议创建独立的platform_designer子目录存放系统文件
  3. 工程模板:避免使用"Empty Project",选择"Verilog HDL"作为默认语言

提示:如果后续需要添加Nios II软核处理器,务必在新建工程时勾选"Add sample system"选项,这会自动生成基础时钟和复位网络架构。

2. Platform Designer核心配置流程

2.1 创建新系统

通过Tools菜单启动Platform Designer后,第一个重要决策是系统命名规范。建议采用<工程名>_sys的格式,例如led_blink_sys。这个名称会直接影响后续生成的顶层模块接口定义。

在基础配置页面需要特别关注两个参数:

  • 时钟频率:默认50MHz对大多数外设足够,但需与开发板晶振一致
  • 复位极性:Active Low是大多数FPGA开发板的标准配置
# 通过Tcl脚本可以快速验证系统配置 set system_name led_blink_sys set clock_freq 50000000 set reset_polarity 0

2.2 添加Nios II处理器

在IP Catalog中搜索"Nios II"时,会看到三种处理器类型:

类型性能逻辑单元占用调试支持适用场景
Nios II/e~800 LE简单状态机替代
Nios II/s~1500 LE基本常规嵌入式应用
Nios II/f~2500 LE完整复杂操作系统运行

对于首次接触软核的开发者,建议选择Nios II/s核心并启用以下基础组件:

  • JTAG调试模块:占用额外逻辑资源但大幅提升开发效率
  • 硬件乘法器:即使暂时不用也建议保留扩展空间
  • 复位向量地址:设置为片上存储器(on-chip RAM)起始地址

注意:经济型Nios II/e内核由于精简了异常处理机制,确实无法支持标准JTAG调试,这是架构设计上的限制而非软件配置问题。

3. 外设集成与地址分配

3.1 添加必要IP核

一个可运行的最小系统通常需要:

  1. 片上存储器:至少4KB用于存储程序代码
  2. PIO接口:连接LED等简单外设
  3. 系统ID:防止程序错误烧写到不匹配的硬件

添加PIO接口时容易忽略的方向配置问题:

  • 输入型:需要设置中断触发条件(边沿/电平)
  • 输出型:建议初始化输出值避免上电瞬间误动作
  • 双向型:需要额外添加三态控制逻辑

3.2 地址空间优化

点击"Assign Base Addresses"后,Platform Designer会自动分配各组件地址范围。对于初学者,需要特别检查:

  • 地址对齐:32位系统建议保持4字节对齐
  • 空间重叠:红色警告表示地址冲突必须解决
  • 预留空间:为未来扩展保留连续地址块
// 典型地址分配示例 module address_map ( input logic [31:0] addr, output logic ram_cs, pio_cs ); assign ram_cs = (addr >= 32'h0000_0000) && (addr < 32'h0000_1000); assign pio_cs = (addr >= 32'h1000_0000) && (addr < 32'h1000_0010); endmodule

4. 系统生成与引脚分配

4.1 生成HDL文件

在Generate菜单中有三个关键选项:

  1. 创建仿真模型:用于ModelSim功能验证
  2. 时序约束生成:自动创建.sdc文件
  3. 测试台生成:产生基础验证环境

生成过程中常见的两个错误及解决方案:

  • IP核许可证错误:检查License.dat文件路径是否包含中文
  • 内存不足:关闭其他占用大量内存的应用程序

4.2 物理引脚约束

在Assignment Editor中进行引脚分配时,这些细节容易被忽视:

  • 未使用引脚:设置为As inputs tri-stated可降低功耗
  • bank电压:必须与开发板实际电平匹配
  • 走线延迟:关键时钟信号分配到专用全局时钟引脚

对于DE10-Standard开发板,LED和按键的典型约束如下:

信号名称FPGA引脚I/O标准备注
clk_50mPIN_P113.3-V LVTTL主时钟输入
reset_nPIN_C103.3-V LVTTL低电平有效复位
led_out[0]PIN_A83.3-V LVTTL用户LED0
key_in[0]PIN_C113.3-V LVTTL用户按键0

5. 编译下载与调试技巧

全编译前建议执行以下检查:

  1. 消息过滤:设置Warning级别为"Fewer than 10"
  2. 并行编译:在Tools > Options中设置使用所有CPU核心
  3. 增量编译:对大型工程可节省30%以上时间

遇到时序违例时的处理流程:

  • 检查时钟约束是否正确定义
  • 查看TimeQuest报告的详细路径分析
  • 考虑降低时钟频率或优化关键路径

使用SignalTap II进行实时调试时,这些技巧很实用:

  • 触发条件:设置多级触发条件捕获特定状态
  • 存储深度:根据信号频率合理配置避免内存溢出
  • 数据格式:将总线信号显示为有符号/无符号数

6. 进阶配置与性能优化

当系统运行稳定后,可以考虑这些优化措施:

  • 缓存配置:根据访问模式调整Cache Line大小
  • DMA传输:对大数据量外设使用直接内存访问
  • 自定义指令:将关键算法实现为硬件加速指令

一个经过优化的Nios II系统性能对比:

优化措施执行周期数(前)执行周期数(后)提升幅度
基础配置1256--
添加指令缓存125689229%
启用硬件乘法器89254739%
自定义SHA1指令5478984%

在工程目录下创建tcl子目录保存所有配置脚本,下次重建相似系统时只需运行:

quartus_sh -t setup_system.tcl

这种模块化的开发方式特别适合需要频繁迭代的项目。实际项目中,Platform Designer的组件复用功能可以节省大量重复配置时间——右键点击任何已配置好的IP核选择"Create Component"就能生成可移植的定制IP。

← 返回列表