PythonSDR-AM/FM的IQ信号调制和解调
MicroSound2023/07/30原创 无线电 IP:北京
关键词
pythonsdriqamfm调制解调

初涉SDR,感觉这次跨越难度比我从单管机到超外差的跨越还大,概念众多,一时难以消化。

*************************************************************************************

这是我当前学习的的相关知识点

ScreenShots20230730-143409.png

*************************************************************************************

这是常见的几种SDR接收架构,直采,直接转换,超外差,其中

ScreenShots20230730-093951.png

直采-号称是SDR的"圣杯",这种结构把大部分处理过程都移到了数字部分,灵活性极大,但是缺点是依赖一个高速ADC,高速ADC采样的数据又依赖高速DSP处理器,但是高速ADC,高速DSP也就意味着高价格,高成本

直接转换-也交零中频,优点是滤波结构简单,但是存在直流偏差

超外差-也叫低中频,这种结合传统超外差变频和数字处理的优势,是一种低成本方案


在上面的结构中,adc接收到的数据也分为单路模拟信号和双路正交模拟信号,

单路模拟信号优点是只需要一片adc,但是adc采样率要求稍高,正交变换通过数字处理实现,IQ

信号无相位偏差,对dsp性能要求较高

双路正交模拟信号需要两片adc,但是adc采样率要求降低一半,dsp无需做正交变换处理,dsp压力较小,但是IQ信号存在相位偏差

*************************************************************************************

微信截图_20230730205328.png

IQ信号,这是一个在数字通讯中非常基本的概念,我在尝试理解这个概念上花费了大量精力,但是感觉还是尚未完全理解,打开教材和网站,对于IQ信号的解释大多是长篇数学推导,以至于都误以为是进入了数学领域,忘记了自己的初衷。我尝试不用复杂难懂的高数,只依赖初等数学来理解和解释这个概念。

*************************************************************************************

ScreenShots20230730-102702.png

这是一个基本的正弦信号曲线,描述一个信号有三大要素,幅度A,频率F,相位P,调制和解调信号也是对这三个属性进行控制和解析,但是这和IQ有什么关系呢?

假如我们在现实世界里面搜集测量一个电波信号,在某一时刻我们获得一个电压值,由于这个电压值是孤立的,可能属于这个正弦波上的任意一点,得到这个点的数值,我们无法确定或者推算出这个正弦波的幅度,频率和相位信息,也就是说当前是信息缺失的,不完整的,你也能会说我们可以等搜集到完整的信号后再去计算,我们这是一个连续的规则信号,如果信号是一个不规则,任意形状的波形,我们处理起来更棘手。

*************************************************************************************

u=2365012856,199408910&fm=30&app=106&f=PNG.png

我们举个生活中的列子,现在有一个飘再空中的气球,单凭这一张照片,我们无法判断出气球当前是静止的还是运动的,运动方向是什么,运动速度是多少,当前我们的信息是缺失的,如果再有一张不同时刻的照片我们判断起来就容易多了。

*************************************************************************************

ScreenShots20230730-102702.png

继续回到我们的正弦波,如果我们需要两个点来记录这个波形,哪两个最近点最能表达完整的信息呢,很明显是1/4周期的两个点是包含波形完整信息的最近的两个点,1/2周期和整个周期的两个点因为同在0电位,反而不容易判断,实际上1/4周期的点,可以计算出幅度,频率,相位,而这个属性恰恰是描述一个波最重要的三个要素。

*************************************************************************************

说了这么多,这又和IQ什么关系呢,对于接收来讲IQ信号是对同一个电磁波在1/4周期时刻采集的两个值,接收方要想精确获取此两个周期的值需要PLL做同频同相处理,也就是相干解调的条件,如果不同频同相,此两个数值可能有所偏差。

ScreenShots20230730-103021.png

对于单个波形来讲,是无所谓正弦波和余弦波的,因为你在接收时无法确定相位,正弦和余弦是一个相对的概念,如果我们有两个波形,可以把一个当作参考,把一个当作正弦,另外一个当作余弦来处理。

*************************************************************************************

ScreenShots20230801-072305.png

对于信号合成来讲,如果选择两个同频相位不同的信号来进行合成,也是相差90度相交的最方便合成,

*************************************************************************************

ScreenShots20230730-110743.png

相差180度是两个相反的波形,只会相互抵消消弱,无法影响相位,

*************************************************************************************

ScreenShots20230730-111018.png

360度的就又回到了原点,无法实现更多的变换。

*************************************************************************************

ScreenShots20230801-072305.png

如果合成信号的相位是随机的,那么两个信号合成后会生成两个频率,一个是频率和,一个频率差,如果正交合成可以抵消掉其中一个,只生成一个频率。

