这是一项家庭作业,所以我不是在寻找答案,而是在寻找指导。指令说:“如何在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”?
答案 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)