该笔记主要内容来源于锆石科技的教程及Altera相关手册,主要用于学习记录。
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
性能对比