OpenRisc-21-添加自己的IP core到ORSoC并测试 本小节实现了一个简单的ipcore:mycore。她的功能也非常简单,实现一个加法运算。 master(CPU)设置mycore的第一个寄存器,和第二个寄存器,mycore将两个寄存器的值相加放在第三个寄存器中,CPU读第三个寄存器来获得计算结果。 这次试验可以看到mycore计算1+2=3。 ok let's go!
21.1 ip core的编码和修改 要想在ORSoC里面加入自己的ipcore(本小节以‘mycore’为例),需要修改三个文件,增加一个文件。论文网 三个需要修改的文件为:arbiter_dbus.v,orpsoc-params.v,orpsoc_top.v 一个需要增加的文件为:mycore.v 如下图:这里需要注意的是,在ORSoC里面共有3个wishbone的arbiter,咱们用的是arbiter_dbus。为什么呢?很简单,instruction那个是取指令用的,很显然不能用;byte那个是8位的,我的是32位的,很显然也不能用。 21.2 概述 一般,添加自己的ipcore到ORSoC,需要三大步: 1>编写符合wishbone interface的ipcore:mycore 2>定义mycore中用到的parameters 3>增加arbiter的slave或者mater接口(本小节是slave) 4>在顶层module例化这个ipcore
当然为了测试验证,还要 5>编写她的driver。
21.3 rtl编码 下面就逐个把需要修改的文件的内容说一下: 1》编写符合wishbone interface的ipcore:mycore.v
[html] view plaincopyprint? 01./* 02.* 03.* mycore.v 04.* rill create 2013-03-26 05.* 06.*/ 07. 08. 09.`include "orpsoc-defines.v" 10.module mycore 11.( 12.wb_clk, 13.wb_rst, 14.wb_dat_i, 15.wb_adr_i, 16.wb_sel_i, 17.wb_cti_i, 18.wb_bte_i, 19.wb_we_i, 20.wb_cyc_i, 21.wb_stb_i, 22. 23.wb_dat_o, 24.wb_ack_o, 25.wb_err_o, 26.wb_rty_o 27.); 28. 29.parameter addr_width = 32; 30.parameter mycore_adr = 0; 31.parameter idle=2'b00; 32.parameter read=2'b01; 33.parameter write=2'b10; 34.parameter operate=2'b11; 35. 36.input [addr_width-1:0] wb_adr_i; 37.input wb_stb_i; 38.input wb_cyc_i; 39.input [2:0] &nbs
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
|