该笔记主要内容来源于锆石科技的教程及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学习笔记一相关推荐

  1. 工程师的NIOS II学习笔记(转)

    来源:嵌入式在线 作者:山城棒棒儿军 发布时间:2009-09-22 12:29:31 Nios Development Board Reference Manual, Stratix II Edit ...

  2. 特权同学的FPGA/CPLD设计学习笔记

    题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢.这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一 ...

  3. FPGA:zcu102学习笔记(参考自xing见博客)

    1,概述 有一个计划是打算做一个摄像头的驱动与显示. 但是实际上手上只有一个zcu102开发板,没有摄像头,也没有上位机,自己也不会写.所以就将方案阉割成将录制好的视频放在SD卡里面,然后从SD卡里面 ...

  4. 【FPGA】流水线学习笔记

    下面的内容来自:<从算法设计到硬件逻辑的实现> 所谓流水线设计实际上就是把规模较大.层次较多的组合逻辑电路分为几个级,在每一级插入寄存器组暂存中间数据.K 级的流水线就是从组合逻辑的输入到 ...

  5. 野火FPGA征途Pro学习笔记(IP核)

    分频器 偶分频器 通过always语句,对系统时钟进型分频,例如4分频:对系统时钟进行计数四次,产生一个高电平的flag信号. 在后级模块中使用时,采用 系统时钟&&flag==1 的 ...

  6. Xilinx Virtex-5 FPGA CLB资源学习笔记

    FPGA CLB介绍 一个CLB包含两个Slice,两个Slice分别位于独立的列,有各自的进位链,他们相互不连接.每个CLB连接到一个Switch matrix上已完成布线.CLB中底部的Slice ...

  7. ALTERA FPGA/NIOS II 黑金开发板 学生版

    AB-S05信号发生器可以与FPGA黑金开发板相连接,实现外部频率信号的输入功能.也可以将FPGA黑金开发板的信号输出到AS-SO5测频端口,测量FPGA黑金开发板频率输出. 豪华包装打造精品中的极品 ...

  8. [转载][FPGA]有限状态机FSM学习笔记(二)

    1. Mealy和Moore状态机的互换 对于给定的时序逻辑功能,可以用Mealy机实现,也可以用Moore机实现.根据Moore机比Mealy机输出落后一个周期的特性,可以实现两种状态机之间的转换. ...

  9. 【连载】【FPGA黑金开发板】NIOS II那些事儿--硬件开发(一)

     声明:本文为原创作品,版权归黑金动力社区(http://www.heijin.org)所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 前言 从今天开始,NIO ...

  10. FPGA学习[2]——致敬Mbed!使用C++开发NIOS II

    前言 NIOS II项目搭建 Hello World on Nios ii 点亮LED 快速的开发:使用C++的类 前言 在上一篇文章中博主介绍了如何让nios ii跑在板子自带的SDRAM里,这样大 ...

最新文章

  1. -bash: git: command not found
  2. 国内外开源与 SaaS ,团队协作平台、项目管理工具整理
  3. python中怎么比较两个列表-如何比较python中的两个列表并返回匹配
  4. ios 不同的数据类型转化为json类型
  5. 构造函数和析构函数能不能是虚函数
  6. 10拨号拒绝远程连接_ADLS动态拨号vps常见的问题
  7. cannot find #include caffe/proto/caffe.pb.h
  8. 为什么到处都在推python_Python为什么能取得越来越超然的地位
  9. Dubbo-go 服务代理模型
  10. 如何解决loss NAN的问题
  11. 产品经理如何搞定客户和业务
  12. 华为Mate8 NFC 时好时坏,怎么解决呢?
  13. 【华为 OJ】 字符串分割
  14. javascript实现前程无忧的选择城市
  15. 在Java语言的if语句是什么表达式,if语句中的条件表达式中只能使用
  16. 中国最大的“隐形首富”,掌舵中国最大汽车集团,身价高达760亿
  17. yarn logs 查看日志
  18. opencv学习【绘图】多边形polylinesfillPoly
  19. grep -e 和 grep -E 的区别是什么?
  20. Css Html / Summary of Interview Questions

热门文章

  1. C盘扩容(步骤记录)
  2. 计算机网络(第七版)谢希仁编著(转载请注明出处---https://www.cnblogs.com/qingl)...
  3. linux clac countif的使用
  4. 网站服务器配置在哪里设置,web服务器配置参数 web服务器建立网站具体步骤
  5. pytorch 安装教程
  6. Misumi米思米数据线驱动无法安装
  7. 2017年语义理解总结(一)
  8. 北京火车订票电话一览
  9. 设置JTree树形结构文字的颜色以及文字背景颜色的方法_-Chaz-_新浪博客
  10. 绘制地图其实并不难!如何绘制地图?看看Smartbi的制作方法