本帖最后由 oldbeginner 于 2014-7-27 17:37 编辑
*************第4章 第一条指令ori的实现
取指阶段的实现
**************
参考资料,http://blog.csdn.net/leishangwen/article/details/38082871
因为学习笔记只是辅助理解,所以有些不影响理解的细节会省略。
取指阶段取出指令存储器中的指令,同时,PC值递增,准备取下一条指令,包括PC、IF/ID两个模块。
pc 模块简略如上
使用了 <=,顺便向下看了其他模块,都是 <=,非阻塞赋值。
目前,感觉理解 <= 比较好的资料,如下
然后,理解很简单,引用一下
在复位的时候,输出的指令存储器使能信号为ChipDisable,表示指令存储器禁用,其余时刻指令存储器使能信号为ChipEnable,表示指令存储器使能。 当指令存储器禁用时,PC的值保持为0,当指令存储器使能时,PC的值会在每时钟周期加4,表示下一条指令的地址,因为一条指令是32位,而我们设计的OpenMIPS是可以按照字节寻址,一条指令对应4个字节,所以PC加4指向下一条指令地址。
************************** IF/ID模块的作用是暂时保存取指阶段取得的指令,以及对应的指令地址,并在下一个时钟传递到译码阶段。
if 应该是 interface fetch id 应该是 interface decode
VERILOG版本 好像 没有提到 IMEM。 |