YangLyu

Nios II CPU的接口信号

0
阅读(2691)

    针对Altera的Nios II处理器,我们不管Avalon总线的关系,单单考虑CPU的接口信号,考虑没有指令缓存,数据缓存,没有MMU/MPU,没有硬件乘法器触发器和自定义的指令单元,那么,最基本的Nios II处理器有哪些信号呢?


  clk, 时钟,不用说了,所有的Nios II内部的时序逻辑均同步与此时钟,上升沿有效。
  reset_n,  异步复位信号,低有效。
 

  d_irq, 中断源中断请求信号,32位。
  
  i_address, 指令总线的地址总线,32位,但是实际上,没有MMU的情况下,Nios II仅具备31位地址寻址能力。
  i_read, 指令读信号,高有效,表示Nios II从总线上读取。
  i_readdata, 读到的数据,32位。
  i_waitrequest, 总线上过来的读等待请求信号。
  
  d_address, 数据总线地址信号,32位。
  d_byteenable, 字节Mask,32位处理器,对应4位。
  d_read, 数据读。
  d_readdata, 数据总线读到的数据,32位。
  d_write, 数据写。
  d_writedata, 数据总线写数据,32位。
  d_waitrequest, 总线上过来的读/写等待请求信号。


    需要注意的是,Nios II为32位处理器,在处理器和指令一层,所有的地址空间的单位都是按字节计数的,但是对于Nios II而言,它的实现实际上PC指针是按照字(32位)来计数的,也就是:F_pc_plus_one = F_pc + 1; 而上面的地址总线是按照字节对齐还是按照字对齐的呢?答案是:字对齐。因为啊,它的实现方式是:i_address = {F_pc, 2'b00};