计算机组成原理课程设计—基于微程序控制器的简单计算机系统设计与实现 - 图文 下载本文

图 0.3 存储器图

3.2.4选择电路 如图3.4所示

为方便置数,直接让指令的数据部分与161的输入相连

PC(161

) 图 0.4 选择通路图

157

3.2.5时序控制:通过各种控制点设计而出

如图3.5所示

图 0.5 时序控制图

3.3软件设计

3.3.1机器指令系统设计

本次指令设计格式遵循常见指令格式设计原则,机器指令共占8位,其中高四位为操作码OP,低四位为操作数地址ADDR,见下表描述:

7——4位 OP 指令寻址方式设计

? 顺序寻址:根据PC(74LS161)计数器自动增1,顺序读取下一条指令;

? 跳跃寻址:根据PC(74LS161)的PC-SET功能,依照跳跃指令内容往计 数器

中预置打入数据,从而跳转到相应地址。

操作数寻址方式设计

? 寄存器寻址:利用AC(74LS373)寄存器进行寻址;

? 直接寻址:根据指令中的ADDR所指向的地址得到主存相应数据;

? 隐含寻址:利用AC(74LS373)寄存器,对于需要双操作数的机器指令只提供一

个操作数,另一操作数隐含在AC中。

3.3.2微指令设计

微指令设计思想:此次设计共决定选取12条指令,分别是取址公操作、store存储指令、load导入指令、jump跳转指令、加、减、与、或、非、地址非、异或等运算指令,以及最后的停机指令。指令采用双周期、自动执行。

微指令设计方案:根据具体的电路原理决定采取16个微程序控制点,然后通过对

3——0位 ADDR

各个控制点的值来实现对微指令的编码(即各个控制点的值取0或1),不同的指令所对应的各个控制点的编码会有不同。

微指令设计流程:因为事先必须确定好电路才能得出各个控制点,因此根据完整的电路的各个可控信号确定了16个控制点,在这个过程中,实际有的控制点不止16个,因此我们采取了一些措施,部分控制点合并,另外一些改成了直接采用节拍控制,最终将控制点的数目控制在了16个,然后设计了取址公操作部分各个控制点的值,形成了取址公操作的编码,然后在此基础上修改各个控制点的值,形成了一个大概的指令编码表,然后在实践中检验、纠错、修改,最后得到完整的微指令设计表。

微程序设计

对于每条指令都设计了相应的汇编程序来进行检验,将汇编程序设计好,然后改写成计算机所能识别的二进制形式,事先将二进制程序存入内存的芯片中,然后开始执行检验即可。

对于各条指令的微程序要考虑到指令的控制点编码,以及控制它的地址,还有内存中的存储数据的部分。将微程序分为两段,一段是所执行的操作,另一段是操作数。 而每一行代码又可分为3部分,比如我们设计的微程序地址四位,数据八位,指令八位,因此我们的程序中,前四位二进制数字表示程序执行的地址,即PC计数器的内容,后八位是指令,指令的前四位对应的是操作码,需送入控存译码,进而得到具体操作,后四位是数据地址,返送回内存读取数据。

各个指令所对应的微程序具体还是不同的,在后面会有详细说明。