FPGA Nios II学习笔记一
该笔记主要内容来源于锆石科技的教程及Altera相关手册,主要用于学习记录。
- FPGA Nios II
- 寄存器组
- 通用寄存器
- 控制寄存器
- 影子寄存器组
- 复位信号
- 全局硬件复位信号 reset
- 本地复位信号 cpu_resetrequest
- 异常和中断
- 内部中断
- 外部中断
- 存储器与IO结构
- 指令主端口和数据主端口
- 指令高速缓存和数据高速缓存
- MMU和MPU
- 紧耦合存储器
- Nios II处理器性能总结
FPGA Nios II
寄存器组
寄存器分为三类:32个通用寄存器、32个控制寄存器、影子寄存器组
通用寄存器
用来暂存指令、数据、地址
控制寄存器
用于控制和确定Nios II处理器的操作模式,以及当前执行任务的特性
影子寄存器组
用来备份通用寄存器和状态寄存器,影子寄存器组通常会和外部中断控制器联合使用
每个外部中断对应一个** 影子寄存器组** ,用于快速保护中断现场,进行切换
复位信号
全局硬件复位信号 reset
外部输入,高电平有效,强制处理器核进入复位
本地复位信号 cpu_resetrequest
高电平有效,只让CPU复位,而NIOS II系统中的其他元件不受这个复位影响
异常和中断
NIOS II中讲中断机制统称为异常,根据类型分为以下五类
根据中断异常的实现方式可以分为:1、内部中断;2、外部中断
实际使用时,只能二选一
内部中断
Nios II支持32个内部中断,在Qsys为中断分配优先级
系统产生中断的条件:
1、Status控制寄存器中断PIE位置1
2、某个中断请求有效
3、在ienable寄存器中,该中断源相应位为1
Nios II系统相应中断依次执行的工作
1、把status寄存器内容复制到estatus寄存器总,保存当前处理器状态
2、清除status寄存器的PIE位为0,并禁止所有中断
3、把异常返回地址写入ea寄存器(r29)
4、跳转到异常处理地址
外部中断
在使用外部中断时,还需要设置相应的影子寄存器组。针对每一个外部中断,都会给它分配一个相对应的影子寄存器组,用来备份通用寄存器和状态寄存器,一旦外部中断来了之后,CPU就会切换到影子寄存器组中运行。运行完成后,CPU再返回到之前的寄存器中运行,因此能够完成保护现场的工作。
nios2_qsys通过interrupt_controller_in端口连接外部中断,逻辑中调用Vectored interrupt Controller IP
** 使用外部中断的场景**
1、 需要一个或多个中断来减少平均响应时间
2、中断性能有很强的实时性要求
3、不可屏蔽的中断
4、需要处理的中断超过32个
存储器与IO结构
Nios II 处理器属于哈弗结构,支持独立的指令和数据总线,指令和数据总线都遵循Avalon接口规范。
Nios II内核可以使用下面的一种或多种方式访问存储器和IO:
1、指令主端口:Avalon Master ,通过Avalon 系统互联结构访问到指令存储器
2、数据主端口:Avalon Master ,通过Avalon 系统互联结构连接到数据存储器
3、指令高速缓存:Nios II内核里面的高速缓存
4、数据高速缓存:Nios II内核里面的高速缓存
5、紧耦合指令或数据存储器端口:与Nios II内和外的快速存储器相连
数据主端口连接存储器和外设元件,指令主端口只连接存储器元件
指令主端口和数据主端口
指令主端口:对处理器将要执行的指令进行取指,并且它不执行任何写操作
数据主端口:1、当处理器执行装载指令时,从存储器或外设中读取数据,2、当处理器执行存储指令时,将数据写入存储器或外设
当存储器能够为系统提供指令,存储器需要连接指令端口和数据端口
指令高速缓存和数据高速缓存
高速缓存使用片内存储资源,能改善使用较慢片存储器的Nios II处理器系统的平均存储访问时间,在软件上几乎透明
注意,指令cache和数据cache虽然可以改善系统的整体性能,但是它会使程序执行的时间变得不可预测,对实时系统来说,代码执行的确定性——装载和存执指令、数据的时间必须是可预测的
MMU和MPU
MMU:Memory Manager Unit
实现虚拟地址与物理实际地址的映射管理,用于支持虚拟内存的操作系统
MPU:Memory Protection Unit
限制用户应用程序访问关键的系统资源,Nios Ii中仅提供了存储器保护,不支持内存映射管理,Altera HAL为MPU提供了基本的支持,无须OS
Nios II 中MMU与MPU只能二选一
紧耦合存储器
紧耦合存储器是一种紧挨着内核的快速SRAM,它不仅能改善系统性能,而且保证了装载和存储指令或数据的时间。
既能提高处理器的性能,又能获得可预测的实时响应,与cache相比的优点:
1、性能类似于高速缓存
2、软件能够保证关键性能的代码或数据存放在紧耦合存储器中
3、代码执行的确定性——转载和存储指令或数据的时间是可预测的
Qsys中连接示意图
nios2_qsys 会引出2个端口:tightly_coupled_data_master0 和 tightly_coupled_instruction_master0,然后例化onchip_memory用于缓存
Nios II处理器性能总结
Nios II处理器有三种类型
- Nios Lite
- Nios II/S
- Nios II/f
性能对比
FPGA Nios II学习笔记一相关推荐
- 工程师的NIOS II学习笔记(转)
来源:嵌入式在线 作者:山城棒棒儿军 发布时间:2009-09-22 12:29:31 Nios Development Board Reference Manual, Stratix II Edit ...
- 特权同学的FPGA/CPLD设计学习笔记
题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢.这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一 ...
- FPGA:zcu102学习笔记(参考自xing见博客)
1,概述 有一个计划是打算做一个摄像头的驱动与显示. 但是实际上手上只有一个zcu102开发板,没有摄像头,也没有上位机,自己也不会写.所以就将方案阉割成将录制好的视频放在SD卡里面,然后从SD卡里面 ...
- 【FPGA】流水线学习笔记
下面的内容来自:<从算法设计到硬件逻辑的实现> 所谓流水线设计实际上就是把规模较大.层次较多的组合逻辑电路分为几个级,在每一级插入寄存器组暂存中间数据.K 级的流水线就是从组合逻辑的输入到 ...
- 野火FPGA征途Pro学习笔记(IP核)
分频器 偶分频器 通过always语句,对系统时钟进型分频,例如4分频:对系统时钟进行计数四次,产生一个高电平的flag信号. 在后级模块中使用时,采用 系统时钟&&flag==1 的 ...
- Xilinx Virtex-5 FPGA CLB资源学习笔记
FPGA CLB介绍 一个CLB包含两个Slice,两个Slice分别位于独立的列,有各自的进位链,他们相互不连接.每个CLB连接到一个Switch matrix上已完成布线.CLB中底部的Slice ...
- ALTERA FPGA/NIOS II 黑金开发板 学生版
AB-S05信号发生器可以与FPGA黑金开发板相连接,实现外部频率信号的输入功能.也可以将FPGA黑金开发板的信号输出到AS-SO5测频端口,测量FPGA黑金开发板频率输出. 豪华包装打造精品中的极品 ...
- [转载][FPGA]有限状态机FSM学习笔记(二)
1. Mealy和Moore状态机的互换 对于给定的时序逻辑功能,可以用Mealy机实现,也可以用Moore机实现.根据Moore机比Mealy机输出落后一个周期的特性,可以实现两种状态机之间的转换. ...
- 【连载】【FPGA黑金开发板】NIOS II那些事儿--硬件开发(一)
声明:本文为原创作品,版权归黑金动力社区(http://www.heijin.org)所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 前言 从今天开始,NIO ...
- FPGA学习[2]——致敬Mbed!使用C++开发NIOS II
前言 NIOS II项目搭建 Hello World on Nios ii 点亮LED 快速的开发:使用C++的类 前言 在上一篇文章中博主介绍了如何让nios ii跑在板子自带的SDRAM里,这样大 ...
最新文章
- -bash: git: command not found
- 国内外开源与 SaaS ,团队协作平台、项目管理工具整理
- python中怎么比较两个列表-如何比较python中的两个列表并返回匹配
- ios 不同的数据类型转化为json类型
- 构造函数和析构函数能不能是虚函数
- 10拨号拒绝远程连接_ADLS动态拨号vps常见的问题
- cannot find #include caffe/proto/caffe.pb.h
- 为什么到处都在推python_Python为什么能取得越来越超然的地位
- Dubbo-go 服务代理模型
- 如何解决loss NAN的问题
- 产品经理如何搞定客户和业务
- 华为Mate8 NFC 时好时坏,怎么解决呢?
- 【华为 OJ】 字符串分割
- javascript实现前程无忧的选择城市
- 在Java语言的if语句是什么表达式,if语句中的条件表达式中只能使用
- 中国最大的“隐形首富”,掌舵中国最大汽车集团,身价高达760亿
- yarn logs 查看日志
- opencv学习【绘图】多边形polylinesfillPoly
- grep -e 和 grep -E 的区别是什么?
- Css Html / Summary of Interview Questions
热门文章
- C盘扩容(步骤记录)
- 计算机网络(第七版)谢希仁编著(转载请注明出处---https://www.cnblogs.com/qingl)...
- linux clac countif的使用
- 网站服务器配置在哪里设置,web服务器配置参数 web服务器建立网站具体步骤
- pytorch 安装教程
- Misumi米思米数据线驱动无法安装
- 2017年语义理解总结(一)
- 北京火车订票电话一览
- 设置JTree树形结构文字的颜色以及文字背景颜色的方法_-Chaz-_新浪博客
- 绘制地图其实并不难!如何绘制地图?看看Smartbi的制作方法