調製與解調

2021-02-15 320科技工作室

在簡諧波的疊加:相速度與群速度一文中,我們給出兩列簡諧波疊加的公式,並分析了幾列波在合成的過程中發生頻散的條件,事實上,兩列簡諧波的合成波的振幅總會受到其中一列波的調製。那麼究竟什麼是調製呢?調製與解調,是無線通信領域中常見的技術詞彙。在發送端把基帶信號(包含傳輸信息的有效信號)加載到某個載波(通常為高頻的正弦或餘弦波)的過程稱為調製,得到的信號稱為已調信號解調調製的逆過程,就是在接收端通過某種信號處理手段從已調信號中得到基帶信號。那麼為什麼要在無線通信的過程中採用調製與解調這種手段呢,直接傳輸基帶信號不行嗎?1)基帶信號的頻譜範圍通常很低,有時,甚至零頻的能量也不可忽略,而發射天線的尺度與電磁波的波長有關,只有發射天線尺度大於等於1/4倍的波長時信號才能有效傳輸,對於十幾千赫茲的信號,發射天線都都要十幾公裡。這在工程上是不切實際的;2)調製能夠實現頻譜搬移,將低頻信號搬移到高頻處,這能夠降低發射天線的尺度;3)低頻頻帶窄,都用低頻傳輸,會造成堵塞,調製能夠擴寬傳輸頻帶,提高了頻率利用率;4)調製能夠將多路基帶信號加載到頻率不同的載波上,完成信號的頻率分配,使多路信號互不幹擾地在同一個信道上傳輸,實現頻分復用;我們知道,可以用振幅、頻率和相位來描述一個波,因此,調製的方式也可分為調幅、調頻、調相。在下文中,將介紹雙邊帶幅度調製(Double Side Band Amplitude Modulation, 簡稱DSB-AM)與單邊帶幅度調製(Single Band Amplitude Modulation, 簡稱SSB-AM)的基本原理,並給出實現SSB-AM的Python代碼。雙邊帶幅度調製(DSB-AM)與解調為方便推導,假設基帶信號
接收端獲得解調信號
"""
矩形波單邊帶調製與解調的主程序代碼
"""


import numpy as np
import scipy.fftpack as fftp
import matplotlib as mpl
import matplotlib.pyplot as plt
import Filter
mpl.rcParams['font.sans-serif'] = ['KaiTi'] # 保證正常顯示中文
mpl.rcParams['font.serif'] = ['KaiTi'] # 保證正常顯示中文
mpl.rcParams['axes.unicode_minus'] = False # 保證負號正常顯示


dt = 0.001 # 時間域採樣間隔
Fs = 1/dt # 採樣率
T = 4 # 矩形波的周期
nT = 10 # 總的周期數
nPT = int(T/dt+0.5) # 每個周期的樣點數
n = nT*nPT # 總樣點數
alpha = 0.5 # 矩形波的佔空比
t = np.arange(dt, n*dt+dt, dt)
f = np.zeros((n, 1), dtype=np.float64)
A = 1
for i in range(0, nT, 1):
f[(i+1)*nPT-int(alpha*nPT):(i+1)*nPT] = A # 得到矩形波


fc = 100 # 載波的頻率
g1 = np.cos(2*np.pi*fc*t).reshape(n, 1)
g2 = np.sin(2*np.pi*fc*t).reshape(n, 1)
hf = fftp.hilbert(f.reshape(n, )) # 矩形波的希爾伯特變換

s = 0.5*f*g1-0.5*hf.reshape(n, 1)*g2 # 已調信號
s_dm = s*g1 # 解調
cutoff = 60 # 截至頻率
order = 6 # 濾波器的階數
s_dm = 4*Filter.butter_lowpass_filtfilt(s_dm, cutoff, Fs, order) # 作低通濾波

f_spec = np.fft.fft(f, n, 0) # 作傅立葉變換
freq = np.fft.fftfreq(n, dt).reshape(n, 1) # 得到每點的頻率
f_spec_amp = abs(f_spec)/(n/2) # 對頻譜的振幅作歸一化
f_spec_amp[0] = f_spec_amp[0]/2
f_spec_amp[int(n/2)+1] = f_spec_amp[int(n/2)+1]/2

