《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > Xilinx Vivado HLS中Floating-Point(浮點)設計編碼風格與技巧

Xilinx Vivado HLS中Floating-Point(浮點)設計編碼風格與技巧

2013-09-02
作者:王宏強 – Xilinx DSP Specialist
關鍵詞: 開發工具 Vivado HLS

盡管通常Fixed-Point(定點)比Floating-Point(浮點)算法的FPGA實現要更快,且面積更高效,但往往有時也需要Floating-Point來實現。這是因為Fixed-Point有限的數據動態范圍,需要深入的分析來決定整個設計中間數據位寬變化的pattern,為了達到優化的QoR,并且要引入很多不同類型的Fixed-Point中間變量。而Floating-Point具有更大的數據動態范圍,從而在很多算法中只需要一種數據類型的優勢。

Xilinx Vivado HLS工具支持C/C++ IEEE-54標準單精度及雙精度浮點數據類型,可以比較容易,快速地將C/C++ Floating-Point算法轉成RTL代碼。與此同時,為了達到用戶期望的FPGA資源與性能, 當使用Vivado HLS directives時需要注意C/C++編碼風格與技巧相結合。

 

  1. 編碼風格

1.1      單雙精度浮點數學函數

 

#include

float example(float var)

{

return log(var); // 雙精度自然對數

}

 

在C設計中, 這個例子, Vviado HLS 生成的RTL實現將輸入轉換成雙精度浮點,并基于雙精度浮點計算自然對數,然后將雙精度浮點輸出轉換成單精度浮點.

 

#include

float example(float var)

{

return logf(var); // 單精度自然對數

}

在C設計中, logf才是單精度自然對數, 這個例子 Vviado HLS 生成的RTL實現將基于單精度浮點計算自然對數, 而且沒有輸入輸出單雙精度的互轉。

 

1.2      浮點運算優化

我們先來看一個例子,三個從代數上看起來差不多的寫法,但其在Vivado HLS中綜合出來的是三個完全不一樣的結果。

 

void example(float *m0, float *m1, float *m2, float var)

{

*m0 = 0.2 * var; // 雙精度浮點乘法,單雙精度類型轉換

*m1 = 0.2f * var; // 單精度浮點乘法

*m2 = var / 20.0f; // 單精度浮點除法

}

 

Vivado HLS將日m0, m1, m2綜合成不同的RTL實現。

因為0.2是一個不能精確表征的雙精度數字, 所以m0運算會被Vivado HLS綜合成一個雙精度浮點乘法, 并且將var 轉換成雙精度, 然后將雙精度乘法輸出m0轉換成單精度。

特別注意,如果希望Vivado HLS綜合出單精度常熟,需要在常數后面加f, 如0.2f。這樣m1綜合成一個單精度乘法的輸出。同理,m2將被Vivado HLS綜合成單精度除法的輸出。

 

我們來看另外一個例子。

 

void example(float *m0, float *m1, float var)

{

*m0 = 0.2f * 5.0f * var; // *m0 = var;常數乘法被優化掉

*m1 = 0.2f * var * 5.0f; // 兩個雙精度浮點乘法

}

 

再來看另一個例子。

 

void example(float *m0, float *m1, float var)

{

*m0 = 0.5 * var; //

*m1 = var/2; //

}

m0運算會被Vivado HLS綜合成一個雙精度浮點乘法, 并且將var 轉換成雙精度, 然后將雙精度乘法輸出m0轉換成單精度。

m1運算會被Vivado HLS綜合成簡單的右移運算。所以如果用戶希望實現對var除以2, 就寫成m1這種表達式,而不是m0的表達式。

 

  1. 并行度與資源復用

由于浮點運算相比整型,定點運算耗用更可觀的資源。Vivado HLS會盡量用更有效的資源來實現浮點運算,當數據的相關性及約束許可的情況下,在Vivado HLS中,會盡量復用一些浮點運算單元。為了說明這個,我們看一個簡單的四個浮點加法例子, Vivado HLS復用一個浮點加法器來串行實現四個浮點加法。

void example(float *r, float a, float b,

float c, float d)

{

*r = a + b + c + d;

}

 

