《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 短波擴頻通信系統(tǒng)中數(shù)字相關(guān)器的FPGA設(shè)計與實現(xiàn)

短波擴頻通信系統(tǒng)中數(shù)字相關(guān)器的FPGA設(shè)計與實現(xiàn)

2008-10-14
作者:臧 磊 杜栓義

??? 摘? 要: 基于FPGA設(shè)計的數(shù)字相關(guān)器" title="相關(guān)器">相關(guān)器,對前端模數(shù)/轉(zhuǎn)換器在384kbps采樣率下采得的數(shù)據(jù)進行希爾波特變換,再與本地序列做相關(guān)運算,最后將相關(guān)結(jié)果送給DSP,供DSP做進一步的處理。介紹了所選用的Stratix芯片,闡述了FPGA內(nèi)部子模塊的功能和設(shè)計實現(xiàn)方法,對所設(shè)計的FPGA數(shù)字相關(guān)器進行了仿真和校驗,結(jié)果達到了設(shè)計要求。?

??? 關(guān)鍵詞: 數(shù)字相關(guān)器? FPGA? 希爾波特變換? Stratix?

?

??? 采用FPGA器件可以將原來的電路板級產(chǎn)品集成為芯片級產(chǎn)品,從而降低了功耗、提高了可靠性,同時還可以很方便地對設(shè)計進行在線修改。電路設(shè)計者可以通過軟件編程,經(jīng)過設(shè)計輸入、仿真、測試和校驗,用硬件實現(xiàn)特定的數(shù)字信號處理算法。這種方法由于具有通用性強的特點并可以實現(xiàn)算法的并行運算,因此無論是作為獨立的數(shù)字信號處理器,還是作為DSP芯片的協(xié)處理器,目前都是比較活躍的研究領(lǐng)域。?

??? 短波通信具有設(shè)備簡單、通信距離遠、機動靈活、價格低廉和抗毀性強的特點,有著重要的應(yīng)用價值。在短波通信系統(tǒng)中,接收方在信號檢測、同步的過程中,要進行大量的乘加操作來做相關(guān)運算。在傳輸速率較高、樣點間隔較小的情況下,完全由系統(tǒng)中央DSP處理器進行運算,很難實現(xiàn)實時處理。利用FPGA的特點,把信號同步數(shù)字相關(guān)部分分離出來,設(shè)計一個專用的數(shù)字相關(guān)器,作為中央DSP處理器的協(xié)處理器,來分擔(dān)這部分工作,是一個很好的解決方案。本文闡述的就是這樣一個應(yīng)用在短波擴頻通信系統(tǒng)的接收方中,完成數(shù)字相關(guān)功能的基于FPGA設(shè)計的相關(guān)器。?

1 Stratix系列芯片簡介?

??? 本文采用Stratix系列芯片實現(xiàn)數(shù)字相關(guān)器。Stratix系列是著名的可編程邏輯器件供應(yīng)商Altera公司于2002年新推出的FPGA產(chǎn)品。其主要特點是:采用1.5V內(nèi)核,0.13μm全銅工藝,容量為10570~114140個邏輯單元,內(nèi)嵌多達10Mbit的三種RAM塊,即512bit容量的小型RAM,4KB容量的標(biāo)準(zhǔn)RAM,512KB的大容量RAM;具有True-LVDS(tm)電路,支持LVDS、LVPECL、PCML和HyperTranport(tm)差分I/O電氣標(biāo)準(zhǔn),且有高速通信接口;增加了片內(nèi)終端匹配電阻,提高了信號完整性,簡化了PCB布線;提供了完整的時鐘管理方案,具有層次化的結(jié)構(gòu)和多達12個鎖相環(huán)(PLL)。?

??? 該系列芯片的最大特色是內(nèi)嵌硬件乘法器" title="乘法器">乘法器和乘加結(jié)構(gòu)的可編程DSP模塊,特別適于實現(xiàn)高速信號處理。這種DSP模塊是高性能的嵌入算術(shù)單元,它的運行速度可以達到250MHz,每個DSP模塊的數(shù)據(jù)吞吐性能可以高達2.0GMACS。它可以配置為硬件乘法器、加減法器、累加器和流水線寄存器,如表1所示。?

?

?

??? Stratix系列具有多達28個DSP模塊,可配置為224個(9bit×9bit)嵌入乘法器,可以為大數(shù)據(jù)吞吐量的應(yīng)用提供靈活、高效和有價值的方案。這些DSP模塊可以實現(xiàn)多種典型的DSP功能,如有限沖擊響應(yīng)(FIR)濾波、快速傅立葉變換(FFT)功能、相關(guān)器和加密/解密功能等。?

