標準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++的位操作進行了擴展,可快捷地執行獲取某一位或某幾位的操作,還可方便地完成位縮減運算。對于C語言,HLS也有相應的擴展,具體可參考ug902。
-
C++
+關注
關注
22文章
2114瀏覽量
73890 -
代碼
+關注
關注
30文章
4837瀏覽量
69129 -
HLS
+關注
關注
1文章
130瀏覽量
24217
原文標題:HLS中的位操作可以這么做
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
蘋果逆勢而動 雙核64位A7處理器性能亦暴走
通過設置外部電容Cout和外部電阻Rout的方法來設置ADXRS646的帶寬,請問這么做有帶寬上限嗎?
AGM32VF407的大部分IO可以隨意配置,這是這么做到的?
為什么我關閉工程管理器 老是提醒我這么做可能會丟棄正在運行的VI
如何在HLS 14.3中編寫pow功能?
如何使用Vivado HLS生成了一個IP
【正點原子FPGA連載】第一章HLS簡介-領航者ZYNQ之HLS 開發指南
HLS系列 – High LevelSynthesis(HLS) 的端口綜合1
![<b class='flag-5'>HLS</b>系列 – High LevelSynthesis(<b class='flag-5'>HLS</b>) 的端口綜合1](https://file1.elecfans.com//web2/M00/A6/A6/wKgZomUMP2OAX7LoAAApSb9YRHI921.jpg)
FPGA設計中的HLS 工具應用
![FPGA設計<b class='flag-5'>中</b>的<b class='flag-5'>HLS</b> 工具應用](https://file1.elecfans.com//web2/M00/A7/4A/wKgZomUMQ5yAJGWDAAAd7lSXhTY781.png)
魅族華海良評論iPhone 12直角邊框:技術限制 必須這么做
要想成為ARM嵌入式硬件高手,你得這么做!資料下載
![要想成為ARM嵌入式硬件高手,你得<b class='flag-5'>這么做</b>!資料下載](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論