比较两个无符号数和门级

时间:2013-03-09 20:12:16

标签: verilog

我几天前学过verilog。

我已经了解了它,但在比较门级的两个无符号4位数时,不知道如何知道哪个更大。

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

提前谢谢

1 个答案:

答案 0 :(得分:1)

让两个nubers由位a1..a4和b1..b4定义为 a b ,如下所示:

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

结果:

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

c的逻辑公式:(& 表示 | 表示表示

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)) 

[这不检查相等性仅显示> b]

公式部分的说明:

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

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

如果两个最高位是等于但是第三个最高位被设置但不是第三个最高位b => a>b
    (!(a1 xor b1) & (!(a2 xor b2) (a3 & !b3))

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


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