SOPC之NiosⅡ系统(二)

news2025/1/11 8:08:35

常用NIOS Ⅱ组件概括

目录

1.时钟组件

2.Nios Ⅱ处理器

2.1 Main

2.2 Vector

 2.3 Caches and Memory Interfaces

2.4 Arithmetic Instructions

2.5 JTAG Debug

3.RAM组件

4.System ID组件

5.JTAG UART组件

6.PIO组件

6.1 基础设置(Basic Settings)

6.2 输出寄存器(Output register)

6.3 边沿捕获寄存器(Edge capture register)

6.4 中断(Interrupt)

​6.4.1 电平触发 IRO

6.4.2 边沿触发IRO


1.时钟组件

当打开Platform Designer就会默认添加了一个CLOCK组件,通过双击clk_0可以进行参数设置

时钟频率(Clock frequency)默认为50000000Hz,即50MHz,那么在Qsys系统的顶层会引出一个clock输入信号,在 FPGA 中就必须输人一个 50MHz 的时钟信号与之相连接。

时钟频率已知(Clockfrequency is known)默认勾选

复位同步边沿(Reset synchronous edges)有 None,Both 和Deassert三个选项,这些设置主要与复位和时钟的同步或异步控制机制有关。若没有特殊要求,可以不用设置。

2.Nios Ⅱ处理器

在IP Catalog中搜索Nios可以找到,双击添加Nios Ⅱ Processor组件

(14.0版本之前叫Nios Ⅱ(Classic)Processor、14.0版本之后叫Nios Ⅱ Processor)

2.1 Main

添加后会有类型选择
Nios II/f(快速型,消耗资源最高,性能最强)
Nios II/e(经济型,消耗资源最少,性能最低)

2.2 Vector

Nios Ⅱ还需要在添加完存储器组件后设置复位向量和异常地址向量

复位向量存储器(Reset vector memory)用于设置CPU复位后从什么地方启动

异常向量存储器(Exception vector memory)用于存放CPU处理异常时间的代码,例如中断代码。该向量常指向于一个低延迟存储器,如SDRAM、SRAM、或者片上存储器(On Chip RAM)

快速TLB命中异常向量(Fast TLB Miss Exception Vector)主要与MMU协作,管理存储器

 2.3 Caches and Memory Interfaces

主要设置CPU的数据和指令缓存部件

指令缓存(Instruction cache)用于缓存NIOS II处理器的各种指令,以提高 CPU 的运行效率。该缓存的大小从 512 字节到 64K 字节用户可自定义设置,也可以不使用指令缓存。

当选择不使用指令缓存时,NIOS II处理器的指令总线将会被移除,因此必须要包含一个紧耦合型指令存储器(tightly-coupled instruction memory)

数据缓存(Data cache)用于存放数据,Datacache数据缓存选项用于指定缓存的大小。该缓存的大小从 512 字节到 64K 字节用户可自定义设置,也可以不使用指令缓存。

指令缓存和数据缓存在刚开始接触NIOS II处理器时使用默认设置即可。

2.4 Arithmetic Instructions

用来设置NIOS II处理器实现算术指的方式,可以通过选择Divide Hardware来设置NIOS II处理器是否支持硬件除法运算,也可以选择乘法、移位等运算的实现方式。

2.5 JTAG Debug

该模块为了方便调试,但要占用较多逻辑资源,调试完毕后可取消勾选。

JTAG调试模块根据功能的不同可设置是否使用硬件断点,使用数据触发,跟踪类型和跟踪存储等。

3.RAM组件

在IP Catalog中搜索On-chip添加On-chip Memory(RAM or ROM)组件

存储器类型(Memory Type)中Type有RAM(Writable)和ROM(Read-only)两个选项

Size中设定存储器数据位宽(Data width)为32位,存储量大小(Total memorysize)为 22528B(即 22KB)。其他设置使用系统默认设置。

4.System ID组件

在IP Catalog中搜索System ID添加System ID Peripheral Intel FPGA IP组件

System ID是Nios Ⅱ处理器的唯一识别号,用于确认当前运行的程序和 FPGA 中内嵌的 Nios Ⅱ处理器是否相匹配。

System ID的值为32位,在Qsys中添加该组件时设置。在弹出的 System ID组件设置页面中,可以设置这个32位ID值为0x1223344

5.JTAG UART组件

在IP Catalog中搜索JTAG UART添加JTAG UART Intel FPGA IP组件

JTAG UART使用FPGA 的JTAG 接口协议实现PC和FPGA内部Nios Ⅱ处理器之间串行字符串的传输

 在JTAG UART 组件设置页面中,为了降低这个外设所要用到的缓存FIFO对存储器的需求,设置 Write 和 Read FIFO 的存储量为16B,并且选上Construct using registers instead of memory blocks,表示不使用FPGA片内存储器,而是使用FPGA的逻辑来实现 FIFO。

