四川職業技術學院 謝大川 李海兵
移頻鍵控(FSK)是數字信息傳輸中使用較早的一種調制形式,它由于其抗干擾及衰落性較好且技術容易實現,因而在集散式工業控制系統中被廣泛采用。以往的鍵控移頻調制解調器采用“固定功能集成電路+連線”方式設計;集成塊多,連線復雜,容易出錯,且體積較大,本設計采用Lattice公司的FPGA芯片,有效地縮小了系統的體積,降低了成本,增加了可靠性,同時系統采用VHDL-87語言進行設計,具有良好的可移植性及產品升級的系統性。
在二進制頻移鍵控中載波頻率隨著調制信號1或者0而變,1對應于載波頻率f1(或者w1),0對應于載波頻率f2(或者w2),二進制頻移鍵控已調信號的時域表達式為:

2FSK信號波形可以看作兩個2ASK信號波形的合成。圖1是相位續的2FSK信號波形。
首先我們設置了一個輸入電平判斷器,能夠通過不同的輸入電平值啟動不同的輸出端口,調制流程圖見圖2。
然后根據FSK的特點我們分別設置兩個計數器:計數器1和計數器2,其中計數器2的進位頻率為計數器1的進位頻率的2倍,通過計數器的進位端控制正弦信號發生器的輸出頻率,這樣我們可以通過對兩個計數器的切換實現對輸出正弦信號頻率的控制.
首先設計輸入電平判斷器:輸入電平判決器共有一個輸入和兩個輸出端口,根據輸入端口電平高低的不同對兩個不同的輸出口置高電平,其中當某一端口為高電平時另一端口必為低電平,可以設計程序如下:

其中din為輸入電平端口用于和輸入信號相連,dout1和dout2是輸出電平端口,用于和下一級電路元件級連作為控制。
其次我們再設計用于調控輸出頻率的兩個計數器。根據2FSK的特點輸出的正弦波應該有兩個不同的頻率,因此我們需要兩個計數器并且兩個輸出頻率不能相同。采用quartuesII帶有的宏功能模塊分別設計兩個計數器其中一個為8位一個為7位。在相同的記數時鐘的激勵下他們的最高位的跳變頻率不相同,這樣就實現了頻分的目的。具體實現如圖2。
其中P1為計數器1,采用同步清零方式,它的計數周期為:時鐘頻率/2的8次方,在此我們采用輸出端的最高位即第7位與下級電路相連作為下級電路的輸入頻率。并且該頻率作為“1”碼的輸出頻率.
P2為計數器2,采用同步清零方式,它的計數周期為:時鐘頻率/2的7次方。在此我們采用輸出端的最高位即第6位與下級電路相連作為下級的的輸入頻率,并且該頻率作為“0”碼的輸出頻率。
我們將判決器的“1”電平輸出口與計數器P1計數使能端相連,取反和計數器本身的進位信號“相與”后接入計數器的同步清零端,當輸入電平為“1”碼時計數器P1開始工作;當輸入電平為“0”碼時計數器P1不工作并且通過相關的連接方式將計數器P1的輸出相位置零保證每次“1”碼重新到來是的相位能從固定值開始。
我們將判決器的“0”電平輸出口與計數器P2計數使能端相連,取反和計數器本身的進位信號“相與”后接入計數器的同步清零端,當輸入電平為“0”碼時計數器P2開始工作;當輸入電平為“1”碼時計數器P2不工作并且通過相關的連接方式將計數器P2的輸出相位置零保證每次“0”碼重新到來是的相位能從固定值開始。
最后設計正弦信號的發生器分兩步驟:首先設計一個地址發生器。采用計數器實現我們設計了一個采用同步清零6位的計數器利用計數器的6位輸出端作為地址控制正弦信號的ROM,圖4為調制部分信號輸出實現圖。
采用VHDL語言方式實現ROM文件程序思路如下:
with addr(地址信號名)select
data(輸出數據端口名)<=“11111111”(輸出數據)when“000000”(地址信號),通過編譯仿真得到仿真波形圖如圖5。
從仿真圖形上可以看到“1”碼信號在調制后產生的正弦波信號頻率是“0”碼信號在調制后產生的正弦波信號頻率的1/2。符合調制要求。
解調過程主要是通過過零點檢測實現:其基本原理是根據頻移鍵控的過零率的大小來檢測已調的信號中頻率的變化。
從圖6中可以看出在同樣的時間內,傳“0”碼中出現“0”的個數為傳“1”碼的兩倍,由此我們可以通過在相同的時間段內判斷碼形為“0”的次數判斷其為“0”碼還是“1”碼,圖7為解調流程圖。
首先我們設計一個過零點計數器pq,該計數器的功能是在輸入的正弦信號全為“0”時計數值自動加1,相關程序要點如下:.

圖1 2FSK波形

圖2 調制流程圖

圖3 調制部分地址產生電路實現圖

圖4 調制部分信號輸出實現圖

圖5 調制模塊仿真圖

圖6 兩種傳輸波形的比較


圖7 解調流程圖

圖8 解調部分實現圖

圖9 解調部分方針圖

其中din[7..0]是8位正弦信號的輸入口,reset為清零端,dout[3..0]為過零點計數值輸出端。
接下來我們設計一個數值判決器,用于判決過零點的數目根據數目的不同分別譯出高低電平從而實現解調的目的。程序要點如下:


其中sin1[3..0]為過零點數目輸入端,res為清零端,sout為解調信號輸出端。
當res信號的“0”到“1”跳變到來時,將過零點計數器送來的過零點數目進行比較。當過零點數目大于等于2是判斷為低電平,反之判斷為高電平。從而實現解調。
另外為了提高準確性實現在單位時間內進行過零點數目的比較,我們還應該在設置一個計數器采用同步清零方式,利用它的進位端信號作為過零點計數器和數值判決器的reset和res信號這就保證了在固定的時間內測量過零點的數目。
具體實現電路如圖8。
通過編譯和仿真得到波形圖9。
從波形圖我們可以看出:在兩次判決時間點上根據輸入信號的不同,解調信號分別為“1”和“0”。從而實現了解調功能。
根據我們以上的試驗可以得出采用FSK調制方式能很好的傳輸信號。另外根據需要調整輸入時鐘,以可以獲得不同頻率的載波,從而克服來自外界的干擾實現各種遠距離信號傳輸。
[1]曹志剛,錢亞生.現代通信原理[M].清華大學出版社,1992.
[2]劉篤仁,楊萬海.在系統可編程技術及其器件原理與應用[M].西安電子科技大學出版社,2000.
[3]黃智偉.FPGA系統設計與實踐[M].電子工業出版社,2005.
[4]黃繼業,潘松.EDA技術實用教程[M].科學出版社,2002.
[5]黃正瑾.可編程邏輯擊鍵設計[M].復旦大學出版社,1997.
[6][美]UWE MEY.數字信號處理的FPGA實現[M].