解释一个简单的微程序控制器(microsequencer)的设计和实现?


微程序序列是微程序控制单元的通用构建块。微程序控制器的主要目标是向控制存储器提供一个地址,以便读取和执行微指令。控制器的下一个地址逻辑决定加载到控制地址寄存器中的特定地址源。该图显示了简单微程序控制器的布局。

只有两个可能的下一个地址被使用 - 操作码映射和绝对跳转。获取周期的最后一个状态 FETCH3 转到四个执行例程之一。这必须通过映射输入来实现。其余状态必须分别转到一个特定的下一个状态,我们使用绝对跳转来实现。尽管我们可以通过将当前地址加 1 来实现其中一些分支,但它无法以这种方式执行从每个执行例程的末尾到 FETCH1 的分支。

选择位由微程序控制器生成,以选择正确的下一个地址。对于此 CPU,选择是无条件的。在每个状态下,此 CPU 都绝对确定其下一个地址的来源,但并非所有微程序控制器都是如此。

它包含总共九个状态,每个状态由一条微指令表示。选择它们所需的最小位数是 4,这是绝对地址的大小。映射硬件也生成相同大小的地址,其输出也是 4 位宽。这与多路复用器的输出(输入到寄存器)和寄存器的输出(输入到微代码存储器的地址输入)相同大小。

主要考虑因素是为每个执行例程的第一状态分配地址,因为这决定了实现映射函数的逻辑。对于此 CPU,微程序控制器将使用与硬连线控制单元相同的映射函数,即 1 IR [1…0]0。

这分别为 ADD1、AND1、JMP1 和 INC1 生成地址 1000、1010、1100 和 1110(8、10、12 和 14)。实现映射的硬件变成了几根线,这是最简单的映射逻辑。这在图中显示。

其余状态的地址可以任意分配。它可以将连续状态分配给微代码存储器中的连续位置。结果分配如表所示。

非常简单的微程序控制器的状态地址

状态地址
FETCH10000 (0)
FETCH20001 (1)
FETCH30010 (2)
ADD11000 (8)
ADD21001 (9)
AND11010 (10)
AND21011 (11)
JMP11100 (12)
INC11110 (14)

更新于: 2021-07-27

915 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.