算术逻辑单元实验

实验目的

  1. 理解算术逻辑单元电路结构。

  2. 理解零标志和符号标志的含义。

  3. 学会使用Digital仿真软件的层次化设计方法。

  4. 进一步熟悉Digital仿真软件的电路测试。

实验原理

计算机除了能够进行加减运算,还要能够进行逻辑运算。实现加减运算和逻辑运算的电路称为算术逻辑单元(ALU,Arithmetic Logic Unit)。图 1是一个简单ALU的设计,虚线框内是前面实验完成的加减运算电路,只是简化了画法,将4位数据用一根较粗的信号线表示;增加了与(AND)、或(OR)、异或(XOR)逻辑运算,并通过一个四选一多路器选择运算的功能。

op alu 1
图 1. 简单ALU原理图

该ALU电路没有用非门实现逻辑非(NOT)运算,这是因为异或1可以实现取反。通过使Y各位全为1,选择异或运算可以实现对X的非运算。

图 1电路还产生S、Z、O、C四个运算结果的特征标志,通常用于数值大小的比较判断,在后面的实验中将会用到。这四个标志的含义如下。

  • SF(Sign Flag):符号标志。

    SF=1表示结果为负数,SF=0表示结果非负。

  • ZF(Zero Flag):零标志。

    ZF=1表示结果为零,ZF=0表示结果非零。

  • OF(Overflow Flag):溢出标志。

    OF=1表示结果溢出,OF=0表示结果不溢出。

  • CF(Carry Flag):进位标志。

    CF=1表示有进位,CF=0表示没有进位。

OF和CF由加法器产生,在前面的实验中已经完成。这个实验还需要完成符号标志和零标志的检测电路。 因为运算结果的最高位就是符号位,所以符号标志的生成逻辑非常简单,逻辑方程如下:

SF=F3

一种简单的零标志生成方法是,将运算结果的每一位进行或运算,如果结果为0,则零标志为1。以4位二进制为例,产生零标志的逻辑方程如下:

ZF

进位标志和溢出标志必须由加法电路产生,而零标志和符号标志通常根据ALU的输出产生。 所以,进位标志和溢出标志只有在加减运算时才有意义;而零标志和符号标志对加减运算和逻辑运算都有意义。

实验任务

1.设计任务

理解实验原理,按照图 1设计电路。其中加减运算电路使用前面实验完成的,将其作为子电路。 有关添加子电路的方法,请参考第一章Digital仿真软件使用指南的“层次化设计”。 MUX多路器组件曾在多路选择器实验中使用过,这里要将选择位的位数设置为2,以构成4选1多路器。

  1. 添加子电路前,先保存当前电路文件,并且保证子电路文件在同一文件夹或子文件夹内。

  2. 子电路应事先调试通过,起码没有连接错误。

2.验证任务

验证数据应覆盖ALU的各项运算功能。算术运算可参考加减运算电路实验的验证任务,包括标志位的测试;逻辑运算除了测试与、或、异或运算外,也要测试逻辑非运算。 可以手动操作进行验证,也可以采用译码器实验学过的电路测试的方法进行验证,测试用例样式见例 1

例 1. ALU测试用例样式
X	    Y	    M	S1	S0	F	    S	Z	O	C
0b1100	0b1011	0	0	0	0b0111	0	0	1	1

保存验证结果数据,进行分析并给出结论。

算术运算可参考加减运算电路实验的验证任务要求和记录表样式。