2013-03-09 53 views
1

我已經學會了幾天前的verilog。比較兩個無符號數和門級

我有關於它的數字,但不知道如何知道在門級別比較兩個無符號4位數字時哪個更大。

你能給我一些關於算法的提示嗎?

Thx提前

回答

1

讓兩個量擬合選取是一個和由相應位定義b a1..a4和b1..b4如下所示:

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

式的部件的

說明[本不檢查平等僅當A> B示出]:

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

如果最高位是相同的,但是第二高的一個位被置位,但B的未第二higest位=>a>b
(!(a1 xor b1) & (a2 & !b2))

如果兩個最高位是平等的,但第三最高的一個被設置但不第三高B的=>a>b
(!(a1 xor b1) & (!(a2 xor b2) (a3 & !b3))

如果最高三個比特是平等的,但最低位被設置,但b的最低位是不是=>a>b
(!(a1 xor b1) & (!(a2 xor b2) & (!(a3 xor b3)


P.s
對於這樣的小數字,您還可以使用8位地址和1位輸出的ROM,其中包含a和b所有可能值的答案。

+0

Thx,我終於明白了!我感謝您的幫助!:) – 2013-03-09 20:42:32