6.PIO组件

PIO IP核为Avalon-MM从端口和通用I/O端口提供了一个存储器映射(memory-mapped)接口。
PIO的I/O 端口可以连接片内用户逻辑( verilog 语言完成的电路部分),也可以连接到与外部器件相连的 FPGA引脚。每个PIO 核能提供最高 32 I/O 端口,可以在一个 Qsys 系统里添加多个 PIO IP 核。
PIO 为用户逻辑或外围器件提供了简单的 I/O 控制,如控制 LED 灯、获取按键的电平变化信息、控制显示设备、与片外器件通信等。

在IP Catalog中搜索PIO添加PIO(Parallel I/O) Intel FPGA IP组件

6.1 基础设置(Basic Settings)

设置PIO端口的数据位宽(Width,1-32bits,因为最高提供32个I/O端口)

设置PIO端口方向(Direction)

       Bidirectional(tristate) ports,每个PIO位使用一个引脚来驱动和捕获数据,可单独设定每个引脚方向

       Input port only,PIO端口只能捕获输入数据

       Output port only,PIO端口只能驱动输出

       Both input and output ports(InOut),输入和输出端口总线独立,同时生成输入和输出端口

设置端口复位值(Output Port Reset Value)可以确定输出端口的复位值,有效值的长度取决于端口宽度

6.2 输出寄存器(Output register)

Enable individual bit setting/clearing能置位或清零各自独立的输出端口。
当这个选项被选中之后,会出现两个额外的寄存器——置位寄存器、清零寄存器,可以用这些寄存器去确定要置位或清零的位。
 

6.3 边沿捕获寄存器(Edge capture register)

当在Basic Settings中的Direction处选中Input选项时,PIO IP核便允许选中边沿捕获(synchoronously capture)和产生IRQ选项(Generate IRQ)。
当选择Output Ports选项时,边沿捕获和产生IRQ选项是无法选中的。
当选中Synchronously capture选项时,PIO IP核中将包含边沿捕获寄存器 (edge capture)。当一个输入端口产生了特定的边沿时,边沿捕获寄存器能让核检测或产生一个可选的中断。

要检测的边沿种类
Rising Edge 上升沿:
Falling Edge 下降沿:
Any Edge 上升或下降沿。

选择了Enable bit-clearing for edge capture register选项后,给edge capture 寄存器单独的位写1清中断
若是没有选择Enable bit-clearingfor edge capture register,则是写任意数清中断。
当指定类型的边沿在输入端口出现时,边沿捕获寄存器对应位置 1。当 Synchronously capture 选项未选中时,边沿捕获寄存器不存在。

6.4 中断(Interrupt)

当选中Generate IRQ选项时,若输入端口发生指定的事件,则PIO IP核发出IRQ中断(Interrupt request)
中断是指在计算机的运行过程中,由于系统内部或外部或现行程序本身出现紧急事件,计算机立即自动停止正在运行的程序,并开始处理新的程序(中断程序),在处理完中断程序后返回原来的程序接着运行。
 触发IRQ 的方式有两种:一种是电平触发(Level),当输入端口为高电平时触发:另一种是边沿触发(Edge),当输入端口出现了上升沿或下降沿或者双沿中的一种。


6.4.1 电平触发 IRO

产生电平出发IRO的条件:
(1) 首先PIO核的端口需要是Input的端口
(2) 在Interrupt项中,选中GenerateIRQ选项
(3) 选中电平触发选项,即在IRQ type (IRQ 类型)中选中Level。
(4) 使能中断。在硬件设置完成后,需要在软件中给中断屏蔽寄存器 (interruptmask Register) 写1。
电平触发IRQ的工作方式:
(1) 当硬件设置成电平触发模式时,PIO IP核的输入端口出现高电平,就能触发IRQ: 若想要低电平触发IRO,需要在 Quartus I 工程的顶层,在输入端口前面加一个非门。
(2) 当PIO IP核某一个输入端口满足IRQ触发条件,PIO IP核发出IRQ后,程序开始处理中断函数假如此时输入端口一直满足IRO触发条件,那么程序在处理完中断函数后会再次进入中断函数接着运行直到触发条件不存在了,程序才能在处理完中断函数后回到主函数。
(3) 若程序中有复数个中断函数,且中断函数之间还有优先级的区别,就可能发生这样的情况:主程序正在处理某一个中断函数,这时突然触发一个优先级更高的IRO,那么主程序会从当前处理的中断函数跳到优先级更高的中断函数。

6.4.2 边沿触发IRO

