基于dsp芯片的fft加速器的制造方法
【專利摘要】本發(fā)明公開一種基于DSP芯片的FFT加速器,包括:模式配置模塊,接收數(shù)據(jù)地址、運(yùn)算規(guī)模及運(yùn)算次數(shù)的配置數(shù)據(jù);FFT運(yùn)算控制模塊,當(dāng)運(yùn)算規(guī)模小于能夠直接支持的最大運(yùn)算規(guī)模時(shí)控制FFT計(jì)算模塊執(zhí)行一維FFT運(yùn)算,當(dāng)大于能夠直接支持的最大運(yùn)算規(guī)模時(shí),控制FFT計(jì)算模塊執(zhí)行二維FFT運(yùn)算;數(shù)據(jù)訪問控制模塊,控制以DMA方式從存儲(chǔ)器中讀取運(yùn)算數(shù)據(jù)并將運(yùn)算結(jié)果寫回存儲(chǔ)器;FFT計(jì)算模塊,根據(jù)FFT運(yùn)算控制模塊輸出的控制信號(hào)并行執(zhí)行FFT運(yùn)算。本發(fā)明具有支持運(yùn)算規(guī)模、運(yùn)算次數(shù)和數(shù)據(jù)格式的多種配置方式、能夠?qū)崿F(xiàn)從小規(guī)模到大規(guī)模范圍內(nèi)的FFT運(yùn)算、執(zhí)行效果高、硬件資源利用率高的優(yōu)點(diǎn)。
【專利說明】基于DSP芯片的FFT加速器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理中的FFT計(jì)算【技術(shù)領(lǐng)域】,尤其涉及一種基于DSP芯片的FFT加速器。
【背景技術(shù)】
[0002]DFT (Discrete Fourier Transformation,離散傅里葉變換)是數(shù)字信號(hào)處理領(lǐng)域不可缺少的工具之一,它將一種信號(hào)從時(shí)域變換到頻域,廣泛應(yīng)用于聲學(xué)、圖像、雷達(dá)、電信和無線信號(hào)處理等領(lǐng)域。FFT (Fast Fourier Transformation,快速傅立葉變換)是DFT的一種快速實(shí)現(xiàn)方法,F(xiàn)FT的出現(xiàn)使得DFT在實(shí)際應(yīng)用中得到了更為廣泛的應(yīng)用。FFT算法是
利用復(fù)指數(shù)常數(shù)Wn的特性將信號(hào)序列x(n)或X(k)的排列次序進(jìn)行重排并分解成
短序列運(yùn)算,將DFT運(yùn)算復(fù)雜度由0(n2)降低到O(nlogn)。
[0003]在實(shí)時(shí)信號(hào)處理領(lǐng)域,需要支持實(shí)數(shù)FFT、復(fù)數(shù)FFT、實(shí)數(shù)IFFT (Inverse FFT)和復(fù)數(shù)IFFT的運(yùn)算,數(shù)據(jù)格式可能是IEEE-754標(biāo)準(zhǔn)的浮點(diǎn)格式或定點(diǎn)格式,對(duì)于不同的應(yīng)用FFT的運(yùn)算規(guī)模變化也非常大,可能為數(shù)十點(diǎn)或數(shù)十萬(wàn)點(diǎn)。
[0004]現(xiàn)有技術(shù) 中,部分DSP芯片中雖然提供了 FFT加速方案,但支持的最大運(yùn)算規(guī)模僅為1K,限制FFT加速器的應(yīng)用范圍,且通常僅能支持32位定點(diǎn)計(jì)算,對(duì)于更常用IEEE-754標(biāo)準(zhǔn)浮點(diǎn)格式不提供支持。例如TI C55X系列DSP芯片,其包含一個(gè)緊耦合FFT加速器(稱為HWA),通過使用加速器指令可以實(shí)現(xiàn)FFT加速器與C55X DSP通訊,該FFT加速器僅支持32位定點(diǎn)格式的8點(diǎn)到1024點(diǎn)實(shí)數(shù)和復(fù)數(shù)FFT計(jì)算。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問題就在于:針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種結(jié)構(gòu)簡(jiǎn)單、成本低廉、支持可變的運(yùn)算規(guī)模且能夠支持大規(guī)模的FFT運(yùn)算、應(yīng)用范圍廣、執(zhí)行效率高的基于DSP芯片的FFT加速器。
[0006]為解決上述技術(shù)問題,本發(fā)明提出的技術(shù)方案為:
[0007]一種基于DSP芯片的FFT加速器,包括:
[0008]模式配置模塊,用于從DSP內(nèi)核接收數(shù)據(jù)地址、運(yùn)算規(guī)模N = 2k及運(yùn)算次數(shù)M的配置數(shù)據(jù),輸出至FFT運(yùn)算控制模塊及數(shù)據(jù)訪問控制模塊;
[0009]FFT運(yùn)算控制模塊,用于判斷運(yùn)算規(guī)模N是否大于閾值N1,若為否,控制FFT計(jì)算模塊進(jìn)行N點(diǎn)一維FFT運(yùn)算;若為是,控制FFT計(jì)算模塊進(jìn)行NfN2的二維FFT運(yùn)算,其中N=N1^N2, N1為FFT計(jì)算模塊能夠直接支持的最大FFT運(yùn)算規(guī)模且N1大于或等于N2,輸出控制信號(hào)至FFT計(jì)算模塊;
[0010]數(shù)據(jù)訪問控制模塊,用于FFT計(jì)算模塊執(zhí)行運(yùn)算時(shí),根據(jù)數(shù)據(jù)地址控制以DMA方式從存儲(chǔ)器中讀取出運(yùn)算數(shù)據(jù)至FFT計(jì)算模塊,并將FFT計(jì)算模塊輸出的運(yùn)算結(jié)果存儲(chǔ)回存儲(chǔ)器中;[0011]FFT計(jì)算模塊,用于根據(jù)FFT運(yùn)算控制模塊輸出的控制信號(hào)并行執(zhí)行FFT運(yùn)算;進(jìn)行一維FFT運(yùn)算時(shí),并行執(zhí)行N點(diǎn)的一維FFT運(yùn)算;進(jìn)行二維FFT運(yùn)算時(shí),并行執(zhí)行N2次N1點(diǎn)的列方向一維FFT計(jì)算,對(duì)計(jì)算結(jié)果進(jìn)行旋轉(zhuǎn)因子補(bǔ)償,再并行執(zhí)行N1次N2點(diǎn)的行方向一維FFT計(jì)算,完成N點(diǎn)的FFT運(yùn)算。
[0012]作為本發(fā)明的進(jìn)一步改進(jìn):還包括分別與數(shù)據(jù)訪問控制模塊、FFT計(jì)算模塊的輸出端連接的數(shù)據(jù)格式轉(zhuǎn)換模塊,所述數(shù)據(jù)格式轉(zhuǎn)換模塊用于當(dāng)數(shù)據(jù)訪問控制模塊讀取的運(yùn)算數(shù)據(jù)為定點(diǎn)格式時(shí)將運(yùn)算數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)格式,輸出至FFT計(jì)算模塊,并將FFT計(jì)算模塊輸出的運(yùn)算結(jié)果轉(zhuǎn)換為對(duì)應(yīng)的定點(diǎn)格式后輸出回?cái)?shù)據(jù)訪問控制模塊。
[0013]作為本發(fā)明的進(jìn)一步改進(jìn):所述FFT計(jì)算模塊包括兩個(gè)并行的FFT執(zhí)行子模塊以及分別與兩個(gè)FFT執(zhí)行子模塊連接的CORDIC補(bǔ)償旋轉(zhuǎn)因子計(jì)算子模塊;兩個(gè)所述FFT執(zhí)行子模塊并行執(zhí)行兩組數(shù)據(jù)的FFT計(jì)算,其中一組數(shù)據(jù)為規(guī)模小于或等于N1點(diǎn)的數(shù)據(jù),所述CORDIC補(bǔ)償旋轉(zhuǎn)因子計(jì)算子模塊根據(jù)數(shù)據(jù)地址及運(yùn)算規(guī)模N采用CORDIC算法計(jì)算補(bǔ)償旋轉(zhuǎn)因子,分別輸出至兩個(gè)所述FFT執(zhí)行子模塊。
[0014]作為本發(fā)明的進(jìn)一步改進(jìn):每個(gè)所述FFT執(zhí)行子模塊包括FFT計(jì)算控制單元、數(shù)據(jù)存儲(chǔ)單元、并行蝶形運(yùn)算單元以及旋轉(zhuǎn)因子存儲(chǔ)單元;所述FFT計(jì)算控制單元接收FFT運(yùn)算控制模塊輸出的控制信號(hào),控制并行蝶形運(yùn)算單元和CORDIC補(bǔ)償旋轉(zhuǎn)因子計(jì)算子模塊的啟動(dòng);所述數(shù)據(jù)存儲(chǔ)單元存儲(chǔ)并行蝶形運(yùn)算單元待輸入的運(yùn)算數(shù)據(jù)以及待輸出的運(yùn)算結(jié)果;所述并行蝶形運(yùn)算單元并行執(zhí)行一組數(shù)據(jù)的蝶形運(yùn)算或補(bǔ)償旋轉(zhuǎn)因子計(jì)算,所述旋轉(zhuǎn)因子存儲(chǔ)單元存儲(chǔ)蝶形運(yùn)算時(shí)的旋轉(zhuǎn)因子。
[0015]作為本發(fā)明的進(jìn)一步改進(jìn):所述并行蝶形運(yùn)算單元包括兩個(gè)并行的蝶形運(yùn)算部件。
[0016]作為本發(fā)明的進(jìn)一步改進(jìn):每個(gè)所述蝶形運(yùn)算部件包括多個(gè)IEEE-754標(biāo)準(zhǔn)的單精度浮點(diǎn)乘法器、多個(gè)單精度浮點(diǎn)加/減法器。
[0017]作為本發(fā)明的進(jìn)一步改進(jìn):所述單精度浮點(diǎn)乘法器為4個(gè),所述單精度浮點(diǎn)加/減法器為6個(gè)。
[0018]作為本發(fā)明的進(jìn)一步改進(jìn):所述數(shù)據(jù)存儲(chǔ)單元包括兩組數(shù)據(jù)存儲(chǔ)器,對(duì)待輸入的運(yùn)算數(shù)據(jù)以及待輸出的運(yùn)算結(jié)果進(jìn)行乒乓結(jié)構(gòu)的緩存;每組所述數(shù)據(jù)存儲(chǔ)器包括4個(gè)雙端口 的 RAM。
[0019]作為本發(fā)明的進(jìn)一步改進(jìn):所述旋轉(zhuǎn)因子存儲(chǔ)單元采用兩個(gè)查找表,每個(gè)所述查找表具有N1個(gè)選項(xiàng);每個(gè)所述查找表對(duì)應(yīng)連接一個(gè)所述蝶形運(yùn)算部件。
[0020]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
[0021](I)本發(fā)明根據(jù)運(yùn)算規(guī)模及運(yùn)算次數(shù)的配置數(shù)據(jù)控制執(zhí)行FFT運(yùn)算,對(duì)于大規(guī)模的FFT,將N點(diǎn)一維FFT運(yùn)算轉(zhuǎn)換為二維FFT運(yùn)算,能夠?qū)崿F(xiàn)小規(guī)模到大規(guī)模范圍內(nèi)的FFT運(yùn)算,應(yīng)用范圍廣泛、靈活性強(qiáng);執(zhí)行FFT運(yùn)算時(shí)采用IEEE-754標(biāo)準(zhǔn)的浮點(diǎn)運(yùn)算并通過CORDIC算法計(jì)算補(bǔ)償旋轉(zhuǎn)因子,能夠支持更為常用的浮點(diǎn)格式FFT運(yùn)算,通過數(shù)據(jù)格式的轉(zhuǎn)換還能夠支持32位定點(diǎn)數(shù)據(jù)格式,運(yùn)算規(guī)模、運(yùn)算次數(shù)及數(shù)據(jù)格式支持多種配置模式。
[0022](2)本發(fā)明執(zhí)行FFT計(jì)算時(shí)采用兩個(gè)FFT執(zhí)行子模塊并行執(zhí)行兩組數(shù)據(jù)的FFT計(jì)算,每個(gè)FFT執(zhí)行子模塊采用兩個(gè)蝶形運(yùn)算部件并行執(zhí)行,能夠有效的加速實(shí)現(xiàn)FFT運(yùn)算、提高加速器的執(zhí)行性能;同時(shí)由兩個(gè)FFT執(zhí)行子模塊共享一個(gè)CORDIC補(bǔ)償旋轉(zhuǎn)因子計(jì)算子模塊,每個(gè)FFT執(zhí)行子模塊中蝶形運(yùn)算與旋轉(zhuǎn)因子補(bǔ)償計(jì)算復(fù)用同一硬件結(jié)構(gòu),使硬件執(zhí)行效率最大化同時(shí)節(jié)省硬件資源。
[0023](3)本發(fā)明在FFT計(jì)算時(shí)采用兩組乒乓多體結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)器存儲(chǔ)讀入或?qū)懗龅臄?shù)據(jù),兩組數(shù)據(jù)的FFT計(jì)算的交替執(zhí)行,同時(shí)每組數(shù)據(jù)存儲(chǔ)器由4個(gè)RAM組成,保證數(shù)據(jù)存儲(chǔ)器的初始化與FFT計(jì)算同時(shí)進(jìn)行,通過FFT的計(jì)算開銷隱藏從存儲(chǔ)器訪問數(shù)據(jù)的開銷,從而提高FFT的計(jì)算性能。
【專利附圖】
【附圖說明】
[0024]圖1是本實(shí)施例基于DSP芯片的FFT加速器結(jié)構(gòu)示意圖。
[0025]圖2是本實(shí)施例中基于DSP芯片的FFT加速器的外部接口結(jié)構(gòu)示意圖。
[0026]圖3是本實(shí)施例中CORDIC補(bǔ)償旋轉(zhuǎn)因子計(jì)算子模塊結(jié)構(gòu)示意圖。
[0027]圖4是本實(shí)施例中角度計(jì)算單元結(jié)構(gòu)示意圖。
[0028]圖5是本實(shí)施例中迭代單元ROT結(jié)構(gòu)示意圖。
[0029]圖6是本實(shí)施例中第一 FFT執(zhí)行子模塊(FFT_PE[1])結(jié)構(gòu)示意圖。
[0030]圖7是本實(shí)施例中并行蝶形運(yùn)算單元結(jié)構(gòu)示意圖。
[0031]圖8是本實(shí)施例中蝶形運(yùn)算部件結(jié)構(gòu)示意圖。
[0032]圖9是本實(shí)施例中數(shù)據(jù)存儲(chǔ)單元結(jié)構(gòu)示意圖。
[0033]圖10是本實(shí)施例中旋轉(zhuǎn)因子存儲(chǔ)單元結(jié)構(gòu)示意圖。
[0034]圖11是本實(shí)施例中兩個(gè)FFT執(zhí)行子模塊FFT-PE計(jì)算時(shí)的時(shí)序原理示意圖。
[0035]圖例說明
[0036]1、模式配置模塊;2、FFT運(yùn)算控制模塊;3、數(shù)據(jù)訪問控制模塊;4、FFT計(jì)算模塊;41、第一 FFT 執(zhí)行子模塊(FFT-PE[1]) ;42、第二 FFT 執(zhí)行子模塊(FFT_PE[2]) ;43、CORDIC補(bǔ)償旋轉(zhuǎn)因子計(jì)算子模塊;411、FFT計(jì)算控制單元;412、數(shù)據(jù)存儲(chǔ)單元;413、并行蝶形運(yùn)算單元;414、旋轉(zhuǎn)因子存儲(chǔ)單元;5、數(shù)據(jù)格式轉(zhuǎn)換模塊。
【具體實(shí)施方式】
[0037]以下結(jié)合說明書附圖和具體優(yōu)選的實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述,但并不因此而限制本發(fā)明的保護(hù)范圍。
[0038]如圖1所示,本實(shí)施例基于DSP芯片的FFT加速器結(jié)構(gòu),包括:
[0039]模式配置模塊1,用于從DSP內(nèi)核接收數(shù)據(jù)地址、運(yùn)算規(guī)模N = 2k及運(yùn)算次數(shù)M的配置數(shù)據(jù),輸出至FFT運(yùn)算控制模塊2及數(shù)據(jù)訪問控制模塊3 ;
[0040]FFT運(yùn)算控制模塊2,用于判斷運(yùn)算規(guī)模N是否大于閾值N1,若為否,控制FFT計(jì)算模塊4進(jìn)行N點(diǎn)一維FFT運(yùn)算;若為是,將初始運(yùn)算數(shù)據(jù)轉(zhuǎn)換為NfN2的二維矩陣并控制FFT計(jì)算模塊4進(jìn)行二維FFT運(yùn)算,其中N = N1^N2, N1為為FFT計(jì)算模塊4能夠直接支持的最大FFT運(yùn)算規(guī)模且N1大于或等于N2,輸出控制信號(hào)至FFT計(jì)算模塊4 ;
[0041]數(shù)據(jù)訪問控制模塊3,用于FFT計(jì)算模塊4執(zhí)行運(yùn)算時(shí),根據(jù)數(shù)據(jù)地址控制以DMA方式從存儲(chǔ)器中讀取出運(yùn)算數(shù)據(jù)至FFT計(jì)算模塊4,并將FFT計(jì)算模塊4輸出的運(yùn)算結(jié)果存儲(chǔ)回存儲(chǔ)器中;
[0042]FFT計(jì)算模塊4,用于根據(jù)FFT運(yùn)算控制模塊2輸出的控制信號(hào)并行執(zhí)行FFT運(yùn)算;進(jìn)行一維FFT運(yùn)算時(shí),并行執(zhí)行N點(diǎn)的一維FFT運(yùn)算;進(jìn)行二維FFT運(yùn)算時(shí),并行執(zhí)行N2次N1點(diǎn)的列方向一維FFT計(jì)算,對(duì)計(jì)算結(jié)果進(jìn)行旋轉(zhuǎn)因子補(bǔ)償,再并行執(zhí)行N1次N2點(diǎn)的行方向一維FFT計(jì)算,完成N點(diǎn)的FFT運(yùn)算。
[0043]本實(shí)施中,閾值N1由DSP芯片中實(shí)際采用的FFT計(jì)算模塊4能夠直接支持的最大FFT運(yùn)算規(guī)模決定,如采用現(xiàn)有技術(shù)中的FFT加速器。運(yùn)算規(guī)模N小于閾值N1時(shí),F(xiàn)FT加速器可直接支持,通過執(zhí)行N點(diǎn)的一維FFT運(yùn)算完成;對(duì)于大于閾值N1的大規(guī)模FFT運(yùn)算,則將N點(diǎn)FFT運(yùn)算轉(zhuǎn)換為二維FFT運(yùn)算,F(xiàn)FT運(yùn)算采用浮點(diǎn)格式。采用以上方法,本實(shí)施例基于DSP芯片的FFT加速器能夠支持的最大規(guī)模為NfN1的FFT運(yùn)算。
[0044]本實(shí)施例中,還包括分別與數(shù)據(jù)訪問控制模塊3、FFT計(jì)算模塊4的輸出端連接的數(shù)據(jù)格式轉(zhuǎn)換模塊5。對(duì)于定點(diǎn)輸入數(shù)據(jù),數(shù)據(jù)格式轉(zhuǎn)換模塊5將數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)格式并將FFT計(jì)算結(jié)果轉(zhuǎn)換為相應(yīng)的定點(diǎn)格式。輸入的數(shù)據(jù)為定點(diǎn)格式時(shí),在數(shù)據(jù)輸入階段,數(shù)據(jù)訪問控制模塊3從存儲(chǔ)器中讀取定點(diǎn)格式的初始數(shù)據(jù),由數(shù)據(jù)格式轉(zhuǎn)換模塊5將數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)格式輸出至FFT計(jì)算模塊4 ;在數(shù)據(jù)寫回階段時(shí),將FFT計(jì)算模塊4輸出的運(yùn)算結(jié)果轉(zhuǎn)換為對(duì)應(yīng)的定點(diǎn)格式后輸出回?cái)?shù)據(jù)訪問控制模塊3。工作時(shí),由FFT運(yùn)算控制模塊2輸出數(shù)據(jù)格式及計(jì)算階段至數(shù)據(jù)訪問控制模塊3,數(shù)據(jù)格式轉(zhuǎn)換模塊5根據(jù)數(shù)據(jù)格式及計(jì)算階段執(zhí)行數(shù)據(jù)格式的轉(zhuǎn)換。采用浮點(diǎn)格式計(jì)算FFT運(yùn)算,能夠?qū)崿F(xiàn)對(duì)實(shí)際應(yīng)用中更為常用的IEEE-754標(biāo)準(zhǔn)浮點(diǎn)格式數(shù)據(jù)的FFT計(jì)算,同時(shí)通過數(shù)據(jù)格式的轉(zhuǎn)換也能夠支持定點(diǎn)格式數(shù)據(jù)的計(jì)算,對(duì)輸入數(shù)據(jù)的格式要求靈活。
[0045]本實(shí)施例中,模式配置模塊I通過命令總線從DSP內(nèi)核接收配置數(shù)據(jù),其中配置數(shù)據(jù)包括初始數(shù)據(jù)起始地址、中間數(shù)據(jù)地址及結(jié)果數(shù)據(jù)地址、運(yùn)算規(guī)模N、FFT運(yùn)算個(gè)數(shù)M、浮點(diǎn)和定點(diǎn)選擇信號(hào)以及定點(diǎn)格式信號(hào)。FFT運(yùn)算控制模塊2根據(jù)配置數(shù)據(jù),控制FFT計(jì)算模塊4執(zhí)行不同運(yùn)算規(guī)模、不同F(xiàn)FT運(yùn)算個(gè)數(shù)以及浮點(diǎn)或定點(diǎn)格式的FFT運(yùn)算,能夠支持可變的運(yùn)算規(guī)模及FFT運(yùn)算個(gè)數(shù),輸入數(shù)據(jù)可以為IEEE-754標(biāo)準(zhǔn)的單精度浮點(diǎn)格式或32位定點(diǎn)數(shù)據(jù)格式,能夠支持多種配置模式,滿足不同嵌入式應(yīng)用領(lǐng)域的要求,應(yīng)用范圍廣泛且靈活性強(qiáng)。在其它實(shí)施例中配置數(shù)據(jù)還可包括FFT與IFFT選擇信號(hào)、實(shí)數(shù)與復(fù)數(shù)選擇信號(hào)、浮點(diǎn)和定點(diǎn)選擇信號(hào)以及定點(diǎn)格式信號(hào),F(xiàn)FT運(yùn)算控制模塊2根據(jù)配置數(shù)據(jù)控制FFT計(jì)算模塊4執(zhí)行FFT或IFFT運(yùn)算、實(shí)數(shù)或復(fù)數(shù)類型的FFT/IFFT運(yùn)算,實(shí)現(xiàn)多種運(yùn)算模式。
[0046]對(duì)于N點(diǎn)FFT且NSN1,總共需要執(zhí)行| log)次蝶形運(yùn)算,包括lc)gf級(jí)、每級(jí)|次蝶
形運(yùn)算。小規(guī)模FFT計(jì)算中,即運(yùn)算規(guī)模N小于N1時(shí),同一級(jí)的*次蝶形運(yùn)算可以并行執(zhí)行。
[0047]本實(shí)施例中,由FFT運(yùn)算控制模塊2控制FFT計(jì)算模塊4運(yùn)行完成N點(diǎn)FFT運(yùn)算。FFT運(yùn)算控制模塊2通過命令總線從DSP內(nèi)核接收命令,命令包括啟動(dòng)FFT執(zhí)行命令、暫停FFT執(zhí)行命令、恢復(fù)FFT執(zhí)行命令以及作廢FFT執(zhí)行命令,控制FFT計(jì)算模塊4執(zhí)行相應(yīng)的命令。啟動(dòng)FFT執(zhí)行命令為啟動(dòng)進(jìn)行FFT計(jì)算,暫停FFT執(zhí)行命令為暫停數(shù)據(jù)訪問總線,恢復(fù)FFT執(zhí)行命令為恢復(fù)本次FFT計(jì)算,作廢FFT執(zhí)行命令為作廢本次FFT運(yùn)算。當(dāng)FFT計(jì)算模塊4完成所有FFT計(jì)算后,F(xiàn)FT運(yùn)算控制模塊2立即向DSP內(nèi)核發(fā)送FFT完成中斷信號(hào),同時(shí)置完成寄存器的值為I。[0048]FFT運(yùn)算控制模塊2控制FFT計(jì)算模塊4啟動(dòng)FFT執(zhí)行命令時(shí),發(fā)送啟動(dòng)命令并根據(jù)配置數(shù)據(jù)控制FFT計(jì)算模塊4執(zhí)行,輸出相應(yīng)的控制信號(hào)及運(yùn)算規(guī)模N至FFT計(jì)算模塊4并向數(shù)據(jù)訪問控制模塊3發(fā)送數(shù)據(jù)訪問請(qǐng)求。數(shù)據(jù)訪問控制模塊3響應(yīng)FFT運(yùn)算控制模塊2的數(shù)據(jù)訪問請(qǐng)求,根據(jù)數(shù)據(jù)地址控制讀取運(yùn)算數(shù)據(jù)至FFT計(jì)算模塊4進(jìn)行運(yùn)算。對(duì)于大于N1點(diǎn)的FFT運(yùn)算,F(xiàn)FT運(yùn)算控制模塊2將N點(diǎn)初始運(yùn)算數(shù)據(jù)視為N2-N1的二維矩陣,控制FFT計(jì)算模塊4執(zhí)行二維FFT運(yùn)算,F(xiàn)FT計(jì)算模塊4進(jìn)行二維FFT運(yùn)算時(shí),首先并行執(zhí)行N2次N1點(diǎn)的列方向一維FFT計(jì)算,進(jìn)行旋轉(zhuǎn)因子補(bǔ)償后完成列方向的FFT運(yùn)算,再對(duì)列方向的FFT運(yùn)算結(jié)果并行執(zhí)行N1次N2點(diǎn)的行方向一維FFT計(jì)算,完成N點(diǎn)的FFT運(yùn)算;對(duì)于運(yùn)算規(guī)模N小于N1的FFT運(yùn)算,直接并行執(zhí)行N點(diǎn)的一維FFT。
[0049]FFT運(yùn)算過程中,需要將初始運(yùn)算數(shù)據(jù)、中間數(shù)據(jù)及運(yùn)算結(jié)果存儲(chǔ)在片外或片上存儲(chǔ)器中。對(duì)于片外的DDR存儲(chǔ)器,能夠提供較大的存儲(chǔ)空間(G量級(jí))來存儲(chǔ)初始數(shù)據(jù)和運(yùn)算結(jié)果,然而DDR存儲(chǔ)器組織結(jié)構(gòu)特點(diǎn)決定了需要以突發(fā)方式連續(xù)訪問數(shù)據(jù);對(duì)于片上SRAM存儲(chǔ)器,能夠以隨機(jī)訪問方式快速得到SRAM中任何地址中的數(shù)據(jù),其數(shù)據(jù)組織較為靈活,然而占用了 DSP芯片資源且存儲(chǔ)容量有限(M量級(jí)),進(jìn)行大規(guī)模FFT計(jì)算時(shí)原始數(shù)據(jù)和計(jì)算結(jié)果不能都存儲(chǔ)在片上SRAM存儲(chǔ)器中。
[0050]如圖2所示,本實(shí)施例中基于DSP芯片的FFT加速器的外部接口結(jié)構(gòu),由數(shù)據(jù)訪問控制模塊3實(shí)現(xiàn)與DSP芯片內(nèi)或芯片外存儲(chǔ)器的數(shù)據(jù)交互,模式配置模塊I接收DSP內(nèi)核的配置數(shù)據(jù)、FFT運(yùn)算控制模塊2接收DSP內(nèi)核的命令并將FFT完成中斷信號(hào)發(fā)送至DSP內(nèi)核。FFT計(jì)算模塊4每次執(zhí)行計(jì)算時(shí),由FFT運(yùn)算控制模塊2向數(shù)據(jù)訪問控制模塊3發(fā)送數(shù)據(jù)訪問請(qǐng)求,控制進(jìn)行運(yùn)算數(shù)據(jù)的讀寫。數(shù)據(jù)訪問控制模塊3將FFT運(yùn)算控制模塊2的讀、寫數(shù)據(jù)請(qǐng)求轉(zhuǎn)換為DDR總線協(xié)議的訪問或者SRAM總線協(xié)議的訪問,其中對(duì)于讀數(shù)據(jù)請(qǐng)求,數(shù)據(jù)訪問控制模塊3根據(jù)數(shù)據(jù)地址從片外DDR存儲(chǔ)器或者片上SRAM存儲(chǔ)器中以突發(fā)方式讀出數(shù)據(jù),并將數(shù)據(jù)寫到FFT計(jì)算模塊4的數(shù)據(jù)存儲(chǔ)器中;對(duì)于寫數(shù)據(jù)請(qǐng)求,從FFT計(jì)算模塊4的數(shù)據(jù)存儲(chǔ)器中讀出數(shù)據(jù),并寫回到片外DDR存儲(chǔ)器或者片上SRAM中。
[0051]本實(shí)施例中,結(jié)合片外DDR存儲(chǔ)器和片上SRAM存儲(chǔ)器對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),利用片外DDR存儲(chǔ)器存儲(chǔ)數(shù)據(jù)量大的初始運(yùn)算數(shù)據(jù)和計(jì)算結(jié)果,利用片上SRAM存儲(chǔ)器隨機(jī)訪問的特性存儲(chǔ)FFT計(jì)算時(shí)的中間數(shù)據(jù),同時(shí)使用片上SRAM存儲(chǔ)器完成二維FFT計(jì)算時(shí)的二維數(shù)據(jù)轉(zhuǎn)置,避免對(duì)片外DDR存儲(chǔ)器中數(shù)據(jù)進(jìn)行按列訪問。采用DMA的方式實(shí)現(xiàn)DSP芯片內(nèi)外數(shù)據(jù)的交互,能夠最大化發(fā)揮各個(gè)數(shù)據(jù)通路的帶寬,結(jié)合DDR存儲(chǔ)器和SRAM存儲(chǔ)器的優(yōu)點(diǎn)共同實(shí)現(xiàn)對(duì)大點(diǎn)數(shù)FFT運(yùn)算數(shù)據(jù)的存儲(chǔ),存儲(chǔ)帶寬利用率高、有效發(fā)揮DSP芯片的流水線計(jì)算效率。
[0052]一級(jí)蝶形運(yùn)算表達(dá)式可以表示為:
[0053]
【權(quán)利要求】
1.一種基于DSP芯片的FFT加速器,其特征在于,包括: 模式配置模塊(I),用于從DSP內(nèi)核接收數(shù)據(jù)地址、運(yùn)算規(guī)模N = 2k及運(yùn)算次數(shù)M的配置數(shù)據(jù),輸出至FFT運(yùn)算控制模塊⑵及數(shù)據(jù)訪問控制模塊(3); FFT運(yùn)算控制模塊⑵,用于判斷運(yùn)算規(guī)模N是否大于閾值N1,若為否,控制FFT計(jì)算模塊⑷進(jìn)行N點(diǎn)一維FFT運(yùn)算;若為是,控制FFT計(jì)算模塊⑷進(jìn)行N1^N2的二維FFT運(yùn)算,其中N = N1*N2, N1為FFT計(jì)算模塊(4)能夠直接支持的最大FFT運(yùn)算規(guī)模且N1大于或等于N2,輸出控制信號(hào)至FFT計(jì)算模塊(4); 數(shù)據(jù)訪問控制模塊(3),用于FFT計(jì)算模塊(4)執(zhí)行運(yùn)算時(shí),根據(jù)數(shù)據(jù)地址控制以DMA方式從存儲(chǔ)器中讀取出運(yùn)算數(shù)據(jù)至FFT計(jì)算模塊(4),并將FFT計(jì)算模塊(4)輸出的運(yùn)算結(jié)果存儲(chǔ)回存儲(chǔ)器中; FFT計(jì)算模塊(4),用于根據(jù)FFT運(yùn)算控制模塊(2)輸出的控制信號(hào)并行執(zhí)行FFT運(yùn)算;進(jìn)行一維FFT運(yùn)算時(shí),并行執(zhí)行N點(diǎn)的一維FFT運(yùn)算;進(jìn)行二維FFT運(yùn)算時(shí),并行執(zhí)行N2次N1點(diǎn)的列方向一維FFT計(jì)算,對(duì)計(jì)算結(jié)果進(jìn)行旋轉(zhuǎn)因子補(bǔ)償,再并行執(zhí)行N1次N2點(diǎn)的行方向一維FFT計(jì)算,完成N點(diǎn)的FFT運(yùn)算。
2.根據(jù)權(quán)利要求1所述的基于DSP芯片的FFT加速器,其特征在于:還包括分別與數(shù)據(jù)訪問控制模塊(3)、FFT計(jì)算模塊(4)的輸出端連接的數(shù)據(jù)格式轉(zhuǎn)換模塊(5),所述數(shù)據(jù)格式轉(zhuǎn)換模塊(5)用于當(dāng)數(shù)據(jù)訪問控制模塊(3)讀取的運(yùn)算數(shù)據(jù)為定點(diǎn)格式時(shí)將運(yùn)算數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)格式,輸出至FFT計(jì)算模塊(4),并將FFT計(jì)算模塊(4)輸出的運(yùn)算結(jié)果轉(zhuǎn)換為對(duì)應(yīng)的定點(diǎn)格式后輸出回?cái)?shù)據(jù)訪問控制模塊(3)。
3.根據(jù)權(quán)利I或2所述的基于DSP芯片的FFT加速器,其特征在于:所述FFT計(jì)算模塊(4)包括兩個(gè)并行的FFT執(zhí)行子模塊以及分別與兩個(gè)FFT執(zhí)行子模塊連接的CORDIC補(bǔ)償旋轉(zhuǎn)因子計(jì)算子模塊(43);兩個(gè)所述FFT執(zhí)行子模塊并行執(zhí)行兩組數(shù)據(jù)的FFT計(jì)算,其中每一組數(shù)據(jù)為規(guī)模小于或等于N1點(diǎn)的數(shù)據(jù),所述CORDIC補(bǔ)償旋轉(zhuǎn)因子計(jì)算子模塊(43)根據(jù)數(shù)據(jù)地址及運(yùn)算規(guī)模N采用CORDIC算法計(jì)算補(bǔ)償旋轉(zhuǎn)因子,分別輸出至兩個(gè)所述FFT執(zhí)行子模塊。
4.根據(jù)權(quán)利3所述的基于DSP芯片的FFT加速器,其特征在于:每個(gè)所述FFT執(zhí)行子模塊包括FFT計(jì)算控制單元(411)、數(shù)據(jù)存儲(chǔ)單元(412)、并行蝶形運(yùn)算單元(413)以及旋轉(zhuǎn)因子存儲(chǔ)單元(414);所述FFT計(jì)算控制單元(411)接收FFT運(yùn)算控制模塊(2)輸出的控制信號(hào),控制并行蝶形運(yùn)算單元(413)及CORDIC補(bǔ)償旋轉(zhuǎn)因子計(jì)算子模塊(43)的啟動(dòng);所述數(shù)據(jù)存儲(chǔ)單元(412)存儲(chǔ)并行蝶形運(yùn)算單元(413)待輸入的運(yùn)算數(shù)據(jù)以及待輸出的運(yùn)算結(jié)果;所述并行蝶形運(yùn)算單元(413)并行執(zhí)行一組數(shù)據(jù)的蝶形運(yùn)算或補(bǔ)償旋轉(zhuǎn)因子計(jì)算,由所述旋轉(zhuǎn)因子存儲(chǔ)單元(414)存儲(chǔ)蝶形運(yùn)算時(shí)的旋轉(zhuǎn)因子。
5.根據(jù)權(quán)利4所述的基于DSP芯片的FFT加速器,其特征在于:所述并行蝶形運(yùn)算單元(413)包括兩個(gè)并行的蝶形運(yùn)算部件。
6.根據(jù)權(quán)利5所述的基于DSP芯片的FFT加速器,其特征在于:每個(gè)所述蝶形運(yùn)算部件包括多個(gè)IEEE-754標(biāo)準(zhǔn)的單精度浮點(diǎn)乘法器、多個(gè)單精度浮點(diǎn)加/減法器。
7.根據(jù)權(quán)利6所述的基于DSP芯片的FFT加速器,其特征在于:所述單精度浮點(diǎn)乘法器為4個(gè),所述單精度浮點(diǎn)加/減法器為6個(gè)。
8.根據(jù)權(quán)利4~7中任意一項(xiàng)所述的基于DSP芯片的FFT加速器,其特征在于:所述數(shù)據(jù)存儲(chǔ)單元(412)包括兩組數(shù)據(jù)存儲(chǔ)器,對(duì)待輸入的運(yùn)算數(shù)據(jù)以及待輸出的運(yùn)算結(jié)果進(jìn)行乒乓結(jié)構(gòu)的緩存;每組所述數(shù)據(jù)存儲(chǔ)器包括4個(gè)雙端口的RAM。
9.根據(jù)權(quán)利5~7中任意一項(xiàng)所述的基于DSP芯片的FFT加速器,其特征在于:所述旋轉(zhuǎn)因子存儲(chǔ)單元(414)采用兩個(gè)查找表,每個(gè)所述查找表具有N1個(gè)選項(xiàng);每個(gè)所述查找表對(duì)應(yīng)連接一個(gè)所述蝶形運(yùn)算部件。
【文檔編號(hào)】G06F17/14GK103955447SQ201410174795
【公開日】2014年7月30日 申請(qǐng)日期:2014年4月28日 優(yōu)先權(quán)日:2014年4月28日
【發(fā)明者】劉宗林, 雷元武, 郭陽(yáng), 陳書明, 魯建壯, 彭元喜, 吳虎成, 羅恒, 孫永節(jié), 陳躍躍, 陳小文, 孫書為 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)