2014-02-25 1135 views
0

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

到目前为止...

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

+1

意思是将其作为答案发布。 –

回答

1

在你的情况下,假设高位是符号位。通过与1 < < 31进行掩码结果来检查符号位。如果你想返回1或0,那么你可以对掩码的结果使用另一个NOT操作,然后用1与AND并返回。

例子:

如果结果是否定的,你得到(位)1.......则不是这会给你0111111.....最后的最后,会给你000....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! 

Q(输出)被设置为高仅当A < B.

因此,Q = A'B。 (或Q =〜Verilog中的A & B)