从零搭建Nios II软核:基于Quartus II 18.1与Platform Designer的Qsys实战指南
2026/5/10 12:15:46 网站建设 项目流程

1. 环境准备与工程创建

第一次接触FPGA软核开发的朋友,建议先准备好以下环境。我用的Quartus II 18.1标准版,搭配Cyclone IV E系列FPGA开发板。安装时记得勾选Nios II EDS组件,这个后面调试会用到。实测发现,如果漏装这个组件,后期会遇到找不到Nios II命令行的尴尬情况。

新建工程时有个容易踩坑的点:在Device and Pin Options里,一定要把Unused Pins设置为As input tri-stated。我去年带实习生时就遇到过,有个小伙子的板子烧录后莫名发热,排查半天才发现是这个选项没配置,导致未使用引脚悬空引发短路。具体操作路径:新建工程向导的第三步,找到这个选项卡勾选即可。

工程命名建议用英文+下划线的形式,比如nios2_mini_system。别用中文路径!去年有个学员在Windows系统下用了中文目录,Platform Designer生成文件时各种报错,最后重装系统才解决。存储路径最好直接放在磁盘根目录,比如D:/nios_project/,避免多层嵌套。

2. Platform Designer基础配置

2.1 创建Nios II系统

在Quartus菜单栏选择Tools -> Platform Designer(老版本叫Qsys),这个工具相当于FPGA版的"乐高积木"。第一次打开时界面可能有点懵,我教大家个记忆方法:左边是零件库(IP Catalog),中间是组装台(System Contents),右边是接线图(Connections)。

重点来了!点击File -> Save As,命名为nios2_small。这里有个隐藏技巧:名称不要带空格和特殊字符,否则后续生成HDL文件时会报错。保存后立即在IP Catalog里搜索Nios II Processor,双击后会弹出配置窗口。

选择经济型Nios II/e内核时要注意,这个型号只支持Level 1调试模块。去年我用Nios II/f内核时,不小心选了Level 4调试模块,结果占用了大量逻辑资源。对于简单应用,经济型内核完全够用,实测跑RT-Thread Nano都没问题。

2.2 时钟与存储器配置

找到clk_0右键重命名为clk_50,对应开发板上的50MHz晶振。这里有个细节:双击时钟源组件,把Reset synchronous edges都选上,这样能确保所有IP核同步复位。

添加On-Chip Memory时,建议初始设为40KB(输入40960)。这个大小足够运行小型RTOS了。我测试过,放一个裸机程序大概占8KB,加上RT-Thread Nano内核约20KB,留点余量比较稳妥。命名建议改为onchip_mem,后续写链接脚本时变量名更直观。

3. 外设集成与系统连接

3.1 JTAG UART添加

在IP Catalog搜索JTAG UART,直接双击添加默认配置。这个组件相当于系统的"控制台",后续调试打印都靠它。有个实用技巧:在参数设置里把Write FIFO调到8字节,Read FIFO调到64字节,这样既能节省资源又保证通信流畅。

连接信号线时要注意:数据端口和指令端口都要连到CPU的data_master。有个常见误区是只连data_master,结果程序能下载但无法运行。具体操作:先点击CPU的instruction_master,再点击onchip_mem的s1端口,最后点击自动生成的connect按钮。

3.2 地址与中断配置

点击System -> Assign Base Addresses自动分配地址。这里有个坑:有时自动分配的地址不连续,建议手动检查一下。正常情况应该是0x00000000开始分配,每个外设占用2的N次方位宽。

中断配置最关键一步:在IRQ标签页下,把jtag_uart的irq连接到CPU的irq0。我见过最奇葩的bug是有人把中断号设成了31,结果调试时死活进不了中断服务程序。对于新手,记住中断号从0开始按顺序用就对了。

4. 系统生成与集成

4.1 生成HDL文件

点击Generate -> Generate HDL,这个过程大概需要1-3分钟。如果遇到"Generation failed"错误,八成是时钟没连好。我常用的检查顺序:先看CPU的clk接线,再看reset信号,最后检查各外设的时钟域。

生成完成后别急着关闭!先查看Generation Report,重点检查两个地方:Address Map和Interrupt Assignments。去年有个项目就是在这里发现UART地址和软件定义的不一致,避免了后续的硬件调试悲剧。

4.2 顶层原理图集成

回到Quartus主界面,新建Block Diagram文件。双击空白处,在Project下找到nios2_small符号。这里有个隐藏功能:按住Ctrl键拖动符号可以快速复制。添加qip文件时,建议用绝对路径方式引入,相对路径有时在团队协作时会出问题。

最后编译前,记得做三件事:

  1. 检查引脚分配(我一般先用Pin Planner查看关键时钟引脚)
  2. 设置编译选项为"Fast Compile"快速验证
  3. 开启Smart Compilation减少后续编译时间

第一次编译可能会报时序错误,别慌!先把时钟约束加上。对于50MHz时钟,简单加个create_clock -period 20.000 [get_ports {clk}]就能解决大部分问题。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询