如何在ALU中实现1位slt操作? (MIPS)

时间:2014-02-25 21:18:23

标签: assembly logic mips alu

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

到目前为止......

我正在考虑将A和B作为32位输入到ALU中。我也考虑采用B的两个补码。然后,我将A和B加在一起。如果输出不是负数,则返回0.在我的想法中,这听起来像我已经实现了1位slt操作。但是,如何仅使用AND,OR和NOT来显示“if result is negative return 1”?

2 个答案:

答案 0 :(得分:1)

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

示例:

如果结果是否定的,你得到(以位为单位)1.......然后不会给你0111111.....,最后一个AND会给你000....1这就是你想要的结果

答案 1 :(得分: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 <1时,Q(输出)才被设置为高。乙

因此,Q = A&#39; B. (或Q =〜&amp; B in verilog)