s_spec = np.fft.fft(s, n, 0)
s_spec_amp = abs(s_spec)/(n/2)
s_spec_amp[0] = s_spec_amp[0]/2
s_spec_amp[int(n/2)+1] = s_spec_amp[int(n/2)+1]/2

# 繪製一個周期內的矩形波
plt.figure(num=1)
plt.plot(t[0:nPT], f[0:nPT], 'b-')
plt.xlim(0, T)
plt.ylim(-0.5, 1.5)
plt.xlabel('時間/(s)')
plt.ylabel('振幅')
plt.title('一個周期內的矩形波信號')
plt.savefig('圖1.jpg', dpi=600)
plt.show()

# 繪製已調信號
plt.figure(num=2)
plt.plot(t[0:int(10/fc/dt+0.5)], s[0:int(10/fc/dt+0.5)], 'b-')
plt.xlim(0, 10/fc)
plt.ylim(-1.5, 1.5)
plt.xlabel('時間/(s)')
plt.ylabel('振幅')
plt.title('已調信號')
plt.savefig('圖2.jpg', dpi=600)
plt.show()

# 繪製基帶信號與已調信號的頻譜
plt.figure(num=3)
plt.plot(freq, f_spec_amp, 'b-', freq, s_spec_amp, 'r-')
plt.xlim(min(freq), max(freq))
plt.legend(('基帶信號的頻譜', '已調信號的頻譜'), loc='upper right')
plt.xlabel('頻率/(Hz)')
plt.ylabel('振幅')
plt.title('基帶信號和已調信號的歸一化頻譜')
plt.savefig('圖3.jpg', dpi=600)
plt.show()

# 繪製基帶信號與解調信號
plt.figure(num=4)
plt.plot(t[0:nPT], f[0:nPT], 'b-', t[0:nPT], s_dm[0:nPT], 'r-')
plt.legend(('基帶信號', '解調信號'), loc='upper right')
plt.xlim(0, T)
plt.ylim(-0.5, 1.5)
plt.xlabel('時間/(s)')
plt.ylabel('振幅')
plt.title('基帶信號和解調信號')
plt.savefig('圖4.jpg', dpi=600)
plt.show()

"""
濾波模塊
"""

import numpy as np
import scipy.signal as signalP


def butter_lowpass(cutoff, fs, order=5):
"""
根據低通濾波通帶截至頻率和採樣頻率計算濾波器分子係數b和分母係數a
:param cutoff: 截至頻率
:param fs: 採樣頻率
:param order: 濾波器的階數
:return: b, a分別為濾波器的分子和分母
"""
nyq = 0.5*fs
normal_cutoff = cutoff/nyq
b, a = signalP.butter(order, normal_cutoff, btype='low')
return b, a


def butter_lowpass_filtfilt(data, cutoff, fs, order=5):
"""
對信號作低通濾波
:param data: 輸入信號
:param cutoff: 通帶截至頻率
:param fs: 採樣頻率
:param order: 濾波器的階數
:return: 返回值為y,經低通濾波後的信號
"""
b, a = butter_lowpass(cutoff, fs, order=order)
shape = data.shape
if shape[0] != 1:
data = data.T
y = signalP.filtfilt(b, a, data)
y =y.T
return y

PS:完整的Python代碼,我已經整理到我的百度企業雲盤中,感興趣的小夥伴可以從以下分享連結(有效期7天)中下載:https://eyun.baidu.com/s/3ggWaYsz

