0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算詳解

DIri_ALIFPGA ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:工程師陳翠 ? 2018-07-23 09:09 ? 次閱讀

概述

卷積是一種線性運(yùn)算,其本質(zhì)是滑動(dòng)平均思想,廣泛應(yīng)用于圖像濾波。而隨著人工智能深度學(xué)習(xí)的發(fā)展,卷積也在神經(jīng)網(wǎng)絡(luò)中發(fā)揮重要的作用,如卷積神經(jīng)網(wǎng)絡(luò)。本參考設(shè)計(jì)主要介紹如何基于INTEL 硬浮點(diǎn)的DSP Block實(shí)現(xiàn)32位單精度浮點(diǎn)的卷積運(yùn)算,而針對(duì)定點(diǎn)及低精度的浮點(diǎn)運(yùn)算,則需要對(duì)硬浮點(diǎn)DSP Block進(jìn)行相應(yīng)的替換即可。

原理分析

設(shè):f(x), g(x)是兩個(gè)可積函數(shù),作積分:

基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算詳解

隨著x的不同取值,該積分定義了一個(gè)新的函數(shù)h(x),稱為函數(shù)f(x)與g(x)的卷積,記為h(x)=f(x)*g(x)。

如果卷積的變量是序列x(n)和h(n),則卷積的結(jié)果為

基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算詳解

其中*表示卷積。因此兩個(gè)序列的卷積,實(shí)際上就是多項(xiàng)式的乘法,用個(gè)例子說(shuō)明其工作原理。a = [7,5,4]; b = [6,7,9];則實(shí)現(xiàn)a和b的卷積,就是把a(bǔ)和b作為一個(gè)多項(xiàng)式的系數(shù),按多項(xiàng)式的升冪或降冪排列,即為:

基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算詳解

因此得到a*b=[42,79,122,73,36];與Matlab運(yùn)算結(jié)果一致。而二維卷積可以采用通用多項(xiàng)式乘積方法實(shí)現(xiàn)卷積運(yùn)算。

基于INTEL FPGA的實(shí)現(xiàn)分析

如上我們確定了兩個(gè)序列的卷積等同于兩個(gè)多項(xiàng)式的乘法,因此當(dāng)我們需要計(jì)算序列[a0,a1,a2, …,an-1]與[b0,b1,b2, …,bn-1]的卷積結(jié)果時(shí),可以成立a,b兩個(gè)n階多項(xiàng)式,如下所示:

基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算詳解

則[a0,a1,a2, …,an-1]與[b0,b1,b2, …,bn-1]的卷積結(jié)果即為由a*b得到的多項(xiàng)式的各項(xiàng)系數(shù)所組成的序列。令c=a*b,得到

基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算詳解

則由多項(xiàng)式c的各階系數(shù)所組成的新的序列[c0,c1,c2, …,c2n-1]即為[a0,a1,a2, …,an-1]與[b0,b1,b2, …,bn-1]的卷積結(jié)果。則按照高階多項(xiàng)式計(jì)算展開(kāi)可得到:

基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算詳解

┆┆

基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算詳解

┆┆

基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算詳解

因此卷積的運(yùn)算可以轉(zhuǎn)化為行向量與列向量相乘的結(jié)果,即乘累加的運(yùn)算結(jié)構(gòu)。

Intel FPGA在Arria10DSP Block中首次支持了單精度硬浮點(diǎn)DSP block,是行業(yè)內(nèi)第一個(gè)支持單精度DSP block,硬浮點(diǎn)DSP block架構(gòu)如圖1所示:

基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算詳解

圖1 硬浮點(diǎn)DSPblock架構(gòu)

硬浮點(diǎn)DSP Block包含硬浮點(diǎn)乘法器,硬浮點(diǎn)加法器,支持乘累加運(yùn)算,因此采用硬浮點(diǎn)DSPblock實(shí)現(xiàn)行列向量相乘是非常好的方式。下面我們針對(duì)一個(gè)實(shí)際的卷積運(yùn)算,介紹如何基于INTEL硬浮點(diǎn)DSP block實(shí)現(xiàn)。假設(shè)我們需要求隨機(jī)數(shù)組a=[4,8,9,11]與b=[10,5,7,13]的卷積運(yùn)算結(jié)果,則根據(jù)上面的分析,保持?jǐn)?shù)組a順序不變,而數(shù)組b需根據(jù)上述分析結(jié)果,針對(duì)每一個(gè)卷積結(jié)果產(chǎn)生新的序列。所以整個(gè)實(shí)現(xiàn)包括數(shù)列重組模塊和硬浮點(diǎn)乘法器模塊及輸出處理。下面是實(shí)現(xiàn)框圖及仿真結(jié)果。

