【 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

macOS配置openclaw+deepseek大模型+飞书小助手

macOS配置openclaw+deepseek大模型+飞书小助手一条龙 概述 openclaw到底是什么? OpenClaw 是一个开源的个人 AI Agent(智能体)框架。 * 普通 AI(如 ChatGPT):你问它答,它住在浏览器里。 * OpenClaw:它住在你的电脑或服务器里,通过微信、钉钉、Telegram 等聊天软件和你沟通。最核心的区别是它能执行操作: * 前端开发:你可以让它“帮我改一下这个页面的 CSS 布局”,它能直接读取本地代码并修改。 * 后端运维:通过聊天窗口发个指令,它就能登录服务器查看日志、重启服务或部署 Docker。 * 股票分析:它能定时抓取行情数据,结合你给的策略(Skills)生成分析报告发给你。 2.费用来源 OpenClaw 本身是开源免费的(MIT 协议),你不需要为软件本身付费。但实际使用中有两部分成本: * 大脑的“思考费”

By Ne0inhk
Flutter 组件 random_color 的适配 鸿蒙Harmony 实战 - 驾驭视觉美学随机化、实现鸿蒙端高阶灵动 UI 调色盘与动态主题生成方案

Flutter 组件 random_color 的适配 鸿蒙Harmony 实战 - 驾驭视觉美学随机化、实现鸿蒙端高阶灵动 UI 调色盘与动态主题生成方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 random_color 的适配 鸿蒙Harmony 实战 - 驾驭视觉美学随机化、实现鸿蒙端高阶灵动 UI 调色盘与动态主题生成方案 前言 在鸿蒙(OpenHarmony)应用开发中,尤其是在涉及内容创作、个性化看板或动态标签系统时,我们经常需要生成一些“丰富多彩但又不显杂乱”的颜色。如果你仅仅依赖 Random().nextInt(0xFFFFFF),那么生成的色彩极易出现灰暗、过度饱和或者是对比度极低的“色块灾难”。 一个具备极致审美的鸿蒙应用,应当学会在随机中寻找平衡。 random_color 是一套基于色彩理论的高阶生成引擎。它不仅能产生随机色,更能根据“色相(Hue)”、“明度(Luminosity)”和“饱和度”进行定向搜索。适配到鸿蒙平台后,它不仅能支撑起灵动的 UI

By Ne0inhk
鸿蒙金融理财全栈项目——安全合规与用户体验优化

鸿蒙金融理财全栈项目——安全合规与用户体验优化

《鸿蒙APP开发从入门到精通》第26篇:鸿蒙金融理财全栈项目——安全合规与用户体验优化 🚀🔒📊 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第26篇——安全合规与用户体验优化篇,100%承接第25篇的持续集成、持续部署、持续交付优化架构,并基于金融场景的安全合规与用户体验优化要求,设计并实现鸿蒙金融理财全栈项目的安全合规与用户体验优化功能。 学习目标: * 掌握鸿蒙金融理财项目的安全合规优化设计与实现; * 实现金融级数据加密、权限管理、安全审计; * 理解用户体验优化在金融场景的核心设计与实现; * 实现界面优化、交互优化、性能优化; * 掌握安全合规与用户体验的协同优化策略; * 优化金融理财项目的用户体验与安全合规性。 学习重点: * 鸿蒙金融理财项目的安全合规优化设计原则; * 用户体验优化在金融场景的应用; * 安全合规与用户体验的协同优化策略。 一、 安全合规优化基础 🎯 1.1 安全合规优化定义 安全合规优化是指对金融理财项目的安全与合规性进行优化,确保应用符合金融行业标准和法规,主要包括以下方面: * 金融

By Ne0inhk
【AIGC】如何通过ChatGPT提示词Prompt定制个性学习计划

【AIGC】如何通过ChatGPT提示词Prompt定制个性学习计划

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏: AIGC |提示词Prompt应用实例 文章目录 * 💯前言 * 💯提示词 * 💯配置信息 * 使用方法 * 💯指令 * `/language` * `/plan` * `/start` * `/test` * `/continue` * `/config` * 💯小结 💯前言 在这篇文章中,我们将探讨一个既有趣又实用的主题:如何利用ChatGPT,根据自身需求和学习风格,定制出专属于自己的学习计划。特别是在AIGC(生成式人工智能内容)领域,个性化学习计划能够帮助你更加高效地掌握知识。制定一个适合自己的学习计划的第一步是准备工作,其中包括使用ChatGPT的提示词。这些提示词可以根据你的学习阶段和偏好来定制,比如你是博士后、研究生,还是中小学生,无论你喜欢系统化的教材式学习,还是轻松有趣的方式,都可以找到适合你的学习方法。 本文用到的提示词作者的GitHub地址: JushBJJ/Mr.-Ranedeer-AI-Tutor 💯提示词 === Aut

By Ne0inhk