计算机组成课程设计之一——微程序控制的运算器设计

来源:互联网 发布:制图软件手机 编辑:程序博客网 时间:2024/05/28 05:19
    这个学期做了一系列的实验和课程设计,昨天期末考试刚刚结束,是时候整理一波了。
    计算机组成原理与设计的课程设计总共分为四个部分,前两个位典型部件设计,如运算器设计和存储器读写设计,后两个是简单模型机的设计,一个要求用微程序的思想来实现,另一个要求用硬布线的方式来实现。老师要求两个同学组队一块儿做,由于作者比较积极,所以这四个都被我一手包办了。这其中有的一次测试就成功了,也有的调试了好久。因为实验室不同的时间有不同的班级来做实验,有时候我还会在别的班级上课的时候,自己一个人在角落里默默地继续调试。现在想想也是蛮有意思的。
    本课程设计利用的平台是我们学校自己开发的JYS计算机组成实验箱,软件是QuartusII。第一个实验是要求设计一个微程序控制的运算器。即,设计一个八位算法逻辑运算单元ALU。两操作数由八位寄存器R0R1提供,其结果放入R2中。具体何种操作可由微命令任意设定。

运算器的设计

   运算器结构如下图所示。R0、R1、R2均为D触发器组成的八位寄存器,在打入脉冲CPRi的作用下,接收数据输入端提供的信息送入Ri中。

μIR23-16为微指令寄存器的高八位,可定义为操作数。进位信号C0、打入脉冲CPR0、CPR1、CPR2、M、S0、S1、S2、S3均由微指令寄存器的μIR8和μIR7--μIR0产生。

    实现框图如下图所示。图中虚线内的内容就是我们要设计实现的内容。



微程序控制器的设计

微程序控制器的结构如下图所示:

控制存储器24位, ROM3# 、ROM2#、ROM1#、 μ IR23-16、 μ IR15-8、 μIR7-0、 L23-16、L15-8、L7-0、μRD 、CPμIR、A0~A7均连入FPGA系统中。自行设计的微程序计数 μPC向控制存储器提供8位微地址,在控存读信号的作用下,读出一条长24位的微指令代码,并在打入命令CPμIR的作用下,送入 μ IR23-16、 μIR15-8、μIR7-0。L23-16 、L15-8、L7-0用于显示微指令寄存器μIR23-16、 μIR15-8、 μIR7-0的内容。每当按一次脉冲键便产生一个负脉冲,该脉冲的作用是:

(1)作为读控存的命令 μRD

(2)负脉冲当作CPμIR,将读出的微指令代码打入μIR

(3)负脉冲的上升沿使μPC+1形成下一条微指令的地址。

(4)负脉冲反相后的上升沿作为寄存器打入脉冲。

    微指令的格式如下图所示。

μPC的设计

μPC用异步模2561计数器实现,电路图如下所示。

该计数器对CLK1计数。CLR为清零端,低电平有效,当CLR0时,该计数器输出全为0PRN为置位端,低电平有效,当PRN0时,该计数器输出全为1

算术逻辑运算单元ALU的设计

该部分中算术逻辑运算单元用两片74LS181芯片按如下图所示结构实现八位组间串行进位运算器。

74LS181功能表如下图所示。

ALU的实现电路图如下。

实验总电路图

试验调试

将设计完成的电路图下载到FPGA中。按照前面所给的74LS181功能表编写微指令,并写入到ROM中,微指令从0地址单元开始存放。

例如要实现55+AAàR2

需要如下指令:

55→R:01010101 00000000 10000000  即550080

AA→R1:10101010  00000000 01000000   即AA0040

R0+R1→R2:00000000  00000001  00101001 即000129

R0-R1→R2:00000000  00000000 00100110 即000026

执行操作:

按一次RET键将 μPC置零。

按一次脉冲键读出并执行一条微指令。

当微程序执行完时检查并记录结果。


总的来说,第一个实验在这个课程设计里面只是用来熟悉实验环境的开胃小菜而已,是用来为下面的模型机做准备的。
























1 0
原创粉丝点击