运算器的设计
μ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用异步模256增1计数器实现,电路图如下所示。
该计数器对CLK增1计数。CLR为清零端,低电平有效,当CLR为0时,该计数器输出全为0。PRN为置位端,低电平有效,当PRN为0时,该计数器输出全为1。
算术逻辑运算单元ALU的设计
74LS181功能表如下图所示。
ALU的实现电路图如下。
实验总电路图
试验调试
将设计完成的电路图下载到FPGA中。按照前面所给的74LS181功能表编写微指令,并写入到ROM中,微指令从0地址单元开始存放。
例如要实现55+AAàR2
需要如下指令:
55→R0 :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置零。
按一次脉冲键读出并执行一条微指令。
当微程序执行完时检查并记录结果。
https://download.csdn.net/download/john_bian/10408632