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