1

前几天学了verilog。

我对此有所了解,但不知道在比较门级的两个无符号 4 位数字时如何知道哪个更大。

你能给我一些关于算法的提示吗?

提前谢谢

4

1 回答 1

1

让这两个 nubers 是由位 a1..a4 和 b1..b4 定义的ab,如下所示:

a= a1*8+a2*4+a3*2+a1  
b= b1*8+b2*4+b3*2+b1  

结果:

c  result (c==true iff a>b)

c 的逻辑公式: ( &表示and , |表示or , !表示not )

c=(a1 & !b1)  | 
  (!(a1 xor b1) & (a2 & !b2)) |
  (!(a1 xor b1) & (!(a2 xor b2)  (a3 & !b3)) |
  (!(a1 xor b1) & (!(a2 xor b2)  & (!(a3 xor b3)  (a4 & !b4)) 

[这不检查相等性只显示如果 a>b]

公式各部分说明:

如果设置了 a 的最高位但没有设置 b 的最高位,=>a>b
(a1 & !b1)

如果最高位相同但设置了 a 的第二高位但未设置 b 的第二高位 =>a>b
(!(a1 xor b1) & (a2 & !b2))

如果两个最高位相等但设置了 a 的第三高但未设置 b 的第三高 =>a>b
(!(a1 xor b1) & (!(a2 xor b2) (a3 & !b3))

如果最高三位相等但a的最低位已设置但b的最低位不是=> a>b
(!(a1 xor b1) & (!(a2 xor b2) & (!(a3 xor b3)


Ps
对于这么小的数字,您还可以使用具有 8 位地址和一位输出的 ROM,其中包含 a 和 b 的所有可能值的答案。

于 2013-03-09T20:29:45.603 回答