1、Nios II 是软核处理器,有三种运行模式:超级用户模式、用户模式和调试模式。目前有三种类型:Nios II/e、 Nios II/s、 Nios II/f,性能后一种比前一种好,但所耗资源相应增加,这有点像似ARM处理器分ARM 7 和ARM 9 等一样,Nios
II包含以下可见功能模块:
寄存器文件、算术逻辑单元、用户逻辑接口、异常控制器、中断控制器、数据总线和指令总线、数据Cache和指令Cache、JTAG调试模块和紧耦合的数据、指令存储器接口。
Nios II寄存器文件包多32个通用寄存器(r0~r31)和6个控制寄存器(ct0~ctl5)。
r0(zero):用于对寄存器清零。
r1(at):汇编临时变量。
r2、r3:存放函数返回值。
R4~r7:用于传递函数参数。
r8~r15:调用者要保存的寄存器。
R16~r23:子程序要保存的寄存器。
R24(et):异常处理时使用。
R25(bt):断点处理时使用。
R26(gp):全局指针。
R27(sp):堆栈指针。
R28(fp):帧指针,用于跟踪栈的变化。
R29(ea):保存异常返回地址。
R30(ba):保存断点返回地址。
R31(ra):保存函数返回地址。
6个控制寄存器(仅超级用户模式有读/写访问权):
Ctl0(status):仅低两位有效,设置运行模式和总体中断情况。
Ctl1(estatus):仅低两位有效,影子寄存器,异常或中断时对status备份。
Ctl2(bstatus):同上。
Ctl3(ienable):中断允许位,一位对应一个外中断,共32个。
Ctl4(ipending):中断标志位
Ctl5(cpuid):只读,用于装载处理器id,在多处理器时可分辨CPU标志。
2、
复位,有两个信号:reset和cpu_resetrequest。复位后,Nios II处理器执行以下操作:
(1)
清status,进入超级用户模式,并禁止外中断;
(2)
使当前Cache队列指令无效,从程序存储器中的reset 地址取出第一条指令;
(3)
从复位地址开始运行程序。
3、
异常和中断控制器
中断控制器:支持32个外部硬件中断,irq0~irq31。IRQ优先级由软件决定,Nios II支持中断嵌套。硬件中断发生的充要条件:
(1)
status 控制寄存器的PIE为1
(2)
某个irq n 有效
(3)
ienable 寄存器中,该中断源相应为1。
异常发生后,处理器执行以下操作:
(1)
复制status 寄存器到estatus
(2)
清除status 的U位和PIE位,强制进入超级用户模式,和禁止所有硬件中断
(3)将异常返回地址写入r29(ea)
(4) 跳转到异常处理地址。
(5) 执行有HAL插入的代码,判断异常源和异常优先级,才跳转到异常服务子程序。
异常的返回,处理器执行以下操作:
(1) 复制estatus 寄存器到status,恢复异常前的处理器状态,
(2)把异常返回地址从r29(ea)写入程序计数器,若为硬件中断,则返回地址应为ea-4。
4、
存储器和I/O口
Nios II 处理器属于哈佛结构,支持独立指令和数据总线,并遵循Avalon 接口规范,对存储器和外设的访问采用小端模式。寻址空间范围为2GB。
文章评论(0条评论)
登录后参与讨论