??? Stratix系列由Altera公司提供的新一代開發(fā)軟件Quartus II支持。此軟件加強了網(wǎng)絡(luò)功能,設(shè)計人員可以直接通過Internet獲得Altera的技術(shù)支持。Quartus II軟件中的Megawizard Plus_In Manager工具可以很方便地對一些常用的基本模塊進行定制,以滿足不同的需要;設(shè)計人員還可以在定制后的基礎(chǔ)上,進行進一步的改進,擴展出更多的功能。?

2 FPGA模塊設(shè)計?

??? 數(shù)字相關(guān)器在短波擴頻通信系統(tǒng)中的具體功能是:接收A/D" title="A/D">A/D采樣后的采樣信號,對采樣信號進行希爾波特變換,得到與其正交的另一路信號;然后以這兩路信號分別作為實部" title="實部">實部和虛部,與本地序列進行相關(guān)運算,將相關(guān)值的實部和虛部送給DSP做后續(xù)處理,如圖1所示。只有包含有正確同步頭信息的信號經(jīng)采樣后與本地序列作相關(guān)運算,得到的相關(guān)值的模值才會出現(xiàn)峰值;對應(yīng)于發(fā)端特定的同步頭幀結(jié)構(gòu),相關(guān)后的相關(guān)峰也會出現(xiàn)規(guī)律性的特征。這樣,DSP才可以通過先對相關(guān)值求模,然后對模值出現(xiàn)的峰值的間隔、幅值和數(shù)目等信息進行判斷和進一步處理,來確定是否捕捉到信號。下面具體介紹完成上述數(shù)字相關(guān)功能的FPGA的設(shè)計。FPGA設(shè)計的內(nèi)部結(jié)構(gòu)框圖如圖2所示。?

?

?

?

2.1 希爾波特變換部分?

??? 系統(tǒng)接收到的射頻信號經(jīng)過前端預(yù)處理后,送到A/D采樣,然后以串行方式輸出樣點值到FPGA。每個樣點值是用10bit的二進制補碼表示的,需先通過一個串/并轉(zhuǎn)換器轉(zhuǎn)化為寬度為10bit的并行信號。樣點值首先要進行的是希爾波特變換,希爾波特變換有多種實現(xiàn)方法,這里采用一個129階的濾波器來實現(xiàn),濾波器的抽頭系數(shù)由MATLAB函數(shù)remez產(chǎn)生,如圖3所示。?

?

?

??? 將10bit的并行信號輸入到一個10bit×129的RAM模塊,采用循環(huán)寫入的方式,RAM模塊類似一個桶形循環(huán)存儲器,較早存入RAM的信號值就會被新來的數(shù)據(jù)覆蓋掉,這樣就與圖3所示的輸入信號先進先出是等效的。經(jīng)MATLAB函數(shù)remez產(chǎn)生的抽頭系數(shù)是一組變換范圍很大的帶有小數(shù)部分的十進制數(shù),為了能夠進行后續(xù)的硬件運算,需要對這組十進制數(shù)作歸一量化處理,把它們映射到寬度為14bit的有符號的二進制數(shù)所能表示的范圍上去,即轉(zhuǎn)化為14bit的二進制補碼數(shù)。這組抽頭系數(shù)在運算的過程中是固定不變的,所以可以把它們固化在片內(nèi)ROM模塊中,與RAM中的值同步讀出,再經(jīng)過兩組D觸發(fā)器對齊后,送到一個10bit×14bit的有符號數(shù)的相乘累加器做相乘累加運算。相乘后的數(shù)據(jù)寬度是24bit,但是由于對固定數(shù)據(jù)寬度的有符號的二進制數(shù)進行加減運算時,會出現(xiàn)結(jié)果超出固定數(shù)據(jù)寬度所能表示的范圍,即溢出現(xiàn)象,導(dǎo)致運算結(jié)果錯誤,所以就要為這里進行的129次累加操作留有一定的數(shù)據(jù)寬度富裕量,每次把乘積符號擴展4bit再進行累加操作,這樣輸出就是一個28bit的有符號數(shù),即是所需的虛部。由于在將抽頭系數(shù)從十進制到二進制的歸一量化過程中,人為地將其擴大了許多倍,所以與每個虛部相對應(yīng)的實部從中心抽頭輸出后,需經(jīng)過一個固定倍數(shù)的乘法器,擴大同樣的倍數(shù)來與虛部保持一致。?

??? 相乘累加模塊是希爾波特變換部分的核心單元,這里用到了Stratix器件獨特的嵌入式DSP模塊。在Quartus的Megawizard Plus_In Manager中選擇ALTMULT_ACCUM(MAC)定制相乘累加模塊。首先系統(tǒng)會提示只有Stratix系列才可以定制此類型模塊,本例選擇的兩個輸入端分別是10位和14位的有符號數(shù),與RAM和ROM的輸出端相連,再將累加后的輸出端設(shè)為28位。這里有意預(yù)留了4位,用來防止在129次累加的過程中出現(xiàn)數(shù)據(jù)溢出的現(xiàn)象。將時鐘、使能、清零等設(shè)置好后,即可生成所需的相乘累加模塊,在編譯的過程中Quartus就會自動把這部分配置到嵌入式DSP模塊中,而不去占用片內(nèi)的邏輯單元。這樣就把原本用幾個模塊完成的功能用單個模塊實現(xiàn)了,同時也提高了運行的可靠性。?

