一種固定1024點(diǎn)流水線FFT處理器結(jié)構(gòu)研究
快速傅里葉變換(FFT)算法實(shí)現(xiàn)的流水線結(jié)構(gòu)FFT處理器在實(shí)時(shí)專(zhuān)用處理器中得到了廣泛應(yīng)用.Bi和Jones提出一種固定1024點(diǎn)流水線FFT處理器結(jié)構(gòu),該結(jié)構(gòu)在運(yùn)算的每級(jí)只采用一個(gè)復(fù)數(shù)乘法器.基于此結(jié)構(gòu)Hasan設(shè)計(jì)了一種能夠進(jìn)行16,64,256和1024點(diǎn)FFT運(yùn)算的可變點(diǎn)流水線FFT處理器,增強(qiáng)了處理器運(yùn)用的靈活性.但該處理器結(jié)構(gòu)所需的中間數(shù)據(jù)及旋轉(zhuǎn)因子存儲(chǔ)容量較大,各級(jí)的地址控制邏輯比較復(fù)雜,運(yùn)算時(shí)間較長(zhǎng),不適于對(duì)速度和面積要求越來(lái)越高的應(yīng)用場(chǎng)合.作者提出了一種實(shí)時(shí)可重配置的FFT處理器.該處理器采用小點(diǎn)數(shù)內(nèi)部流水和大點(diǎn)數(shù)二維化處理結(jié)構(gòu),通過(guò)控制各處理模塊實(shí)現(xiàn)4,16,64,256和1 024點(diǎn)復(fù)數(shù)FFT運(yùn)算,并給出了該結(jié)構(gòu)與Hasan結(jié)構(gòu)的性能比較.
1 可重配置FFT算法原理
N個(gè)樣本點(diǎn)的離散博里葉變換(DFT)表達(dá)式為
式(2)表明,計(jì)算組合數(shù)N=r1 r2點(diǎn)DFT等價(jià)于先求出r2組r1點(diǎn)的DFT,其結(jié)果乘以旋轉(zhuǎn)因子后,再計(jì)算r1組r2點(diǎn)的DFT.
基-4時(shí)間抽取FFT算法中,16點(diǎn)FFT運(yùn)算可以分為兩級(jí),第1級(jí)基本運(yùn)算是4點(diǎn)序列的DFT.因此,如果只取16點(diǎn)FFT運(yùn)算的第1級(jí)運(yùn)算便可同時(shí)完成4點(diǎn)FFT運(yùn)算.
2 可重配置FFT處理器的實(shí)現(xiàn)
2.1 系統(tǒng)設(shè)計(jì)
FFT處理器由數(shù)據(jù)輸入單元、固定64點(diǎn)FFT、流水處理單元、中間乘旋轉(zhuǎn)因子單元、4和16點(diǎn)FFT可變流水處理單元及數(shù)據(jù)輸出單元組成.如圖1所示.
在進(jìn)行FFT運(yùn)算時(shí),單元選擇控制邏輯根據(jù)需要變換長(zhǎng)度N激活相應(yīng)的處理單元.
根據(jù)式(2)對(duì)1 024點(diǎn)輸入數(shù)據(jù)進(jìn)行FFT運(yùn)算,首先數(shù)據(jù)輸入單元要按照N=rlr2=64×16完成對(duì)輸入1 024點(diǎn)數(shù)據(jù)的分解,然后固定64點(diǎn)FFT流水處理單元完成16次64點(diǎn)運(yùn)算.運(yùn)算結(jié)果分別與1024個(gè)中間旋轉(zhuǎn)因子相乘,然后乘旋轉(zhuǎn)因子單元完成對(duì)這1 024個(gè)結(jié)果的整形,并使用4點(diǎn)和16點(diǎn)可變處理單元完成64次16點(diǎn)變換.數(shù)據(jù)輸出單元完成對(duì)結(jié)果進(jìn)行最后整形并同時(shí)輸出1個(gè)塊浮點(diǎn)溢出檢測(cè)指數(shù)和1 024個(gè)數(shù)據(jù)結(jié)果.同理對(duì)于256點(diǎn)的FFT運(yùn)算,數(shù)據(jù)輸入單元按照N=r1r2=64×4進(jìn)行分解運(yùn)算即可.
2.2 地址生成
可重配置FFT處理器包括輸入數(shù)據(jù)地址產(chǎn)生單元、64點(diǎn)數(shù)據(jù)旋轉(zhuǎn)因子地址產(chǎn)生單元、中間乘旋轉(zhuǎn)因子地址產(chǎn)生單元、中間數(shù)據(jù)存取地址產(chǎn)生單元、4,16點(diǎn)FFT數(shù)據(jù)及旋轉(zhuǎn)因子地址產(chǎn)生單元和輸出數(shù)據(jù)地址產(chǎn)生單元.每個(gè)單元都由計(jì)數(shù)器和地址變換器構(gòu)成,每周期產(chǎn)生一組地址.由于采用的是Cooley-Tukey算法同址運(yùn)算規(guī)則,倒序輸入正序輸出.因此針對(duì)不同長(zhǎng)度的FFT運(yùn)算,地址變換器只需要對(duì)計(jì)數(shù)器的輸出值進(jìn)行不同的變形即可.
由于要實(shí)現(xiàn)的最大運(yùn)算點(diǎn)數(shù)為1 024,同時(shí)采用流水乒乓存儲(chǔ)結(jié)構(gòu),因此輸入、中間、輸出單元的地址深度為2,則這3個(gè)地址產(chǎn)生器中的計(jì)數(shù)器為11位,最高位作為乒乓選擇控制位.產(chǎn)生的各個(gè)單元地址如圖2所示.中間數(shù)據(jù)地址產(chǎn)生單元只需要生成256點(diǎn)和1 024點(diǎn)數(shù)據(jù)地址即可.中間數(shù)據(jù)存地址即為輸入數(shù)據(jù)地址.輸出數(shù)據(jù)地址只需要產(chǎn)生4,16,256和1 024點(diǎn)數(shù)據(jù)地址.256個(gè)旋轉(zhuǎn)因子可從1 024個(gè)旋轉(zhuǎn)因子中抽取得到.產(chǎn)生的中間旋轉(zhuǎn)因子地址如圖3所示.
4,16和64點(diǎn)FFT處理器采用Hansan結(jié)構(gòu),它們的存儲(chǔ)容量遠(yuǎn)小于一個(gè)整1 024點(diǎn)所需的存儲(chǔ)容量.為了加快數(shù)據(jù)訪問(wèn)時(shí)間,同時(shí)減少存儲(chǔ)器容量,16點(diǎn)FFT運(yùn)算所需的旋轉(zhuǎn)因子值可以直接存儲(chǔ)為常數(shù). FFT同時(shí)采用塊浮點(diǎn)定標(biāo)方式,以提高運(yùn)算精度.
3 ASIC驗(yàn)證及性能分析
使用VHDL硬件編程語(yǔ)言在RTL級(jí)對(duì)可重配置FFT處理器進(jìn)行了代碼描述.基于SMIC 0.18μm標(biāo)準(zhǔn)單元工藝庫(kù),用Synopsys DesignCompiler綜合工具進(jìn)行邏輯綜合,使用Astro 工具進(jìn)行版圖規(guī)則及布局布線;用仿真工具VCS進(jìn)行邏輯動(dòng)態(tài)仿真,用參數(shù)提取工具Star-RCXT提取寄生參數(shù)并使用靜態(tài)時(shí)序分析工具PrimeTime對(duì)整個(gè)設(shè)計(jì)系統(tǒng)進(jìn)行靜態(tài)時(shí)序分析.處理器的ASIC版圖如圖4所示存儲(chǔ)器按照?qǐng)D1所示數(shù)據(jù)流的方向排放,以便于邏輯單元布局布線.處理器版圖采用了3層電源環(huán)結(jié)構(gòu).采用該結(jié)構(gòu)一方面可增加管腳供電能力,另一方面也可有效減小芯片面積(處理器芯片面積為3.6mm×3.7mm).
表1為作者所提出的結(jié)構(gòu)與Hason結(jié)構(gòu)的性能比較.其中數(shù)據(jù)用36 bit表示(高18 bit為實(shí)部,低18 bit為虛部),指數(shù)用6bit表示,結(jié)果比較用kbit表示.由表1比較結(jié)果可知,作者所提出的可重配置FFT處理器結(jié)構(gòu)不僅減小了45%的存儲(chǔ)器資源,而且節(jié)省了52%的處理時(shí)間.該處理器芯片在連續(xù)工作100 MHz時(shí)鐘頻率時(shí),處理第1組1 024點(diǎn)FFT序列需要24.8 μs,以后每10.24μs給出1組1 024點(diǎn)運(yùn)算結(jié)果.表2為FFT處理器進(jìn)行各種點(diǎn)數(shù)運(yùn)算的功耗.可重配置結(jié)構(gòu)采用復(fù)用器及相關(guān)的邏輯電路實(shí)現(xiàn)門(mén)控時(shí)鐘電路,這樣,在進(jìn)行不同點(diǎn)數(shù)運(yùn)算時(shí)可以啟動(dòng)不同的運(yùn)算單元(屏蔽不需要的運(yùn)算單元),以降低功耗.由表2可知,在啟動(dòng)64點(diǎn)FFT運(yùn)算模塊時(shí),系統(tǒng)功耗較1 024點(diǎn)FFT運(yùn)算量降低了約49%,而 4點(diǎn)運(yùn)算量降低了約80%.
4 結(jié)論
提出一種可重配置FFT處理器的ASIC芯片設(shè)計(jì)與實(shí)現(xiàn)、該芯片采用子模塊基-4單元級(jí)聯(lián)流水線結(jié)構(gòu),使用雙口RAM進(jìn)行乒乓存儲(chǔ),不僅減少了硬件實(shí)現(xiàn)資源,而且提高了處理速度,具有連續(xù)計(jì)算4,16,64,256和1 024點(diǎn)復(fù)數(shù)輸入FFT的運(yùn)算功能.結(jié)構(gòu)設(shè)計(jì)采用模塊化設(shè)計(jì),縮短了芯片設(shè)計(jì)開(kāi)發(fā)周期.處理器芯片面積為3.6mm×3.7mm,適用于實(shí)時(shí)、高精度動(dòng)態(tài)變換應(yīng)用場(chǎng)合.