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

    文章

    2066

    浏览量

    72878
  • 代码
    +关注

    关注

    30

    文章

    4552

    浏览量

    66642
  • HLS
    HLS
    +关注

    关注

    1

    文章

    126

    浏览量

    23674

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    AD补不上泪滴怎么回事?

    我选中焊盘再执行如上操作毫无反应啊?不是这么做
    发表于 01-03 18:14

    ucosii操作系统,keil编程多任务通讯调度的问题!

    ,是不是就代表我的任务同步,和通讯其实不需要信号量,邮箱,消息队列也能实现任务的同步和通讯啊,我现在基本都是这种方法,建立一个数据,一个任务往里写,一个任务往里读。这么做可以吗,有错吗?树上说,操作系统
    发表于 01-07 17:16

    新手求助,HLS实现opencv算法加速的IP在vivado的使用

    的是1080P,OV5640是720P,data宽也不同,HLS_IP是16的data,CH05_AXI_DMA_OV5640_HDMI的demo用的是32data。还有听说
    发表于 01-16 09:22

    这么自制线圈

    麻烦广大的电子发烧友之下找,电感怎么怎么自己?很多值市面上都没有买,想问下大家这么做符合自己电路的线圈,参数,线圈的长度,线圈的直径这些,多谢了。麻烦给个具体的例子。
    发表于 07-27 12:54

    为什么我关闭工程管理器 老是提醒我这么做可能会丢弃正在运行的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

    请问我能用400KHz的频率中断采集10的ADC数据吗?

    什么事情。但是采集的时间很短,也就0.1秒,所以用户也可以接受。大家认为这么做可以吗?还有没有更好的替代方法?
    发表于 10-29 01:50

    来自vivado hls的RTL可以由Design Compiler进行综合吗?

    您好我有一个关于vivado hls的问题。RTL是否来自xivix FPGA的vivado hls onyl?我们可以在Design Compiler上使用它进行综合吗?谢谢
    发表于 04-13 09:12

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

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

    合成的Vivado HLS的Pragma错误怎么解决

    模拟过程完成没有0错误,但在合成期间显示错误。我无法找到错误。我在合成期间在HLS工具收到这样的错误“在E包含的文件:/thaus / fact_L / facoriall
    发表于 05-21 13:58

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

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

    Vivado HLS实现OpenCV图像处理的设计流程与分析

    , Mat 类型的关系和VivadoHLS图像hls::Mat类型介绍OpenCv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图
    发表于 07-08 08:30

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

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

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

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