一個有意思的題目。
X為一個32-bit的數,那么 X+32 和 X+1,哪個消耗的資源更多?還是一樣多?
假如只允許用 LUT 實現
如圖1所示每個LUT可以完成1bit的加法,同時產生進位(Xilinx LUT6可以有兩個輸出)。因此對于32bit的加法,則需要32個LUT。
圖1
假如我們要實現的是 A+B,A和B都是32-bit的,那么確實是需要32個LUT。那X+32和X+1的常數加法呢?
32可以表示為32'b0000...0010_0000,1可以表示為32'b0000....0000_0001。
對于 X+32,輸出值的低5bit可以直接表示為X[5:0],不需要LUT,其余值需要27個LUT實現加法運算。
對于X+1,只能從bit 0開始相加計算進位,總共需要32個LUT。
因此 X+1 消耗的資源更多。
假如是Vivado綜合,即使用Carry8
對于32bit的加法,需要4個carry8,那么是否意味著 X+32 和 X+1 有相同的資源消耗呢?
查看綜合結果(如下圖所示):
X+1 2個LUT1+4個Carry8 (LUT1實現的是取反的功能)
X+3 3個LUT1+4個Carry8 (bit0消耗2個LUT1,bit1消耗一個LUT1)
X+32 1個LUT1+4個Carry8 (bit5消耗1個LUT1)
因此從綜合結果看仍然是 X+1消耗的資源更多。當然這僅僅考慮單個加法的結果,如果實際代碼中,加法器前面還有組合邏輯,這個LUT1應該是會合并在前面的LUT中實現,因而X+1和X+32會得到相同的資源消耗,即4個Carry8。
感興趣的讀者可以思考下 X-32會消耗多少LUT。
圖2 - X+1
圖3 - X+3
圖4 - X+32
審核編輯:湯梓紅
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605999 -
Xilinx
+關注
關注
71文章
2171瀏覽量
122134 -
LUT
+關注
關注
0文章
49瀏覽量
12577 -
運算
+關注
關注
0文章
131瀏覽量
25854 -
Vivado
+關注
關注
19文章
815瀏覽量
66889
原文標題:X+32 vs X+1 誰消耗的FPGA資源多
文章出處:【微信號:FPGA開發之路,微信公眾號:FPGA開發之路】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論