*************************************************************************************

ScreenShots20230730-143417.png

以上是项目依赖

********************************************************************************************

am调制

image.png


这是am调制公式以及代码

公式说明

AM:调制结果

A:幅度

Ma:调制指数

Wm:调制信号

Wc:载波信号

t:时间序列

函数参数说明

FS:采样率

Fm:调制信号频率

Fc:载波信号频率

T:调制时长

m:调制指数

*************************************************************************************

image.png

这是am调制测试代码

*************************************************************************************

ScreenShots20230729-192646.png

这是am调制结果图表

********************************************************************************************

image.png

这是am解调公式以及代码

公式说明

IQiq信号

A0:直流信号

m(n):解调信号

函数参数说明

data:复数信号序列

********************************************************************************************

fm调制

image.png

这是fm调制公式以及代码


公式说明

FM:调制结果

A:幅度

Wc:载波信号

Ma:调制指数

Wm:调制信号

t:时间序列

函数参数说明

FS:采样率

Fm:调制信号频率

Fc:载波信号频率

T:调制时长

m调制指数

************************************************************************************* image.png

这是fm调制测试代码

*************************************************************************************

ScreenShots20230729-192857.png

这是fm调制结果图表

*************************************************************************************

fm解调.png

这是fm解调公式以及代码

公式说明

f(n):瞬时频率

I:当前I信号

Ip:前一I信号

Q:当前Q信号

Qp:前一个Q信号

函数参数说明

data:复数信号序列

这是一个鉴频器解调算法

*************************************************************************************

ScreenShots20230729-192857.png

原理是通过对两组IQ值计算相位差或者斜率来获得瞬时频率,相位差正比于频率,这是一种比较巧妙的算法

********************************************************************************************

频率偏移

image.png

image.png

频率偏移,由于我们关心的信号不一定在中心点,因此需要把信号偏移到中心点,要理解这个变换,需要了解欧拉公式,一个上帝公式,e,pi,i,1每一个都是在数学史上里程碑式的存在,以这种方式完美的结合在了一起,我目前还尚未理解这个公式,但是可以把这个公式的作用看作是乘以一个cos函数

*************************************************************************************

exp测试代码.png

这是np.exp(1j*Wc*t)=cos(Wc*t)的测试代码

*************************************************************************************

ScreenShots20230730-132112.png

这是我以两种方式数据生成的图表

*************************************************************************************

image.png

这是频率偏移测试代码

*************************************************************************************

ScreenShots20230729-194641.png

这是频率偏移测试图表

********************************************************************************************

重采样

image.png

重采样,作用是升高或降低采样率以进行采样率匹配,这里用了up和down两个参数,是为了尽量避免小数形式重采样

*************************************************************************************

image.png

这是重采样测试代码

*************************************************************************************

ScreenShots20230730-133557.png

这是重采样对比结果图

********************************************************************************************

滤波

image.png

这是滤波代码

函数说明

数字去加重滤波器,衰减高频作用

data:解码数据序列

bw:带宽

*************************************************************************************

ScreenShots20230729-221313.png

这是滤波对比结果图表

********************************************************************************************

ScreenShots20230729-195920.png

前面的准备工作做好了,我们来实际检验一下我们的工作,先打开sdrsharp来录制一些iq数据

*************************************************************************************

ScreenShots20230729-200207.png

录制的IQ文件在sdrsharp根目录

*************************************************************************************

image.png

测试前先看下频率中心点以及采样率

*************************************************************************************

image.png

可以看出频率中心点在540K左右,采样率是2M

*************************************************************************************

image.png

这是执行偏移之后的结果图,可以看到原来中心点在540k的频率信号现在偏移到了0中心点

*************************************************************************************

image.png

执行完代码,文件存放到了wav-files目录

*************************************************************************************

image.png

打开wav文件试听一下

*************************************************************************************

image.png

我们用同样的方式测试一下am的解调效果,这里我是用的网上下载的一个国外航空管制录制的IQ文件

*************************************************************************************

image.png

打开am.wav文件试听一下

********************************************************************************************

项目代码:

attachment icon python-sdr.zip 162.67MB ZIP 73次下载

频文件:

Python-SDR.mp4 点击下载


********************************************************************************************

视频地址:XXXXXXXXXXXXXXXXXXXXXXXX/video/BV1e841127CX

项目地址:XXXXXXXXXXXXXXXXX/zhuxianguo/python-sdr





[修改于 9个月0天前 - 2023/08/01 07:24:26]

来自:电子信息 / 无线电动手实践:实验报导
0
 
2
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
MicroSound
学者 机友 笔友
文章
56
回复
317
学术分
1
2009/05/06注册,1天16时前活动

今日种种,似水无痕。

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}