比较运算电路实验

本实验为选做实验。

实验目的

  1. 理解标志位的含义。

  2. 掌握比较运算方法。

实验原理

在计算机软件程序设计中,常常需要比较两个变量的数值大小。实现两个数大小比较的最直接的做法就是将这两个数相减,根据减法的结果判断两者的大小。例如,若X<Y,则X-Y的结果一定为负,因此依据符号标志就可以判断;但是若运算结果溢出,则恰恰相反。表 1给出了两个带符号数依据减法运算结果的标志位比较大小的判断条件。 而两个无符号数的比较,则可相减后依据是否有借位来判断两个数的大小;表 2给出了无符号数比较大小的判断条件。

表 1. 两个带符号数比较大小的判定条件
大小关系 判定条件

X>Y

OF⊕SF=0 且ZF=0

X≥Y

OF⊕SF =0

X=Y

ZF=1

X≠Y

ZF=0

X<Y

OF⊕SF =1

X≤Y

OF⊕SF =1 或ZF=1

表 2. 两个无符号数比较大小的判定条件
大小关系 判定条件

X>Y

BF=0 且ZF=0

X≥Y

BF=0

X=Y

ZF=1

X≠Y

ZF=0

X<Y

BF=1

X≤Y

BF=1 或ZF=1

注:表中BF表示借位,BF=0代表没有借位,BF=1代表有借位。BF可以由进位标志CF得到,根据电路设计的不同,BF可能与CF相反,也可能与CF一致。

参考设计

下面以无符号数比较为例,说明比较运算电路的设计与验证。 根据表 2写出无符号比较运算的逻辑表达式如例 1所示。

例 1. 无符号比较运算的逻辑表达式
let EQ=ZF;
let NE=~ZF;
let LT=~CF;(1)
let GE=CF
1 加减电路实验可知,借位与进位标志的状态是相反的,即BF=~CF。

使用Digital仿真软件的电路生成功能,从逻辑表达式生成比较运算电路图,然后将其作为子电路添加到验证电路中。验证电路如图 1所示。

op unsigned comp
图 1. 无符号数比较验证电路

图 1中,ALU的M、S1、S0固定连接为1、0、0,控制ALU进行减法运算。

实验任务

设计任务

  1. 设计带符号数比较电路

    依据S、Z、O标志位,产生带符号数相等(EQ)、不等(NE)、小于(LT)、大于等于(GE)的比较结果。 可使用Digital仿真软件的电路生成功能,输入表达式自动生成电路图,具体用法参考电路生成

  2. 设计验证电路

    将比较电路作为子电路添加到实验电路中,并将ALU输出的标志位与比较电路连接。设置ALU做减法运算。

验证任务

输入不同运算数据,验证比较结果是否正确。