2.2 相關(guān)運算部分?

??? 樣點值經(jīng)過希爾波特變換得到的實部和虛部兩部分,將分別存儲到兩個具有80個存儲單元的RAM中,同樣是采用循環(huán)寫入的方式,類似于DSP編程中的桶形存儲區(qū)。由于本文所應(yīng)用的短波系統(tǒng)采用的是每個碼元取五個采樣點,而本地序列是一個碼元對應(yīng)一個數(shù)值,所以在做相關(guān)運算時是從當(dāng)前的80個樣點值里,每隔4個點取一個值,共取出16個樣點值,依次與本地序列的16個值做相乘累加。下一次操作就把當(dāng)前樣點向后移一位,按同樣的方法取點運算。這樣依次進行,每一個樣點值都會產(chǎn)生一個與其相對應(yīng)的相關(guān)值。反映在FPGA內(nèi)部,就要求RAM從當(dāng)前存入的值開始,向前每隔4個單元取一個值作為輸出。這樣在一個樣點間隔內(nèi),就從RAM中依次讀出16個值,與從ROM中同步讀出的16個本地序列值做相關(guān)運算。此時的相關(guān)運算中的乘法就需要是復(fù)數(shù)相乘,其結(jié)果也是復(fù)數(shù),分兩路輸出實部和虛部,對這兩路結(jié)果分別進行累加運算,即可得到所需的相關(guān)值的實部和虛部。?

??? 復(fù)數(shù)相乘模塊是相關(guān)運算部分中的重要環(huán)節(jié)。從RAM中讀出的實部和虛部組成的信號值,與從ROM中讀出的本地序列值,在這里要進行復(fù)數(shù)相乘運算。復(fù)數(shù)相乘模塊結(jié)構(gòu)圖如圖4所示,a、b、c、d分別代表信號和本地序列的實部和虛部,按照式子(a+jb)×(c+jd)=(ac-bd)+j(ad+bc)的組合進行相乘加減。這里需要說明的是,考慮到后面要與DSP相連,數(shù)據(jù)的寬度被限制在32位。所以對于乘法器B和D而言,28bit與9bit相乘得到的結(jié)果應(yīng)是37bit。這里在定制乘法器的時候強行把它限制為32bit,去掉了最高位的多余符號位,舍去了低4位。這樣處理帶來的后果就是人為地將乘積縮小了16倍。如果對乘法器A和C的結(jié)果不做處理,直接進行加減運算,則結(jié)果將導(dǎo)致嚴重的錯誤。因此對于乘法器A和C,應(yīng)該人為地將其輸出值右移4位,同樣地縮小16倍,再進行下一步的加減運算,就可以有效地避免上述的錯誤。這樣輸入的4個數(shù)值經(jīng)過幾個時鐘周期的運算后,輸出的兩個數(shù)值就是所求的復(fù)數(shù)相乘結(jié)果。這里的4個有符號數(shù)乘法器都會在編譯時自動地配置到Stratix器件的嵌入式DSP模塊上去。?

?

?

2.3 總體控制模塊" title="控制模塊">控制模塊和接口部分?

2.3.1 總體控制模塊?

??? 系統(tǒng)上電后,FPGA內(nèi)部各模塊都處于運行狀態(tài),各個模塊相互連接,各自有運行時序,所以為了保證各模塊依次先后運作,并得出正確的結(jié)果,就需要一個指揮控制模塊對各模塊進行準(zhǔn)確的控制。這里采用兩個工作在80MHz和40MHz時鐘下的主從計數(shù)器對相關(guān)部分和希爾波特變換部分各模塊進行控制。在一個樣點間隔內(nèi),根據(jù)計數(shù)器不同的計數(shù)值,利用不同的組合邏輯電路產(chǎn)生各個模塊的使能、清零等信號,保證各模塊在正確的時序下運行。為了提高FPGA處理的效率,希爾波特變換部分和相關(guān)部分實際上是并行工作的。在同一個樣點間隔時間內(nèi),希爾波特變換部分處理的是當(dāng)前輸入的樣點數(shù)據(jù),而相關(guān)部分是在處理上一個樣點間隔內(nèi)希爾波特變換部分輸出的結(jié)果。這兩部分之間之所以能夠進行相互協(xié)調(diào)和并行運行,就是由于有來自總體控制模塊的各種控制信息。?

