利用USRP探索软件无线电(3)

2023-05-16

1、引言

上一篇描述了利用GQRX查看频谱和记录信号文件的过程,本篇将实际录制和分析AM和FM信号。

AM和FM虽然历史悠久,且均为简单的模拟调制信号,但是生命力很强,目前仍有很多业务在使用。常见的AM信号有短波频段(3~30MHz)的调幅广播、108~138MHz航空管制通话。常见的FM信号有88~108MHz调频广播、模拟电视伴音、对讲机等。

本篇所用到的软件有之前提到的Inspectrum、Audacity,数据可视化及信号处理用Matlab R2020b。

2、一点历史

AM应该是无线通信历史上最早的一种调制方式了。在马可尼将无线电报广泛商用以后,下一个目标就是用无线电传输语音。这开始并不是一件容易的事,毕竟当时连发射稳定的正弦连续波都很困难。在先驱者费登森(Reginald Aubrey Fessenden)、德福雷斯特(Lee de Forest)等人的持续努力下,在1900年代成功进行了实验性质的AM信号传输。1920年代真空管接收机和发射机发明之后,AM得到快速发展。接下来的30年是广播的黄金时代,直到1950年代电视的发明。AM的出现改变了大众传媒的历史,NBC、BBC等著名机构都诞生于这一时期。

AM方式容易被干扰,听上去有难以去除的静电噪音和振动噪音。为了消除这些缺点,阿姆斯特朗(Edwin Howard Armstrong)于1933年发明了FM调制方式(Armstrong也是超外差接收机架构的发明者,很可惜,这些伟大的发明并没有带给他富足的生活,反而让他陷入无尽的商业竞争和诉讼,最终要了他的命)。FM调制是一种非线性调制,以消耗更大的带宽为代价,使得高保真的音频传输成为可能。阿姆斯特朗在他的FM演示中特意播放了泼水和撕纸的声音,这在之前的AM中是无法实现的。

关于AM和FM的更多信息,请看:

https://en.wikipedia.org/wiki/AM_broadcastinghttps://en.wikipedia.org/wiki/AM_broadcastinghttps://en.wikipedia.org/wiki/AM_broadcasting

https://en.wikipedia.org/wiki/FM_broadcastinghttps://en.wikipedia.org/wiki/FM_broadcastinghttps://en.wikipedia.org/wiki/FM_broadcasting

3、 AM

下面将以18900kHz处的一个调幅广播作为例子,展示IQ格式下AM信号的相关内容:一是分析和展示正弦载波的概念;二是展示AM调制的效果;三是进行AM解调。
本节使用的几个IQ数据 在此下载。

3.1 复信号中的载波

实数正弦波可以由一个沿直线进行往复运动(即简谐运动)的点产生。我们测量质点在各个时刻的瞬时位移,并描绘在坐标系中,就得到下图所示的波形。

 图1 简谐运动和实数正弦波形。波形即谐变物理量(如位移)关于时间的函数

那么复数正弦波的图像应该是什么样的?一个频率为kHz、初始相位为\phi的复数正弦波为:

s(t)=cos(2\pi *k*t+\phi )+i*sin(2\pi*k*t+\phi)=e^{i*(2\pi *k*t+\phi)}

从指数形式的复数正弦波表达式中可以看出,s(t)的相位随时间呈线性变化,所以s(t)对应着复平面上的匀速圆周运动。由于复数本身有两个维度,再加上时间轴,因此画出的复数正弦波形是一个像弹簧一样的三维螺旋曲线。

画出载波的图像需要一个只包含载波的信号。不过正常人谁会只发射载波呢,那等于打通了电话却不说话。我们可以认为调幅广播中短暂的静音间隙就是纯载波发射,虽然一般只有一两秒钟,对于我们已经够用了。

先用Inspectrum打开中心频率为18900200Hz、采样率为100kHz的原始数据文件。与GQRX瀑布图的方向不同,Inspectrum的频谱是横向的。左右拖动频谱,在13秒附近找到一个持续比较长的、信噪比高的静音片段,将选中的部分导出为一个新文件,文件名为carrier。由于广播信号所在的射频频率为18900kHz,这样就得到了一段持续900ms,频率为+200Hz的复数正弦波。

  图2 利用Inspectrum查看并截取正弦载波频段

用Matlab导入carrier文件,并用下面的代码绘制基带信号的样本点在复平面上的运动,以及将时间轴展开后的三维波形。

%读取文件
fid=fopen('carrier');
x = fread(fid,'float');
x = x(1:2:end) + 1i*x(2:2:end);

%选择前10000个样本
lower=1;
upper=10000;
rp=real(x(lower:upper));
ip=imag(x(lower:upper));
sa=(1:upper-lower+1);
 