产生边沿触发IRO需要的条件
(1) 首先PIO核的端口需要是Input的端口
(2) 在Edge capure register(边沿捕获寄存器)栏选中Synchronously capture选项。此时可以在 Edge type一栏选择触发电平,里面的选项有 RISING (上升沿)、FALLING (下降沿)、ANY(任意边沿)。在 Edgcapure register 栏还有 enable bit-clearing for edge capture register 选项。选择了 enable bit-clearing for edgccapture register 选项后,给 edge capture 寄存器单独的位写1 清中断:若是没有选择 nable bit-clearing foredge capture register 选项,则是写任意数清中断。每触发一次边沿类型的IRQ 后,需要给 edge capture 寄存器写 1清一次中断,否则 PIO IP 核会一直输IRQ。(3) 在 PIO IP 核中加入IRQ 这个功能,也就是在 nterrupt 项中,选中 Generate IRQ 这一选项    (4) 选中边沿触发选项,即在 IRQ type (IRQ类型)中选中 EDGE。
(5) 使能中断。在硬件设置完成后,需要在软件中给中断屏蔽寄存器 (interruptmask Register) 写1

边沿触发的 IRQ 工作的方式
(1) 当硬件设置成边沿触发模式时,PIO IP核的输入端口出现相应的边沿,就能触发IRQ
(2)当 PIO IP 核某一个输入端口满足IRQ触发条件,PIOIP 核发出IRQ 后,程序开始处理中断函数。在中断函数中一般包含给 edge capture 存器写 1清中断的操作。假如此时输入端口一直满足IRQ触发条件,那么程序在处理完中断函数后会再次进入中断函数接着运行。直到触发条件不存在了,程序才能在处理完中断函数后回到主函数。
(3) 若程序中有多个中断函数,且中断函数之间还有优先级的区别,就可能发生这样的情况:主程序正在处理某一个中断函数,这时突然触发一个优先级更高的IRO,那么主程序会从当前处理的中断函数跳到优先级更高的中断函数。

参考文献:特权同学《勇敢的芯-伴你玩转NIOS Ⅱ》、正点原子《开拓者Nios Ⅱ开发指南》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751875.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应用于智能眼镜上实现检测功能的距离传感芯片

随着智能穿戴设备的发展,各种新型的电子产品不断被研发出来,诸如智能头盔、智能手表、智能手环等等,智能眼镜就是其中一种,国内华为、小米相继推出智能产品。 智能眼镜具有和智能耳机相似的功能,不仅保留眼镜本身功能…

Twitter迎来史上最大危机,超级App能成为其救命武器吗?

前段时间闹得沸沸扬扬的“马扎大战”再出新剧情,继“笼斗”约架被马斯克妈妈及时叫停之后,马斯克在7月9日再次向扎克伯克打起嘴炮,这次不仅怒骂小扎是混蛋,还要公开和他比大小?!!此番马斯克的疯…

应用开发环境搭建

应用开发环境搭建 1、安装JDK linux上传安装包解压缩设置环境变量判断JDK是否安装成功 2、nginx下载选择Stable version版本下载到本地(该版本为Linux版本),下载完成后直接在本地解压后放入linux系统中下载完成后,安装Nginx&#…

android studio 使用lib中的framework.jar编译

本文参考了网上搜索到的内容总结了一下&#xff0c;感谢大神们的无私奉献。 在App中的build.gradle中的android{}下添加&#xff1a; android{...gradle.projectsEvaluated {tasks.withType(JavaCompile) {Set<File> fileSet options.bootstrapClasspath.getFiles()Li…

想知道音频转文字怎么弄吗?看完这篇文章你就懂了

小伙伴们&#xff0c;你们有没有遇到过这样的情况&#xff1a;听到了一段有趣或重要的音频&#xff0c;但却无法方便地保存下来或与他人分享&#xff1f;别担心&#xff0c;现在有很多免费的音频转文字软件app可以帮助我们解决这个问题。不过&#xff0c;这些音频转文字软件app…

S32K系列MCU介绍和资料搜集

1. S32K系列微控制器概述 S32K系列微控制器&#xff0c;是NXP推出的专门面向汽车电子和工业应用场合的微控制器。基于ArmCortex-M系列的可扩展、低功耗微控制器&#xff0c;获得了AEC-Q100认证&#xff0c;具有高级功能安全、信息安全和软件支持&#xff0c;适用于工业和汽车A…

进程间通信之匿名管道(pipe)

文章目录 前言管道管道的创建管道的使用单进程使用管道进行通信多进程使用管道进行通信关闭管道的读端/写端 总结 前言 管道分为匿名管道和命名管道&#xff0c;匿名管道只能在有共同祖先的(有亲缘关系)进程中使用&#xff0c;而命名管道可以在任意进程中使用&#xff0c;以下…

【youcans动手学模型】目标检测之 OverFeat 模型

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【youcans动手学模型】目标检测之 OverFeat 模型 1. OverFeat 卷积神经网络模型1.1 论文摘要1.2 技术背景1.3 基本方法模型设计多尺度分类滑动窗口&#xff08;Sliding window&#xff09;定位&#…

