当前位置: 首页 > news >正文

Quartus 18.1 + DE10-Lite开发板:保姆级图文教程,带你跑通第一个NIOS II程序

Quartus 18.1 + DE10-Lite开发板:保姆级图文教程,带你跑通第一个NIOS II程序

第一次接触FPGA和NIOS II软核处理器时,很多人会被Platform Designer、Qsys文件生成、Eclipse BSP配置等一系列陌生工具链搞得晕头转向。本文将手把手带你从零开始,用DE10-Lite开发板和Quartus 18.1软件,完成第一个NIOS II程序的完整开发流程。我们会重点解决地址分配冲突、qip文件添加、JTAG连接失败等常见问题,确保你能一次成功。

1. 环境准备与工程创建

在开始之前,请确保你已经完成以下准备工作:

  • 安装Quartus Prime 18.1标准版(包含NIOS II EDS组件)
  • 准备好DE10-Lite开发板和USB-Blaster下载器
  • 下载并安装DE10-Lite的板级支持包(BSP)

创建Quartus工程的具体步骤:

  1. 启动Quartus Prime 18.1,选择File > New Project Wizard
  2. 指定工程目录(建议使用英文路径,避免后续工具链问题)
  3. 设置工程名称为nios2_hello_world
  4. 选择Empty project作为项目类型
  5. Family, Device & Board Settings中选择:
    • Device family:Cyclone V
    • Device:5CEBA4F23C7
  6. 完成向导后,进入主界面

提示:DE10-Lite开发板使用的是Cyclone V 5CEBA4F23C7芯片,务必选择正确的器件型号,否则后续步骤可能无法进行。

2. 在Platform Designer中构建NIOS II系统

Platform Designer(原Qsys)是构建NIOS II系统的核心工具。我们将创建一个包含CPU、存储器和基本外设的完整系统。

2.1 创建基础系统

  1. 在Quartus中选择Tools > Platform Designer
  2. 新建文件并保存为nios_system.qsys
  3. 在IP Catalog中搜索并添加以下组件:
    • Nios II Processor(选择Nios II/f快速型)
    • JTAG UART(保持默认配置)
    • On-Chip Memory (RAM or ROM)(添加两个实例,分别作为指令存储器和数据存储器)

存储器配置参数建议:

参数指令存储器数据存储器
类型ROMRAM
大小32KB16KB
数据宽度32-bit32-bit
初始化文件不选择-

2.2 连接系统组件

在Connections标签页中,按照以下方式连接组件:

  1. clkreset信号连接到所有组件
  2. 连接NIOS II的data_masterinstruction_master到存储器和外设
  3. 为JTAG UART分配中断号(通常为0)

完成连接后,选择System > Assign Base Addresses让工具自动分配地址空间。确保没有地址冲突(红色错误提示)。

2.3 生成硬件系统

  1. 点击Generate > Generate HDL生成系统文件
  2. 在生成选项中:
    • 选择Verilog作为输出语言
    • 勾选Create block symbol file
    • 保持其他选项默认
  3. 生成完成后关闭Platform Designer

回到Quartus工程,需要将生成的系统文件添加到项目中:

// 添加qip文件 File > Open > 选择nios_system/synthesis/nios_system.qip

3. 顶层设计与引脚分配

现在我们需要创建一个顶层模块来实例化NIOS II系统。

3.1 创建顶层模块

  1. 新建Verilog文件top.v并设置为顶层实体
  2. 添加以下代码实例化NIOS II系统:
