前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HLS中的位操作可以这么做

HLS中的位操作可以这么做

作者头像
Lauren的FPGA
发布2019-10-30 22:14:39
2K0
发布2019-10-30 22:14:39
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

标准C++中已经提供了位运算符,包括位求反、左移、右移、位与、位异或以及位或。在此基础上,HLS考虑到硬件的一个特性,那就是获取数据中的某一位或者某几位,同时,可能对数据本身进行位缩减运算,因此,HLS在这方面做了扩展,提供了一些特有的操作和方法(Method)。当然,这些操作只针对定点数。

初始化与赋值

对于任意进度整型数据的初始化可以采用如下三种方式,如图1所示。三种方式输出的结果均为11,如图2所示。

图1
图1
图2
图2

位选取与位赋值

HLS允许选取数据中的某一位,同时还可对指定位重新复制,这些操作均可通过[]完成,如图3所示代码片段。相应的输出结果如图4所示。

图3
图3
图4
图4

此外,通过()或range()还可选取指定范围的某几位。代码片段如图5所示,相应的输出结果图6所示。相比较,直接使用()操作会更快捷。同时,该操作还可实现位反转。当()中的数据一致时,则获取指定位的内容。

图5
图5
图6
图6

位缩减

就位缩减运算而言,HLS提供了6种位缩减方法:and_reduce()、or_reduce()、xor_reduce()、nand_reduce()、nor_reduce()和xnor_reduce()。如图7所示,相应的输出结果如图8所示。

图7
图7
图8
图8

二进制显示

有时在调试时,需要把数据以二进制形式打印出来,这时需要用到to_string和c_str(),如图9所示,相应的输出结果如图10所示。

图9
图9
图10
图10

结论

HLS对C++的位操作进行了扩展,可快捷地执行获取某一位或某几位的操作,还可方便地完成位缩减运算。对于C语言,HLS也有相应的扩展,具体可参考ug902。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-21,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com