字串 異或運算 乙個異或運算引發的設計技巧(1)

2021-10-13 15:56:02 字數 1730 閱讀 7938

上期內容:create_clock你用對了嗎

異或運算是基本的邏輯運算,在fpga設計中經常遇到。其實現方式也很簡單,例如1bit的a和b相異或,只需要乙個2輸入查詢表(lut2)就可以完成。但是,如果a和b的位寬達到了512位,而且實際演算法包含很多此類運算,且要求時鐘執行在600mhz,採用lut實現就有點捉襟見肘了。

高速設計中,採用lut實現512位異或運算會有哪些弊端呢?從資源角度而言,a和b都是512位,那麼就要消耗512個lut2。如果存在很多這樣的操作,意味著lut的利用率會提公升,從而增大了佈線擁塞的風險。從時序角度而言,作為設計的一部分,這些lut2很有可能分散到不同列的slice中,如下圖所示。圖中紅色標記即為lut。這意味著某些lut輸出端的佈線延遲會很大,從而給時序收斂帶來壓力。

技巧1:對於大位寬且要求執行在較高時鐘頻率下的邏輯運算,例如:與、或、非、同或、異或等,可採用dsp48實現。技巧2:採用dsp48實現邏輯運算時,除了直接使用原語的方式外,採用use_dsp屬性實現對映更為簡潔可控。

只有當輸入資料位寬大於某個值且use_dsp屬性值為logic時,才可以將異或運算對映到dsp48中。兩個條件缺一不可。有興趣的同學可以測試一下,這裡要求位寬的最小值是多少。

create_clock你用對了嗎

字串和列表之間的轉換

列表排序其實不難

警惕設計中的dont_touch

老生常談的復位,你真的用對了嗎

如何優化高扇出net?

常用的跟pblock相關的tcl命令

比較器如何用dsp48實現

hls案例分析:陣列求和(2)

hls案例分析:陣列求和(1)

關於pblock的8個必知問題

一次建立多個pblock

pblock可以這麼畫

在vivado hls中使用tcl

vivado 2019.1新特性(5):更新的report_qor_suggestions

vivado 2019.1新特性(4):vhdl 2008 generic

2023年上半年文章彙總

tcl知識庫(更新至2019.1)

vivado hls知識庫(更新至2019.1)

vivado知識庫(更新至2019.1)

文 | lauren 圖 | lauren

異或運算 有趣的異或運算

異或運算可以看做是沒有進製的加法,按位異或運算,相同為0,不同為1。0 0 0 0 1 1 1 0 1 1 1 0 觀察運算結果我們發現,當與0做異或運算時,另一元值不變 而與1做異或運算時,另一元值值取反。根據以上異或運算的特徵,可以有以下用途,除方便直觀外,運算效能也更加優異。1 變數重置0 假...

(與運算) (或運算) (異或運算)

即 兩個運算元同為 1 的時候為1 0 0 0 1 0 1 0 1 1 1 1 1 即 兩個運算元中至少有乙個為 1 的時候為1 0 0 0 0 1 1 1 0 1 1 1 0 即 兩個運算元不同的時候為1 運算規則 1 0 0 1 即 對乙個二進位制數按位取反,即將0變1,1變0。將乙個運算物件的...

與運算( ) 或運算( ) 異或運算( )

預算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩個同時為1,結果為1,否則為0 例如 3 5 十進位制3轉為二進位制的3 0000 0011 十進位制5轉為二進位制的5 0000 0101 結果 0000 0001 轉為十進位制 1 即 3 5 1 運算規則 0 0 0 0 1 1 ...