FSK調(diào)制
FSK是利用載波的頻率表示基帶信息,比如在2FSK系統(tǒng)中,采用單頻信號f1表示信息0、單頻信號f2表示信息1。根據(jù)碼元轉(zhuǎn)換時載波的相位是否連續(xù),分為非連續(xù)相位FSK和連續(xù)相位FSK,如下圖所示:
第三幅圖為連續(xù)相位FSK調(diào)制,也稱作CPFSK,可視作振蕩頻率隨基帶信號線性變化;第四幅圖為非連續(xù)相位FSK,在碼元轉(zhuǎn)換時有一個相位的跳變,可視作兩個ASK調(diào)制信號的疊加。
FSK的一個重要參數(shù)是頻移指數(shù)h=(f2-f1)*T,T為碼元周期。該參數(shù)影響著兩個單頻信號之間的相關(guān)系數(shù)ρ。ρ越小,越容易將兩個信號區(qū)分開,即解調(diào)系統(tǒng)的解調(diào)性能越好。h的幾個特殊取值如下:
當(dāng)h=0.715時,ρ可以取到最小值-2π/3;
當(dāng)h=kπ(k≥1)時,ρ為0,即兩信號正交;
當(dāng)h=N(整數(shù))時,F(xiàn)SK總是會體現(xiàn)出連續(xù)相位特性。
調(diào)制信號的頻譜與相位變化息息相關(guān),如果存在相位突變,信號頻譜寬度會擴(kuò)展(產(chǎn)生旁瓣)。CPFSK是一種恒包絡(luò)調(diào)制技術(shù),在碼元速率和h相同時,CPFSK比非連續(xù)相位的FSK主瓣寬度更窄,且旁瓣分量更小,通過限帶濾波后信號包絡(luò)起伏小,適合應(yīng)用于非線性信道。
MATLAB設(shè)計
MATLAB中可以按照FSK原理完成FSK調(diào)制,但是只能產(chǎn)生非連續(xù)相位的FSK調(diào)制信號(除非h=1)。如果想要產(chǎn)生連續(xù)相位的FSK調(diào)制信號,必須使用MATLAB提供的fskmod函數(shù),示例代碼如下:
上面將代表0和1兩個頻率之間的間隔直接設(shè)置為8,也可以根據(jù)頻移指數(shù)h的計算公式來設(shè)定。fskmod最后還可以增加一個參數(shù),默認(rèn)值為’cont’表示連續(xù)相位;’discont’表示非連續(xù)相位。
需要注意的是,老版本的MATLAB可能會用到randint函數(shù)產(chǎn)生隨機(jī)序列;而2017以后的版本只能使用randi函數(shù)。
FSK的FPGA設(shè)計
在Vivado開發(fā)環(huán)境下完成2FSK(非連續(xù)相位)調(diào)制技術(shù)的設(shè)計并進(jìn)行仿真,系統(tǒng)時鐘32Mhz,碼元速率1Mhz,載波頻率6Mhz,頻移指數(shù)h=3.5。模塊接口如下:
配置兩個DDS產(chǎn)生兩個代表1和0的單頻信號。f2-f1=h/T=3.5/1ns=3.5Mhz,則在6Mhz載波頻率的基礎(chǔ)上選擇4.25Mhz和7.75MHz。DDS Compiler IP核使用方法可參考https://blog.csdn.net/fpgadesigner/article/details/80512067。本設(shè)計將DDS的無雜散動態(tài)范圍設(shè)置為95dB,對應(yīng)的位寬為16bit。實(shí)例化代碼如下:
FSK調(diào)制信號的產(chǎn)生有兩種方法。第一種方法將FSK視作兩路ASK信號的合成(一路ASK有載波代表1,一路ASK無載波代表1),代碼如下:
采用此方法的系統(tǒng)原理圖如下:
可以看到一路ASK信號為din與f1的乘法,另一路信號為din取反后與f2的乘法,兩路加起來便得到FSK調(diào)制信號。另一種方法直接使用多路選擇器對輸入的基帶數(shù)據(jù)進(jìn)行判決輸出:
采用此方法的系統(tǒng)原理圖如下:
RTL_MUX即為多路選擇器,明顯第二種方法更加節(jié)省資源。
CPFSK的FPGA設(shè)計
連續(xù)相位的FSK調(diào)制信號產(chǎn)生可以借助DDS的特性,DDS的實(shí)現(xiàn)原理就使其輸出信號具有連續(xù)相位特性,即使頻率突然改變。配置一個DDS,Implementation->Phase Increment Programmability設(shè)置為Streaming,可以通過S_AXIS_PHASE接口動態(tài)配置DDS的輸出頻率。完整代碼如下:
DDS的頻率分辨率設(shè)置為976.5625Hz,正好對應(yīng)相位位寬為15Bits(Fs/2^B=32MHz/2^15=976.5625Hz)。因此f1=4.25MHz對應(yīng)的頻率控制字為4351(f1/976.5625-1=4351);f2=7.75MHz對應(yīng)的頻率控制字為7935(f2/976.5625-1=7935)。
代碼中根據(jù)輸入基帶的情況設(shè)定對應(yīng)的頻率控制字。可見CPFSK只需要使用一個DDS Compiler IP核即可,比FSK要節(jié)省不少資源。
仿真測試
編寫testbench,產(chǎn)生一個周期信號模擬二進(jìn)制基帶數(shù)據(jù)。首先仿真非連續(xù)相位的FSK:
可以明顯看到在碼元的跳變時刻FSK信號的相位有明顯的突變。再仿真CPFSK:
看到碼元跳變時刻FSK信號的相位仍保持連續(xù)變化。注意由于DDS有一定的Latency,導(dǎo)致上圖FSK信號相比基帶數(shù)據(jù)有一定的延遲。
Quartus環(huán)境下實(shí)現(xiàn)
Quartus中對應(yīng)的IP核為NCO,在產(chǎn)生FSK信號時與DDS用法基本相同;但在產(chǎn)生CPFSK信號時,NCO IP核有獨(dú)特的配置方式。
NCO的輸出頻率由phi_inc_i接口控制。需要使用FSK調(diào)制功能時,在Implementation標(biāo)簽下選中“Frequency Modulation Input”:
IP核會多出一個freq_mod_i接口,該接口的作用時在phi_inc_i輸出頻率的基礎(chǔ)上進(jìn)行調(diào)整。比如:頻率控制字位寬為25Bits,phi_inc_i輸出頻率6Mhz,系統(tǒng)時鐘32MHz,需要輸出f1=4.25Mhz,則freq_mod_i對應(yīng)的控制字為(4.25Mhz-6MHz)/(32Mhz/2^25)=-1835008。
根據(jù)基帶數(shù)據(jù)改變freq_mod_i接口的控制字即可實(shí)現(xiàn)CPFSK信號的產(chǎn)生。
原文標(biāo)題:FPGA學(xué)習(xí)-FSK調(diào)制技術(shù)
文章出處:【微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1643文章
21950瀏覽量
613743 -
matlab
+關(guān)注
關(guān)注
188文章
2994瀏覽量
233134 -
FSK調(diào)制
+關(guān)注
關(guān)注
0文章
7瀏覽量
7933
原文標(biāo)題:FPGA學(xué)習(xí)-FSK調(diào)制技術(shù)
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
FSK調(diào)制工作原理
【資料分享】基于FPGA的FSK調(diào)制解器器設(shè)計
怎樣用FPGA實(shí)現(xiàn)FSK調(diào)制解調(diào)呢?
怎樣用FPGA實(shí)現(xiàn)FSK調(diào)制解調(diào)呢?
什么是fsk調(diào)制? fsk調(diào)制是什么意思?
fsk調(diào)制電路

基于CORDIC算法2FSK調(diào)制器的FPGA設(shè)計

基于DDS與FPGA的FSK調(diào)制方式

FPGA實(shí)現(xiàn)2FSK數(shù)字信號調(diào)制解調(diào)

基于MATLAB的simulink仿真2Fsk調(diào)制解調(diào)
一文看懂MSK調(diào)制與FSK調(diào)制的區(qū)別和聯(lián)系

FSK信號的調(diào)制原理 FSK調(diào)制信號的FPGA實(shí)現(xiàn)

評論