ACL—访问控制列表

目录 ACL的分类&#xff1a; 配置 配置基础ACL &#xff1a; 例一&#xff1a; 例二&#xff1a; 配置高级ACL &#xff1a; 例一&#xff1a; 例二&#xff1a; ACL—访问控制列表 配置了ACL的网络设备根据事先制定号的规则&#xff0c;然后对经过该设备的流量按照对应的规…

访问者模式:灵活处理对象结构

访问者模式&#xff1a;灵活处理对象结构 在软件开发中&#xff0c;我们经常会遇到处理复杂对象结构的情况。对象结构由多个不同类型的对象组成&#xff0c;而每个对象都可能具有不同的行为。此时&#xff0c;访问者模式可以派上用场。访问者模式是一种行为设计模式&#xff0…

接口的幂等性如何设计

前言 所谓幂等: 多次调用方法或者接口不会改变业务状态&#xff0c;可以保证重复调用的结果和单次调用的结果一致。 我们在开发中主要操作也就是CURD,其中读取操作和删除操作是天然幂等的&#xff0c;我们所关心的就是创建操作、更新操作。 创建操作一定是非幂等的因为要涉及…

JVM包含哪几部分?JVM内存模型?线程的生命周期? 对Spring AOP的理解?布隆过滤器

目录 1. JVM包含哪几部分2. JVM内存模型3. 双亲委派模型4. Java内存模型5. Serializable接口为什么需要定义serialVersionUID常量6. 线程的生命周期7. 什么是MVC8. volatile关键字的理解9. 对Spring AOP的理解10. 布隆过滤器 1. JVM包含哪几部分 JVM由三部分组成&#xff1a;类…

WalkRE2019--构面流程

1、手动圈图 选中面层中的一般房屋面&#xff0c;双击&#xff0c;鼠标变成十字光标后&#xff0c;开始在图上圈出一个闭合形状。如下&#xff1a; 如上&#xff0c;完成一个一般房屋面的绘制。 2、加工菜单栏中的自动构面功能。 这里推荐点击构面方法&#xff0c;原因是操作起…

MachineLearningWu_13_AGI

AGI的全称是artificial general intelligence&#xff0c;通用人工智能&#xff0c;而我们现在做的关于医学影像的分析&#xff0c;可以说完全是ANI。 而我们使用MLP对于大脑中神经网络的模拟更是完全不同于人类大脑的行为。

mysql(三)InnoDB之自适应hash索引

目录 前言自适应哈希索引 (Adaptive Hash Index, AHI)既然是哈希&#xff0c;key 是什么&#xff0c;value 是什么&#xff1f;为啥叫 “自适应 (adaptive)****” 哈希索引&#xff1f;系统会不会判断失误&#xff0c;是不是一定能加速&#xff1f; 创建自定义的hash索引思路示…

华为申请注册盘古大模型商标;京东推出言犀大模型,率先布局产业应用

7月14日科技新闻早知道&#xff0c;一分钟速览。 1.华为申请注册盘古大模型商标&#xff1a; 据天眼查 App 显示&#xff0c;7 月 7 日&#xff0c;华为技术有限公司申请注册“华为云盘古”、“Huawei Cloud Pangu Models”文字及图形商标&#xff0c;国际分类为网站服务、社…

基础设施SIG月度动态:龙蜥官网新增CSDN第三方账号登录,内核CI新增测试任务停止功能

基础设施 SIG&#xff08;OpenAnolis Infra SIG&#xff09;目标&#xff1a;负责 OpenAnolis 社区基础设施工程平台的建设&#xff0c;包括官网、Bugzilla、Maillist、ABS、ANAS、CI 门禁以及社区 DevOps 相关的研发工程系统。 01 SIG 整体进展 1. 龙蜥社区官网与 CSDN dev…

管理大规模文件的挑战与解决方案

管理大规模文件是当今企业和组织面临的一项重要挑战。随着信息技术的迅速发展和数字化转型的推进&#xff0c;组织内外产生的文件数量呈指数级增长&#xff0c;如何高效地管理这些文件成为了亟待使用文件管理系统解决的问题。 挑战一&#xff1a;数据量巨大 随着企业和组织的…

基于STM32CUBEMX驱动TOF模块VL6180与VL6180X(5)----驱动多个VL6180X

基于STM32CUBEMX驱动TOF模块VL6180与VL6180X----5.驱动多个VL6180X 概述样品申请修改设备地址配置vl6180x主程序测试结果 概述 在本章中&#xff0c;我们将探讨如何同时驱动多个VL6180传感器进行距离测量。我们将介绍如何有效地管理多个传感器之间的通信和控制&#xff0c;以确…

❤️创意网页:创造精彩的登录体验-3D翻转登录页面

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…