相關焦點

  • 關於信號調製的基本概念(基帶調製vs射頻調製)
    模擬信號調製/解調實現都簡單得多,舉個例子,AM信號就是用語音信號去調節載波信號的幅度,調製很簡單,解調也很簡單(二極體就行)。我還記得大學老師說當年插隊的時候放羊,在無線電鐵塔下面拿個金屬棍子往地下一插,就能聽見調幅廣播了(其實就是個CR濾波器,濾除了載波信號,留下的就是模擬幅度信號)2. 相應於數字調製:ASK/FSK/PSK.
  • 調幅(AM)與雙邊帶(DSB)調製
    圖4.2.4 臨界調幅與過調幅AM信號時域波形通常,我們稱這種現象為過調現象,也稱這種情況下的調製為過調製。為了衡量標準調幅的調製程度,定義AM信號的調製指數(3)線性調製。比較調製信號的頻譜與AM信號的頻譜,可以發現,AM信號頻譜中的邊帶頻譜是由調製信號的頻譜經過簡單的線性搬移到和兩側構成的。在這個頻譜搬移過程中,沒有新的頻率分量產生。因此,該調製為線性調製。4.2.3 調幅波的功率分配與效率AM信號的時間表達式
  • 5G調製方式詳細介紹
    從技術層面來說,其實這些問題和5G採用的調製方式密切相關。讓我們看一下生活中的一個例子:在日常出行時,我們可以根據行程選擇適合的交通工具到達目的地,乘坐不同的交通工具,速度有快有慢。調製方式就好比是信號乘坐的交通工具,信號在傳輸過程中,選擇不同的調製方式,傳輸速率也是有快有慢。那麼,我們可以大膽猜想:在5G通信系統中是不是使用了速率比較高的調製方式,所以5G系統的速率非常快?
  • 5G調製方式詳解(硬核科普)
    從技術層面來說,其實這些問題和5G採用的調製方式密切相關。讓我們看一下生活中的一個例子:在日常出行時,我們可以根據行程選擇適合的交通工具到達目的地,乘坐不同的交通工具,速度有快有慢。調製方式就好比是信號乘坐的交通工具,信號在傳輸過程中,選擇不同的調製方式,傳輸速率也是有快有慢。那麼,我們可以大膽猜想:在5G通信系統中是不是使用了速率比較高的調製方式,所以5G系統的速率非常快?
  • 振動頻率調製
    今天,調頻信號被用於各種不同的應用,其特定是,這些信號始於一個高頻恆定幅的載波信號,載波的頻率由較低頻率的調製波或信號改變(或調製)。頻率調製的簡單形式如下式所示:Fc定義為載頻,Fm為調製信號,Vo為載波電壓,Vfm表示隨時間t變化的瞬時調頻電壓。注意,上式中結合了隨時間變化的正弦調製頻率與隨時間變化的載頻,其組合受一個餘弦三角函數的約束。
  • 利用Ceyear4051信號/頻譜分析儀對 IEEE802.11a/g信號進行解調測試
    PLCP 頭:包括LENGTH(數據長度)、RATE(數據傳輸速率)、一個保留位、一個奇偶校驗位、尾比特以及服務域,從調製的角度來看,LENGTH,RATE,保留位,奇偶校驗位再附加6個尾比特組成了一個OFDM符號,命名為 SIGNAL,SIGNAL傳輸時採用BPSK調製和1/2的編碼效率。
  • PWM (脈衝寬度調製)原理與實現
    是未調製寬度;m是調製指數。 然而,如果對矩形脈衝作如下近似:脈衝幅度為A,中心在t = k Ts處,  時,相位調製部分引起的信號交迭可以忽略,因此,脈衝寬度調製波可以直接通過低通濾波器進行解調。5位數字調製信號用一個寄存器來控制,不斷於循環計數器的輸出進行比較,當調製信號大於循環計數器的輸出時,比較器輸出高電平,否則輸出低電平。循環計數器循環一個周期後,向寄存器發出一個使能信號EN,寄存器送入下一組數據。在每一個計數器計數周期,由於輸入的調製信號的大小不同,比較器輸出端輸出的高電平個數不一樣,因而產生出佔空比不同的脈衝寬度調製波。
  • SPWM逆變電路的調製方式
    根據載波和信號波是否同步及載波比的變化情況,PWM逆變電路可以有異步調製和同步調製兩種控制方式。 1、異步調製 載波信號和調製信號不保持同步關係的調製方式稱為異步方式。圖1b的波形就是異步調製三相SPWM波形。在異步調製方式中,調製信號頻率
  • 全球首顆:集成PD協議全同步數字解調無線充電TX晶片發布!
    貝蘭德科技順應行業趨勢,推出了全球首顆集成PD協議全同步數字解調無線充電TX晶片D9620,支持PD、QC、AFC輸入,無線充發射功率高達15W,集成度高,輕鬆滿足行業趨勢需求。全球首顆!貝蘭德發布PD協議全同步數字解調無線充TX晶片D9620