8位CPU龙少架构-基于Multisim 11.0
CPU~~~
8位CPU龙少架构-Multisim 11.0.rar
(5.91 MB, 下载次数: 427)
打开文件就能仿真了,按照指令集在虚拟内存里的ROM区拨上指令,手动或自动的给CPU输入脉冲就会执行指令,这个文件比较大,如果你的电脑性能差,打开会久一些,仿真也会很卡;有点累~就不打太多字了,有不懂的地方回帖问我就行了
下面是这个CPU的设计图:
指令执行时序:
这个是很简单的串行CPU,估计200来片74系列IC,只要看几节计算机原理的教程不难YY出它的工作原理;之前是想搞16位的,16位的指令空间很大,一个字的指令就可以源/目的寄存器同时寻址,后来发现Multisim 11.0电路大一些就慢了 可能我的电脑太垃圾, 这个8位的CPU画到最后连一根线都要十来秒,本来两天就能连接完成的,硬是弄了一个星期,工作效率啊啊~~~
寻址方式:
为了简化控制器~ 这个8位机只做了3种寻址:立即数寻址、寄存器寻址、寄存器间接寻址。
除了立即数传送为双字节指令,其他都是单字节指令,内存传送指令、转移指令、调用指令的16位地址是用R3和R4寄存器分别作为高地址和低地址,也就是R3和R4默认组成的16位寄存器间接寻址,所以先要用立即数传送指令把地址送上去。
源运算指令操作过程:
累加器(被加数) + 源寄存器(加数) 结果送回累加器
累加器(被减数) - 源寄存器(减数) 结果送回累加器
算术、逻辑的源运算指令操作和上面是一样的就不一一列出了。
目的运算指令操作过程:
目的寄存器加1 结果送回目的寄存器
目的寄存器减1 结果送回目的寄存器
目的寄存器取反 结果送回目的寄存器
移位指令的操作过程和上面一样,一条指令移一位,为了简化电路~~~ 当然用立即数或寄存器指出移位次数一样可以实现,但是电路会复杂很多。
关于运算指令、移位指令、出入栈、对标志位的影响:
运算和移位参考8086。。~
出入栈操作的是标志寄存器和低7位。
还有中断的入口地址~ 懒的搞什么屎量号查表,直接从外部读16位程序地址
对。。忘了说了:
出入栈地址为 堆栈页(高8位) 和堆栈指针(低8位)组成的。
程序地址为 代码页(高8位) 和程序指针(低8位)组成的。
还有那个堆栈深度是0~255个字节,先入栈再加1,先减1再出栈;
程序指针也是0~255,所以在255的位置放一条代码页加1指令就OK了;
为什么不用计数器~~~太难用
CPU很好玩的 开关开关开关。。。。。。。。。。。就执行指令,外国佬真是牛X , 发明了这么吊的东西
送LZ一东西:INTEL4004 电原理图
下面是CPU现在周边的配置:
CPU时钟发生和复位板 正面:
CPU时钟发生和复位板 背面:
ALU寄存器数据指示LED和拨码开关(拨码开关起初是用来调试指令的) 正面:
ALU寄存器数据指示LED和拨码开关 背面:
SRAM加电容当ROM用(用3V的电池充电了电压会变低的,后面我改成电容了) 正面:
SRAM加电容当ROM用 背面:
硬件SPI板 正面:
硬件SPI板 背面:
CPU板正面:
CPU板背面:
|
|
|