发一个开源的兼容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 这么好的帖子没人顶么 楼主牛人 支持原创! 顶楼主 好! 顶 当初还买一块FPGA开发板来学习这本书
可惜后来乱七八糟的事没弄成
顶一下LZ{:lol:} 下载下来好好学习 这本书关注过一段时间,作为学习资料还是不错的。 顶一下,无源码无真相 顶一下楼主,开源的东西最好 这么好的帖子,支持一下 Do you have:
arm9_compatiable_wrapper.zip
no_tx_xilinx_arm9.zip
risclite_mx.rar
Thank you. 最好有完整的ARM同9 原作者和原贴在这里,代码一应俱全:
http://bbs.eetop.cn/thread-333596-1-1.html
页:
[1]