核心
寄存器来保存每一步微操作的结果供给下一个状态使用,可理解寄存器就是节拍的检查点
同步和异步
同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。 电路设计可分类为同步电路和异步电路设计。同步电路利用时钟脉冲使其子系统同步运作,而异步电路不使用时钟脉冲做同步,其子统是使用特殊的“开始”和 “完成”信号使之同步。
同步电路:存储电路中所有触发器的时钟输入端都接同一时钟脉冲源,因而所有触发器的状态变化都与所加的时钟脉冲信号同步;
异步电路:电路中没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,这些触发器的状态变化与时钟脉冲同步,而其它触发器的状态变化不与时钟脉冲同步。
同步就是双方有一个共同的时钟,当发送时,接收方同时准备接收;
异步双方不需要共同的时钟,也就是接收方不知道对方什么时候发送,所以在发送信息中就要有提示接收方开始接收的信息,如开始位,结束时有停止位。
转:https://blog.csdn.net/xinxinyouyi/article/details/100541009
微操作安排原则
1)微操作的先后顺序不得随意更改
2)被控对象不同的微操作尽量安排在一个节拍内完成
3)占用时间较短的微操作尽量安排在一个节拍内完成并允许有先后顺序
节拍的宽度保证最慢的一个微操作完成即访存类命令完成,这样使得可以满足(2)(3)判断一个节拍内应有的微操作,注意节拍内也是有顺序的。疑问1:一个水平指令各种微操信号如何满足顺序呢?,个人猜测:注意的是我们的这里我们是上升沿信号到来发生改变,而到下一个上升沿到来之前,我们的数据是持续保持输出的,这样我们再设置合适的节拍宽度,就可以保证一个节拍中的微操作全部执行了。疑问2:例如取指令,PC+4肯定比读取数据快,为什么新来的PC+4不会影响到现在的存储器读取?原因:只有上升沿到来且PC写信号有效数据才会被更新,在CP=0或者CP=1时刻输出保持保存的值
组合逻辑设计步骤:
设计指令的操作码,确定指令长度是固定的还是变长的
确定机器周期、节拍和时钟周期,确定机器周期是固定的还是可变长的
根据指令功能和CPU的结构图,绘制每一条指令微操作流程图并综合成一个总的流程图
给微操作流程图安排时序,确定每条指令所需的机器周期以及在各机器周期需要完成的操作,排出微操作时间表
根据操作时间 表写出微操作的逻辑表达式,即
微操作=周期·节拍·时钟脉冲·指令码·其他条件
根据微操作的表达式画出组合逻辑电路
写出微操作命令的最简表达式:
画出逻辑图:
微程序设计:
控制字段:
操作控制,发出各种控制信号
下址字段:
顺序控制,指出下调微指令地址,以控制微指令序列的执行顺序
其他硬件使用补充
本实验中除了PC、IR寄存器,其他寄存器均无使能端,寄存器可以看做一串D触发器,所以时钟到来一定会输出次态的值(即时钟到来前输出保存的值,上升沿到来时直到下一个上升沿之前输出更新的值),并且由于是边沿阻塞型,只有上升沿再次到来,值才能被更新!!!,在时钟上升沿或者下降沿或者其他实际的触发时段,输入啥就输出啥,在很短的时间内完成。其能保存数据是重点,是分割不同周期的基础,他可以保留上一个状态的结果供给下一个状态使用
而存储器的输入和输出:需要通过地址信号、数据信号再加上时钟信号,才能进行,这和寄存器差别很大
对于寄存器堆:读操作不需要时钟控制,写操作需要在上跳沿才能写入,详见之前的实验寄存器堆
实验和课设结果
网盘