0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HLS中的位操作可以这么做

电子工程师 来源:lq 2019-01-23 15:36 次阅读

标准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++
    C++
    +关注

    关注

    21

    文章

    2098

    浏览量

    73452
  • 代码
    +关注

    关注

    30

    文章

    4721

    浏览量

    68216
  • HLS
    HLS
    +关注

    关注

    1

    文章

    128

    浏览量

    23990

原文标题:HLS中的位操作可以这么做

文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    苹果逆势而动 双核64A7处理器性能亦暴走

    四核处理器是智能手机的未来吗?可能没有这么快。苹果最新的64A7处理器,其实还是双核心!苹果这么做,是在逆趋势而动吗?
    发表于 09-20 09:52 2034次阅读

    HLS组合电路对设计的影响

    该项目通过一个示例演示了 HLS 组合电路对设计的影响。
    的头像 发表于 11-03 09:04 710次阅读
    <b class='flag-5'>HLS</b><b class='flag-5'>中</b>组合电路对设计的影响

    通过设置外部电容Cout和外部电阻Rout的方法来设置ADXRS646的带宽,请问这么做有带宽上限吗?

    fout = 1/(2 ×× Rout × Cout); Rout = (180 k× Rext)/(180 k+ Rext)通过设置外部电容Cout和外部电阻Rout的方法来设置ADXRS646的带宽,请问这么做有带宽上限吗?最佳带宽是多少?多谢各位大神!
    发表于 12-29 08:32

    AGM32VF407的大部分IO可以随意配置,这是这么做到的?

    AGM32VF407的大部分IO可以随意配置,除了少数的专用引脚外,这是这么做到的?这里包括异构的RISC-V内核的外设哦。非常感兴趣呢。
    发表于 10-31 19:07

    为什么我关闭工程管理器 老是提醒我这么做可能会丢弃正在运行的VI

    为什么我关闭工程管理器 老是提醒我这么做可能会丢弃正在运行的VI可是我查看了下 可能存在VI线程都关闭了能又别的方法查看吗 不用点开 VI也能查
    发表于 05-25 10:29

    如何在HLS 14.3编写pow功能?

    嗨〜 如何在HLS 14.3编写pow功能? HLS 14.3不支持exp和pow功能。我在我的代码写了“#include math.h”。但是,它不起作用。 另外,我想知道C代码
    发表于 03-05 13:40

    如何使用Vivado HLS生成了一个IP

    你好,我使用Vivado HLS生成了一个IP。从HLS测量的执行和测量的执行时间实际上显着不同。由HLS计算的执行非常小(0.14 ms),但是当我使用AXI计时器在真实场景测量它
    发表于 05-05 08:01

    【正点原子FPGA连载】第一章HLS简介-领航者ZYNQ之HLS 开发指南

    上,比如让设计者可以指定 HLS 引擎如何处理 C 代码识别出来的循环或数组,或是某个特定运算的延迟。这能导致RTL 输出的巨大改变。因此,具有了指令的知识,设计者就可以根据应用的需
    发表于 10-10 16:44

    W601操作是什么?为什么要这么干呢

    映射成另一块地址,直接来进行操作。那么为什么要这么干呢?因为CM3内核是不能像51单片机一样对某个独立IO口(P1.1 = 0)进行设置的,为了实现这个功能,CM3内核提出了操作
    发表于 01-20 06:18

    HLS系列 – High LevelSynthesis(HLS) 的端口综合1

    在之前HLS的基本概念1里有提及,HLS会把c的参数映射成rtl的端口实现。本章开始总结下HLS端口综合的一些知识。 1.HLS综合后的rtl端口大体
    发表于 02-08 03:29 828次阅读
    <b class='flag-5'>HLS</b>系列 – High LevelSynthesis(<b class='flag-5'>HLS</b>) 的端口综合1

    FPGA设计HLS 工具应用

    HLS,高层综合)。这个工具直接使用C、C++或SystemC 开发的高层描述来综合数字硬件,这样就不再需要人工做出用于硬件的设计,像是VHDL 或Verilog 这样的文件,而是由HLS 工具来这个事情。
    发表于 06-04 01:43 7361次阅读
    FPGA设计<b class='flag-5'>中</b>的<b class='flag-5'>HLS</b> 工具应用

    魅族华海良评论iPhone 12直角边框:技术限制 必须这么做

    iPhone 12系列在外观设计上和上一代最大的不同之处在于回归了iPhone 4时代的直角边框设计。 业界猜测苹果这么做是为了致敬一代经典iPhone 4,而魅族科技副总裁华海良则给出
    的头像 发表于 11-05 13:10 1244次阅读

    要想成为ARM嵌入式硬件高手,你得这么做!资料下载

    电子发烧友网为你提供要想成为ARM嵌入式硬件高手,你得这么做!资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-18 08:41 15次下载
    要想成为ARM嵌入式硬件高手,你得<b class='flag-5'>这么做</b>!资料下载

    8单片机多位乘除操作

    8单片机多位乘除操作今日在8单片机乘除运算,简化代码如下 unsigned char
    发表于 11-18 19:51 12次下载
    8<b class='flag-5'>位</b>单片机<b class='flag-5'>做</b>多位乘除<b class='flag-5'>操作</b>

    FPGA基础之HLS

    1、HLS简介 HLS(High-Level Synthesis)高层综合,就是将 C/C++的功能用 RTL 来实现,将 FPGA 的组件在一个软件环境来开发,这个模块的功能验证在软件环境
    的头像 发表于 12-02 12:30 5085次阅读