分享

用Multisim 11.0画了个CPU来玩玩(纯硬件、开源、原创) --8位CPU龙少架构

 guitarhua 2016-11-25
Multisim 11.0文件:

152752

打开文件就能仿真了,按照指令集在虚拟内存里的ROM区拨上指令,手动或自动的给CPU输入脉冲就会执行指令,这个文件比较大,如果你的电脑性能差,打开会久一些,仿真也会很卡;有点累~就不打太多字了,有不懂的地方回帖问我就行了[s:229] 


下面是这个CPU的设计图:
152758
  

152750


152751


152748


152749


152746


  152738



指令执行时序:
152744


152743


152745


152741


152753


152740
  
+100
科创币
马小甲
2013-12-04
不名觉厉
+10
科创币
凤凰院hark
2013-12-04
厉害
+10
科创币
凤凰院hark
2013-12-04
厉害
+200
科创币
任某人
2012-09-25
你已经越发牛x了。。去英特尔找工作吧~~
+1
科创币
darkorochi
2012-09-25
犀利、、、、、
+1
科创币
jrcsh
2012-09-25
高质量发帖
+25
科创币
hitxp
2012-09-25
这个大牛了
+50
科创币
samsun185
2012-09-25
真牛人也
+1
科创币
10班陈大葱22号
2012-09-25
膜拜......
+20
科创币
yanli12321
2012-09-25
六体投地
+25
科创币
科学人
2012-09-25
膜拜
+200
科创币
拔刀斋
2012-09-25
水平不是一般的高
+25
科创币
vincentcai
2012-09-25
碉堡。分全给你了
+25
科创币
cqb98
2012-09-25
这个吊!!!
+20
科创币
阿飘先生
2012-09-25
没啥好说的了··········
+25
科创币
2012-09-25
分全给你了···
+10
科创币
sunlighta
2012-09-26
刚发现我能评分了.把处女分给你了.
+50
科创币
2012-09-26
+20
科创币
wenrui
2012-09-26
厉害啊
+2
科创币
hefanghua
2012-09-26
凑整。支持出FPGA版实物。
+40
科创币
justinpiggy
2012-09-29
果断支持了
+25
科创币
飞线大师
2012-10-17
中国以后的芯片就靠你了
+25
科创币
23323
2012-10-17
+1
科创币
rpg-7
2012-10-19
强悍!
+200
科创币
金坷居士
2012-10-23
膜拜下
+25
科创币
kj4
2012-10-23
牛人,        ,
+50
科创币
带火星的木条
2012-11-03
把龙芯那帮渣渣换了吧. LZ上
+20
科创币
2012-11-05
支持这个,分都给你了
+25
科创币
wkk123
2012-11-06
赞一个
+14
科创币
凌霄
2012-11-08
龙芯在此跪下
+25
科创币
cqsrmxxzyx
2012-11-10
+1
学术分
虎哥
2012-11-12
本帖结合新帖第52167号,合并补加1学术分。
+25
科创币
黑胡椒
2012-11-16
高质量发帖
+25
科创币
xxn599
2013-04-16
曾想用Labview搭一个,然后看到有人用Minecraft搭了一个
+100
科创币
猎鹰
2013-09-11
太牛逼了

lincel4 年前 - 2012-09-25 02:06 /1
 
好 不错!!!!!!!!

gb5053291914 年前 - 2012-09-25 12:26 /2
 
强势插入,围观中

badboy-fly4 年前 - 2012-09-25 13:24 /3
 
LZ强人!LZ牛X!

nmjnsjj4 年前 - 2012-09-25 13:27 /4
 
火前留名,改成HDL,然后用FPGA弄出来~  然后流片造出来~

10班陈大葱22号4 年前 - 2012-09-25 14:41 /5
 
火钳流明!
152776

神之觉醒4 年前 - 2012-09-25 15:03 /6
 
这个是很简单的串行CPU,估计200来片74系列IC,只要看几节计算机原理的教程不难YY出它的工作原理;之前是想搞16位的,16位的指令空间很大,一个字的指令就可以源/目的寄存器同时寻址,后来发现Multisim 11.0电路大一些就慢了 可能我的电脑太垃圾, 这个8位的CPU画到最后连一根线都要十来秒,本来两天就能连接完成的,硬是弄了一个星期,工作效率啊啊~~~[s:275][s:275]

寻址方式:
为了简化控制器~ 这个8位机只做了3种寻址:立即数寻址、寄存器寻址、寄存器间接寻址。
除了立即数传送为双字节指令,其他都是单字节指令,内存传送指令、转移指令、调用指令的16位地址是用R3和R4寄存器分别作为高地址和低地址,也就是R3和R4默认组成的16位寄存器间接寻址,所以先要用立即数传送指令把地址送上去。

源运算指令操作过程:
累加器(被加数) + 源寄存器(加数)    结果送回累加器
累加器(被减数)  -  源寄存器(减数)    结果送回累加器
算术、逻辑的源运算指令操作和上面是一样的就不一一列出了。

目的运算指令操作过程:
目的寄存器加1     结果送回目的寄存器
目的寄存器减1     结果送回目的寄存器
目的寄存器取反     结果送回目的寄存器
移位指令的操作过程和上面一样,一条指令移一位,为了简化电路~~~ 当然用立即数或寄存器指出移位次数一样可以实现,但是电路会复杂很多。

关于运算指令、移位指令、出入栈、对标志位的影响:
运算和移位参考8086。。~[s:229]
出入栈操作的是标志寄存器和低7位。

还有中断的入口地址~ 懒的搞什么屎量号查表,直接从外部读16位程序地址[s:269]

对。。忘了说了:
出入栈地址为  堆栈页(高8位) 和堆栈指针(低8位)组成的。
程序地址为  代码页(高8位) 和程序指针(低8位)组成的。  
还有那个堆栈深度是0~255个字节,先入栈再加1,先减1再出栈;
程序指针也是0~255,所以在255的位置放一条代码页加1指令就OK了;
为什么不用计数器~~~太难用[s:213]

CPU很好玩的  开关开关开关。。。。。。。。。。。就执行指令,外国佬真是牛X , 发明了这么吊的东西

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多