文号
t50830
阅读
186550
回复
124
收藏
126
用Multisim 11.0画了个CPU来玩玩(纯硬件、开源、原创)
2012/09/25
IP:浙江
CPU~~~[s:266][s:229]
Multisim 11.0文件:

attachment icon 8位CPU龙少架构-_,=~~~.rar 5.91MB RAR 1770次下载
CPU.jpg
打开文件就能仿真了,按照指令集在虚拟内存里的ROM区拨上指令,手动或自动的给CPU输入脉冲就会执行指令,这个文件比较大,如果你的电脑性能差,打开会久一些,仿真也会很卡;有点累~就不打太多字了,有不懂的地方回帖问我就行了[s:229]


下面是这个CPU的设计图:
架构图1.jpg   

指令集1.jpg

指令集2.jpg

执行定义.jpg

执行时序.jpg

时序发生器原理.jpg

   指令控制电路原理.jpg


指令执行时序:
取指和立即数传送时序.jpg

内存和寄存器传送时序.jpg

入栈和出栈时序.jpg

寄存器之间传送时序.jpg

运算、移位、标志位操作时序1.jpg

调用、返回、中断调用时序.jpg   
+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
科创币
delete
2012/09/25
分全给你了···
+10
科创币
sunlighta
2012/09/26
刚发现我能评分了.把处女分给你了.
+50
科创币
delete
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
科创币
Xiaoyu_hong
2012/10/19
强悍!
+200
科创币
金坷居士
2012/10/23
膜拜下
+25
科创币
kj4
2012/10/23
牛人,        ,
+50
科创币
带火星的木条
2012/11/03
把龙芯那帮渣渣换了吧. LZ上
+20
科创币
delete
2012/11/05
支持这个,分都给你了
+25
科创币
wkk123
2012/11/06
赞一个
+14
科创币
凌霄
2012/11/08
龙芯在此跪下
+25
科创币
cqsrmxxzyx
2012/11/10
赞
+25
科创币
黑胡椒
2012/11/16
高质量发帖
+25
科创币
xxn599
2013/04/16
曾想用Labview搭一个,然后看到有人用Minecraft搭了一个
+100
科创币
猎鹰
2013/09/11
太牛逼了
+100
科创币
马小甲
2013/12/04
不名觉厉
+10
科创币
凤凰院hark
2013/12/04
厉害
+10
科创币
凤凰院hark
2013/12/04
厉害
+1
学术分
虎哥
2012/11/12
本帖结合新帖第52167号,合并补加1学术分。
14年3个月前IP:未同步
454494
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 , 发明了这么吊的东西[s:219]
引用
评论
14年3个月前IP:未同步
454497
7楼
回 4楼(nmjnsjj) 的帖子
[s:225][s:275]    好主意,不知道FPGA难玩不
引用
评论
14年2个月前IP:未同步
468717
40楼
小UU[s:229]  纯74LS搭的  最近有些忙过些天我再细说这个小UU[s:274]
小UU2.jpg

小UU1.jpg
+1
科创币
Xiaoyu_hong
2012/11/09
多少片74LSXX?
+20
科创币
kknd
2012/11/12
高质量发帖
+50
科创币
delete
2012/12/01
你这是要疯!
引用
评论
1
11年11个月前IP:广西
740148
100楼
引用 既不回头:
能否发个到邮箱谢谢371372865@qq.com这个到网上找了很久了

attachment icon 文件1.rar 5.91MB RAR 168次下载
引用
评论
11年4个月前IP:广西
786670
109楼
引用 水木杨沙:
谢谢了
需要等10几分钟,...
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的