% plot3(rp,ip,sa);

%设置图像属性
lim=0.005;
axis([-lim,lim,-lim,lim,1,length(sa)]);
ax = gca;
ax.XAxisLocation = 'origin';
ax.YAxisLocation = 'origin';
xlabel('real');
ylabel('imaginary');
zlabel('samples');
grid on;
view(3);

%动画
waveform = animatedline('Color','b');
motion = animatedline('Color','r','Marker','o','Linestyle','none');
for k = 1:length(sa)
    clearpoints(motion);
    addpoints(motion,rp(k),ip(k),0);    
    addpoints(waveform,rp(k),ip(k),sa(k));
    drawnow
end
view(0,90);

图3 +200Hz复数正弦波的波形图

图中的红色小圈显示了不同时刻的样本点在复平面上的构成了圆周运动,蓝色螺旋线表示了复数正弦波形。红色小圈和蓝色螺旋线每转一圈,对应着正弦波的一个周期,单位时间内转的圈数越多,表明频率越大。两者的半径则代表了信号幅度;毛刺表明了噪声的存在。

上图选取了wav文件中的前10000个样本。当采样率为100kHz的时,10000个样本的持续时间即0.1秒。对于200Hz的正弦波,0.1s内应当有20个周期。但是实际数一下发现只有大约19个周期,这说明接收的信号存在大约10Hz的频偏。

现在来看18899800Hz处信号。在复信号格式下,射频的18899800Hz转换为基带的-200Hz。重复刚才的步骤,可以得到-200Hz正弦波的图像。可以看到,这一次图中红色小圈和螺旋线转动的方向与图4中相反。同样的10000个样本,这一次的周期有21个。

图4 -200Hz复数正弦波的波形图

接收信号的频偏有两个原因:

  • 电路中的晶振或时钟不够准确,可能是发射机不准,也可能是接收机不准,还可能发射机接收机都不准;
  • 发射机和接收机存在相对运动,即多普勒频移。

广播台是固定的,不存在多普勒效应,而且一般也比较准。所以产生频偏的原因大概率是由于本人接收机的问题。

为了补偿频偏,需要将接收频率设置为18900010Hz,这样基带信号的零频与AM信号的波峰实现了比较精确的重合。可以想象,当载波频率趋向0Hz时,正弦波的旋转也越来越慢,最终停止,成为一个直流信号,得到的三维波形图是一条平行于Z轴的直线。18900010Hz的复载波信号波形如下图所示。

 图5 0Hz复数正弦波的波形图

3.2 复信号的AM调制

顾名思义,AM幅度调制只改变载波的幅度,不改变载波的相位和频率。 所以一个零频的载波经过幅度调制之后,在复平面上应当只做径向运动,没有切向运动。

为了展示AM调制产生的基带信号的波形,我们在18900010Hz的广播信号中选择一段有声音的部分,画出其波形图。

这不就是模拟调制的星座图?

图6 一段语音经过幅度调制后产生的基带信号的波形图

仔细看上面这段AM调制之后的基带信号,整体上还是随时间缓慢转动,说明频偏补偿还没有完全到位,再改进需要专门的载波频偏补偿算法。

3.3 AM信号解调

下面对18900010Hz的原始数据进行解调。根据AM调制的原理,基带信号各个样本的幅度,就是消息信号的样本。

AM信号细分下来,由DSB-SC,SSB,VSB,常规AM等多种形式。常规AM在调制之前先对音频信号加直流偏置,再控制调制指数,确保不发生过调制(overmodulation)。这样做的好处是在接收端只需要进行简单的包络检波就可以恢复出消息信号,无需恢复载波,降低了接收机成本。因此这种方式特别适合于广播这种接收机远多于发射机的系统。

常规AM信号的包络检波解调过程如下:

%读取文件
fid=fopen('raw');
y = fread(fid,'float');
y = y(1:2:end) + 1i*y(2:2:end);

%解调
amplitude=abs(y);

%去除直流分量
amplitude=amplitude-mean(amplitude);

%降采样,需要Signal Processing Toolbox
fs_baseband=100000;
fs_audio=48000;
voice=resample(amplitude,fs_audio,fs_baseband);

%输出音频文件        
audiowrite('msg.wav',voice,fs_audio);

4、总结

本篇分析了最简单的AM调制方式,要点如下:

  • 射频AM信号变换到基带后,正弦载波变成了直流分量;
  • AM调制只改变载波的幅度,所以基带信号只做径向运动,没有切向运动;
  • AM解调是对基带信号的求模,常规AM可以用包络检波的方法解调。

