基于FPGA的高速卷積的硬件設(shè)計(jì)實(shí)現(xiàn)
在圖5中,由上位機(jī)產(chǎn)生的一組8 192點(diǎn)隨機(jī)復(fù)數(shù)a(t)寫入ROM中,作為FFT模塊的信號(hào)輸入,經(jīng)過FFT后將結(jié)果B(ω)存入RAM中,以方便上位機(jī)讀取并與a(t)使用Matlab計(jì)算出來的FFT結(jié)果A(ω)進(jìn)行比較;接著將該FFT結(jié)果B(ω)再進(jìn)行IFFT計(jì)算,由數(shù)字信號(hào)處理理論可知,一個(gè)信號(hào)進(jìn)行FFT后再進(jìn)行IFFT的結(jié)果應(yīng)該是信號(hào)本身,所以將B(ω)再進(jìn)行IFFT計(jì)算后得到的結(jié)果b(t)存入RAM,由上位機(jī)讀取并與原始信號(hào)a(t)進(jìn)行比較,可以分析整個(gè)卷積系統(tǒng)的處理誤差。圖6給出了計(jì)算FFT結(jié)果相對(duì)誤差的Matlab相關(guān)程序。
求出A(ω)的最大值max[A(ω)],分別對(duì)B(ω)的實(shí)部和虛部計(jì)算相對(duì)誤差,得到如圖7所示的相對(duì)誤差曲線。由圖6可知,在FFT過程中,相對(duì)誤差可以保證在0.5%以內(nèi)。對(duì)FFT所得的結(jié)果B(ω)做IFFT得到b(t),分析b(t)與原數(shù)據(jù)a(t)的誤差,得到如圖8所示的相對(duì)誤差曲線。
觀察圖8可知,經(jīng)過FFT變換和IFFT變換以后的累積相對(duì)誤差保持在±3%以內(nèi),主要原因是FPGA計(jì)算FFT和IFFT過程中由于精度的要求,進(jìn)行數(shù)據(jù)舍去,造成誤差的產(chǎn)生。這種誤差是由硬件客觀條件限制的,不可避免,但是±3%的誤差精度完全可以滿足實(shí)際應(yīng)用。
本系統(tǒng)由于涉及到高速A/D、高速D/A,所以在PCB設(shè)計(jì)過程中必須考慮電磁兼容EMC(Electro MagneTIc Compatibility)和抗電磁干擾EMI(Electro Magnetic InteRFerence)性和信號(hào)的完整性??傮w來說,在進(jìn)行高速PCB設(shè)計(jì)過程中,不僅要考慮PCB的元器件布局和布線,同時(shí)設(shè)計(jì)中的接地、去耦和旁路同樣重要。例如在A/D部分這種混合信號(hào)PCB設(shè)計(jì)中,由于混合了模擬信號(hào)與數(shù)字信號(hào),只有盡可能減小電流環(huán)路的面積才能降低數(shù)字信號(hào)與模擬信號(hào)之間的相互干擾。一個(gè)可行的方法是將地平面分割,然后在A/D轉(zhuǎn)換器下面將模擬地和數(shù)字地連接在一起。
在處理FFT和IFFT核的指數(shù)問題時(shí),正常做法是在FFT結(jié)束后直接做一次指數(shù)調(diào)整,在IFFT結(jié)束后再做一次指數(shù)調(diào)整。設(shè)經(jīng)過FFT核后的直接輸出結(jié)果為X’(k)、對(duì)應(yīng)指數(shù)輸出為(-expl),x(n)的真實(shí)結(jié)果為X(k),則有
由式(12)可知,F(xiàn)FT和IFFT的兩次指數(shù)調(diào)整實(shí)際可以在IFFT合為一次,可以減少控制的復(fù)雜程度。兩次調(diào)整指數(shù)的示意圖如圖9所示。一次調(diào)整指數(shù)的示意圖如圖10所示。
6 結(jié)束語
本文基于Altera的FPGA EP2S60F1 020C8,搭建了結(jié)合A/D,D/A等功能的配套處理平臺(tái),完成了對(duì)高速離散卷積的硬件實(shí)現(xiàn),使該系統(tǒng)在100 MHz時(shí)工作正常,滿足了設(shè)計(jì)要求。
評(píng)論