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

通过Quartus II实现Nios II编程

目录

    • 一、认识Nios II
    • 二、使用Quartus II 18.0Lite搭建Nios II硬件部分
    • 三、软件部分
    • 四、运行项目

一、认识Nios II

  1. Nios II软核处理器简介

Nios II是Altera公司推出的一款32位RISC嵌入式处理器,专门设计用于在FPGA上运行。作为软核处理器,Nios II可以通过硬件描述语言在FPGA内部实现,这使得它具有极高的灵活性和可定制性。Nios II处理器能够满足各种应用对32位嵌入式微处理器的需求,用户可以根据自己的系统需求选择合适的处理器型号,以达到性能和成本的最佳平衡。

  1. Nios II的特点和优势

Nios II处理器的最大特点是它是运行在FPGA上的软核处理器。与传统的硬核处理器相比,软核处理器可以根据需要进行裁剪和定制,提供了更大的灵活性。Nios II支持使用专用指令,允许用户增加硬件模块来执行复杂运算任务,从而为时序要求紧张的软件提供加速算法。此外,Nios II系列支持60多个外设选项,使得开发者能够选择合适的外设,获得最合适的处理器、外设和接口组合。

  1. Nios II系列的分类

Nios II系列包括三种产品型号:Nios II/f(快速)、Nios II/s(标准)和Nios II/e(经济)。这三种产品型号都具有32位处理器的基本结构单元,包括32位指令大小、32位数据和地址路径、32位通用寄存器和32个外部中断源。它们使用相同的指令集架构(ISA),并且100%二进制代码兼容,这意味着设计者可以根据系统需求的变化更改CPU型号,而不会影响已有的软件投入。

二、使用Quartus II 18.0Lite搭建Nios II硬件部分

  1. 新建一个名为Nios_II的项目文件。
    在这里插入图片描述

  2. 选择与DE2-115板子上相同型号的芯片EP4CE115F29C7并点击Finish完成配置。
    在这里插入图片描述

  3. 点击Plateform Designer,开始搭建硬件部分
    在这里插入图片描述

  4. 在左上角搜索框输入NIOS,单击选择Embedded目录下的Nios II Processor
    在这里插入图片描述

  5. 如果Quartus II是Lite版本的要把Nios II Core选为Nios II/e,因为Lite版本不支持高性能的Nios II,编译的时候会报错,若想使用Quartus需要标准版及以上版本,如果是标准及以上版本就可以选择NIos II/f。其余配置默认即可,点击Finish完成该部分配置。然后再将其更名为cpu。
    在这里插入图片描述
    在这里插入图片描述

  6. 添加JTAG_UART接口,选择Interface目录下的JTAG UART,配置默认即可,点击finish并更名为jtag_uart。
    在这里插入图片描述

  7. 配置片上存储器 On-Chip Memory,选择Basic目录下的On-Chip Memory,并将总存储大小改为40k,完成配置,然后改名为onchip_ram。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  8. 添加PIO接口,默认即可,更名为pio_led。
    在这里插入图片描述
    在这里插入图片描述

  9. 添加System ID,默认即可,更名为sysid。
    在这里插入图片描述
    在这里插入图片描述

  10. 根据下图进行连接,并在pio_led的external处添加名为out_led的输出端口。
    在这里插入图片描述

  11. 双击cpu在Vectors中进行如图配置,如果找不到onchip_ram.s1应该检查连线是否正确,点击System => Assign Base Address,使Base栏不出现重复的地址。点击File => Save保存该项目。
    在这里插入图片描述

  12. 点击Generate => Generate HDL开始生成,等待其生成完毕,关闭Plateform Designer。
    在这里插入图片描述

  13. 新建BDF(Block Diagram/Schematic File)文件,按照图中顺序添加kernel
    在这里插入图片描述
    在这里插入图片描述

  14. 右键单击kernel选择Generate Pins for Symbol Ports为其添加管脚。并将clk_clk管脚更名为clk,out_led_export[7:0]管脚更名为pio_led[7:0],reset_reset_n管脚更名为reset_n。
    在这里插入图片描述
    15.添加kernel.qip后保存bdf文件为Nios_II.bdf进行语法编译,芯片引脚设计保持默认即可。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  15. 点击Pin Planner,参考DE2-115管脚图开始配置管脚
    在这里插入图片描述
    在这里插入图片描述

  16. 完成针脚配置后关闭Pin Planner,完全编译项目,编译通过即表示硬件部分设计完成。
    在这里插入图片描述