篇幅差不多,FM信号下一篇再写好了。

最后有一个小问题:AM基带信号在Inspectrum中的频谱具有对称性,那么它应该是一个实信号,其虚部应该为0。但是从后面的Audacity中看出其虚部明显不为0。矛盾在哪里?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用USRP探索软件无线电(3) 的相关文章

  • [UEFI]SHELL命令汇总

    命令使用时 xff0c 如果不清楚可以使用help查看 xff1a RETURN STATUS EFIAPI ShellCommandRegisterCommandName IN CONST CHAR16 CommandString IN
  • linux驱动由浅入深系列:tinyalsa(tinymix/tinycap/tinyplay/tinypcminfo)音频子系统之一

    linux驱动由浅入深系列 tinyalsa tinymix tinycap tinyplay tinypcminfo 音频子系统之一 linux驱动由浅入深系列 ALSA框架详解 音频子系统之二 目前linux中主流的音频体系结构是ALS
  • 浏览器缓存机制

    前言 一个优秀的缓存策略可以缩短网页请求资源的距离 xff0c 减少延迟 xff0c 并且由于缓存文件可以重复利用 xff0c 还可以减少带宽 xff0c 降低网络负荷 对于一个数据请求来说 xff0c 可以分为发起网络请求 后端处理 浏览
  • debian 的小软件。

    因为我在gnome平台 xff0c 所以下面的都是gnome平台的 按照菜单的顺序从上到下 apt get install hamster applet 时间管理 apt get install alarm clock 警告时钟 apt g
  • linux(debian )安装libreoffice中文版,libreoffice一闪而过自动关闭

    因为debian已经移走了libreoffice 默认是openoffice org 所以需要单独安装 1 首先下载 选好对应的系统和版本 我是x64的 http zh cn libreoffice org download 2 下载下面3
  • TensorFlow 读取本地数据集压缩包gz,并转换为numpy矩阵【修改官方源码而成】

    本教程以读取Fashion MNIST为例 1 下载Fashion MNIST数据集gz格式压缩包 fashion mnist 共下载四个文件 本人将所有文件保存到此文档路径中 xff1a 39 home brian Documents t
  • cas单点登录的初步了解

    特别声明 xff0c 楼主学一个技术的时候一般会选择去该技术官网学习 xff0c 拿到一手资料 xff0c 毕竟别人翻译过的总会和自己的了解有一些偏差 xff0c 所以对于这次要和大家分享的这个单点登录cas我大概会根据官网提供的信息加上我
  • maven 中的插件不生效的排查方法

    还是自己学艺不精 xff0c 没空系统学习 xff0c 也是边用边学 xff0c 这里记录下 感谢博主的文章 xff1a https www cnblogs com wxyidea p 10276672 html 先说结论 xff1a 原因
  • C++ 判断IP是否属于局域网IP

    对于一个string类型的IP如 34 192 168 1 1 34 如何简单地判断其是否为局域网ip呢 xff1f 这里给出一个简单的实现方法 xff0c 给读者参考 include lt string gt include lt ios

