基于FPGA的多通道校準(zhǔn)算法的同步實(shí)現(xiàn)
數(shù)字信號(hào)處理模塊是接收機(jī)系統(tǒng)的核心部分,系統(tǒng)要求數(shù)字信號(hào)處理模塊能實(shí)時(shí)處理ADC變換后的數(shù)字信號(hào),并用軟件的方法來(lái)實(shí)現(xiàn)大量的無(wú)線電功能,這些功能包括:多通道校準(zhǔn)、編解碼、調(diào)制解調(diào)、濾波、同步、盲均衡、檢測(cè)、數(shù)據(jù)加密、傳輸加密糾錯(cuò)、跳擴(kuò)頻及解擴(kuò)和解跳、通信環(huán)境評(píng)估、信道選擇等,而單個(gè)DSP根本無(wú)法完成這些功能。目前可用的一些高速DSP的性能最快的也不超過(guò)5GIPS ,與實(shí)際需求相差巨大。這種處理資源的匱乏,被稱(chēng)之為DSP 瓶頸[1],因此我們?cè)诒鞠到y(tǒng)中主要采用Xilinx的FPGA芯片實(shí)現(xiàn)后端數(shù)字信號(hào)處理。
時(shí)鐘同步
FPGA硬件設(shè)計(jì)中,時(shí)鐘是整個(gè)設(shè)計(jì)最重要、最特殊的信號(hào),異步信號(hào)輸入總是無(wú)法滿足數(shù)據(jù)的建立保持時(shí)間,所以需要把所有異步輸入都先進(jìn)行同步化。時(shí)鐘同步的重要性如下:
● 系統(tǒng)內(nèi)大部分器件的動(dòng)作都是在時(shí)鐘的跳變沿上進(jìn)行,這就要求時(shí)鐘信號(hào)時(shí)延差要非常小,否則就可能造成時(shí)序邏輯狀態(tài)出錯(cuò);
● 時(shí)鐘信號(hào)通常是系統(tǒng)中頻率最高的信號(hào);
● 時(shí)鐘信號(hào)通常是負(fù)載最重的信號(hào),所以要合理分配負(fù)載。出于這樣的考慮在FPGA這類(lèi)可編程器件內(nèi)部一般都設(shè)有數(shù)量不等的專(zhuān)門(mén)用于系統(tǒng)時(shí)鐘驅(qū)動(dòng)的全局時(shí)鐘網(wǎng)絡(luò)。
對(duì)于一個(gè)設(shè)計(jì)項(xiàng)目來(lái)說(shuō),全局時(shí)鐘(或同步時(shí)鐘)是最簡(jiǎn)單和最可預(yù)測(cè)的時(shí)鐘。只要可能就應(yīng)盡量在設(shè)計(jì)項(xiàng)目中采用全局時(shí)鐘。FPGA都具有專(zhuān)門(mén)的全局時(shí)鐘引腳,它直接連到器件中的每一個(gè)寄存器。這種全局時(shí)鐘提供器件中最短的時(shí)鐘到輸出的延時(shí)。
但在許多應(yīng)用中會(huì)出現(xiàn)兩個(gè)或兩個(gè)以上非同源時(shí)鐘,系統(tǒng)設(shè)計(jì)將面臨復(fù)雜的時(shí)間問(wèn)題,數(shù)據(jù)的建立和保持時(shí)間很難得到保證。對(duì)于需要多時(shí)鐘的時(shí)序電路,最好將所有非同源時(shí)鐘同步化,即選用一個(gè)頻率是它們的時(shí)鐘頻率公倍數(shù)的高頻主時(shí)鐘。各個(gè)功能模塊要使用統(tǒng)一的復(fù)位電路。在使用帶時(shí)鐘的觸發(fā)器、計(jì)數(shù)器等有復(fù)位端的庫(kù)器件時(shí),一般應(yīng)盡量使用有同步復(fù)位的器件。注意復(fù)位時(shí)應(yīng)保證各個(gè)器件都能復(fù)位,以避免某些寄存器的初始狀態(tài)不確定而引起系統(tǒng)工作不可靠。
基于以上分析,在本設(shè)計(jì)中,將64M的高頻時(shí)鐘作為系統(tǒng)時(shí)鐘,輸入到所有觸發(fā)器的時(shí)鐘端。時(shí)鐘使能信號(hào)Clk_en將控制所有觸發(fā)器的使能端。即原來(lái)接8M時(shí)鐘的觸發(fā)器,接64M時(shí)鐘,同時(shí)Clk_en將控制該觸發(fā)器使能;原接64M時(shí)鐘的觸發(fā)器, 還接64M時(shí)鐘,Clk_en也將控制該觸發(fā)器使能。這樣,就可以將任何非同源時(shí)鐘同步化。
多通道校準(zhǔn)同步算法
下面以M元陣為例來(lái)說(shuō)明多通道校準(zhǔn)過(guò)程。接收機(jī)開(kāi)機(jī)時(shí),先將選擇開(kāi)關(guān)S切換到位置2(見(jiàn)圖1),進(jìn)入校準(zhǔn)狀態(tài)。注入信號(hào)s(t)經(jīng)功分器進(jìn)入各陣元通道,陣元通道輸出為基帶數(shù)字信號(hào)xm(t)。將第一條通道作為參考通道,第一條通道的輸出延時(shí)τ后作為參考信號(hào),與其他陣元通道的輸出一起送入相應(yīng)的自適應(yīng)校正濾波器。自適應(yīng)校正濾波器將會(huì)對(duì)陣元通道的傳輸特性進(jìn)行補(bǔ)償,使各個(gè)陣元通道的傳輸特性趨近參考通道。這里采用LMS自適應(yīng)算法,待自適應(yīng)算法收斂后,穩(wěn)態(tài)權(quán)矢量將作為自適應(yīng)校正濾波器的系數(shù)固定下來(lái),至此陣元通道的校正結(jié)束。最后,將選擇開(kāi)關(guān)S切換到位置1就可進(jìn)入正常通信狀態(tài)。
按圖1所示的模型可知,用L階橫向FIR濾波器模擬通道響應(yīng),通過(guò)在濾波器的系數(shù)上加上小的幅度擾動(dòng)δ和相位擾動(dòng)Φ來(lái)模擬通道間的失配,這樣可得第m個(gè)待校準(zhǔn)通道模擬濾波器的傳輸函數(shù)為:
設(shè)注入的信號(hào)是s(t),href(t)和hm(t)分別為參考通道和待校準(zhǔn)的第m條通道的沖激響應(yīng),hmc(t)為第m條通道的校準(zhǔn)濾波器的沖激響應(yīng),那么參考通道的輸出(暫不考慮延時(shí)τ)、第m條待校準(zhǔn)通道校準(zhǔn)前的輸出和校準(zhǔn)后的輸出分別為:
自適應(yīng)濾波器采用MMSE準(zhǔn)則,其中,準(zhǔn)則選擇是否合理決定了天線陣暫態(tài)響應(yīng)的速度和實(shí)現(xiàn)電路的復(fù)雜度。可以證明,這個(gè)準(zhǔn)則的結(jié)果可以分解為一個(gè)相同的線性矩陣濾波器和一個(gè)不同的標(biāo)量處理器的積,且都收斂于最優(yōu)維納解。因此,當(dāng)自適應(yīng)濾波器收斂到穩(wěn)態(tài)即最優(yōu)解后,最佳權(quán)值應(yīng)該為:
由,可得:
從而通道特性得到了校準(zhǔn)。
本文中的多通道校準(zhǔn)算法是在FPGA中實(shí)現(xiàn)的,選擇FPGA而不選擇DSP器件的原因是FPGA的引腳眾多且可以定制,這樣就可以在相對(duì)較低的工作頻率下做到很高的數(shù)據(jù)吞吐率,而這是DSP難以做到的。
FPGA實(shí)現(xiàn)
在本設(shè)計(jì)中應(yīng)該綜合考慮各方面因素,選擇一種最佳模塊結(jié)構(gòu)和模塊規(guī)模。本設(shè)計(jì)中的結(jié)構(gòu)化層次是由一個(gè)頂層模塊和若干個(gè)子模塊組成,每個(gè)子模塊根據(jù)需要再包含自己的子模塊,以此類(lèi)推,共5層,如圖2所示。
本設(shè)計(jì)中,整個(gè)通道失配校準(zhǔn)模塊共需要90個(gè)乘法器。這些乘法器如果采用FPGA的邏輯資源直接構(gòu)建,不僅難以保證理想的運(yùn)算速度,而且硬件開(kāi)銷(xiāo)非常巨大。而FPGA芯片內(nèi)部已經(jīng)集成了18×18位的硬件乘法器模塊,其速度快,實(shí)現(xiàn)簡(jiǎn)單,能有效節(jié)省FPGA的邏輯資源。由于系統(tǒng)設(shè)計(jì)時(shí)選用的FPGA芯片型號(hào)為Xilinx公司的xc2v8000ff1152-5,它集成了幾百個(gè)硬件乘法器,因此可以全部使用硬件乘法器來(lái)完成相應(yīng)的乘法運(yùn)算。
采用VHDL語(yǔ)言編寫(xiě)實(shí)現(xiàn)程序,開(kāi)發(fā)環(huán)境為ISE 8.2i,綜合工具為Synplify Pro v8.1,仿真工具為ModelSim SE 6.3f。圖3所示的是程序經(jīng)Synplify Pro v8.1綜合后得到的LMS自適應(yīng)校正濾波器頂層模塊RTL視圖。RTL視圖即寄存器傳輸級(jí)視圖,該圖高度抽象為模塊化結(jié)構(gòu),它是在對(duì)源代碼編譯后再現(xiàn)設(shè)計(jì)的寄存器傳輸級(jí)原理圖。
所有算法模塊均在全局使能信號(hào)clk_en不同狀態(tài)的控制下進(jìn)行工作,從而使算法運(yùn)行達(dá)到8M周期,直至找到最佳權(quán)值,最終完成多通道校準(zhǔn)的任務(wù),實(shí)現(xiàn)多個(gè)通道的幅相一致性。
表1為多通道校準(zhǔn)算法的FPGA資源占用列表,從系統(tǒng)資源占用情況可以看出:多通道校準(zhǔn)算法FPGA實(shí)現(xiàn)過(guò)程中,如果再加上前后端處理程序一起編譯,則輸入輸出端口將減少,資源占用也將減少,并不影響系統(tǒng)實(shí)現(xiàn)。其它各種資源占用量都較少,完全符合FPGA設(shè)計(jì)要求。
FPGA布局布線后的仿真波形如圖4、圖5所示。
從仿真結(jié)果(圖4,圖5)和ISE 8.2i的綜合報(bào)告可知,該校正模塊的最高時(shí)鐘頻率達(dá)到102.5MHz。
最后,由MATLAB仿真和FPGA布局布線后仿真得到的權(quán)值,經(jīng)過(guò)MATLAB仿真形成新的方向圖,如圖6所示,可以看出,兩種方向圖基本一致。因此,基于FPGA的多通道校準(zhǔn)同步算法的實(shí)現(xiàn)完全符合系統(tǒng)要求。
結(jié)語(yǔ)
由于數(shù)據(jù)時(shí)鐘的同步是FPGA 芯片設(shè)計(jì)實(shí)現(xiàn)的一個(gè)常見(jiàn)問(wèn)題,也是一個(gè)重點(diǎn)和難點(diǎn),很多設(shè)計(jì)不穩(wěn)定都是源于數(shù)據(jù)時(shí)鐘的同步有問(wèn)題。而本文提出了解決這一問(wèn)題的時(shí)鐘同步方法,并在硬件上很好地實(shí)現(xiàn)了多通道校準(zhǔn)算法,極大提高了系統(tǒng)穩(wěn)定性。