【自学嵌入式:计算机组成原理】48. - 49.
48. 修复一个短路的小细节
事先说明,内存中存储的数据如下:

第一个周期有一个严重的问题!!!!!!!
最开始程序计数器EN打开后,传递时钟信号后,忘了清除状态,后来第二个周期开始改正了

清除全部状态,打开PC的OE,打开MAR的WE,然后拍一下按钮,传递一个时钟信号


清除全部状态,打开PC的EN,然后拍一下按钮,传递一个时钟信号,此时PC变为1,说明0号指令传给MAR了,说明MAR执行完指令,下一个要执行的指令在内存的1号位置,操作系统里面的中断也是操作PC程序计数器实现的

清除全部状态,打开MAR的OE,打开内存的OE,打开MBR的WE,然后拍一下按钮,传递一个时钟信号

清除全部状态,打开MAR的OE,打开IR的WE,然后拍一下按钮,传递一个时钟信号,MBR的指令存到IR中了

此时,取指阶段完成

发现短路,扩充位应该放到开关后面,因为那个0接地导致高电平传不过来

49. 手都完成计算机程序的执行
刚才的过程:

(这里稍微有点瑕疵,没清除全部状态)
清除全部状态,打开IR的OE,打开MAR的WE,拍一下按钮,传递一个时钟信号

清除全部状态,打开MAR的OE,打开内存的OE,打开MAR的WE,拍一下按钮,传递一个时钟信号

清除全部状态,打开MBR的OE,打开寄存器A的WE,拍一下按钮,传递一个时钟信号

此时,地址1111(F)的数据0000 0101写入寄存器A中(这里是错误的,应该是取地址1110的数据,失误失误,懒得改了)
此时完成第一条指令周期“取地址 译码 再重新取地址”
然后又开始取地址
然后接着按刚才的继续操作
清除全部状态,打开PC的OE,打开MAR的WE,传时钟

清除全部状态,打开PC的EN,传时钟,下一条程序的地址就来了

清除全部状态,打开MAR的OE,打开内存的OE,打开MBR的WE,传时钟

清除全部状态,打开MBR的OE,打开IR的WE,传时钟


清除全部状态,打开IR的OE,打开MAR的WE,传时钟

清除全部状态,打开MAR的OE,打开内存的OE,打开MBR的WE,传时钟,地址1111的数据送到了MBR

清除全部状态,打开MBR的OE,打开寄存器B的WE,传时钟,至此,A和B的数据都传过来了,A中是十进制3,B中是十进制5

进行下一个周期
清除全部状态,打开PC的OE,打开MAR的WE,传时钟

清除全部状态,打开PC的EN,传时钟

清除全部状态,打开MAR的OE,打开内存的OE,打开MBR的WE,传时钟

清除全部状态,打开MBR的OE,打开IR的WE,传时钟


清除全部状态,打开寄存器A的OE,打开寄存器B的OE,打开ALU的OE,打开输出寄存器的WE,传时钟

从输出寄存器可以看到,成果计算出了结果3+5=8(二进制0000 1000)
进行下一个周期
清除全部状态,打开PC的OE,打开MAR的WE,传时钟

清除全部状态,打开PC的EN,传时钟,此时4条指令全部执行完

清除全部状态,打开MAR的OE,打开内存的OE,打开MBR的WE(由于不小心按错了,还得再来一遍,懒得弄了,直接截视频的图了),传时钟

清除全部状态,打开MBR的OE,打开IR的WE,传时钟


清除全部状态,打开IR的OE,打开MAR的WE,打开输出寄存器的OE,打开MBR的WE,传时钟,3+5的结果放到了MBR中,

清除全部状态,打开MAR和MBR的OE,打开内存的WE,传时钟(此时将3+5=8的结果传入内存)

 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号