標(biāo)準(zhǔn)C++中已經(jīng)提供了位運算符,包括位求反、左移、右移、位與、位異或以及位或。在此基礎(chǔ)上,HLS考慮到硬件的一個特性,那就是獲取數(shù)據(jù)中的某一位或者某幾位,同時,可能對數(shù)據(jù)本身進行位縮減運算,因此,HLS在這方面做了擴展,提供了一些特有的操作和方法(Method)。當(dāng)然,這些操作只針對定點數(shù)。
初始化與賦值
對于任意進度整型數(shù)據(jù)的初始化可以采用如下三種方式,如圖1所示。三種方式輸出的結(jié)果均為11,如圖2所示。
圖1
圖2
位選取與位賦值
HLS允許選取數(shù)據(jù)中的某一位,同時還可對指定位重新復(fù)制,這些操作均可通過[]完成,如圖3所示代碼片段。相應(yīng)的輸出結(jié)果如圖4所示。
圖3
圖4
此外,通過()或range()還可選取指定范圍的某幾位。代碼片段如圖5所示,相應(yīng)的輸出結(jié)果圖6所示。相比較,直接使用()操作會更快捷。同時,該操作還可實現(xiàn)位反轉(zhuǎn)。當(dāng)()中的數(shù)據(jù)一致時,則獲取指定位的內(nèi)容。
圖5
圖6
位縮減
就位縮減運算而言,HLS提供了6種位縮減方法:and_reduce()、or_reduce()、xor_reduce()、nand_reduce()、nor_reduce()和xnor_reduce()。如圖7所示,相應(yīng)的輸出結(jié)果如圖8所示。
圖7
圖8
二進制顯示
有時在調(diào)試時,需要把數(shù)據(jù)以二進制形式打印出來,這時需要用到to_string和c_str(),如圖9所示,相應(yīng)的輸出結(jié)果如圖10所示。
圖9
圖10
結(jié)論
HLS對C++的位操作進行了擴展,可快捷地執(zhí)行獲取某一位或某幾位的操作,還可方便地完成位縮減運算。對于C語言,HLS也有相應(yīng)的擴展,具體可參考ug902。
-
C++
+關(guān)注
關(guān)注
22文章
2114瀏覽量
73806 -
代碼
+關(guān)注
關(guān)注
30文章
4823瀏覽量
68926 -
HLS
+關(guān)注
關(guān)注
1文章
130瀏覽量
24186
原文標(biāo)題:HLS中的位操作可以這么做
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論