2014-02-25 1140 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)