玉非璞 发表于 2013-7-7 22:21:35

发一个开源的兼容ARM9指令集的内核,1800行注释的源代码

《兼容ARM9的软核处理器设计:基于FPGA》已经卖出一段时间。实际上,在后面我对这一版本进行了优化,主要是为了在FPGA上跑更高的速度。这一优化,还是非常成功的,在spartan6上可以达到近80MHz的速度。

   这一高速版本,仍然保持三级流水线,和以前的结构基本一致。主要的改动点如下:
   1,第二级的乘法使用移位操作代替;
   2,为了消除banked register对时序的影响,对有banked的寄存器r8~r14都新增加一个主寄存器Rx,它会在模式切换时,主动更新到对应模式的寄存器。
   
   鉴于乘法运算非常耗费时间,我做了两个版本,这两个版本都做了详细的注释。
   一个版本是不执行MULT和MULTL指令;它可以运行到70+MHz(Spartan6)。读者如果非要执行乘法操作,可以使用软件乘法来代替。或者已经读懂这一版的读者可以自行加上乘法的实现,以执行全指令集。
   另外一个版本在上一个版本的基础上用32*32的硬件乘法来完成这两条指令的执行。因为32*32的乘法操作,使得它运行的速度降到60+MHz(Spartan6)。这一版本相对于不带乘法的版本,只不过增加少许几行而已。它的Dhrystone比起书中来说,要略小一点。书中的可以达到1.2 DMIPS/MHz,这一版本,只能达到1.1 DMIPS/MHz。

   这两个版本的接口都和书上给出的代码的接口一致,读者完全可以在FPGA工程中无缝替换。但是注意,由于不带乘法的版本没有实现乘法指令,因此书中给出的Hello项目可以替换,Dhrystone和uClinux系统仿真不能替换执行,而带乘法的版本都可以替换执行。因为Linux系统仿真需要增加协处理器接口,因此两个版本都不能用在Linux仿真上面。

   下面给出书中的勘误,读者可以纠正。对于带给大家的不便,请予谅解。

1,103页,倒数第二行代码:sum_middle替换为sum_middle; 倒数第二行文字:sum_middle也改为sum_middle。
2,105页,倒数第九行"字符串字符串",有两个"字符串",去掉其中一个;其中 字符串 是带乘法指令版本执行的解压缩密码,它以s开始,以=结尾,密码包含s和=。                  
                      倒数第四行中Rm,替换为Rs;
                   倒数第三行中Rm,替换为Rs;
                   倒数第二行Rm,替换为Rs;Rm替换为Rs;
                   倒数第一行中:{ {32{Rm}}, Rm} >> Rm,替换为 { Rm, Rm} >> Rs;Rm-1]替换为Rm-1]。
3,107页,图5-12中,“后发生”下方的Rn替换为Rm;
4,114页,第二段中,“在L==0时”与“在L==1时”这两组词进行互换。也就是后面的两段意思描述反了;
                   第三段中LDM0替换为LDM。
5,116页,第一段和第二段的LDM0替换为LDM。
6,118页,第一行中”26种“替换为”27种”。
7, 106页,"6.MULT"下面的指令表中Rd和Rn的位置互换
8, num误为"mum"的问题。发生在 111页的 "15. MSR1"下面的指令表;112页的"16. DP2"下面的指令表和"17. LDR0"下面的指令表;113页的"18. LDR1"下面的指令表;
9, 130页,图6-10中“MOV R1,"应该改为"LDR R1,", 见下面的代码描述。


不带乘法指令的版本:(不加密,都可以下载)

arm9_compatiable_code_high.rar (12.96 KB)

带有乘法指令的版本:(加密,获取密码的方法:105页,倒数第九行"字符串字符串",有两个"字符串",去掉其中一个;其中 字符串 是带乘法指令版本执行的解压缩密码,它以s开始,以=结尾,密码包含s和=。)

arm9_compatiable_code_high_mult.rar (14.09 KB)

欢迎大家试用,给出意见!希望在更多的开发板上,能够运行起来这些软核处理器。也希望能够带动更多的人,用Verilog来设计软核处理器。

源代码因为没有权限所以不能发,需要的可以在新浪爱问下载,也可以写邮件给我。qiang0204@gmail.com

BURNING.AN 发表于 2014-6-14 19:07:22

这么好的帖子没人顶么

zouzhichao 发表于 2014-6-14 19:46:26

楼主牛人

netawater 发表于 2014-6-14 19:52:42

支持原创!

zishan 发表于 2014-6-14 20:45:27

顶楼主 好!

sunnyqd 发表于 2014-6-14 20:46:25

顶                     

Jordan?? 发表于 2014-6-14 21:07:11

当初还买一块FPGA开发板来学习这本书
可惜后来乱七八糟的事没弄成
顶一下LZ{:lol:}

huabutterfly 发表于 2014-6-15 10:17:49

下载下来好好学习

tennokoe 发表于 2014-6-15 22:56:30

这本书关注过一段时间,作为学习资料还是不错的。

dragonlands 发表于 2014-6-17 08:25:25

顶一下,无源码无真相

dragonlands 发表于 2014-6-17 08:26:05

顶一下楼主,开源的东西最好

lzygxu 发表于 2014-6-17 08:59:40

这么好的帖子,支持一下

jlian168 发表于 2014-6-17 09:50:06

Do you have:

arm9_compatiable_wrapper.zip
no_tx_xilinx_arm9.zip
risclite_mx.rar

Thank you.

iwqt1983 发表于 2014-6-18 14:00:57

最好有完整的ARM同9

stdio 发表于 2014-6-18 14:18:58

原作者和原贴在这里,代码一应俱全:
http://bbs.eetop.cn/thread-333596-1-1.html
页: [1]
查看完整版本: 发一个开源的兼容ARM9指令集的内核,1800行注释的源代码