摘要:介紹了MSK信號的優(yōu)點,并分析了其實現(xiàn)原理,提出一種MSK高性能數(shù)字調制器的FPGA實現(xiàn)方案;采用自頂向下的設計思想,將系統(tǒng)分成串/并變換器、差分編碼器、數(shù)控振蕩器、移相器、乘法電路和加法電路等6大模塊,重點論述了串/并變換、差分編碼、數(shù)控振蕩器的實現(xiàn),用原理圖輸入、VHDL語言設計相結合的多種設計方法,分別實現(xiàn)了各模塊的具體設計,并給出了其在QuartusII環(huán)境下的仿真結果。結果表明,基于FPGA的MSK調制器,設計簡單,便于修改和調試,性能穩(wěn)定。
關鍵詞:MSK;FPGA;差分編碼器;數(shù)控振蕩器
在QPSK調制技術中,假定每個符號的包絡都是矩形,已調信號的包絡是恒定的,此時無論基帶信號還是已調信號其頻譜都是無限的。但是實際的信道總是有一定的帶寬的,因此在發(fā)送QIXSK信號時通常要通過帶通濾波器進行限帶。限帶后的信號已經(jīng)不能再保持包絡恒定,相鄰符號間發(fā)生相移時,限帶后包絡會明顯變小,甚至出現(xiàn)包絡為0的現(xiàn)象。這種現(xiàn)象在非線性信道中是不希望出現(xiàn)的,雖然經(jīng)過非線性放大器能夠減弱包絡起伏,但是這樣卻使信號的頻譜擴展,其旁瓣會干擾鄰近頻道的信號,造成限帶時的帶通濾波器失去作用。
正是為了解決這個問題,我們引入了在非線性限帶信道中使用的恒包絡調制方法——最小移頻鍵控(MSK)調制技術。
1 實現(xiàn)原理
MSK就是一種能產(chǎn)生恒定包絡、連續(xù)相位信號的調制方式。它是二進制連續(xù)相位移頻鍵控(CPFSK)的一種特殊情況,即調制指數(shù)(移頻系數(shù))h=0.5,相位在碼元轉換時刻是連續(xù)的。MSK信號可表示為:
式中,φk(t)為附加相位函數(shù),假設初始相位為φk(0);ωc為載波角頻率;Ts為碼元間隔;為頻偏;φk為第k個碼元中的相位常數(shù);ak為第k個碼元數(shù)據(jù);ak取值為±1。這表明,MSK信號的相位是分段線性變化的,同時在碼元轉換時刻相位仍是連續(xù)的,所以有:
由式(5)和MSK相位網(wǎng)格圖可看出,φk為截矩,其值為π的整數(shù)倍,利用三角等式并注意到sinφk=0,有:
根據(jù)以上分析,可以得出MSK調制器的框圖如圖1所示。
2 主要模塊的FPGA實現(xiàn)
2.1 串/并轉換的實現(xiàn)
順序輸入的二進制信息經(jīng)過串/并變換器,變換成速率減半的雙比特序列,可采用兩個D觸發(fā)器來實現(xiàn),其原理如圖2所示。其中DFFin st和DFFinst3構成一個兩位移位寄存器,將串行輸入信號變成并行輸出信號:DFFinst4和NOTinst8構成二分頻器,實現(xiàn)速率減半;DFFinst1和DFFinst2為鎖存器,使信號同步輸出。圖3為串/并變換器S_P的仿真結果,其中AB為變換后的雙比特碼元。由圖可以看出,當輸入DataAB為01010101時,在延時約80 ns后,輸出DataA為0000,DataB為1111。
2.2 差分編碼器的實現(xiàn)
差分編碼器的功能就是實現(xiàn)絕對碼變換為相對碼,在相碼中,1、0分別用相鄰碼元電平是否發(fā)生跳變來表示。若用相鄰電平發(fā)生跳變來表示碼元1,則稱為傳號差分碼,記做NRZ碼。絕對碼-相對碼之間的關系為:bk=ak⊕bk-1 (7)
采用VHDL設計的主體代碼如下:
經(jīng)編譯后生成元件,其波形仿真圖如圖4所示,由圖可以得到:當start為低電平時,兩路輸出信號都為0;當start信號為高電平時,對輸入信號(datain_a)有:datain_a=011111111001,此時dataout_a=010101010001,對輸入信號(datain_b)有:datain_b=011110111101,此時Dataout_b=010100101001,由此可以得出,元件QDSP_PL實現(xiàn)了由絕對碼到相對碼的變換。
2.3 NCO的實現(xiàn)
2.3.1 NCO的實現(xiàn)原理
數(shù)控振蕩器在數(shù)字中頻中相對來說是比較復雜的,也是決定數(shù)字中頻性能的主要因素之一,NCO的目標是產(chǎn)生一個理想的正弦波或余弦波,如式(8)。
式中,fL0為本地振蕩頻率;fs為輸入信號的采樣頻率。正弦波樣本可以用實時計算的方法產(chǎn)生,但這只適用于信號采樣頻率很低的情況。在超高速的信號采樣頻率的情況下,NCO實時計算的方法是不可能實現(xiàn)的,此時,NCO產(chǎn)生正弦波樣本的最有效、最簡便的方法就是查表法,即事先根據(jù)不同正弦波相位計算好相應的正弦值,并按相位角度作為地址存儲相應的正弦值數(shù)據(jù),工作時,在每輸入一個信號采樣樣本時,NCO就增加一個的相位增量,然后,按照相位累加角度作為地址,取出該地址上的數(shù)值并輸出到數(shù)字混頻器,與信號樣本相乘,其原理框圖如圖5所示。通過改變頻率控制字,可以改變相位累加器的累加值,從而改變尋址的步進,實現(xiàn)不同的頻率輸出。
2.3.2 相位累加器的FPGA實現(xiàn)
相位累加器由N位加法器與N位寄存器級聯(lián)構成。每來一個時鐘fc,加法器將頻率控制字K與寄存器輸出的累加相位數(shù)據(jù)相加,再把相加后的結果送至寄存器的數(shù)據(jù)輸入端。相位累加器輸出的數(shù)據(jù)就是合成信號的相位,當相位累加器累加到最大值時會產(chǎn)生一次溢出,完成一個周期的動作。溢出頻率就是NCO輸出的信號頻率??捎肰HDL語言實現(xiàn)相位累加器的設計,其主要代碼如下:
8位相位累加器的仿真波形如圖6所示。由波形圖可以看出,當k=08時,在每一個有效脈沖的作用下,輸出的數(shù)值比前一個輸出的數(shù)值大8;當k=09時,輸出的數(shù)值比前一個輸出的數(shù)值大9;結果證明,該程序實現(xiàn)了相位的累加。
2.3.3 正弦ROM表的FPGA實現(xiàn)
用相位累加器輸出的數(shù)據(jù)作為波形存儲器的取樣地址,完成相位序列(相位碼)向幅度序列(幅度碼)的轉換。這里用ROM構造一個查找表。N位的尋址ROM相當于把一個周期的正弦波形信號離散成具有2N個幅值的序列,若波形ROM有D位數(shù)據(jù)位,則2N個幅值以D位二進制數(shù)值固化在FPGA的ROM中,按照給定地址的不同可以輸出相應相位的正弦信號的幅度編碼。
本文ROM表采用64個采樣點。其波形仿真如圖圖7所示,從圖中可以看出,地址位從00H變化到20H時,輸出信號值從FFH變到00H,正好為正弦波的四分之一個周期,結果證明:通過查詢該ROM表,可以生成不同頻率的正弦波。
把上述各部分所生的symbol在QuartusII7.2提供的BlockDiagram/SchematicFile中用Graphic Editor編輯連接起來,就形成了圖1的虛線所示的部分,編譯后進行整體模塊仿真,經(jīng)過器件編程,可將整體模塊程序燒寫到合適的FPGA芯片中,再配以相應的D/A器件及其他外圍電路,調試后即完成設計。
3 結束語
用FPGA來實現(xiàn)MSK信號調制器,電路簡單,設計靈活,便于修改和調試,可靠性高。特別是對數(shù)控振蕩器的設計,正弦函數(shù)的ROM表格,直接采用VHDL的CASE語句實現(xiàn),避免了調用ROM塊,降低了系統(tǒng)的設計規(guī)模,減少了系統(tǒng)對邏輯資料的需求;另外Altera公司的QuatusII7.2 應用軟件具有較強大的開放性和綜合性,它可以利用其它各種EDA資源以及先進的設計方法,使其功能更加完善和強大。它可以實現(xiàn)從簡單的接口電路設計到復雜的狀態(tài)機,甚至“Sys-temon Chip”。它的可編程特性帶來了電路設計的靈活性,縮短了產(chǎn)品的“Time ToMarket”。