標準C++中已經提供了位運算符,包括位求反、左移、右移、位與、位異或以及位或。在此基礎上,HLS考慮到硬件的一個特性,那就是獲取數據中的某一位或者某幾位,同時,可能對數據本身進行位縮減運算,因此,HLS在這方面做了擴展,提供了一些特有的操作和方法(Method)。當然,這些操作只針對定點數。
初始化與賦值
對于任意進度整型數據的初始化可以采用如下三種方式,如圖1所示。三種方式輸出的結果均為11,如圖2所示。
圖1
圖2
位選取與位賦值
HLS允許選取數據中的某一位,同時還可對指定位重新復制,這些操作均可通過[]完成,如圖3所示代碼片段。相應的輸出結果如圖4所示。
圖3
圖4
此外,通過()或range()還可選取指定范圍的某幾位。代碼片段如圖5所示,相應的輸出結果圖6所示。相比較,直接使用()操作會更快捷。同時,該操作還可實現位反轉。當()中的數據一致時,則獲取指定位的內容。
圖5
圖6
位縮減
就位縮減運算而言,HLS提供了6種位縮減方法:and_reduce()、or_reduce()、xor_reduce()、nand_reduce()、nor_reduce()和xnor_reduce()。如圖7所示,相應的輸出結果如圖8所示。
圖7
圖8
二進制顯示
有時在調試時,需要把數據以二進制形式打印出來,這時需要用到to_string和c_str(),如圖9所示,相應的輸出結果如圖10所示。
圖9
圖10
結論
HLS對C++的位操作進行了擴展,可快捷地執(zhí)行獲取某一位或某幾位的操作,還可方便地完成位縮減運算。對于C語言,HLS也有相應的擴展,具體可參考ug902。
-
C++
+關注
關注
22文章
2115瀏覽量
74153 -
代碼
+關注
關注
30文章
4857瀏覽量
69529 -
HLS
+關注
關注
1文章
130瀏覽量
24333
原文標題:HLS中的位操作可以這么做
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
蘋果逆勢而動 雙核64位A7處理器性能亦暴走
通過設置外部電容Cout和外部電阻Rout的方法來設置ADXRS646的帶寬,請問這么做有帶寬上限嗎?
AGM32VF407的大部分IO可以隨意配置,這是這么做到的?
為什么我關閉工程管理器 老是提醒我這么做可能會丟棄正在運行的VI
如何在HLS 14.3中編寫pow功能?
如何使用Vivado HLS生成了一個IP
【正點原子FPGA連載】第一章HLS簡介-領航者ZYNQ之HLS 開發(fā)指南
HLS系列 – High LevelSynthesis(HLS) 的端口綜合1

FPGA設計中的HLS 工具應用

魅族華海良評論iPhone 12直角邊框:技術限制 必須這么做
要想成為ARM嵌入式硬件高手,你得這么做!資料下載

評論