0

这是一个家庭作业,所以我不是在寻找答案,而是在寻找指导。说明说:“您将如何在 ALU 中实现 1 位 slt 操作?仅使用 AND、OR 和 NOT 描述您的解决方案。无需绘制逻辑门图,只需清楚地描述所有可能输入的过程,预期输出,以及表示 SLT 的逻辑表达式。”

至今...

我正在考虑将 A 和 B 作为 ALU 的 32 位输入。我也在考虑取B的二进制补码。然后,我将A和B加在一起。如果输出不是负数,则返回 0。在我看来,这听起来像是我实现了一个 1 位 slt 操作。但是,如何仅使用 AND、OR 和 NOT 来显示“如果结果为负返回 1”?

4

2 回答 2

1

在您的情况下,假设高位是符号位。通过与 1 << 31 进行与运算来屏蔽结果以检查符号位。如果要返回 1 或 0,则可以对屏蔽结果使用另一个 NOT 操作,然后与 1 进行 AND 并返回。

例子:

如果你得到的结果是否定的(以位为单位)1.......,那么 NOT of this 会给你0111111.....,最后最后一个 AND 会给你000....1你想要的结果。

于 2014-02-25T21:25:40.657 回答
0

指导:画出slt指令真值表。


答案:1 位 slt ALU 指令的真值表。

A  B  Q
0  0  0  //A=B no!
0  1  1  //A<B yes!
1  0  0  //A>B no!
1  1  0  //A=B no!

仅当 A< B 时 Q(output) 才设置为高电平。

因此,Q=A'B。(或verilog中的Q=~A&B)

于 2016-05-15T13:41:23.290 回答