【 Intel/Altera FPGA技术实战 】Stratix 10 Nios V 工程搭建(一)

【 Intel/Altera FPGA技术实战 】Stratix 10 Nios V 工程搭建(一)
一、前言

最近使用Altera Stratix 10 SOC器件做项目开发,需要用Nios软核CPU做一些寄存器控制操作,结果Quartus Prime24.1之后版本的工具已经不支持Nios II processor IP,具体请参考:1. AN 1009: Preserving Nios II Processor IP for Quartus Prime Version 24.1 and Newer • AN 1009: Preserving Nios II Processor IP for Quartus Prime Version 24.1 and Newer • Altera Documentation and Resources Center,后续版本必须使用Nios V,而且Altera所有类型的FPGA都支持Nios V,那么我们就有必要了解和练习使用Nios V,这样才能加速我们的项目开发。

这里先给大家简要介绍Nios V,再手把手搭建Nios V的demo工程,希望对大家有所帮助。

二、前期准备
  1. 系统:Windows 11;
  2. 安装EDA工具:Quartus Prime Pro 25.1.1;
  3. Ashling RiscFree IDE,Quartus安装时选择即可,具体请见下图;
Ashling RiscFree IDE Installation
三、Nios V介绍

这部分内容具体请参考:1. Overview • Nios V Processor Reference Manual • Altera Documentation and Resources Center

1. Nios V processor IP是什么:Altera FPGA通过逻辑电路实现的RISC_V架构的软核CPU,该IP不包括外设和外设的连接逻辑,只有软核CPU的电路部分,Nios V与FPGA的关系如下图所示:
Nios V Processor System on Altera FPGA

 

2. Nios V processor IP分类:分为Nios V/c、Nios V/m和Nios V/g三种IP,三种类型的对比如下图所示;

1)Nios V/c Processor:基于RISC-V RV32I指令集的紧凑型软核CPU,指令和数据公用128 KB on-chip memory;

2)Nios V/m Processor:基于RISC-V指令集的微控制器软核CPU,支持五级Pipelined和Non-pipelined两种配置,指令和数据公用128 KB on-chip memory;

3)Nios V/g Processor:基于RISC-V RV32IMZicsr指令集的通用软核CPU,支持五级Pipelined,指令和数据公用128 KB on-chip memory,指令和数据各有4KB的cache;

Configuration Options Across Core Variants
3. 由上图可知,由左至右性能越来越强,相应的生成软核IP所需的FPGA逻辑资源也随之增多,所以需要根据实际场景选择合适的Nios V,如果需要跑系统或者控制交互的性能要求比较高,建议选择Nios V/g或者HPS;如果是裸板程序实现简单控制功能,建议选择Nios V/m;
4. 接下来我们就来搭建一个Nios V/m IP的demo工程,一起熟悉一下Nios V的使用;
四、Nios V工程搭建

1. Quartus工具:先新建工程,再打开Platform Designer,请参考下图,使用的器件型号是1SX110HN2,Quartus工程是niosv_top.qpf,在工程路径下创建niosv_top.qsys;
Open System Window
2. 在Platform Designer界面搜索并添加On-Chip Memory II (RAM or ROM) IP,该IP就是Nios V的on-chip memory,需要存放指令和数据以保证系统的性能和实时性;
On-Chip Memory II (RAM or ROM) IP Parameter Editor

这里memory size配置为256KB,选择“Enable non-default initialization file”并把initialization file更改为hello.hex(软件demo工程为hello.c),其余设置保持默认;

3. 在Platform Designer界面搜索并添加Nios V/m Processor IP,Reset Agent选择onchip_memory_0.s1,其余保持默认;
Nios V/m Processor IP Parameter Editor
4. 在Platform Designer界面搜索并添加JTAG UART IP,设置保持默认,该IP可以通过JTAG输出log信息,便于系统调试;
JTAG UART IP Parameter Editor

 

