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

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

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

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

DIri_ALIFPGA ? 來源:網(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)算,而針對定點(diǎn)及低精度的浮點(diǎn)運(yùn)算,則需要對硬浮點(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è)例子說明其工作原理。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ì)算展開可得到:

基于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)行列向量相乘是非常好的方式。下面我們針對一個(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é)果,針對每一個(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ò)展特性,對于低速率要求的設(shè)計(jì)可采用DSP Block復(fù)用的方式節(jié)約DSP block數(shù)量。

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

    關(guān)注

    552

    文章

    7919

    瀏覽量

    347633
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21539

    瀏覽量

    600518
  • intel
    +關(guān)注

    關(guān)注

    19

    文章

    3476

    瀏覽量

    185572

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    FPGA實(shí)現(xiàn)LeNet-5卷積神經(jīng)網(wǎng)絡(luò)

    LeNet-5 是一個(gè)經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)(CNN),由 Yann LeCun 在 1990 年代設(shè)計(jì),主要用于手寫數(shù)字識別任務(wù)(如 MNIST 數(shù)據(jù)集)。隨著現(xiàn)場可編程門陣列(FPGA)技術(shù)的發(fā)展
    的頭像 發(fā)表于 07-11 10:27 ?1847次閱讀

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

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

    卷積神經(jīng)網(wǎng)絡(luò)的基本原理、結(jié)構(gòu)及訓(xùn)練過程

    、訓(xùn)練過程以及應(yīng)用場景。 一、卷積神經(jīng)網(wǎng)絡(luò)的基本原理 卷積運(yùn)算 卷積運(yùn)算卷積神經(jīng)網(wǎng)絡(luò)的核心,它
    的頭像 發(fā)表于 07-02 14:21 ?1516次閱讀

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

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

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

    浮點(diǎn)運(yùn)算器(英文:floating point unit,簡稱FPU)是計(jì)算機(jī)系統(tǒng)的一部分,它是專門用來進(jìn)行浮點(diǎn)數(shù)運(yùn)算的(CPU中也叫ALU)。
    的頭像 發(fā)表于 04-26 11:27 ?2573次閱讀
    優(yōu)秀的Verilog/<b class='flag-5'>FPGA</b>開源項(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ù)是有符號8位數(shù),輸出數(shù)據(jù)也是有符號8位數(shù)。卷積在數(shù)字信號處理中通常指的是兩個(gè)序列的逐元素乘積的和,也就是點(diǎn)乘。
    發(fā)表于 03-26 07:51

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

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

    Intel fpga芯片系列有哪些

    Intel FPGA芯片系列主要包括以下幾種。
    的頭像 發(fā)表于 03-14 16:28 ?872次閱讀

    STSPIN32F0支持硬件浮點(diǎn)運(yùn)算嗎?

    STSPIN32F0 支不支持硬件浮點(diǎn)運(yùn)算
    發(fā)表于 03-13 06:32

    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

    如何利用xilinx器件中LUT的結(jié)構(gòu)特征設(shè)計(jì)乘法器呢?

    卷積占據(jù)了CNN網(wǎng)絡(luò)中絕大部分運(yùn)算,進(jìn)行乘法運(yùn)算通常都是使用FPGA中的DSP,這樣算力就受到了器件中D
    的頭像 發(fā)表于 01-19 09:14 ?1162次閱讀
    如何利用xilinx器件中LUT的結(jié)構(gòu)特征設(shè)計(jì)乘法器呢?

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

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

    浮點(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 ?663次閱讀

    請問adau1452支持浮點(diǎn)運(yùn)算嗎?

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