ET创芯网论坛(EETOP)

您现在是游客状态

请您   登录   或  注册  享受更多权益

超低功耗免电池物联网方案合集(下载送好礼!)
查看: 8063|回复: 35

[原创] 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, 下载次数: 507)
未命名.JPG

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

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

 楼主| 发表于 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 下一条

小黑屋|手机版|Archiver|ET创芯网 ( 京ICP备:10050787号 京公网安备:110105001212 )

GMT+8, 2019-4-22 08:21 , Processed in 0.063801 second(s), 13 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表