原创 Nios II 软核处理器相关

2009-8-17 00:08 4008 4 4 分类: FPGA/CPLD

1Nios II 是软核处理器,有三种运行模式:超级用户模式、用户模式和调试模式。目前有三种类型:Nios II/eNios II/sNios II/f,性能后一种比前一种好,但所耗资源相应增加,这有点像似ARM处理器分ARM 7 ARM 9 等一样,Nios
II
包含以下可见功能模块:

  寄存器文件、算术逻辑单元、用户逻辑接口、异常控制器、中断控制器、数据总线和指令总线、数据Cache和指令CacheJTAG调试模块和紧耦合的数据、指令存储器接口。



Nios II寄存器文件包多32个通用寄存器(r0r31)和6个控制寄存器(ct0ctl5)。



r0(zero):用于对寄存器清零。



r1(at):汇编临时变量。



r2r3:存放函数返回值。



R4r7:用于传递函数参数。



r8r15:调用者要保存的寄存器。



R16r23:子程序要保存的寄存器。



R24et):异常处理时使用。



R25bt):断点处理时使用。



R26gp):全局指针。



R27sp):堆栈指针。



R28fp):帧指针,用于跟踪栈的变化。



R29ea):保存异常返回地址。



R30ba):保存断点返回地址。



R31ra):保存函数返回地址。



6个控制寄存器(仅超级用户模式有读/写访问权):



Ctl0status):仅低两位有效,设置运行模式和总体中断情况。



Ctl1(estatus):仅低两位有效,影子寄存器,异常或中断时对status备份。



Ctl2(bstatus):同上。



Ctl3(ienable):中断允许位,一位对应一个外中断,共32个。



Ctl4(ipending):中断标志位



Ctl5(cpuid):只读,用于装载处理器id,在多处理器时可分辨CPU标志。



2、 
复位,有两个信号:resetcpu_resetrequest。复位后,Nios II处理器执行以下操作:



(1)      
status,进入超级用户模式,并禁止外中断;



(2)      
使当前Cache队列指令无效,从程序存储器中的reset 地址取出第一条指令;



(3)      
从复位地址开始运行程序。



3、 
异常和中断控制器



中断控制器:支持32个外部硬件中断,irq0irq31IRQ优先级由软件决定,Nios II支持中断嵌套。硬件中断发生的充要条件:



(1) 
status 控制寄存器的PIE1



(2) 
某个irq n 有效



(3) 
ienable 寄存器中,该中断源相应为1



异常发生后,处理器执行以下操作:



(1) 
复制status 寄存器到estatus



(2) 
清除status U位和PIE位,强制进入超级用户模式,和禁止所有硬件中断



3)将异常返回地址写入r29ea

(4)    跳转到异常处理地址。



(5)  执行有HAL插入的代码,判断异常源和异常优先级,才跳转到异常服务子程序。



异常的返回,处理器执行以下操作:



1) 复制estatus 寄存器到status,恢复异常前的处理器状态,



 2)把异常返回地址从r29ea)写入程序计数器,若为硬件中断,则返回地址应为ea-4



4、 
存储器和I/O



Nios II 处理器属于哈佛结构,支持独立指令和数据总线,并遵循Avalon 接口规范,对存储器和外设的访问采用小端模式。寻址空间范围为2GB





PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条