5. 在Platform Designer界面搜索并添加Reset Release IP,选择Reset interface,Altera建议使用该IP来控制系统上电到系统IDLE之间的复位;
Reset Release IP Parameter Editor
6. 设置默认的时钟Clock Bridge IP和复位Reset Bridge IP,这里设置时钟为50MHz(建议结合板载硬件资源设置),复位为低有效;
Clock Bridge IP Parameter Editor
Reset Bridge IP Parameter Editor
7. 连接各组件的接口信号,具体请参考下图;
Connection between Host and Agent
8. 连接完成后,在【System】-> 【Assign Base Address】分配外设基地址,整个系统的连接如下图所示;
Full System Connection
9. Generate HDL完成后,又搭建了系统顶层top模块,因为我的硬件板载无复位信号,且不想引入PLL模块,若大家板级有复位输入可以不用搭建顶层模块;
module top( input clk_clk // 50MHz ); niosv_top u0 ( .clk_clk (clk_clk), // input, width = 1, clk.clk .reset_reset_n (1'b1) // input, width = 1, reset.reset_n ); endmodule
10. 添加时序约束文件niosv_top.sdc,该工程比较简单,只需要告诉EDA工具主时钟即可,最终的工程文件列表如下图:
create_clock -name clk -period 20.0 [get_ports clk_clk]
Project Files List
11. 进行Analysis & Synthesis,然后在Pin Planner界面分配管脚;
12. 在【Assignments】->【Device】-> 【Device and Pin Options】-> 【Configuration】配置SDM PIN,这里建议结合自己硬件板级资源进行设置;
SDM PIN Parameter Editor
13. 在【Assignments】->【Device】-> 【Device and Pin Options】-> 【Power Management & VID】配置VID 信息,下面配置是bypass VID,这里建议结合自己硬件板级资源进行设置;
Power Management & VID Parameter Editor
14. 配置完成后,打开工程根目录下niosv_top.qsf文件,该文件是Quartus Settings File,包含了 Quartus 工程的综合、布局布线、时序、引脚、IP、文件列表等全部配置信息,具体配置信息如下,我们可以通过该文件确认上述的配置是否生效;
// 工程基本信息 set_global_assignment -name TOP_LEVEL_ENTITY top set_global_assignment -name ORIGINAL_QUARTUS_VERSION 25.1.1 set_global_assignment -name PROJECT_CREATION_TIME_DATE "16:14:38 JANUARY 26, 2026" set_global_assignment -name LAST_QUARTUS_VERSION "25.1.1 Pro Edition" set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name MIN_CORE_JUNCTION_TEMP "-40" set_global_assignment -name MAX_CORE_JUNCTION_TEMP 100 set_global_assignment -name DEVICE 1SX110HN2F43I2VG set_global_assignment -name FAMILY "Stratix 10" set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256 set_global_assignment -name EDA_TIME_SCALE "1 ps" -section_id eda_simulation set_global_assignment -name EDA_OUTPUT_DATA_FORMAT "VERILOG HDL" -section_id eda_simulation // 源文件 & IP & Platform Designer set_global_assignment -name IP_FILE ip/niosv_top/niosv_top_clock_in.ip set_global_assignment -name IP_FILE ip/niosv_top/niosv_top_reset_in.ip set_global_assignment -name QSYS_FILE niosv_top.qsys set_global_assignment -name IP_FILE ip/niosv_top/niosv_top_intel_niosv_m_0.ip set_global_assignment -name IP_FILE ip/niosv_top/niosv_top_intel_onchip_memory_0.ip set_global_assignment -name IP_FILE ip/niosv_top/niosv_top_jtag_uart_0.ip set_global_assignment -name IP_FILE ip/niosv_top/niosv_top_s10_user_rst_clkgate_0.ip set_global_assignment -name BOARD default set_global_assignment -name SDC_FILE niosv_top.sdc set_global_assignment -name VERILOG_FILE src/top.v // 引脚分配 & SDM & VID set_location_assignment PIN_K8 -to clk_clk -comment IOBANK_3K set_instance_assignment -name IO_STANDARD "1.8-V" -to clk_clk -entity top set_global_assignment -name POWER_APPLY_THERMAL_MARGIN ADDITIONAL set_global_assignment -name USE_PWRMGT_SCL SDM_IO14 set_global_assignment -name USE_PWRMGT_SDA SDM_IO11 set_global_assignment -name PWRMGT_SLAVE_DEVICE0_ADDRESS 3F set_global_assignment -name PWRMGT_SLAVE_DEVICE1_ADDRESS 3F set_global_assignment -name PWRMGT_SLAVE_DEVICE2_ADDRESS 3F set_global_assignment -name PWRMGT_SLAVE_DEVICE3_ADDRESS 3F set_global_assignment -name PWRMGT_SLAVE_DEVICE4_ADDRESS 3F set_global_assignment -name PWRMGT_SLAVE_DEVICE5_ADDRESS 3F set_global_assignment -name PWRMGT_SLAVE_DEVICE6_ADDRESS 3F set_global_assignment -name PWRMGT_SLAVE_DEVICE7_ADDRESS 3F
15. 最后综合 + 实现,在./output_files路径下生成sof文件,说明Nios V工程已经搭建完成,接下来就可以愉快的进行软件开发了。

Read more

【汉化中文版】OpenClaw(Clawdbot/Moltbot)第三方开源汉化中文发行版部署全指南:一键脚本/Docker/npm 三模式安装+Ubuntu 环境配置+中文汉化界面适配开源版

【汉化中文版】OpenClaw(Clawdbot/Moltbot)第三方开源汉化中文发行版部署全指南:一键脚本/Docker/npm 三模式安装+Ubuntu 环境配置+中文汉化界面适配开源版

OpenClaw这是什么? OpenClaw(曾用名 Clawdbot / Moltbot)是一个开源的个人 AI 助手平台(GitHub 120k+ Stars),可以通过 WhatsApp、Telegram、Discord 等聊天软件与 AI 交互。简单说就是:在你自己的机器上运行一个 AI 助手,通过常用聊天软件跟它对话。 forks项目仓库 :https://github.com/MaoTouHU/OpenClawChinese 文章目录 * OpenClaw这是什么? * 汉化效果预览 * 环境要求 * 安装方式 * 方式 A:一键脚本(推荐新手) * 方式 B:npm 手动安装 * 方式 C:Docker 部署(服务器推荐) * 首次配置 * 运行初始化向导 * 安装守护进程(

By Ne0inhk
在 GitHub 上生成和配置个人访问令牌(PAT),并将其用于 R 环境中的凭证管理和包安装。

在 GitHub 上生成和配置个人访问令牌(PAT),并将其用于 R 环境中的凭证管理和包安装。

在 GitHub 上生成和配置个人访问令牌(PAT),并将其用于 R 环境中的凭证管理和包安装。 1. 生成 GitHub 个人访问令牌(PAT) 1. 访问 GitHub 设置页面打开浏览器,访问 GitHub 的 个人访问令牌 生成页面:GitHub Personal Access Tokens 2. 登录 GitHub 账户如果你尚未登录,请输入 GitHub 的用户名和密码登录。 3. 生成新的个人访问令牌(PAT) * 在 Personal access tokens 页面,点击 Generate new token(生成新令牌)。 * 在打开的页面中,填写以下内容:例如,你可以选择如下权限: * Note:

By Ne0inhk

本地部署 OpenClaw:让 AI 真正“干活”的开源智能体,从核心概念到实战全流程

本地部署 OpenClaw:让 AI 真正“干活”的开源智能体,从核心概念到实战全流程 这里写目录标题 * 本地部署 OpenClaw:让 AI 真正“干活”的开源智能体,从核心概念到实战全流程 * 一、核心概念:读懂 OpenClaw 与 Skills * 1. OpenClaw:本地优先的自主 AI 内核 * 2. Skills:AI 助手的“功能插件库” * (1)Skills 核心构成 * (2)加载路径与优先级 * (3)必装核心 Skills * 二、前置准备:部署前必做的 3 件事 * 1. 系统与硬件要求 * 2. 强制依赖安装

By Ne0inhk
基础入门 React Native 鸿蒙跨平台开发:TabBar 底部导航栏

基础入门 React Native 鸿蒙跨平台开发:TabBar 底部导航栏

一、核心知识点:TabBar 底部导航栏 完整核心用法 在 React Native 鸿蒙跨平台开发中,官方无独立的 TabBar 组件,底部导航栏都是通过「RN 纯内置基础组件组合」实现,全程无需引入任何第三方导航库、无鸿蒙原生代码、无工程配置修改,完全使用内置 API 开发,是鸿蒙 RN 项目中页面一级导航的必备实现方式,也是开发频率最高的基础布局之一。 实现底部 TabBar 的核心逻辑为固定范式,零基础可直接套用,所有实现均基于 RN 原生内置组件:View(布局容器) + TouchableOpacity(可点击项) + Text(导航文字) + Image(导航图标) + useState(选中状态控制),搭配页面组件的条件渲染完成「导航切换 + 页面跳转」,整套实现方案在 OpenHarmony6.0 全机型完美适配,

By Ne0inhk