圖2 實(shí)現(xiàn)框圖

圖3 Modelsim仿真結(jié)果

仿真結(jié)果與Matlab實(shí)現(xiàn)結(jié)果一致,并且該設(shè)計(jì)中充分考慮了FPGA并行擴(kuò)展特性,對(duì)于低速率要求的設(shè)計(jì)可采用DSP Block復(fù)用的方式節(jié)約DSP block數(shù)量。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • dsp
    dsp
    +關(guān)注

    關(guān)注

    551

    文章

    7823

    瀏覽量

    346817
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598886
  • intel
    +關(guān)注

    關(guān)注

    19

    文章

    3474

    瀏覽量

    185356

原文標(biāo)題:基于INTEL FPGA硬浮點(diǎn)DSP實(shí)現(xiàn)卷積運(yùn)算

文章出處:【微信號(hào):ALIFPGA,微信公眾號(hào):FPGA極客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    圖像處理中的卷積運(yùn)算

    卷積運(yùn)算是圖像處理中一種極其重要的操作,廣泛應(yīng)用于圖像濾波、邊緣檢測(cè)、特征提取等多個(gè)方面。它基于一個(gè)核(或稱為卷積核、濾波器)與圖像進(jìn)行相乘并求和的過(guò)程,通過(guò)這一操作可以實(shí)現(xiàn)對(duì)圖像的平
    的頭像 發(fā)表于 07-11 15:15 ?713次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)原理

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,簡(jiǎn)稱CNN)是一種深度學(xué)習(xí)模型,廣泛應(yīng)用于圖像識(shí)別、視頻分析、自然語(yǔ)言處理等領(lǐng)域。本文將詳細(xì)介紹卷積神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)原理、結(jié)構(gòu)
    的頭像 發(fā)表于 07-03 10:49 ?388次閱讀

    FPGA設(shè)計(jì)經(jīng)驗(yàn)之圖像處理

    FPGA所能進(jìn)行的實(shí)時(shí)流水線運(yùn)算DSP,GPU等進(jìn)行的圖像處理運(yùn)算有何不同。DSP,GPU,CPU對(duì)圖像的處理基本是以幀為單位的,從相機(jī)采
    發(fā)表于 06-12 16:26

    優(yōu)秀的Verilog/FPGA開(kāi)源項(xiàng)目-浮點(diǎn)運(yùn)算器(FPU)介紹

    浮點(diǎn)運(yùn)算器(英文:floating point unit,簡(jiǎn)稱FPU)是計(jì)算機(jī)系統(tǒng)的一部分,它是專(zhuān)門(mén)用來(lái)進(jìn)行浮點(diǎn)數(shù)運(yùn)算的(CPU中也叫ALU)。
    的頭像 發(fā)表于 04-26 11:27 ?2109次閱讀
    優(yōu)秀的Verilog/<b class='flag-5'>FPGA</b>開(kāi)源項(xiàng)目-<b class='flag-5'>浮點(diǎn)</b><b class='flag-5'>運(yùn)算</b>器(FPU)介紹

    verilog實(shí)現(xiàn)卷積運(yùn)算

    在Verilog中實(shí)現(xiàn)卷積運(yùn)算,你可以使用以下示例代碼。這里假設(shè)輸入數(shù)據(jù)是有符號(hào)8位數(shù),輸出數(shù)據(jù)也是有符號(hào)8位數(shù)。卷積在數(shù)字信號(hào)處理中通常指的是兩個(gè)序列的逐元素乘積的和,也就是點(diǎn)乘。
    發(fā)表于 03-26 07:51

    verilog語(yǔ)音實(shí)現(xiàn)浮點(diǎn)運(yùn)算

    Verilog可以通過(guò)使用IEEE標(biāo)準(zhǔn)的浮點(diǎn)數(shù)表示來(lái)實(shí)現(xiàn)浮點(diǎn)運(yùn)算。下面是一個(gè)基本的Verilog模塊示例,展示了如何進(jìn)行加法、乘法和除法等常見(jiàn)的浮點(diǎn)
    發(fā)表于 03-25 21:49

    XMC7100D進(jìn)行2維浮點(diǎn)fft運(yùn)算,如何優(yōu)化?

    使用XMC72_EVK 降頻到250MHz,運(yùn)行一個(gè)2維浮點(diǎn)fft運(yùn)算,這個(gè)二維數(shù)組大小是64x128。循環(huán)運(yùn)行1000次的時(shí)間是22秒 而使用XMC72_EVK 工作在350MHz,循環(huán)運(yùn)行
    發(fā)表于 02-02 07:53

    stm32f407浮點(diǎn)運(yùn)算速度

    支持硬件浮點(diǎn)運(yùn)算單元(FPU),可以提供快速和高效的浮點(diǎn)運(yùn)算性能。本文將詳細(xì)介紹 STM32F407 的浮點(diǎn)
    的頭像 發(fā)表于 01-04 10:58 ?2942次閱讀

    浮點(diǎn)LMS算法的FPGA實(shí)現(xiàn)

    運(yùn)算運(yùn)算步驟遠(yuǎn)比定點(diǎn)運(yùn)算繁瑣,運(yùn)算速度慢且所需硬件資源大大增加,因此基于浮點(diǎn)運(yùn)算的LMS算法的
    的頭像 發(fā)表于 12-21 16:40 ?591次閱讀

    請(qǐng)問(wèn)adau1452支持浮點(diǎn)運(yùn)算嗎?

    你好, 我想在dsp里做一個(gè)音頻降噪處理的算法,剛查看了一下adau1452的性能是極好的,我想進(jìn)一步了解一下這款芯片。 請(qǐng)問(wèn)adau1452支持浮點(diǎn)運(yùn)算嗎?你們提供的例程有沒(méi)有關(guān)于降噪的?我自己寫(xiě)的算法代碼是c語(yǔ)言的就可以了吧
    發(fā)表于 11-29 07:58

    fpgadsp通訊怎樣同步時(shí)鐘頻率?dspfpga通信如何測(cè)試?

    丟失。 為了實(shí)現(xiàn)FPGADSP的同步時(shí)鐘頻率,可以采用以下兩種方式: 1. 外部時(shí)鐘源同步 通過(guò)引入外部時(shí)鐘源,讓FPGADSP的時(shí)鐘信
    的頭像 發(fā)表于 10-18 15:28 ?1629次閱讀

    大佬們,問(wèn)一下用FPGA實(shí)現(xiàn)卷積碼編解碼的難度,畢設(shè)選了這個(gè)

    求助!大佬們,問(wèn)一下用FPGA實(shí)現(xiàn)卷積碼編解碼的難度。
    發(fā)表于 10-16 23:26

    對(duì)浮點(diǎn)數(shù)的運(yùn)算怎么轉(zhuǎn)換成整數(shù)運(yùn)算

    對(duì)浮點(diǎn)數(shù)的運(yùn)算怎么轉(zhuǎn)換成整數(shù)運(yùn)算
    發(fā)表于 10-12 06:31

    FPGA浮點(diǎn)IP內(nèi)核究竟有哪些優(yōu)勢(shì)呢?

    最近出現(xiàn)的 FPGA設(shè)計(jì)工具和 IP有效減少了計(jì)算占用的資源,大大簡(jiǎn)化了浮點(diǎn)數(shù)據(jù)通路的實(shí)現(xiàn)。而且,與數(shù)字信號(hào)處理器不同
    發(fā)表于 09-25 14:42 ?563次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>浮點(diǎn)</b>IP內(nèi)核究竟有哪些優(yōu)勢(shì)呢?

    為什么研究浮點(diǎn)加法運(yùn)算,對(duì)FPGA實(shí)現(xiàn)方法很有必要?

    ,浮點(diǎn)加法器是現(xiàn)代信號(hào)處理系統(tǒng)中最重要的部件之一。FPGA是當(dāng)前數(shù)字電路研究開(kāi)發(fā)的一種重要實(shí)現(xiàn)形式,它與全定制ASIC電路相比,具有開(kāi)發(fā)周期短、成本低等優(yōu)點(diǎn)。 但多數(shù)FPGA不支持
    的頭像 發(fā)表于 09-22 10:40 ?847次閱讀
    為什么研究<b class='flag-5'>浮點(diǎn)</b>加法<b class='flag-5'>運(yùn)算</b>,對(duì)<b class='flag-5'>FPGA</b><b class='flag-5'>實(shí)現(xiàn)</b>方法很有必要?