上期內容: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 ...