有時設計需要更高的throughput及更低的latency。這時就需要提高設計的并行度。以下面例子來說明,在Vivado HLS就需要對for循環loop加pipeline與unroll 的directives。同時需要通過設置a,b,r0 為FIFO, 并對其重排以提高I/O帶寬兩倍。這樣Vivado HLS就會綜合出兩個浮點加法來并行實現,這是因為每個加法器計算是完全獨立的。

 

void example(float r0[32], float a[32], float b[32])

{

#pragma HLS interface ap_fifo port=a,b,r0

#pragma HLS array_reshape cyclic factor=2 variable=a,b,r0

for (int i = 0; i < 32; i++)

{

#pragma HLS pipeline

#pragma HLS unroll factor=2

r0[i] = a[i] + b[i];

  }

 

然而,如果更多復雜的運算,或許會導致不獨立的浮點運算,在這種情況下,Vivado HLS不能重新排列這些運算的順序,這樣會導致更低的,不是所期望的復用。 下面舉例來說明如何提高帶有反饋浮點運算的性能。

這個例子的累加會導致recurrence,并且通常浮點加法的latency大于一個時鐘周期,加的pipeline directive并不能達到一個時鐘周期完成一次累加的throughput。

 

float example(float x[32])

{

#pragma HLS interface ap_fifo port=x

float acc = 0;

for (int i = 0; i < 32; i++)

{

#pragma HLS pipeline

acc += x[i];

}

return acc;

}

 

為了對上面例子并行展開,可以對代碼如下做較小的改動,也就是拆成先部分累加,再最后累加,當然也需要對輸入數據進行簡單的重新排列,以獲得相應的I/O帶寬,從而達到期望的并行度。

 

float top(float x[32])

{

#pragma HLS interface ap_fifo port=x

float acc_part[4] = {0.0f, 0.0f, 0.0f, 0.0f};

for (int i = 0; i < 32; i += 4) { // 手動unroll by 4

for (int j = 0; j < 4; j++) { // 部分累加

#pragma HLS pipeline

acc_part[j] += x[i + j];

}

for (int i = 1; i < 4; i++) { //最后累加

#pragma HLS unroll

acc_part[0] += acc_part[i];

}

return acc_part[0];

}

 

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久国产免费看| 激情综合色综合久久综合| 久久精品视频导航| 香蕉久久久久久久av网站| 99在线精品观看| 一本久久综合| 欧美日韩精品免费观看视一区二区| 91久久精品国产91久久性色| 国产欧美欧美| 麻豆国产精品va在线观看不卡| 欧美福利电影在线观看| 久久久久久999| 亚洲欧美制服另类日韩| 欧美怡红院视频| 欧美日韩一卡| 亚洲精品在线二区| 亚洲专区免费| 欧美性色视频在线| 亚洲综合色激情五月| 亚洲欧美在线磁力| 中文精品一区二区三区| 亚洲激情亚洲| 日韩一级欧洲| 狠狠综合久久av一区二区小说| 亚洲精选一区| 国产日韩欧美夫妻视频在线观看| 国产日产欧产精品推荐色| 一区二区三区国产盗摄| 亚洲一区免费看| 性xx色xx综合久久久xx| 久久综合给合久久狠狠色| 国产精品一区二区三区成人| 国产麻豆成人精品| 国产一区日韩一区| 午夜久久久久久久久久一区二区| 欧美激情a∨在线视频播放| 欧美日韩国产精品专区| 狠狠狠色丁香婷婷综合久久五月| 亚洲日本免费电影| 国产精品白丝黑袜喷水久久久| 亚洲激情电影中文字幕| 国产午夜精品一区理论片飘花| 9色国产精品| 国产色产综合色产在线视频| 99精品欧美一区二区三区综合在线| 国产日韩欧美一区在线| 久久久亚洲高清| 在线观看视频一区二区欧美日韩| 一区二区免费在线视频| 国产专区精品视频| 99亚洲伊人久久精品影院红桃| 国产精品网红福利| 久久精品视频亚洲| 伊人婷婷欧美激情| 亚洲日本欧美日韩高观看| 国产精品乱码人人做人人爱| 亚洲精品1234| 久久影音先锋| 国产亚洲人成网站在线观看| 欧美日韩不卡合集视频| 欧美日韩精品伦理作品在线免费观看| 一区二区欧美激情| 欧美激情一级片一区二区| 国语精品中文字幕| 国产精品久久久久7777婷婷| 一区二区欧美精品| 国产一区二区电影在线观看| 久久国产精品久久久久久| 国产精品区二区三区日本| 亚洲无亚洲人成网站77777| 午夜视频在线观看一区| 国产精品亚洲综合天堂夜夜| 亚洲欧美www| 亚洲国产日韩在线一区模特| 国产精品国产三级国产aⅴ浪潮| 亚洲精品久久久久| 精品不卡一区| 嫩草影视亚洲| 亚洲一区图片| 久久精品一区二区三区四区| 狠狠88综合久久久久综合网| 亚洲视频国产视频| 国产精品私拍pans大尺度在线| 欧美午夜不卡| 在线观看一区欧美| 麻豆精品精品国产自在97香蕉| 亚洲乱码国产乱码精品精可以看| 米奇777超碰欧美日韩亚洲| 老司机67194精品线观看| 欧美视频一区二区三区…| 一本大道久久a久久综合婷婷| 久久精品人人做人人爽| 亚洲三级网站| 国产精品日韩电影| 亚洲午夜极品| 国产一区二区三区免费观看| 国产精品亚洲不卡a| 亚洲狼人综合| 国产欧美一区二区三区另类精品| 久久爱www.| 久久黄色小说| 亚洲一二三区视频在线观看| 一区二区三区久久久| 欧美日韩在线影院| 久久久久久久999| 亚洲激情第一区| 欧美在线一级视频| 国产精品免费视频xxxx| 香蕉久久一区二区不卡无毒影院| 亚洲国产高潮在线观看| 国产精品久久久久久久久果冻传媒| 好吊视频一区二区三区四区| 国产丝袜一区二区三区| 欧美激情按摩在线| 午夜精品久久久久久久99黑人| 久久综合图片| 国内外成人在线视频| 欧美成人免费视频| 国产私拍一区| 在线成人激情| 久久久久国产成人精品亚洲午夜| 国产精品三级久久久久久电影| 久久国产日韩| 鲁大师影院一区二区三区| 欧美久久久久久久久| 久久精品综合| 欧美日韩综合视频| 久久久久久亚洲精品杨幂换脸| 亚洲欧洲一区二区三区在线观看| 国产一区二区三区久久久久久久久| 91久久极品少妇xxxxⅹ软件| 亚洲精品少妇30p| 亚洲国产视频a| 在线观看的日韩av| 国产欧亚日韩视频| 欧美一区二区久久久| 黑人一区二区三区四区五区| 欧美区亚洲区| 久久国产精品亚洲va麻豆| 国产综合久久| 亚洲影视在线| 国产精品日韩精品| 久久久国产91| 欧美激情区在线播放| 欧美中文字幕久久| 另类图片综合电影| 在线亚洲免费视频| 欧美成人久久| 国语自产精品视频在线看抢先版结局| 亚洲一区二区三区在线| 销魂美女一区二区三区视频在线| 国产欧美一区二区三区在线看蜜臀| 欧美高清视频www夜色资源网| 亚洲嫩草精品久久| 中文精品在线| 亚洲欧美欧美一区二区三区| 亚洲综合精品自拍| 亚洲另类黄色| 最新69国产成人精品视频免费| 国产精品美女| 久久久久久黄| 宅男噜噜噜66国产日韩在线观看| 日韩一级黄色片| av不卡在线观看| 国产欧美一区二区精品性色| 欧美国产精品久久| 夜夜夜精品看看| 欧美伦理在线观看| 国产精品丝袜久久久久久app| 欧美日韩高清在线| 亚洲一区二区在线看| 国产精品久久一卡二卡| 另类人畜视频在线| 亚洲一区二区毛片| 欧美ed2k| 欧美高清视频www夜色资源网| 亚洲精品乱码久久久久久蜜桃91| 一区二区三区四区国产精品| 亚洲国产视频一区| 国产亚洲精品综合一区91| 亚洲大片在线| 亚洲综合国产精品| 久久国产欧美日韩精品| 玖玖玖国产精品| 欧美日韩一级大片网址| 国产一区二区三区直播精品电影| 久久激情综合网| 国产精品高精视频免费| 欧美在线一级视频| 国产精品久久久久久久久久ktv| 在线日韩av永久免费观看| 亚洲精品视频在线看| 国产亚洲美州欧州综合国| 亚洲九九爱视频| 一区二区三区免费观看| 国产精品美女999| 国产欧美一区二区精品仙草咪| 樱桃国产成人精品视频| 国产综合精品一区| 久久婷婷激情| 激情综合电影网| 亚洲视频日本| 国产欧美婷婷中文| 欧美激情视频在线播放| 久久精品人人做人人综合| 国产一区二区激情| 国产精品成人aaaaa网站| 久久综合给合久久狠狠狠97色69| 久久一区二区视频| 99精品免费视频| 海角社区69精品视频| 国产精品入口福利| 亚洲免费福利视频| 午夜精品国产更新| 国产精品成人免费精品自在线观看| 久久婷婷色综合| 另类综合日韩欧美亚洲| 久久久久久69| 久久久久久久久岛国免费| 亚洲深夜福利| 欧美精品久久久久久| 久久这里只有| 国产一区日韩欧美| 欧美韩日精品| 亚洲永久视频| 麻豆精品网站| 亚洲午夜视频| 国产免费成人在线视频| 欧美另类videos死尸| 亚洲视频一二三| 亚洲视频一区二区| 老司机67194精品线观看| 麻豆精品一区二区综合av| 美女久久网站| 久久综合五月天婷婷伊人| 亚洲色在线视频| 欧美在线精品免播放器视频| 亚洲无限乱码一二三四麻| 亚洲成人中文| 夜夜爽夜夜爽精品视频| 国产精品免费一区豆花| 国模大胆一区二区三区| 亚洲电影在线免费观看| 久久免费视频这里只有精品| 激情久久婷婷| 国产在线一区二区三区四区| 亚洲欧洲一区二区在线播放| 亚洲电影网站| 在线播放不卡| 亚洲精品日日夜夜| 亚洲欧洲三级电影| 国产一区二区三区精品久久久| 久久久夜精品| 亚洲美女少妇无套啪啪呻吟| 亚洲国产日韩欧美在线99| 国产日韩在线亚洲字幕中文| 在线一区二区三区四区五区| 久久久精品999| 一区二区三区视频在线观看| 亚洲黄色高清| 亚洲精品国久久99热| 一区二区三区在线免费视频| 国产欧美一区二区视频| 国产午夜精品久久久久久久| 亚洲电影第三页| 亚洲在线视频网站| 亚洲高清在线播放| 国产欧美日韩精品专区| 欧美精品国产一区| 国产精品盗摄久久久| 亚洲一区www| 极品裸体白嫩激情啪啪国产精品| 国产日韩欧美视频在线| 免费在线欧美视频| 久久偷窥视频| 国产亚洲免费的视频看| 国产一区二区三区奇米久涩| 欧美新色视频| 一本色道久久综合狠狠躁篇的优点| 亚洲欧美综合一区| 国产精品视频一二三| 亚洲在线视频免费观看| 亚洲欧洲偷拍精品| 久久综合精品一区| 欧美日韩不卡一区| 先锋影音国产精品| 有码中文亚洲精品| 激情久久久久久久久久久久久久久久| 欧美人在线观看| 久久综合成人精品亚洲另类欧美| 亚洲国产清纯| 国产精品一区二区女厕厕| 欧美日韩国产页| 欧美一区二区三区日韩| 午夜精品福利一区二区蜜股av| av成人免费| 一区二区三区四区五区在线| 国产精品亚洲激情| 欧美日韩视频专区在线播放| 久久久亚洲国产美女国产盗摄| 一本大道久久精品懂色aⅴ| 亚洲国产精品黑人久久久| 亚洲高清视频一区| 亚洲福利视频三区| 欧美国产日本| 欧美制服丝袜| 欧美成人日本| 亚洲精品免费一区二区三区| 国产精品xxxav免费视频| 欧美承认网站| 国产欧美欧洲在线观看| 亚洲日本欧美日韩高观看| 另类成人小视频在线| 国产伦精品一区二区三区四区免费| 亚洲精品在线观看视频| 麻豆成人小视频| 国产精品午夜av在线| 午夜精品一区二区三区电影天堂| 国产精品社区| 亚洲欧美日韩中文视频| 国产综合亚洲精品一区二| 欧美日韩国产成人在线免费| 欧美视频网址| 亚洲欧美日韩国产成人精品影院| 国产欧美日本一区二区三区| 久久er99精品| 亚洲综合精品四区| 久久久久久国产精品一区|