使用GNURadio进行AM调制和解调

AM调制原理及GNURadio仿真

AM, 英文全称为 Amplitude Modulation, 通过改变载波的幅度来携带信息,使用数学公式表示如下:
S ( t ) = A ( 1 + m a v Ω ) c o s ( w c t ) S(t)=A(1+m_{a}v_{\Omega })cos(w_{c}t) S(t)=A(1+mavΩ)cos(wct)
其中,ma为调制深度,vΩ为调制源,cos(wct)为高频载波信号;

如果使用正交调制实现AM调制,只需要令:
I ( t ) = 1 + m a v Ω I(t)=1+m_{a}v_{\Omega} I(t)=1+mavΩ

Q ( t ) = 0 Q(t)=0 Q(t)=0

​ 因此AM调制在GNURadio下虽然没有直接使用的模块,在十分容易自己生成。下面对应的是使用单音源生成的AM信号及其解调,将调制源由单音更换为wav文件,就可以使用音频对AM信号进行调制。(注:第二个Signal Source使用模拟10k载波)

在这里插入图片描述

​ 使用单音源调制的AM信号的频谱图如下(注:上方的图为解调之后音频,仍未5kHz,图2为1次重采样之后,主峰和边带频率差之2.2k),非常的容易分辨,AM信号具有3个峰,分别是中间的主峰和两边的两个边带,其中中间的主峰为载波信号,两个边带分为携带信息的信号,并且两个边带携带的信息相同,主峰和边带之间的频率差即为单音的调制频率。(注意:因为一般播放音频的采样率为44.1k,为了匹配整个流程的100k的采样率,需要对数据进行重采样,接收之后,重新恢复到44.1k即可,重采样之后的5k的单音频率为5*441/1000=2.205k,所以频谱图上看到的边带和主峰之间的频率差为2.205k)
在这里插入图片描述

​ AM单音调制之后的时域图如下(下方的图),其主要特点是时域的幅度跟随调制源信号的幅度不断变化;

在这里插入图片描述AM信号的解调非常的简单,这里采用相干解调的方法。首先采用相干解调(混频之后,低通滤波)之后,得到AM的基带的IQ数据,之后对IQ归一化之后,求平方和,减掉1即为调制源信号。这种解调方式可以有效防止混频中由于发送方和接收方时钟有所偏差产生的频差。

​ AM解调的代码可见于GNURadio的源码,am_demod.py.

		#此处求复数的幅度大小,相当于求解 I2+Q2,注意求解之前需要将IQ进行归一化
		MAG = blocks.complex_to_mag()
        #将归一化之后的幅值向下搬 -1
        DCR = blocks.add_const_ff(-1.0)
		#音频滤波
        audio_taps = filter.optfir.low_pass(0.5,          # Filter gain
                                            channel_rate, # Sample rate
                                            audio_pass,   # Audio passband
                                            audio_stop,   # Audio stopband
                                            0.1,          # Passband ripple
                                            60)           # Stopband attenuation
        LPF = filter.fir_filter_fff(audio_decim, audio_taps)

        self.connect(self, MAG, DCR, LPF, self)

​ 好了,AM调制、解调,就梳理到这里,欢迎各位讨论交流,批评指正。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值