在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 20349|回复: 50

[原创] OpenMIPS(Verilog HDL)教学版v1.1发布,另附模块说明

[复制链接]
发表于 2014-3-25 23:38:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
OpenMIPS(Verilog HDL)教学版v1.1发布,修改了v1.0中的几处bug:

(1)有一些多余的信号定义删除。
(2)对CP0中的特殊寄存器count、compare、status的理解之前是有误的,现已改正。
(3)添加对溢出异常的处理。

注意这个版本运行之前的中断测试程序会有问题(因为修改了count、compare、cause寄存器的实现),以后会陆续发布新的测试程序,将随一个教程一起发布

OpenMIPS_VerilogHDL_Study_v1.1.rar (430.4 KB, 下载次数: 710 )
教学版OpenMIPS各个模块的接口说明.pdf (220.21 KB, 下载次数: 619 )

      OpenMIPS是五级流水线的处理器,各个阶段的模块、对应的文件如下图所示。图中每个模块的上方标注的是模块名,下方标注的是对应的文件名。模块之间的关系没有绘出,因为关系比较复杂,在论坛不便绘制,读者可以参考附件中“openmips模块连接关系图.vsd”文件,其中绘制了模块之间详细的连接关系。


未命名.bmp

1)取指阶段

lPC模块:给出指令地址,其中实现指令指针寄存器PC,该寄存器的值就是指令地址。对应pc_reg.v文件

lIF/ID模块:实现取指与译码阶段之间的寄存器,将取指阶段的结果(取得的指令、指令地址等信息)在下一个时钟传递到译码阶段。对应if_id.v文件

2)译码阶段

lID模块:对指令进行译码,译码结果包括运算类型、运算操操作数、要写的目的寄存器信息等。对应id.v文件。

lRegfile模块:实现了3232位通用整数寄存器,可以同时进行两个寄存器的读操作和一个寄存器的写操作。对应regfile.v文件。

lID/EX模块:实现译码与执行阶段之间的寄存器,将译码阶段的结果在下一个时钟周期传递到执行阶段。对应id_ex.v文件。

3)执行阶段

lEX模块:依据译码阶段的结果,进行指定的运算,给出运算结果。对应ex.v文件。

lDIV模块:进行除法运算的模块。对应div.v文件。

lEX/MEM模块:实现执行与访存阶段之间的寄存器,将执行阶段的结果在下一个时钟周期传递到访存阶段。对应ex_mem.v文件。

4)访存阶段

lMEM模块:如果是加载、存储指令,那么会对数据存储器进行访问,还在该模块进行异常判断。对应mem.v文件。

lMEM/WB模块:实现访存与回写阶段之间的寄存器,将访存阶段的结果在下一个时钟周期传递到回写阶段。对应mem_wb.v文件。

5)回写阶段

lCP0模块:对应MIPS架构中的协处理器CP0

lLLbit模块:实现寄存器LLbit,在指令llsc的处理过程中会使用到该寄存器

lHILO模块:实现寄存器HILO,在乘法、除法指令的处理过程中会使用这两个寄存器


      另外,还有一个CTRL模块,这个模块是用来控制整个流水线的(比如:流水线暂停、流水线清除等),所以不便于将其归入流水线其中一个阶段,在上图的上部单独画出。


发表于 2014-3-26 12:34:49 | 显示全部楼层
支持雷大,弱弱问句,步步惊芯整本书就剖析了几条指令吗?  我暂时只大致翻了翻
 楼主| 发表于 2014-3-26 13:34:12 | 显示全部楼层
回复 2# 胡兵


    对每一类指令分析了其中一条或几条典型指令,其余的都是类似的
发表于 2014-3-26 16:15:25 | 显示全部楼层
support
发表于 2014-3-26 20:40:56 | 显示全部楼层
谢谢楼主了,好好看看。
发表于 2014-3-27 02:35:52 | 显示全部楼层
建议雷大可以想很多CSDN上面很多开源代码的blog那样,开一个支付宝赞助账户。
 楼主| 发表于 2014-4-1 10:58:32 | 显示全部楼层
回复 6# vlsi1217


    还是专注代码完善,等差不多了,至少bug没有了,再考虑吧,太耗时间了。
发表于 2014-4-7 22:09:09 | 显示全部楼层
回复 1# leishangwen楼主怎么就这么给力。。
发表于 2014-4-10 10:52:01 | 显示全部楼层
最近一直在看这个verilog版的openmips,一些简单的模块可以看懂,比如if,regfile,ctrl等都挺容易理解的,但是对于id.ex,mem就有一些复杂,希望楼主能提供一些讲解性的东西还有测试教程,个人感觉最大的乐趣莫过于cpu能够跑起来。
 楼主| 发表于 2014-4-11 11:54:05 | 显示全部楼层
回复 9# kaizige521


    肯定会有介绍的,类似于“十天实现处理器”那样的说明,只是最近事情太多,一挨有空,马上会着手写的,最迟会在5月上旬,感谢关注!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-28 13:04 , Processed in 0.036352 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表