2.3.2 接口部分?

??? FPGA有兩個接口,一個與A/D接口,另一個與DSP接口。在與A/D的接口部分中,有三個輸入端data_in、FS和SLCK,data_in用來串行輸入A/D轉(zhuǎn)換來的樣點值;FS為幀同步信號,它在輸入到FPGA后用來驅(qū)動FPGA內(nèi)部的總體控制模塊;SCLK為移位時鐘,它控制A/D與FPGA之間數(shù)據(jù)串行傳輸?shù)囊莆?。在與DSP的接口部分中,data_out[15..0]用來輸出FPGA運算的結(jié)果,與DSP的數(shù)據(jù)總線掛接在一起,在FPGA內(nèi)部設(shè)置一個三態(tài)門,開門信號就是FPGA的片選信號CE。當(dāng)CE不選通的時候,三態(tài)門輸出為高阻狀態(tài),不會影響DSP的數(shù)據(jù)總線。在每一個樣點間隔的時間內(nèi),FPGA運算出相關(guān)值的實部和虛部,將它們分別鎖存在四個16bit鎖存器中,并將與DSP相連的data_ready信號置高電平,表示數(shù)據(jù)已經(jīng)準(zhǔn)備好。DSP檢測到data_ready為高后會進行讀操作,用地址總線的高幾位產(chǎn)生出片選信號將FPGA選通,通過地址總線的低兩位A0、A1來選擇四個鎖存器的其中一個,依次讀取實部和虛部兩個32位數(shù)的高16位和低16位。FPGA內(nèi)部會對DSP的讀操作計數(shù),確認數(shù)據(jù)分四次讀出后,則將data_ready置低,直到下一次運算完畢后再抬高。?

3 仿真和校驗?

??? 各子模塊設(shè)計好后,可以用圖形方式或文本方式將各個模塊連接起來,對頂層設(shè)計進行編譯。這里選用的是Stratix系列中容量最小的一種:EP1S10F780C7,編譯后產(chǎn)生的編譯報告如圖5所示。?

?

?

??? 無論是片內(nèi)邏輯單元、片內(nèi)RAM還是DSP嵌入塊,所選的EP1S10F780C7芯片都還有相當(dāng)一部分余量。但是,如果是選用其它系列的芯片,沒有嵌入式的DSP模塊,最后其所占用的片內(nèi)邏輯單元會遠不止這么多。?

??? 編譯完成后即可進行仿真和校驗,這部分可分為三個過程。對于同一塊數(shù)據(jù),先在Quartus下進行仿真,產(chǎn)生出一系列相關(guān)值。然后在MATLAB環(huán)境下利用其繪圖方便的特性,完全按照FPGA中各模塊處理數(shù)據(jù)的方法,編一段程序?qū)?shù)據(jù)進行處理,并畫出處理結(jié)果的圖形,如圖6所示。理論上其處理結(jié)果應(yīng)和Quartus的仿真結(jié)果完全一樣,實際比較得出兩者確實完全一樣。最后在MATLAB中從理論上運用純軟件的方法編一段程序,對數(shù)據(jù)進行處理,并畫出處理后的相關(guān)峰圖,如圖7所示。?

?

?

?

??? 可以比較出這兩種圖形所顯示的相關(guān)峰的幅度與相對位置都基本一致。這就說明用FPGA對數(shù)據(jù)進行處理的結(jié)果和理論方法的處理結(jié)果是吻合的,這也就驗證了FPAG設(shè)計的正確性。由于FPGA所進行的只是初相關(guān),所以圖7顯示的相關(guān)峰幅度不大,數(shù)據(jù)送到DSP后要進行二次相關(guān)等處理,然后用于信號的捕獲和同步。?

??? 本文闡述了短波擴頻通信系統(tǒng)中用于信號同步捕獲的數(shù)字相關(guān)器的FPGA實現(xiàn),并對所選的Stratix系列器件進行了介紹。在384kbps的采樣速率下,由外部提供40MHz的時鐘,此相關(guān)器工作性能穩(wěn)定,運算結(jié)果正確,能很好地配合DSP工作,完成對樣點數(shù)據(jù)的希爾波特變換和相關(guān)處理。?

參考文獻?

1 褚振勇,翁木云.FPGA設(shè)計及應(yīng)用.西安:西安電子科技大學(xué)出版社,2002?

2 宋萬杰,羅 豐,吳順君.CPLD技術(shù)及其應(yīng)用.西安:西安電子科技大學(xué)出版社,2000?

3 王念旭.DSP基礎(chǔ)與應(yīng)用系統(tǒng)設(shè)計.北京:北京航空航天大學(xué)出版社,2001?

4 陳雪松,騰立中.VHDL入門與應(yīng)用.北京:人民郵電出版社,2000

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。