超高速快速傅里葉變換(FFT)內(nèi)核是任何實(shí)時(shí)頻譜監(jiān)測(cè)系統(tǒng)的必要組成部分。隨著各頻段無線設(shè)備數(shù)量的迅速增長(zhǎng),系統(tǒng)必須相應(yīng)加強(qiáng)對(duì)帶寬的監(jiān)測(cè)。因此,這些系統(tǒng)需要以更快的速度將時(shí)域轉(zhuǎn)換為頻域,這就要求進(jìn)行更加快速的FFT運(yùn)算。實(shí)際上,大多數(shù)現(xiàn)代監(jiān)測(cè)系統(tǒng)往往需要使用并行FFT,實(shí)現(xiàn)數(shù)倍于尖端FPGA(例如賽靈思Virtex®-7)最高時(shí)鐘頻率的采樣吞吐量,充分發(fā)揮寬帶A/D轉(zhuǎn)換器的優(yōu)勢(shì),其可輕松獲得12.5Gsps甚至更高的采樣率。[1]
同時(shí),隨著通信協(xié)議日益數(shù)據(jù)包化,監(jiān)測(cè)信號(hào)的占空比在不斷降低。這種情況要求大幅度降低掃描重復(fù)時(shí)間,這就需要使用低時(shí)延FFT內(nèi)核。并行FFT也能在這方面有所裨益,因?yàn)闀r(shí)延會(huì)隨著采樣率與時(shí)鐘速度之比成比例下降。
鑒于所有這些原因,本文將深入介紹可在運(yùn)行中配置轉(zhuǎn)換長(zhǎng)度的并行FFT(PFFT)設(shè)計(jì),并說明使用并行FFT可實(shí)現(xiàn)的吞吐量和利用率。
FFT的硬件并行化
由于在邏輯中直接實(shí)現(xiàn)FFT較為復(fù)雜,因此大量硬件設(shè)計(jì)人員使用各個(gè)廠商提供的現(xiàn)成FFT內(nèi)核。[2]但是,大多數(shù)現(xiàn)成的FFT內(nèi)核使用“流”或者“模塊”架構(gòu),每個(gè)時(shí)鐘周期只能處理一個(gè)或者幾個(gè)采樣,這就會(huì)把吞吐量限制在FPGA或者ASIC器件所能提供的最大時(shí)鐘速度內(nèi)。PFFT能夠提供速度更快的架構(gòu)。PFFT每個(gè)時(shí)鐘周期可接受多個(gè)采樣,進(jìn)行并行處理,并在每個(gè)時(shí)鐘周期內(nèi)輸出多個(gè)采樣。這種架構(gòu)可讓吞吐量達(dá)到器件最大時(shí)鐘速度的數(shù)倍,但代價(jià)是增大了占位面積并提高了復(fù)雜性。因此,要使用PFFT必須在吞吐量和面積之間進(jìn)行權(quán)衡。典型Virtex-7 FPGA設(shè)計(jì)所需的權(quán)衡方案見圖1和表1。
在Virtex-7器件上實(shí)現(xiàn)并行FFT的典型性能和面積權(quán)衡
表1 - 面積的增加因硬件乘法器的使用造成。吞吐量提升與占位面積之比略高于線性關(guān)系,總體而言非常適用于將吞吐量增加至數(shù)千兆赫茲采樣率。
從權(quán)衡的角度,可從表中看出一些普遍特點(diǎn):
1. 隨著并行吞吐量的增加,乘法器(面積)的使用也在增加,但增加的速度稍低(好于線性關(guān)系)。
2. 隨著并行量的增加,系統(tǒng)時(shí)鐘速度和時(shí)序收斂速度的下降會(huì)導(dǎo)致吞吐量的提升低于線性關(guān)系。不過在現(xiàn)代FPGA上這種劣化現(xiàn)象正在減輕。
3. 鑒于上述兩個(gè)原因,吞吐量增長(zhǎng)與面積增長(zhǎng)的比率總體上要高于線性關(guān)系。
4. 時(shí)延隨著并行化的增大而降低。
請(qǐng)注意表1中的測(cè)量值只適用于特定的對(duì)象和FFT配置。這種情況針對(duì)的是長(zhǎng)度為1024的情況,且具有16位輸入、動(dòng)態(tài)長(zhǎng)度可編程(最小可編程長(zhǎng)度為4)和流控制。流控制對(duì)頻譜監(jiān)測(cè)這樣的應(yīng)用而言非常重要,因?yàn)?,這類應(yīng)用往往需要在進(jìn)行采集等其它操作時(shí),使用旁通道信息來改變FFT大小(以改變分辨帶寬)或暫停FFT的運(yùn)行。從理論上說,您可以通過在轉(zhuǎn)換操作前插入緩存的方式來實(shí)現(xiàn)流控制。但是對(duì)于頻譜監(jiān)測(cè)這樣的采集驅(qū)動(dòng)型操作而言,難以提前計(jì)算出所需要的緩存大小,這樣就必須采用容量大、速度快的高成本內(nèi)存條。
實(shí)現(xiàn)架構(gòu)
雖然實(shí)現(xiàn)FFT的方法多種多樣,但并行版本的Radix2多路徑延遲換向器內(nèi)核(Radix2-MDC)[3] 作為一個(gè)模塊化方案在這里非常適用,可用于創(chuàng)建在先進(jìn)FPGA器件中具有良好擴(kuò)展能力的可配置并行FFT內(nèi)核。Radix2-MDC是一種用于創(chuàng)建各種長(zhǎng)度流水線FFT的典型方法,圖2a是長(zhǎng)度為16的FFT。它將輸入序列分解為兩個(gè)并行數(shù)據(jù)流,并在數(shù)據(jù)流向前流入蝴蝶算法單元(FFT算法的一個(gè)子元)的過程中采用恰當(dāng)?shù)难舆t對(duì)數(shù)據(jù)元進(jìn)行調(diào)度,以確保數(shù)據(jù)元之間保持恰當(dāng)?shù)?ldquo;間距”。如圖2b所示,使用較寬的數(shù)據(jù)路徑和矢量運(yùn)算,Radix2-MDC的并行化就會(huì)相對(duì)容易。MDC的結(jié)構(gòu)還便于實(shí)現(xiàn)流控制和動(dòng)態(tài)長(zhǎng)度重配置,相反,單路徑延遲反饋(SDF)結(jié)構(gòu)因?yàn)榧尤肓肆骺刂疲ㄍV梗┬盘?hào),會(huì)顯著降低最大吞吐量。
圖1 - 并行FFT一次可處理多個(gè)采樣,使吞吐量超過目標(biāo)器件可實(shí)現(xiàn)的系統(tǒng)時(shí)鐘速率??蛇x特性包括流控制、同步和動(dòng)態(tài)長(zhǎng)度可編程功能。
另一個(gè)會(huì)影響可擴(kuò)展性的因素是復(fù)雜乘法器的選擇,即選擇4乘(4M)還是3乘(3M)結(jié)構(gòu)。選擇3M復(fù)雜乘法器可以減少設(shè)計(jì)的占位面積,但代價(jià)是會(huì)降低時(shí)鐘速度。[4]這方面的權(quán)衡也主要依賴于FPGA器件的DSP硬件部分。下面是我們即將介紹的案例研究所使用的最重要的參數(shù)和選擇:
l 長(zhǎng)度=1024
l 輸入精度=16位
l 使用4乘5加復(fù)雜乘法器的Radix2-MDC架構(gòu)
l 數(shù)據(jù)路徑精度=每級(jí)增加1位(對(duì)1024長(zhǎng)度為10級(jí)/位)
l 包含動(dòng)態(tài)長(zhǎng)度可編程功能
l 啟用可選的流程控制和同步功能