<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一篇文章看懂HLS中的數據類型

電子工程師 ? 來源:lq ? 2018-12-12 14:18 ? 次閱讀

Vivado HLS的輸入可以是C、C++或者System C,從而繼承了這些語言本身就具有的數據類型,例如char、short int、int等整型或float、double等浮點數據類型。不難發現,對于整型,其表示的字長是以8為邊界的,這實際上和真實的硬件模型不完全匹配。這一點也不難理解,例如HDL中會根據設計需求設定位寬,而這些位寬很多情形下并不是8-bit、16-bit或者32-bit。因此,HLS引入了任意精度(ArbitraryPrecision)的數據類型(對于SystemC,可查看Table 1-7, ug902)。以C++為例說明。

整數

1

對于任意精度整型數據類型,可通過ap_int聲明位寬為W的有符號整數,或通過ap_uint聲明位寬為W的無符號整數。需要添加頭文件ap_int.h。

定點數

2

對于任意精度的定點小數,可通過ap_fixed聲明位寬為W,其中整數部分字長為I的有符號定點小數;或通過ap_ufixed聲明位寬為W,其中整數部分字長為I的無符號定點小數。需要添加頭文件ap_fixed.h。

浮點數

3

對于浮點數據類型,除了float和double之外,Vivado HLS還引入了半精度浮點數half,需要添加頭文件hls_half.h。該浮點數據類型為16-bit。

技巧

多種數據類型給用戶提供了更多的選擇,用戶可根據實際需求選擇可最佳匹配于硬件的數據類型。一個小的技巧是,把數據類型通過typedef定義在用戶的頭文件中。此外,在仿真時可采用float或double類型,以防止數據溢出,盡快完成算法功能的驗證;之后再將設定為整型,觀察是否有溢出,完成C綜合。

結論

任意精度的數據類型可以完美地匹配硬件需求,同時還繼承了原有數據類型所允許的操作。例如,對于兩個13-bit的有符號整數相乘,不必把其定義為int類型,而是直接定義為ap_int<13>,且可直接使用乘法運算符。這樣做的最大好處就是更準確地獲取資源利用率信息。注意在使用任意精度數據類型時要添加相應的頭文件。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C++
    C++
    +關注

    關注

    21

    文章

    2069

    瀏覽量

    72996
  • 數據類型
    +關注

    關注

    0

    文章

    229

    瀏覽量

    13535
  • HLS
    HLS
    +關注

    關注

    1

    文章

    127

    瀏覽量

    23741

原文標題:一篇文章看懂HLS中的數據類型

文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    GaussDB 數據類型介紹

    GaussDB 數據庫 GaussDB 是華為基于 openGauss 自研生態推出的云化企業級分布式關系型數據庫,它支持多種數據類型,包括數值、字符、日期等。在使用 GaussDB 時,可能需要
    的頭像 發表于 06-05 16:40 ?1352次閱讀
    GaussDB <b class='flag-5'>數據類型</b>介紹

    1.2FreeRTOS數據類型

    1.2FreeRTOS數據類型2017.2.1書zzwFreeRTOS 主要自定義了以下四種數據類型:TickType_t如果用戶使能了宏定義configUSE_16_BIT_TICKS,那么
    發表于 07-22 23:27

    Verilog 變量聲明與數據類型

    Verilog 變量聲明與數據類型Verilog語法中最基本的數據類型有 線網(wire),寄存器(reg)和整數(integer)三種類型,這三種
    發表于 08-10 14:01

    Windows -編程-數據類型

    Windows -編程-數據類型Rust 的每個值都有特定的數據類型,它告訴 Rust 指定了什么樣的數據,以便它知道如何處理這些數據。我
    發表于 08-24 14:30

    C預處理與C語言基本數據類型

    指令表:注意:宏名的書寫由標識符與兩邊各兩條下劃線構成。C語言基本數據類型不同操作系統數據類型所占字節數圖解數據類型的其他分類:變量常量(字面量和const常量)void(特殊
    發表于 12-21 08:29

    Java的基本數據類型與條件結構

    《Java基礎入門》第二1 基本數據類型,運算符與表達式,條件結構,循環結構...
    發表于 12-23 08:02

    HLS系列– HLS中的數據類型1

    供的數據類型,直接用HLS翻譯成硬件的話,可能會造成硬件效率的下降。 舉一個常見的例子。在xilinx FPGA中普遍含有DSP48,它可以提供18x18bit的乘法器,假如你的設計只需要17bit的乘法器,那么從FPGA實現角度,只需要1個DSP48就夠了。但是由于標準
    發表于 02-08 02:50 ?767次閱讀
    <b class='flag-5'>HLS</b>系列– <b class='flag-5'>HLS</b>中的<b class='flag-5'>數據類型</b>1

    vhdl數據類型

    VHDL中的標識符可以是常數、變量、信號、端口、子程序或參數的名字。VHDL中的數據類型可以分成四大類: 標量型(SCALAR TYPE):屬單元素的最基本的數據類型,通常用于描述一個單值數據對象
    發表于 03-30 15:59 ?11次下載

    51單片機學習筆記(9)——C51的基本數據類型和擴充數據類型

    基本數據類型:擴充數據類型
    發表于 11-14 13:36 ?1次下載
    51單片機學習筆記(9)——C51的基本<b class='flag-5'>數據類型</b>和擴充<b class='flag-5'>數據類型</b>

    Struct結構數據類型

    Struct類型是一種由多個不同數據類型元素組成的數據結構,其元素可以是基本數據類型,也可以是Struct、數組等復雜數據類型以及PLC
    的頭像 發表于 07-25 17:02 ?2584次閱讀

    結構數據類型(Struct)及應用案例

    Struct數據類型使用非常靈活,隨時可以使用,但是相對于PLC數據類型 (UDT) 有以下缺點,所以建議需要使用Struct類型時,可以使用PLC數據類型(UDT)代替。
    的頭像 發表于 07-27 16:10 ?1432次閱讀

    什么是數據類型轉換

    常用的3種數據類型:1、Python數據類型第一種:字符串(str)。 2、Python數據類型第二種:整數(int)。 3、Python數據類型第三種:浮點數(float)。
    的頭像 發表于 02-23 15:21 ?1264次閱讀

    定義數據類型

    在運算之前我們必須首先定義出數據類型,定義出腳本支持的數據類型,這是運算的基礎。 這一小節我們將定義出數據類型,在這里我們暫時定義四個數據類型:
    的頭像 發表于 03-03 10:10 ?681次閱讀

    Redis的數據類型有哪些

    Redis的數據類型有哪些?有五種常用數據類型:String、Hash、Set、List、SortedSet。以及三種特殊的數據類型:Bitmap、HyperLogLog、Geospatial
    的頭像 發表于 10-09 10:51 ?475次閱讀

    oracle的數據類型有哪些

    Oracle數據庫中有許多數據類型可供選擇,每種數據類型都有其各自的特點和適用場景。下面是對Oracle數據庫中最常用的數據類型的詳盡說明,
    的頭像 發表于 12-05 16:45 ?926次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>