三、软件部分

  1. 点击 Tools => Nios II Software Build Tools for Eclipse 打开 Nios II SBT for Eclipse,把默认目录更改到这个项目目录。
    在这里插入图片描述
  2. 创建新的软件应用,点击File => New => Nios II Application and BSP from Template。选择项目目录下的.sopcinfo文件,并将其命名为hello_led,点击finish开始生成Template。
    在这里插入图片描述

在这里插入图片描述

  1. 打开hello_led文件夹下单hello_world.c文件,并对.c文件内容进行更改以实现Console输出以及流水灯。
    在这里插入图片描述
    代码尚有不完善的地方,比如难以分辨新的输出语句“Hello from Nios II!\n",可在后面添加变量n加以分辨,原始代码如下:
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include <stdio.h>  // 新增标准输入输出头文件,用于printf/** "Hello World" example.** This example prints 'Hello from Nios II' to the STDOUT stream. It runs on* the Nios II 'standard', 'full_featured', 'fast', and 'low_cost' example* designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT* device in your system's hardware.* The memory footprint of this hosted application is ~69 kbytes by default* using the standard reference design.** For a reduced footprint version of this template, and an explanation of how* to reduce the memory footprint for a given application, see the* "small_hello_world" template.**/const alt_u8 led_data[8] = {0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF};int main(void) {int count = 0;alt_u8 led;volatile int i;// 融合后的新增功能:打印Nios II启动信息
//    printf("Hello from Nios II!\n");while (1) {if (count == 7) {count = 0;} else {count++;printf("Hello from Nios II!\n");}led = led_data[count];IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);// 保留原有的延时逻辑i = 0;while (i < 500000) {i++;}}return 0;  // 理论上无法执行到这里,但保持代码完整性
}

应该修改的代码为此:

printf("Hello from Nios II!\n",n);

理论修改后的10个循环内的输出如下:

1 次:Hello from Nios II! 12 次:Hello from Nios II! 23 次:Hello from Nios II! 34 次:Hello from Nios II! 45 次:Hello from Nios II! 56 次:Hello from Nios II! 67 次:Hello from Nios II! 78 次:无输出(count 重置为 0,未执行 printf)
第 9 次:Hello from Nios II! 110 次:Hello from Nios II! 2

四、运行项目

  1. . 右键单击hello_led目录再单击Build Project ,完成编译后点击右上角的Nios II => Quartus Prime Programmer;点击Add File添加.sof文件,将其下载到DE2-115板子上,如果出现管脚连接错误,可能是SW19开关在PROG上,切换到RUN即可下载。

在这里插入图片描述

在这里插入图片描述

  1. 在Eclipss中点击右上角的Run => Run As Nios II Hardware;点击Target Connection => Refresh Connections出现接口即可先后按下Apply和Run开始运行项目。
    在这里插入图片描述
  2. 运行视频

studio_video_1745415137269

http://www.xdnf.cn/news/1370.html

相关文章:

  • 【25软考网工】第三章(2)以太网帧结构与封装、以太网物理层标准
  • JavaScript性能优化
  • 【Linux】详细介绍进程的概念
  • Unity 将Excel表格中的数据导入到Mysql数据表中
  • C++ 中 std::queue的使用详解
  • 线程封装
  • Pytorch图像数据转为Tensor张量
  • 初识Redis · 事务
  • HTTP:十一.HTTP认证概述
  • 12-DevOps-Gitlab托管Jenkinsfile
  • 使用 Conda 创建新环境
  • 关于Agent的简单构建和分享
  • 卷积神经网络(CNN)详细教程
  • LSTM-GAN生成数据技术
  • 计组1.2.3——计算机软件
  • 第十五届蓝桥杯 2024 C/C++组 合法密码
  • 《巧用DeepSeek快速搞定数据分析》书籍分享
  • 知识储备-DC综合相关
  • 大厂面试:MySQL篇
  • 深度剖析塔能科技精准节能方案:技术创新与实践价值
  • ShenNiusModularity项目源码学习(20:ShenNius.Admin.Mvc项目分析-5)
  • Git 远程操作全攻略:从基础到实战
  • jmeter中监控服务器ServerAgent
  • 华为开发岗暑期实习笔试(2025年4月16日)
  • 新品发布 | 6 秒全谱成像,VIX-N320 内置推扫式高光谱相机重磅发布
  • crictl 遇到报错 /run/containerd/containerd.sock: connect: permission denied
  • 设计模式--工厂模式详解
  • 【Docker】在Ubuntu平台上的安装部署
  • AIGC的爆发:哪些行业将被彻底颠覆?
  • Arduino示例代码讲解: Project 12 - Knock Lock 锁