运算器数据通路实验
实验原理
计算机本质上是一个加工处理二进制信息的电路,包括ALU、寄存器、存储器等部件,这些部件通过信号线以某种方式连接起来,并且在控制器的控制下,使信息按照一定的规则在各个部件之间有序流动,完成信息的加工处理。这些信息加工部件及信息传递路径的总和就称为数据通路。
不同结构的数据通路在成本、速度及工作方式上有着较大差异。 图 1是一个单总线数据通路的例子,在这个数据通路上完成一次加法运算需要3个时钟周期。

图 2是另一种数据通路的结构,它只需要一个时钟周期就可以完成一次运算处理,称为单周期数据通路。 虽然不能单纯以时钟个数的多少来评价性能的优劣,但从发展历史来看,单总线数据通路是早期技术的产物,当时的主要考量是减少连接线的数量、降低成本。 而现代处理器更关注性能,普遍采用流水线结构。 单周期数据通路更有利于演变为流水线结构,所以本实验只考虑单周期数据通路。
图 2使用了前面实验中的ALU和三端口寄存器堆。 ALU输入端X的运算数据来自寄存器堆的RD1读端口,另一个输入端Y的运算数据可以来自寄存器堆的RD2读端口,或者来自立即数。 寄存器堆写端口WD的数据来自ALU的运算结果F。 该数据通路可以在一个周期内完成从寄存器堆读数据、ALU运算、运算结果保存到寄存器堆。

实验任务
设计任务
用Digital仿真软件按照图 2绘制电路图。 ALU和三端口寄存器堆使用前面实验完成的。
验证任务
通过仿真验证数据通路,并保存仿真过程数据文件。
-
将2个常数存入R1、R2寄存器
常数通过ImmediateData输入引脚送入。从图 2可以看出,ImmediateData并没有直接连在寄存器堆的写端口,而是经过多路器后送到了ALU的Y输入端;所以要将ImmediateData送到寄存器堆的写端口,必须经过ALU。在前面寄存器堆的实验中已经设计R0寄存器的值恒为0,可以用ALU将ImmediateData加上R0寄存器值,将ImmediateData传送到寄存器堆的写端口。
存入的常数应有助于判别下面将要验证的各种运算结果是否正确。
-
完成以下运算并验证结果是否正确。
R1 + R2 → R3;
R1 − R2 → R3;
R1 & R2 → R3;
R1 | R2 → R3;
R1 ⊕ R2 → R3;
R2 ⊕ 0b1111 → R3;