概述
卷積是一種線性運(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ù),作積分:
隨著x的不同取值,該積分定義了一個(gè)新的函數(shù)h(x),稱為函數(shù)f(x)與g(x)的卷積,記為h(x)=f(x)*g(x)。
如果卷積的變量是序列x(n)和h(n),則卷積的結(jié)果為
其中*表示卷積。因此兩個(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)式的升冪或降冪排列,即為:
因此得到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)式,如下所示:
則[a0,a1,a2, …,an-1]與[b0,b1,b2, …,bn-1]的卷積結(jié)果即為由a*b得到的多項(xiàng)式的各項(xiàng)系數(shù)所組成的序列。令c=a*b,得到
則由多項(xiàng)式c的各階系數(shù)所組成的新的序列[c0,c1,c2, …,c2n-1]即為[a0,a1,a2, …,an-1]與[b0,b1,b2, …,bn-1]的卷積結(jié)果。則按照高階多項(xiàng)式計(jì)算展開可得到:
┆┆
┆┆
因此卷積的運(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所示:
圖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ù)量。
-
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)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論