標(biāo)準(zhǔn)C++中已經(jīng)提供了位運算符,包括位求反、左移、右移、位與、位異或以及位或。在此基礎(chǔ)上,HLS考慮到硬件的一個特性,那就是獲取數(shù)據(jù)中的某一位或者某幾位,同時,可能對數(shù)據(jù)本身進(jìn)行位縮減運算,因此,HLS在這方面做了擴展,提供了一些特有的操作和方法(Method)。當(dāng)然,這些操作只針對定點數(shù)。
初始化與賦值
對于任意進(jìn)度整型數(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

二進(jìn)制顯示
有時在調(diào)試時,需要把數(shù)據(jù)以二進(jìn)制形式打印出來,這時需要用到to_string和c_str(),如圖9所示,相應(yīng)的輸出結(jié)果如圖10所示。
圖9

圖10

結(jié)論
HLS對C++的位操作進(jìn)行了擴展,可快捷地執(zhí)行獲取某一位或某幾位的操作,還可方便地完成位縮減運算。對于C語言,HLS也有相應(yīng)的擴展,具體可參考ug902。
-
C++
+關(guān)注
關(guān)注
22文章
2124瀏覽量
77125 -
代碼
+關(guān)注
關(guān)注
30文章
4968瀏覽量
73989 -
HLS
+關(guān)注
關(guān)注
1文章
135瀏覽量
25841
原文標(biāo)題:HLS中的位操作可以這么做
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
蘋果逆勢而動 雙核64位A7處理器性能亦暴走
通過設(shè)置外部電容Cout和外部電阻Rout的方法來設(shè)置ADXRS646的帶寬,請問這么做有帶寬上限嗎?
AGM32VF407的大部分IO可以隨意配置,這是這么做到的?
為什么我關(guān)閉工程管理器 老是提醒我這么做可能會丟棄正在運行的VI
如何在HLS 14.3中編寫pow功能?
如何使用Vivado HLS生成了一個IP
HLS系列 – High LevelSynthesis(HLS) 的端口綜合1
FPGA設(shè)計中的HLS 工具應(yīng)用
魅族華海良評論iPhone 12直角邊框:技術(shù)限制 必須這么做
要想成為ARM嵌入式硬件高手,你得這么做!資料下載
HLS中的位操作可以這么做
評論