module top( input wire clk_50mhz, input wire reset_n, // 其他需要的IO端口 ); nios_system u0 ( .clk_clk (clk_50mhz), .reset_reset_n (reset_n) // 连接其他信号 ); endmodule

3.2 引脚分配与编译

  1. 在Assignment Editor中分配引脚:
    • clk_50mhz→ PIN_P11(50MHz时钟)
    • reset_n→ PIN_B8(KEY0按钮)
  2. 运行全编译(Processing > Start Compilation

注意:首次编译可能需要较长时间。如果遇到时序问题,可以尝试调整时钟约束或降低时钟频率。

4. 软件工程创建与调试

硬件设计完成后,我们需要为NIOS II处理器创建软件程序。

4.1 创建NIOS II应用工程

  1. 启动NIOS II Software Build Tools for Eclipse(通过Quartus菜单Tools > Nios II Software Build Tools for Eclipse
  2. 选择工作空间目录(建议与硬件工程分开)
  3. 创建新工程:
    • File > New > Nios II Application and BSP from Template
    • 选择硬件描述文件nios_system.sopcinfo
    • 模板选择Hello World
    • 工程名称为hello_world

4.2 编译与下载

  1. 在Eclipse中右键点击工程,选择Build Project
  2. 配置运行选项:
    • Run > Run Configurations
    • 选择Nios II Hardware
    • Target Connection标签页中刷新并确认USB-Blaster已连接
  3. 点击Run下载程序到开发板

成功下载后,你将在Nios II Console中看到"Hello from Nios II!"的输出信息。

5. 常见问题与解决方案

在实际操作中,你可能会遇到以下问题:

问题1:Platform Designer生成后qip文件未自动添加

解决方案

  • 手动添加qip文件到Quartus工程
  • 检查文件路径是否包含中文或特殊字符

问题2:JTAG连接失败

解决方案

  1. 检查USB-Blaster驱动是否安装正确
  2. 尝试重新插拔USB线
  3. 在Quartus Programmer中测试是否能识别设备

问题3:程序下载后无输出

解决方案

  1. 确认复位信号连接正确(DE10-Lite的KEY0是低电平有效)
  2. 检查Console设置是否正确(波特率应为115200)
  3. 重新生成BSP并清理重建软件工程

问题4:存储器地址冲突

解决方案

  1. 在Platform Designer中重新分配基地址
  2. 确保每个外设的地址空间不重叠
  3. 检查地址宽度是否满足需求

6. 进阶配置与优化

完成基础Hello World程序后,你可以进一步探索:

  • 添加更多外设(如PIO、定时器等)
  • 优化存储器配置(使用外部SDRAM)
  • 调整CPU缓存设置提升性能
  • 创建自定义Avalon外设

在实际项目中,我经常发现初学者最容易忽视的是复位信号的正确处理。DE10-Lite开发板的按键是低电平有效,而NIOS II系统的复位信号通常也是低电平有效,因此直接连接即可。但如果使用其他开发板,务必确认复位信号的极性。

http://www.zskr.cn/news/1485083.html

相关文章:

  • OBD诊断协议揭秘:ISO15031 $02服务如何让ECU‘冻结’故障瞬间(附PID速查表)
  • 别再死记硬背UML图了!用这3个真实项目案例,带你搞懂用例图、活动图与类图怎么画
  • PHP高精度计时器与性能基准
  • 智慧农业AI+DeepSeek的病虫害检测与环境监测一体化智能云平台
  • 当无人机装上‘动态视觉神经’:事件相机在四旋翼避障与电力线巡检中的实战解析
  • 从零到精通:保姆级Illustrator 2024入门教程(附B站宝藏视频清单)
  • 别再复制粘贴了!手把手教你解析CMSIS-DAP下载算法里的神秘32字节头文件
  • 别再死记硬背TCP了!从RDT 1.0到3.0,手把手带你理解可靠传输的底层逻辑
  • 模板驱动型文档自动化:告别填空式写作的工程化实践
  • 2026年临沂三体系审核员外审员CCAA众智商学院报名资料试听课班期咨询官网400冯老师 - 众智商学院职业教育
  • MuleSoft+LLM企业级AI编排实战:安全、可治理的智能集成
  • 不止是输入框:用微信小程序input玩转搜索框、验证码和密码强度检测
  • PHP面向对象SOLID原则
  • 光子电路交换技术突破分布式ML通信瓶颈
  • 股票 / 基金理财业务落地成交易系统完整方案
  • 用STM32F103和W5500芯片,5分钟搞定一个Modbus-TCP从站(附完整代码)
  • 2026年福州物流仓储岗位SCMP班期怎么核对?众智商学院400冯老师费用资料 - 众智商学院官方
  • 别再死记硬背了!用Python模拟RDT协议(可靠数据传输)的发送与接收状态机
  • 跟着B站大佬复现Swin Transformer图像分类:从PyTorch代码到花卉数据集实战(附完整代码)
  • 别再只看FLOPs了!ShuffleNet v2作者教你用4条黄金法则设计真正高效的移动端网络
  • Sqribble文档操作系统:模板驱动的PDF自动化生成原理与实践
  • 在线污泥浓度计十大优选品牌深度解析——从核心技术到工程实战的全维度选型指南 - 仪表品牌榜
  • ESP32+LVGL实战:用ST7789和ILI9341屏幕跑个音乐播放器Demo(ESP-IDF环境)
  • 炉石传说HsMod插件终极指南:55项隐藏功能全面解锁
  • Gemini CLI:终端原生的免费AI编程助手
  • MyBatis-Plus IService 封装完全指南
  • VS Code 数据科学协作工程化:从 Notebook 到可复现团队工作流
  • 拆解一个Type-C扩展坞:看PS176芯片如何实现4K 60Hz视频转换
  • VMware解锁工具深度解析:3步实现macOS虚拟机跨平台运行
  • 3D-LLM:大语言模型原生理解三维空间与工程制造