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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 15891|回复: 39

[原创] OpenMIPS教学版(VHDL)v1.0正式发布,附讲解视频

[复制链接]
发表于 2013-12-7 15:05:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 leishangwen 于 2013-12-7 15:08 编辑

经过这么多天的整理,今天正式发布Openmips教学版(Vhdl)v1.0,命名为OpenMIPS_VDHL_study_v1.0,另外,录制了一个视频,
介绍OpenMIPS的基本情况、测试方法。童鞋们快快下载吧!



文件目录如下:

未命名.JPG

各个文件夹具体说明如下:
rtl
所有OpenMIPS的源代码文件在该文件夹下,包括流水线文件iu.vhd、除法模块div.vhd、寄存器文件Regfile.vhd、顶层文件OpenMIPS.vhd、宏定义文件stdlib.vhd
min_sopc
包括指令存储器imem.vhd,数据存储器dmem.vhd,以及一个用来测试OpenMIPS的最小SOPC的顶层文件OpenMIPS_min_sopc.vhd,在其中例化dmem、imem、OpenMIPS,形成一个很小的SOPC
testbench
包括testbench测试文件OpenMIPS_min_sopc_tb.vhd,在其中例化了OpenMIPS_min_sopc
tool
包括一个小工具Bin2Mem.exe,该工具用来将GCC编译得到的二进制文件进行格式变化得到inst_rom.data文件,使用后者初始化OpenMIPS_min_sopc中的指令存储器imem,以便进行测试
10_Days_make_OpenMIPS
在之前发布过一些文档介绍如何使用10天时间实现处理器OpenMIPS,本文件夹下的内容是相关资料的整理,包含一个文档《10天实现处理器——OpenMIPS成长记》,以及与之对应的每一天的OpenMIPS代码,比如:第二天对应的OpenMIPS代码位于Day2目录下,朋友们通过逐步增长的OpenMIPS代码,可以更好的理解OpenMIPS的设计
doc
包含一些文档,具体有:《MIPS32指令集》、《MIPS Architecture for Programmers Volume III》、《OpenMIPS快速入门手册》
asm_test
包括所有的测试例程,其组织方式是参照《10天实现处理器——OpenMIPS成长记》一文,按照“天”来组织,比如Day2文件夹中存放的是《10天实现处理器——OpenMIPS成长记》一文中第二天对应的测试例程,当然所有的测试例程都可以在最终的OpenMIPS中进行测试


源代码下载:

OpenMIPS_VHDL_study_v1.0.rar (4.77 MB, 下载次数: 540 )

视频如下,一共50多M,直接打包上传了,就不使用优酷了

OpenMIPS教学版v1.0视频讲解.part1.rar (14 MB, 下载次数: 492 )

OpenMIPS教学版v1.0视频讲解.part2.rar (14 MB, 下载次数: 394 )

OpenMIPS教学版v1.0视频讲解.part3.rar (14 MB, 下载次数: 660 )

OpenMIPS教学版v1.0视频讲解.part4.rar (9.08 MB, 下载次数: 254 )
未命名.JPG

OpenMIPS教学版v1.0视频讲解.part1.rar

14 MB, 下载次数: 112 , 下载积分: 资产 -5 信元, 下载支出 5 信元

 楼主| 发表于 2013-12-7 15:10:07 | 显示全部楼层
最后的那个压缩文件夹下载链接是多余的,但是我在帖子中无法去掉,大家不要下载就行了
发表于 2013-12-7 22:38:16 | 显示全部楼层
想尝试将vhdl改成verilog,遇到vhdl的 record 不知有什么好的办法改成verilog对应的东西?
 楼主| 发表于 2013-12-8 09:07:48 | 显示全部楼层
可能需要新建一个process,在其中传递寄存器
发表于 2013-12-8 22:06:51 | 显示全部楼层
不是很明白ls的方法,目前找到的这样一种方法:

//      aggregate vector                       array
reg    [14:0] data_storage_cell_array [0:STORAGE_SIZE-1] ;

wire    [1:0] rd_a ;
wire    rd_b ;
wire    [7:0]  rd_c ;
wire    [3:0] rd_e ;

...

assign { rd_a, rd_b, rd_c, rd_e } = data_storage_cell_array[read_address] ;

//  

但我这个方法好像解决不了两级record。如r.f.pc
 楼主| 发表于 2013-12-10 12:08:44 | 显示全部楼层
回复 5# xiaohuozi


    我记得在《兼容ARM的开源处理器设计》、《计算机体系结构设计与实现Verilog版》中都有过应用。
    就是定义一个寄存器ID,定义一个寄存器EX,在时序逻辑中,将iD的值赋值给EX,这样就可以了
发表于 2013-12-11 17:47:53 | 显示全部楼层
看了一下《计算机原理设计与实现Verilog版》书中的流水线cpu verilog实现一节,感觉和openmips vhdl版的差别比较大,好像里面也没有体现出结构体的verilog版描述,换个想法,干脆就直接reg描述好了,如reg[31:0] r_f_pc;把名称改得有意义些,暂时就想到这个处理方法。
发表于 2013-12-11 20:09:48 | 显示全部楼层
回复 1# leishangwen
发表于 2013-12-11 20:10:26 | 显示全部楼层
回复 8# flameman11


    支持
发表于 2014-1-11 10:44:00 | 显示全部楼层
好东西。用到wishbone
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-3-29 12:56 , Processed in 0.040046 second(s), 11 queries , Gzip On, Redis On.

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