DS/FH混合擴(kuò)頻接收機(jī)解擴(kuò)及同步技術(shù)FPGA實(shí)現(xiàn)
DS/FH混合擴(kuò)頻通信系統(tǒng)中,需要數(shù)字下變頻器、相關(guān)累加器及碼發(fā)生器等完成下變頻、相關(guān)解擴(kuò)等運(yùn)算。通常采用專用芯片來(lái)完成這些功能,導(dǎo)致系統(tǒng)體積增大?不便于小型化?,F(xiàn)代的EDA(電子設(shè)計(jì)自動(dòng)化)工具已突破了早期僅能進(jìn)行PCB版圖設(shè)計(jì)或電路功能模擬、純軟件范圍的局限,以最終實(shí)現(xiàn)可靠的硬件系統(tǒng)為目標(biāo),配備了系統(tǒng)自動(dòng)設(shè)計(jì)的全部工具,如各種常用的硬件描述語(yǔ)言平臺(tái)VHDL、Verilog HDL、AHDL等;配置了多種能兼容和混合使用的邏輯描述輸入工具,如硬件描述語(yǔ)言文本輸入法(其中包括布爾方程描述方式、原理圖描述方式、狀態(tài)圖描述方式等)以及原理圖輸入法、波形輸入法等;同時(shí)還配置了高性能的邏輯綜合、優(yōu)化和仿真模擬工具。FPGA是在PAL、GAL等邏輯器件的基礎(chǔ)上發(fā)展起來(lái)的。與PAL、GAL等相比較,F(xiàn)PGA的規(guī)模大,更適合于時(shí)序、組合等邏輯電路應(yīng)用場(chǎng)合,它可以替代幾十甚至上百塊通用IC芯片。FPGA具有可編程性和設(shè)計(jì)方案容易改動(dòng)等特點(diǎn),芯片內(nèi)部硬件連接關(guān)系的描述可以存放在下載芯片中,因而在可編程門陣列芯片及外圍電路保持不動(dòng)的情況下,更換下載芯片,就能實(shí)現(xiàn)新的功能。FPGA芯片及其開發(fā)系統(tǒng)問世不久,就受到世界范圍內(nèi)電子工程設(shè)計(jì)人員的廣泛關(guān)注和普遍歡迎[1~5]。本文主要討論一種基于編碼擴(kuò)頻的DS/FH混合擴(kuò)頻接收機(jī)解擴(kuò)及同步過程的實(shí)現(xiàn)結(jié)構(gòu),采用ALTERA公司的APEX20K200RC240-1器件及其開發(fā)平臺(tái)Quartus II實(shí)現(xiàn)混合擴(kuò)頻接收機(jī)的核心--解擴(kuò)及同步模塊。
1 混合擴(kuò)頻接收機(jī)解擴(kuò)模塊的FPAG設(shè)計(jì)
解擴(kuò)模塊是混合擴(kuò)頻接收機(jī)的核心。該模塊實(shí)現(xiàn)對(duì)接收信號(hào)的解擴(kuò)處理,主要包括數(shù)字下變頻器、數(shù)控振蕩器(NCO)、碼發(fā)生器、相關(guān)累加器和偽碼移相電路等,通常各模塊采用專用芯片。利用FPGA將這些功能集成在一塊芯片中,大大縮小了接收機(jī)的體積,便于實(shí)現(xiàn)系統(tǒng)的小型化和集成化。下面分別介紹該模塊各部分的FPGA實(shí)現(xiàn)結(jié)構(gòu)。
1.1 數(shù)控振蕩器(NCO)
數(shù)控振蕩器是解擴(kuò)模塊中的重要組成部分,主要用于為碼發(fā)生器提供精確的時(shí)鐘信號(hào),從而實(shí)現(xiàn)對(duì)接收信號(hào)的捕獲和跟蹤。碼發(fā)生器由相位累加器和查找表構(gòu)成。若使用字長(zhǎng)為40位寬的累加器,對(duì)于某一頻率控制字A,輸出頻率fout與輸入頻率控制字A的關(guān)系為:
fout=fclkA/240
其中,fclk為系統(tǒng)時(shí)鐘。只要改變控制字A的大小,就可以控制輸出頻率fout。fout變化的最小步長(zhǎng)Δf由累加器的數(shù)據(jù)寬度決定。若數(shù)據(jù)寬度取40位,則:
Δf=fclk/240
利用上述原理,可以通過精確分頻得到所需頻率。原理圖如圖1所示。
圖1中頻率控制字A由DSP寫入??紤]到FPGA內(nèi)部存儲(chǔ)資源限制,取40位相位累加值result[39..0]的高八位作為查找表LUT(look-up table)的輸入,查找表由ROM構(gòu)成,存儲(chǔ)各相位所對(duì)應(yīng)采樣值。當(dāng)查找表輸入端為某一相位phase時(shí),則輸出對(duì)應(yīng)采樣值。若輸出數(shù)據(jù)寬度為6位,輸出信號(hào)格式為余弦信號(hào),則LUT輸出為[6]:
out[5..0]=31×cos(360×(phase+0.5)/256)°+32
若取ROM的并行6位out[5..0]作為輸出,則輸出信號(hào)為每周期采樣256點(diǎn)的數(shù)字化余弦信號(hào);如果取最高位out[5]作為輸出,則輸出為系統(tǒng)時(shí)鐘的分頻信號(hào)。
1.2 數(shù)字下變頻器
數(shù)字下變頻器將A/D采樣得到的中頻信號(hào)進(jìn)行下變頻處理,去除中頻,得到基帶信號(hào)。利用本地NCO產(chǎn)生與輸入中頻信號(hào)頻率相同的正弦和余弦信號(hào),并與輸入信號(hào)進(jìn)行復(fù)乘法運(yùn)算,然后對(duì)運(yùn)算結(jié)果做低通濾波,即可完成對(duì)中頻信號(hào)的下變頻操作。正交采樣模式下,兩路A/D轉(zhuǎn)換器提供正交輸入IIN及QIN,數(shù)字下變頻器的復(fù)乘法器輸出IOUT、QOUT為:
IOUT=IINcos(ωt)-QINsin(ωt)
QOUT=IINsin(ωt)+QINcos(ωt)
本振信號(hào)、復(fù)乘法器、低通濾波器均采用數(shù)字化設(shè)計(jì)。數(shù)字下變頻器采用ALTERA公司的APEX20K200RC240-1器件。該器件典型門數(shù)為20萬(wàn),有豐富的邏輯單元和RAM單元,開發(fā)平臺(tái)Quartus II 自帶的宏模塊,如lpm_mult(乘法器宏模塊)、lpm_rom(ROM宏模塊)、lpm_add_sub(加法器宏模塊)等,給設(shè)計(jì)帶來(lái)了極大的方便。數(shù)字下變頻器原理圖如圖2所示。
圖2中的數(shù)字表示相應(yīng)模塊的數(shù)據(jù)寬度。濾波模塊是1個(gè)二階的低通濾波器,濾除混頻后的高頻分量。在一些專用的數(shù)字下變頻器件如STEL-2130中,濾波器的階數(shù)是可編程的,可以根據(jù)需要設(shè)置不同的階數(shù),從而得到不同的濾波效果??紤]到FPGA的資源問題,設(shè)置濾波器的階數(shù)為固定的二階。濾波器輸入x[n]與輸出y[n]關(guān)系為:
y[n]=x[n]+x[n-1]
y[n-1]=x[n-2]+x[n-3]
該低通濾波器將相鄰的兩個(gè)輸入數(shù)據(jù)相加后作為輸出,即每?jī)蓚€(gè)輸入數(shù)據(jù)對(duì)應(yīng)一個(gè)輸出數(shù)據(jù),輸入數(shù)據(jù)時(shí)鐘節(jié)拍為輸出數(shù)據(jù)時(shí)鐘節(jié)拍的2倍。
經(jīng)過低通濾波后的數(shù)據(jù)經(jīng)過滑動(dòng)窗處理,滑動(dòng)窗對(duì)輸入數(shù)據(jù)進(jìn)行選擇輸出,用來(lái)動(dòng)態(tài)調(diào)整相關(guān)峰的大小。在捕獲過程中觀察相關(guān)峰值時(shí),通過調(diào)整滑動(dòng)窗口,可以獲得不同幅度的相關(guān)峰值。選擇控制端由DSP寫控制字來(lái)決定,結(jié)構(gòu)如圖3所示?;瑒?dòng)窗控制邏輯關(guān)系為:
CASE sel[] IS
WHEN 0=> dataout =datain[7..0];?
WHEN 1=> dataout =datain[8..1];?
WHEN 2=> dataout =datain[9..2];?
WHEN 3=> dataout =datain[10..3];?
WHEN 4=> dataout =datain[11..4];?
WHEN 5=> dataout =datain[12..5];?
WHEN OTHERS => dataout =datain[12..5];?
符號(hào)擴(kuò)展是為了與后面的相關(guān)累加器數(shù)據(jù)寬度保持一致,符號(hào)位擴(kuò)展時(shí)需與輸入數(shù)據(jù)最高位的符號(hào)保持一致。
1.3 相關(guān)累加器
相關(guān)累加器完成本地偽碼與接收信號(hào)的相關(guān)累加運(yùn)算,運(yùn)算得到的結(jié)果送入DSP完成偽碼的捕獲和跟蹤。取偽碼長(zhǎng)度為256位,采用半碼片滑動(dòng),則一個(gè)碼周期完成512次累加運(yùn)算。如采用串行滑動(dòng)相關(guān)捕獲方式,則遍歷所有的碼相位所需要的時(shí)間為512個(gè)碼周期,即捕獲所需要的最長(zhǎng)時(shí)間為512個(gè)PN碼周期。由于可編程邏輯器件的發(fā)展,使得有足夠的硬件資源來(lái)完成并行運(yùn)算。此處采用串/并混合的捕獲方式[6][7],采用8路相關(guān)累加器,每一路分為超前、當(dāng)前、滯后3組,每組相差半個(gè)碼片的相位,每一路相差64個(gè)半碼片的相位。這樣,只需滑動(dòng)64個(gè)半碼片相位就可以遍歷所有的偽碼相位,完成捕獲所需時(shí)間縮短為原來(lái)的八分之一。數(shù)據(jù)解調(diào)由另外4組相關(guān)累加器完成。由于發(fā)射端同步偽碼與數(shù)據(jù)偽碼相位嚴(yán)格對(duì)齊,所以在接收模塊中,完成同步偽碼捕獲跟蹤后,直接將所獲得的相位信息用于數(shù)據(jù)解調(diào)相關(guān)器,即可正確解調(diào)數(shù)據(jù)。
同步偽碼的跟蹤采用超前-滯后延遲鎖相環(huán)路(DPLL),每一路相關(guān)器包括3組累加器。捕獲跟蹤及數(shù)據(jù)解調(diào)共使用28組相關(guān)累加器,每一組相關(guān)累加器結(jié)構(gòu)都是完全一樣的,均分為I、Q兩路,分別進(jìn)行累加運(yùn)算,完成512次累加運(yùn)算后由DSP讀取數(shù)據(jù)。I、Q兩路結(jié)構(gòu)完全相同,其中一路的原理圖如圖4所示。
相關(guān)累加器由18位加減法器、鎖存器1和鎖存器2組成,data[7..0]為下變頻后的輸入數(shù)據(jù),PN CODE來(lái)自碼發(fā)生器。作為控制端,低電平完成加運(yùn)算,高電平完成減運(yùn)算,DP上升沿進(jìn)行數(shù)據(jù)鎖存,下降沿完成一次累加運(yùn)算。當(dāng)累加運(yùn)算完成后,由CLR信號(hào)清零并將結(jié)果存入鎖存器2,CLR下降沿有效。鎖存器1輸出OV信號(hào)作為溢出標(biāo)志位,鎖存器2輸出累加結(jié)果out[16..0]。輸入與輸出端的最高位為符號(hào)位。
1.4 本地碼發(fā)生器及碼移相電路
本地碼發(fā)生器用于產(chǎn)生本地PN碼,從而與接收信號(hào)進(jìn)行相關(guān)運(yùn)算。由于發(fā)送端采用編碼擴(kuò)頻調(diào)制方式,接收信號(hào)中既有同步PN碼,還有數(shù)據(jù)PN碼,與接收信號(hào)相對(duì)應(yīng),本地也應(yīng)該產(chǎn)生相應(yīng)的PN碼,用于同步及解調(diào)數(shù)據(jù)。
本地PN碼發(fā)生器全部采用FPGA實(shí)現(xiàn),并且設(shè)置了可編程寄存器和外部接口,DSP通過接口可預(yù)置PN碼長(zhǎng)度。1024進(jìn)制計(jì)數(shù)器電路用于產(chǎn)生ROM的輸入地址,ROM由FPGA內(nèi)部RAM資源來(lái)實(shí)現(xiàn),采用ALTERA公司APEX20K200器件。該器件內(nèi)部可編程RAM容量為106496位,完全可以滿足設(shè)計(jì)需求。本地PN碼采用半碼片滑動(dòng)方式,ROM內(nèi)部PN碼也以半碼片方式存儲(chǔ)。如碼長(zhǎng)為256,采用半碼片存儲(chǔ)方式后,每一組PN碼需存儲(chǔ)512位數(shù)據(jù),相應(yīng)的ROM有9位地址線驅(qū)動(dòng)輸出。驅(qū)動(dòng)時(shí)鐘為PN碼時(shí)鐘的2倍。在實(shí)際設(shè)計(jì)時(shí),PN碼發(fā)生器內(nèi)存放了8組PN碼,但只用了五組,一組用于同步,另外四組用于解調(diào)數(shù)據(jù)。ROM輸入地址由1024進(jìn)制計(jì)數(shù)器產(chǎn)生,實(shí)際上只需用512進(jìn)制計(jì)數(shù)器即可得到ROM輸入地址??紤]到可擴(kuò)展性,這里采用了計(jì)數(shù)容量最大為1024的可變計(jì)數(shù)器。由DSP通過DSP-FPGA接口改寫寄存器值,可以很方便地調(diào)整PN碼的輸出相位。
偽碼移位電路的主要作用是將碼發(fā)生器產(chǎn)生的PN碼進(jìn)行移位操作,從而得到偽碼的不同相位。捕獲和跟蹤過程共使用了8路24組相關(guān)累加器,每一路分為超前、當(dāng)前、滯后3組,這3組累加器輸入端PN碼相差半個(gè)碼片的相位,8路相關(guān)累加器中每相鄰兩路相差64個(gè)半碼片。碼發(fā)生器輸出5組PN碼序列(第0組~第4組),分別對(duì)應(yīng)同步偽碼及4組數(shù)據(jù)偽碼。5組偽碼均經(jīng)過512級(jí)移位寄存器,第0組PN碼作為同步碼,取其0、1、2相位作為第一路的超前、當(dāng)前、滯后3組相關(guān)累加器的輸入;64、65、66相位作為第二路的超前、當(dāng)前、滯后3組相關(guān)累加器的輸入,其余各路依此類推。當(dāng)完成捕獲后,需要將捕獲所得的同步PN相位切換到數(shù)據(jù)解調(diào)相關(guān)累加器中。例如,假設(shè)在第二組相關(guān)累加器的當(dāng)前通道捕獲,那么此時(shí)解調(diào)數(shù)據(jù)用的相關(guān)累加器的PN碼相位就應(yīng)該與第二組相關(guān)累加器當(dāng)前通道的PN碼相位保持一致。數(shù)據(jù)偽碼相位切換的實(shí)現(xiàn)是由DSP記憶捕獲通道的相位,然后控制多路選擇開關(guān)選擇該相位。
2 同步模塊的FPGA實(shí)現(xiàn)
同步模塊由位同步及幀同步電路構(gòu)成,主要實(shí)現(xiàn)對(duì)信息數(shù)據(jù)的檢測(cè)和提取,并識(shí)別一幀信息數(shù)據(jù)的幀頭位置,實(shí)現(xiàn)跳頻圖案的同步。跳頻圖案的同步采用等待搜索同步法,開始時(shí)接收端頻率合成器停留在某一單頻點(diǎn)fi′,等待發(fā)射機(jī)的頻率fi,當(dāng)發(fā)射機(jī)的頻率跳變?yōu)閒i時(shí),接收端本地的頻率fi′與發(fā)送的頻率fi混頻后,輸出中頻fIF。DSP完成解擴(kuò)解調(diào)運(yùn)算后,得到的串行數(shù)據(jù)流送入位同步和幀同步電路,從數(shù)據(jù)流中提取出特征字,就可以獲得一幀完整的數(shù)據(jù),從而確定幀頭的位置,即頻率轉(zhuǎn)換時(shí)刻,由此控制接收端頻率合成器與發(fā)送端頻率合成器同步跳變,實(shí)現(xiàn)跳頻圖案的同步。由于采用編碼擴(kuò)頻調(diào)制方式,發(fā)送端每?jī)晌恍畔⒈忍卦谝粋€(gè)PN碼周期被編碼為4種PN碼中的一種。所以接收端在每一個(gè)PN碼周期,對(duì)4組數(shù)據(jù)相關(guān)累加器的累加結(jié)果進(jìn)行最大值比較,然后譯碼成相應(yīng)的信息數(shù)據(jù)。信息數(shù)據(jù)送到同步電路,進(jìn)行巴克碼匹配相關(guān),提取有效的信息位,并控制跳頻時(shí)序完成跳頻同步。同步模塊原理如圖5所示。
在每一個(gè)PN碼周期,4組數(shù)據(jù)解調(diào)相關(guān)累加器解調(diào)出2bit信息數(shù)據(jù)。2bit信息數(shù)據(jù)以9.6kHz的速率送到同步電路。同步電路首先將信息數(shù)據(jù)進(jìn)行并串轉(zhuǎn)換,由9.6kHz、2bit的數(shù)據(jù)流變換為19.2kHz、1bit的數(shù)據(jù)流,變換后的數(shù)據(jù)流再經(jīng)過串并變換,得到19.2kHz、32bit的并行數(shù)據(jù)流。根據(jù)信號(hào)格式,每一幀數(shù)據(jù)為32bit,相應(yīng)的13位巴克碼在一幀數(shù)據(jù)中的位置固定不變,所以提取每幀數(shù)據(jù)中相應(yīng)位置上的13位數(shù)據(jù)比特與本地巴克碼進(jìn)行相關(guān)匹配運(yùn)算,結(jié)果與門限值比較,如果符合門限設(shè)置,即有中斷輸出,通知外部設(shè)備讀取相應(yīng)數(shù)據(jù)。
3 實(shí)驗(yàn)結(jié)果
系統(tǒng)技術(shù)指標(biāo)為:信息數(shù)據(jù)速率4.8kbps,比特率19.2kbps。跳頻速率600hop/s,20個(gè)跳頻點(diǎn),跳頻帶寬68MHz,每跳32bit擴(kuò)頻碼周期為256,碼速率為4.9152MHz。用TEKTRONIX 2221A數(shù)字存儲(chǔ)示波器觀測(cè)實(shí)驗(yàn)結(jié)果。圖6~9為FPGA各測(cè)試點(diǎn)的測(cè)試結(jié)果。
圖6中第一組波形是256碼長(zhǎng)本地接收同步偽碼流,第二組為跳頻幀同步信號(hào),該信號(hào)對(duì)應(yīng)的偽碼相位即為解擴(kuò)、跳頻同步時(shí)的相位。圖7第一組波形為接收數(shù)據(jù)流,第二組波形為發(fā)射數(shù)據(jù)流,發(fā)射數(shù)據(jù)幀格式為00000000011111001101010000000000,幀同步碼為13位巴克碼1111100110101,8位信息數(shù)據(jù)為00000000。由圖7可以看出接收端數(shù)據(jù)與發(fā)射端相同,但滯后于發(fā)射端?這是由于傳輸時(shí)延造成的。圖8第一組波形為接收串行數(shù)據(jù),第二組為跳頻幀同步信號(hào),該信號(hào)下降沿對(duì)應(yīng)于一幀數(shù)據(jù)的起始,控制頻率合成器進(jìn)行頻率轉(zhuǎn)換。圖9第一組波形為發(fā)射跳頻幀信號(hào),第二組為接收幀同步信號(hào),接受幀信號(hào)上升沿與發(fā)射跳頻幀信號(hào)的下降沿對(duì)齊,信號(hào)寬度大于發(fā)射端信號(hào)。這是因?yàn)榭刂祁l率合成器進(jìn)行頻率轉(zhuǎn)換的updata信號(hào)需要一定寬度。
解擴(kuò)及同步是DS/FH混合擴(kuò)頻接收機(jī)正確數(shù)據(jù)解調(diào)的關(guān)鍵,采用FPGA設(shè)計(jì)實(shí)現(xiàn)了多片專用芯片的功能,大大縮小了接收機(jī)體積,便于系統(tǒng)實(shí)現(xiàn)小型化、集成化。捕獲及跳頻同步等算法采用硬件實(shí)現(xiàn),加快了捕獲跟蹤速度。FPGA的可編程性使電路的設(shè)計(jì)更具靈活性,并使系統(tǒng)具有"軟"接收機(jī)的特點(diǎn)。實(shí)驗(yàn)結(jié)果表明FPGA系統(tǒng)設(shè)計(jì)是正確可行的。