2ASK(2 Amptitude Shift Keying , 幅度键控)二进制调制解调原理
ASK即幅度键控,利用0或1的基带矩形波控制一个连续的载波,即基带矩形波与载波直接相乘。当数字信息为1时,载波直接通过,当数字信息为0,载波不通过。通过这种机制产生的信号就是2ASK信号,2代表二进制。
解调又分为相干解调和非相干解调。相干解调,即用和载波一样频率的信号对调制信号进行频谱搬移。非相干解调,即用检波或者其他方法提取包络。在实际应用中,由于要产生同频同相的相干载波,故存在难点,因此非相干解调应用更为广泛。
1 2ASK调制信号的产生
由于2ASK信号可以认为是一个单极性的矩形脉冲序列与一个载波相乘,即
式中,
g
(
t
)
g(t)
g(t)是持续时间为Ts的脉冲,而ak满足以下条件。
由卷积定理可知,ASK调制即基带频谱M(w)完成了一次频谱搬移:
基带信号频谱通常为无限宽,但能量主要集中在主瓣带宽内,为防止其他频带干扰,大多数情况下需要对发射信号进行带宽限制,以保证大部分能量通过,同时滤除带外频率分量。为进一步降低带宽,提高频带利用率,通常在调制前对基带进行成型滤波,这样基带信号就是一个频带较窄的信号,调制到高频后受其他频段干扰的概率较小。
根据以上分析,可得到ASK信号产生模型:
2 2ASK解调
2.1 相干解调
解调ASK信号的相干检测器组成原理如下图所示:
其中s(t)为ASK调制信号,c(t)为相干载波,即cos(wct+φc),将调制信号中以wc为中心频率部分再次搬移到原点,即恢复了基带信号的位置,通过低通滤波将这一部分提取出来。这部分信号经模拟载波调制后并不是真正意义的数字信号,要实现传输还需要对LPF的输出进行抽样判决,根据判决门限值输出0或 1,得到原始信息m(t)。位定时脉冲是收发双方的同步需要,这里不赘述,后面会更新数字同步专题的博客。
相干解调数学推导如下:
从式中可以看出,经过低通滤波后2wc分量就被滤除了。可见,采用相干解调法接收端必须提供一个与ASK同频同相的载波。当解调载波频率不一致,就会出现其他的差频分量,滤波器可能无法滤除;当解调载波相位不一致,仍然可以恢复出基带信号,但幅度有所改变,在补偿增益时需要知道相干载波和解调载波的相位差。相干载波可以通过窄带滤波和锁相环提取,但要达到如此精度还是较为困难,实际中多采用包络检波实现ASK的解调。
2.2 非相干解调
包络检波原理如下图:
输入信号先经过整流电路,将交流信号转换成直流信号,而后通过低通滤波即可滤除基带的包络,最后门限进行判决,完成ASK的解调。
3 MATLAB仿真
- 2ASK和4ASK调制代码如下:
Len=1000; %数据长度
Rb=1*10^6; %码元速率
Fs=8*Rb; %采样频率
LenData=Len*Fs/Rb; %数据长度;8倍采样
Fc=70*10^6; %载波频率
a=0.8; %成形滤波器滚降因子
%产生载波信号
t=0:1/Fs:Len/Rb;
carrier=cos(2*pi*Fc*t);
carrier=carrier(1:LenData);
%产生随机分布的二进制数据
code_2ask=randi([0 1],1,Len);
%对基带数据以Fs速率采样
code_2ask_upsamp=rectpulse(code_2ask,Fs/Rb);
%对基带数据进行成形滤波,同时进行Fs/Rb倍采样
code_2ask_filter=rcosflt(code_2ask,1,Fs/Rb);
%产生未进行成形滤波的2ASK信号
ASK2=carrier.*code_2ask_upsamp;
%产生成形滤波后的2ASK信号
ASK2_filter=carrier.*code_2ask_filter(1:LenData)';
%获取2ASK信号的频谱
ASK2_Spec=20*log10(abs(fft(ASK2,1024)));
ASK2_Spec=ASK2_Spec-max(ASK2_Spec);
ASK2_filter_Spec=20*log10(abs(fft(ASK2_filter,1024)));
ASK2_filter_Spec=ASK2_filter_Spec-max(ASK2_filter_Spec);
%产生随机分布的四进制数据
code_4ask=randi([0 3],1,Len);
%对基带数据以Fs速率采样
code_4ask_upsamp=rectpulse(code_4ask,Fs/Rb);
%对基带数据进行成形滤波,同时进行Fs/Rb倍采样
code_4ask_filter=rcosflt(code_4ask,1,Fs/Rb);
%产生未进行成形滤波的4ASK信号
ASK4=carrier.*code_4ask_upsamp;
%产生成形滤波后的4ASK信号
ASK4_filter=carrier.*code_4ask_filter(1:LenData)';
%获取4ASK信号的频谱
ASK4_Spec=20*log10(abs(fft(ASK4,1024)));
ASK4_Spec=ASK4_Spec-max(ASK4_Spec);
ASK4_filter_Spec=20*log10(abs(fft(ASK4_filter,1024)));
ASK4_filter_Spec=ASK4_filter_Spec-max(ASK4_filter_Spec);
%绘图
figure(1);x=0:200;x=x/Fs*(10^6);
subplot(221);plot(x,ASK2(100:300));xlabel('时间(us)');ylabel('幅度(v)');
title('未经成形滤波的2ASK时域波形');grid on;
subplot(222);plot((0:200),ASK2_filter(100:300));;xlabel('时间(us)');ylabel('幅度(v)');
title('成形滤波后的2ASK时域波形');grid on;
subplot(223);plot((0:200),ASK4(100:300));;xlabel('时间(us)');ylabel('幅度(v)');
title('未经成形滤波的4ASK时域波形');grid on;
subplot(224);plot((0:200),ASK4_filter(100:300));;xlabel('时间(us)');ylabel('幅度(v)');
title('成形滤波后的4ASK时域波形');grid on;
figure(2);x=0:length(ASK2_Spec)-1;x=x/length(x)*Fs/10^6;
subplot(221);plot(x,ASK2_Spec);xlabel('频率(MHz)');ylabel('幅度(dB)');
title('未经成形滤波的2ASK频谱');grid on;
subplot(222);plot(x,ASK2_filter_Spec);xlabel('频率(MHz)');ylabel('幅度(dB)');
title('成形滤波后的2ASK频谱');grid on;
subplot(223);plot(x,ASK4_Spec);xlabel('频率(MHz)');ylabel('幅度(dB)');
title('未经成形滤波的4ASK频谱');grid on;
subplot(224);plot(x,ASK4_filter_Spec);xlabel('频率(MHz)');ylabel('幅度(dB)');
title('成形滤波后的4ASK频谱');grid on;
- 仿真结果如图所示:
可以看出成型滤波后只保留了主瓣,由于采样频率Fs=8MHz,载波频率Fc=70MHz,那么中心频点f=kFs±Fc,显然当k=9的时候,f=2MHz。这里要注意,f=6MHz不仅仅是由采样频谱搬移而来。在FFT中,实信号具有一个特点,比如做1024点FFT,那么0 ~ 512点和513 ~ 1023点的频谱是对称的,即关于采样频率的一半对称。这是由于FFT本来利用的就是DFT的共轭对称性而产生的一个快速算法,经过推导便可以得到这个结论。本例中采样频率是8MHz,所以频谱关于4MHz对称,即频谱间隔应该是4MHz,那么2MHz的下一个中心频点就是6MHz。
关于解调的仿真,相干解调较为简单,直接以相干载波乘以调制信号即可。非相干解调的仿真分为整流,滤波,判决三步,前两项较为简单,对于判决而言,需要进行收发同步,因而单纯的matlab仿真意义不大,观察低通的输出即可大致判断解调是否合适。