随机推荐

  • 百度2014移动研发笔试题目——1013清华版

    一 简答题 1 简述计算机的存储系统分为哪几个层次 xff0c 为什么这样的分层能够提高程序的执行效率 2 浮点数在计算中如何表示 xff0c 如何对浮点数判等 3 简述TCP与UDP协议的差别 xff0c 两者与HTTP的关系 并列举HT
  • RealVNC:window远程连接ubuntu20.04

    步骤 需求步骤说明 需求 因为有原因需要从外部连接Linux的电脑 xff0c 所以现在就需要安装VNC 步骤 在linux上安装 xff0c 这里我选择离线安装 xff0c 因为我只有这个实验成功了 xff0c 所以现在就开始在linux
  • Ubuntu 磁盘分区方法

    Ubuntu作为代码版本控制仓库时 xff0c 那么就需要很大的空间 xff0c 默认20G配置一般是不够用的 xff0c 那Ubuntu怎么样和Windows一样做磁盘管理 xff0c 分盘扩容呢 xff1f 很简单 xff0c 可以安装
  • git push 遇见的两个错误

    文章目录 more than 10000 commits and skip validation not setprohibited by Gerrit update for creating new commit object not p
  • TGP无限验证码怎么办?

    使用账号密码登陆TGP时 xff0c 遇到了这样的一个情况 xff1a 不管验证码输入正确与否 xff0c 它都要求你再次输入 xff0c 可谓无限验证码 两个解决办法 1 先登录QQ xff0c 再使用QQ登陆 2 找到英雄联盟的安装目录
  • 怎么阅读论文,写心得体会

    收集资料 xff1a 阅读学术论文的心得体会 xff01 如何阅读学术论文 和上一篇类似大牛写论文的心得几年的写论文和审稿心得 文献阅读心得体会格式 xff1a 1 看论文题目 xff0c 做出论文类别判别 新理论 新方法 解决新问题 最高
  • tigerVNC的简单使用教程(CentOS的远程桌面连接)[解决Authentication Failure问题]

    参照教程 http blog csdn net daydreamingboy article details 8196747 开始连接CentOS远程桌面连接 但是出现Authentication Failure的情况 解决办法 xff1a
  • 基于docker的python faster-rcnn caffe环境搭建+提取目标特征实验

    文章目录 1 环境配置前言2 下载caffe镜像3 下载bottom up attention代码以及编译4 修改代码进行目标特征提取4 1 数据准备4 2 修改generate tsv py 起初是为了使用faster rcnn的目标提取
  • Tushare原学习文档(二投资参考数据)

    转tushare原网址 xff1a http tushare org trading html id2 import tushare as ts 1 分配预案 xff08 每到季报 年报公布的时段 xff0c 就经常会有上市公司利润分配预案
  • 通达OA系统故障解决案例记录

    案例1 xff1a 现象 xff1a 在人员访问量大的时候OA系统经卡死 xff0c 并且经常宕机 xff0c 需要启动apache服务 优化配置如下 xff1a D MYOA conf http conf 修改参数如下 xff1a lt
  • CentOS7系统安装KVM并配置网桥

    原文链接 CentOS7系统安装KVM并配置网桥 文章目录 一 安装虚拟化软件二 配置网桥 一 安装虚拟化软件 xff08 1 xff09 首先检查系统是否支持虚拟化 span class token function grep span
  • openEuler安装GNOME图形化桌面

    原文链接 openEuler安装GNOME图形化桌面 xff08 1 xff09 安装 GNOME 桌面 dnf groupinstall y GNOME xff08 2 xff09 安装 GNOME 应用 dnf span class t
  • Ubuntu----Ubuntu系统如何设置分辨率供VNC远程访问

    原文链接 Ubuntu Ubuntu系统如何设置分辨率供VNC远程访问 xff08 1 xff09 通过VMWare安装的Ubuntu虚拟机 xff0c 当通过VNC访问时 xff0c 默认情况下分辨率是不对的 xff0c 比如当VNCVi
  • 3D打印gcode命令大全及解析

    G0 xff1a 快速移动 G1 xff1a 控制移动 坐标轴XYZE移动控制 xff08 G0和G1一样 xff09 例子 xff1a G0 F2000 X30 Y30 Z30 E3 G2 xff1a 顺时针画弧 G3 xff1a 逆时针
  • 添加VNC开机启动

    1 添加开机启动文件 sudo nano etc init d tightvncserver 2 添加文件内容 bin sh BEGIN INIT INFO Provides tightvncserver Required Start sy
  • 以太网链路聚合&交换机堆叠集群

    随笔一篇 xff0c 以便日后翻阅 xff0c 如有问题欢迎指正 目录 前言 链路聚合技术原理一 基本原理二 基本术语及概念1 聚合组2 成员接口 amp 成员链路3 活动接口 amp 活动链路4 非活动接口 amp 非活动链路5 聚合模式
  • C#使用Setting保存用户自定义窗体位置

    1 首先引用原文 C 中使用Setting保存用户自定义窗体位置 C 中使用Setting保存用户自定义窗体位置 2008 11 06 步骤一 xff1a 打开项目属性窗口 xff0c 切换到设置 Settings 标签 xff0c 如下图
  • Keil5点击编译正常,烧录和调试直接闪退

    我在WIN11的环境下 xff0c 安装了目前ST官网上最新的MDK538 xff0c 刚刚下载好的前两天一切正常 xff01 但是就在刚刚出现了Keil编译正常 xff0c 使用正点原子的STLink烧录器下载却直接给我闪退 xff0c
  • Shell变量 —— 变量的赋值与引用

    Shell 变量的赋值与引用 变量用于存储数据由字母 数字或下划线组成 xff0c 并且只能以字母或下划线开头 xff0c 大小写的意义是不同的弱类型的语言 xff0c 变量存储的一切值都是字符串 到那时必要的时候 xff0c 是要是由数值
  • 利用USRP探索软件无线电(3)

    1 引言 上一篇描述了利用GQRX查看频谱和记录信号文件的过程 xff0c 本篇将实际录制和分析AM和FM信号 AM和FM虽然历史悠久 xff0c 且均为简单的模拟调制信号 xff0c 但是生命力很强 xff0c 目前仍有很多业务在使用 常