通過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.pswp.cn/diannao/80198.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80198.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80198.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA設計模式——(三)橋接模式

JAVA設計模式——&#xff08;三&#xff09;橋接模式&#xff08;Bridge Pattern&#xff09; 介紹理解實現武器抽象類武器實現類涂裝顏色的行為接口具體顏色的行為實現讓行為影響武器修改武器抽象類修改實現類 測試 適用性 介紹 將抽象和實現解耦&#xff0c;使兩者可以獨立…

k8s 證書相關問題

1.重新生成新證書 kubeadm init phase certs apiserver-etcd-client --config ~/kubeadm.yaml這個命令表示生成 kube-apiserver 連接 etcd 使用的證書,生成后如下 -rw------- 1 root root 1.7K Apr 23 16:35 apiserver-etcd-client.key -rw-r--r-- 1 root root 1.2K Apr 23 …

比較:AWS VPC peering與 AWS Transit Gateway

簡述: VPC 對等連接和 Transit Gateway 用于連接多個 VPC。VPC 對等連接提供全網狀架構,而 Transit Gateway 提供中心輻射型架構。Transit Gateway 提供大規模 VPC 連接,并簡化了 VPC 間通信管理,相比 VPC 對等連接,支持大量 VPC 的 VPC 間通信管理。 VPC 對等連接 AWS V…

制造企業PLM深度應用:2025年基于PDCA循環的7項持續改進指標

制造企業的產品生命周期管理&#xff08;PLM&#xff09;在數字化轉型的浪潮中扮演著至關重要的角色。PLM深度應用不僅能夠提升產品研發效率、保證產品質量&#xff0c;還能增強企業在市場中的競爭力。隨著2025年智能制造目標的推進&#xff0c;基于PDCA循環的持續改進對于PLM的…

極狐GitLab 的壓縮和合并是什么?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 壓縮和合并 (BASIC ALL) 在你處理一個特性分支時&#xff0c;通常會創建一些小的、獨立的提交。這些小提交幫助描述構建特性…

解耦舊系統的利器:Java 中的適配器模式(Adapter Pattern)實戰解析

在現代軟件開發中&#xff0c;我們經常需要與舊系統、第三方庫或不一致接口打交道。這時候&#xff0c;如果能優雅地整合這些不兼容組件&#xff0c;又不破壞原有結構&#xff0c;就需要一位“翻譯官” —— 適配器模式。本文將通過 Java 實例&#xff0c;詳細講解適配器模式的…

03-谷粒商城筆記

一個插件的install和生命周期的報錯是不一樣的 Maven找不到ojdbc6和sqljdbc4依賴包 這時候我找到了jar包&#xff0c;然后我就先找到一個jar安裝到了本地倉庫。 在終端上進行命令了&#xff1a; mvn install:install-file -DfileD:\ojdbc6-11.2.0.4.jar -DgroupIdcom.oracle …

黑馬點評redis改 part 5

達人探店 發布探店筆記 那第一張表block表它里邊的結構呢是這個 首先呢第一個字段是i d&#xff0c;就是主鍵&#xff0c;第二個呢是shop id&#xff0c;就是商戶你發的這個比例啊&#xff0c;它是跟哪個商戶有關系的。第三個呢用戶id就是誰發的這篇筆記&#xff0c;第四個呢標…

【PCB工藝】運放電路中的負反饋機制

通過運算方法器電路設計詳細解釋負反饋機制&#xff08;Negative Feedback&#xff09; 負反饋 是控制系統、電子電路、神經系統等多個領域中非常核心的概念。特別在運算放大器&#xff08;Op-Amp&#xff09;電路中&#xff0c;負反饋是實現精確控制和高穩定性的關鍵機制。 …

聲紋振動傳感器在電力監測領域的應用

聲紋振動傳感器在電力監測領域有多種應用&#xff0c;主要包括以下幾個方面&#xff1a; 變壓器監測 故障診斷&#xff1a;變壓器在運行過程中會產生特定的聲紋和振動信號&#xff0c;當變壓器內部出現故障&#xff0c;如繞組短路、鐵芯松動、局部放電等&#xff0c;其聲紋和振…

7、sentinel

控制臺訪問地址&#xff1a;http://localhost:8080/ 依賴 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>配置文件 spring:cloud:sentinel:transpo…

線程封裝

目錄 makefile Thread.hpp main.cc 以面向對象的方式造輪子 #ifndef _THREAD_HPP__ // 如果沒有定義過 _THREAD_HPP__ #define _THREAD_HPP__ // 則定義 _THREAD_HPP__// 這里是頭文件的實際內容&#xff08;類、函數聲明等&#xff09;#endif // 結束條件…

【maven-7.1】POM文件中的屬性管理:提升構建靈活性與可維護性

在Maven項目中&#xff0c;POM (Project Object Model) 文件是核心配置文件&#xff0c;而屬性管理則是POM中一個強大但常被低估的特性。良好的屬性管理可以顯著提升項目的可維護性、減少重復配置&#xff0c;并使構建過程更加靈活。本文將深入探討Maven中的屬性管理機制。 1.…

極狐GitLab 的合并請求部件能干什么?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 合并請求部件 (BASIC ALL) 合并請求的 概述 頁面顯示了來自服務的狀態更新&#xff0c;這些服務會對您的合并請求執行操作。…

26、C# 中是否可以繼承String類?為什么?

在 C# 中&#xff0c;不能直接繼承 String 類&#xff08;System.String&#xff09;。這是由于以下幾個原因&#xff1a; 1、String 類是 sealed 的 String 類在 .NET 中被標記為 sealed&#xff0c;這意味著它是一個密封類&#xff0c;不能被繼承。 sealed 關鍵字的作用是防…

deeplab語義分割訓練自定數據集

鏈接&#xff1a;https://pan.baidu.com/s/1KkkM1rLfyiMPtYLycpnxmg?pwdj2rd 提取碼&#xff1a;j2rd --來自百度網盤超級會員V2的分享 采用數據集&#xff1a; https://aistudio.baidu.com/datasetdetail/130647 采用代碼&#xff1a; https://github.com/jfzhang95/pyt…

【Pandas】pandas DataFrame mod

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于執行 DataFrame 與另一個對象&#xff08;如 DataFrame、Series 或標量&#xff09;的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于執行 DataFrame 與另一個對象&…

12、高階組件:魔法增幅器——React 19 HOC模式

一、魔法增幅器的本質 "高階組件是魔法師用咒語疊加的煉金術&#xff0c;"霍格沃茨魔咒研究院院長凝視著發光的增幅器&#xff0c;"通過函數式能量場的嵌套&#xff0c;讓基礎組件獲得預言家日報式的邏輯繼承&#xff01;" ——以神秘事務司的「維度疊加理…

Qt creator 16.0.1 語言家失效解決方法

一、在菜單“工具-->外部”里面沒有語言家、更新翻譯、發布翻譯工具。 二、解決方法 手工添加 1、添加目錄 2、添加工具 更新翻譯 (lupdate) %{CurrentDocument:Project:QT_INSTALL_BINS}\lupdate %{CurrentDocument:Project:FilePath} %{CurrentDocument:Project:Path}…

Apple AirTag定位原理

AirTag 是蘋果公司推出的一款用于追蹤物品的設備&#xff0c;觸及到我的知識盲區。所以特地記錄一下技術原理。其工作所用的技術原理主要涉及以下幾個方面&#xff1a; 藍牙技術&#xff1a;AirTag 使用藍牙低功耗技術&#xff08;BLE&#xff09;與用戶的 iPhone 或其他蘋果設…