PlutoSDR matlab无线通信系统学习+实战——基于OFDM数字语音传输系统(一)

前面的文章中讲到了基于PlutoSDR的QPSK无线图片收发系统和基于FM的模拟信号传输:

PlutoSDR无线通信系统学习+实战——QPSK无线图片收发系统(一)_pluto实现该系统的无线通信-CSDN博客

PlutoSDR matlab无线通信系统学习+实战——提升数据传输速率,实现彩色图片收发-CSDN博客

今天主要来讲一下基于OFDM的数字语音传输系统:

OFDM(Orthogonal Frequency Division Multiplexing,正交频分复用)是一种多载波数字调制技术,它将一个通信信道分割成多个较小带宽的子信道,并在这些子信道上同时传输数据。每个子信道使用较低的数据速率进行传输,但是通过并行使用多个子信道,可以实现较高的总体数据传输速率。

对于OFDM的基本原理还不熟悉的同学可以找相关的文章进行学习,后续我也会出有关OFDM基本原理的讲解,如果有同学对这部分内容有疑问也欢迎和我进行联系讨论。

如上图所示,整个系统设计了UI界面进行无线数据的开始传输,本系统传输的是语音文件,可以在UI界面上选择需要传输的语音文件,选择系统支持的调制方式。和之前的系统不同,本系统中添加了信道编码,信道编码的主要作用是提高无线通信系统的可靠性,即能够纠正由于无线信道环境导致的随机错误。本系统中采用的是卷积编码,卷积编码(Convolutional Coding)是一种广泛应用于通信系统中的错误纠正编码技术。它通过在发送端增加冗余信息来提高数据传输的可靠性,使得接收端能够检测并纠正一定数量的错误。卷积编码的主要特点是编码器的状态依赖于之前输入的数据符号,因此编码后的输出不仅与当前输入有关,还与过去的一系列输入有关。在此系统中可以选择卷积编码的速率,即卷积编码添加冗余信息的效率。

采样速率和发送无线数据的载波中心频率都可以通过UI界面进行配置,参数的配置需要考虑自己所处的无线环境。

系统的参数设置为下:

%发送天线参数的配置CenterFrequency:中心频率,BasebandSampleRate:采样速率
txPluto = sdrtx('Pluto','RadioID','usb:0','CenterFrequency',center_freq, ...
         'BasebandSampleRate',sample_rate,'ChannelMapping',1);
%接收天线的参数配置,SamplesPerFrame接收数据的大小
rxPluto = sdrrx('Pluto','RadioID','usb:0','CenterFrequency',center_freq, ...
'BasebandSampleRate',sample_rate,'ChannelMapping',1,'OutputDataType','double',...
'GainSource','Manual','Gain',Gain); 

语音信号是一个模拟信号,模拟信号进行数字化传输首选需要进行采样,然后进行PCM编码。PCM(Pulse Code Modulation,脉冲编码调制)是一种将模拟信号转换为数字信号的技术,其基本原理包括按照不低于两倍于信号最高频率的速率对模拟信号进行周期性采样(遵循奈奎斯特采样定理),然后将每个采样点的幅值量化为有限数量的离散电平,并将这些量化后的值编码成二进制数字序列。这一过程确保了模拟信号可以在数字系统中传输或存储,并且在接收端可以通过解码和滤波恢复出原始信号,广泛应用于电话通信、音频录制及多媒体传输等领域。PCM首先对模拟信号进行采样,即在时间上均匀地选取一系列样本点,使信号变得离散。接着是量化步骤,它将连续的模拟信号值映射为离散的数字值,这一步骤引入了量化噪声,但较高的量化位数可以减小这种误差。最后是编码,即将量化后的数字值表示为二进制码字,以便于在数字信道中传输。PCM未经过任何压缩处理,因此它可以保留原始信号的完整性,提供高质量的音频或视频传输。此外,PCM还支持不同的采样频率和量化位数,以适应各种应用场景的需求。本次代码中采用了8段的量化PCM编码,将语音信号变成了二进制比特信号。

将PCM编码得到的信号进行卷积编码和速率匹配,得到编码后的数据比特,然后将编码后的比特进行调制,即得到了调制后的符号。这部分内容不做过多的介绍,因为有很多可以进行参考的资料,或者感兴趣的同学可以和我进行私下讨论。

编码后的数据就要进行OFDM的符号的生成,首先要将调制后的符号映射到对应的数据子载波上去,数据子载波承担了数据传输的任务,还有一部分用来传输导频符号,导频符号是用来进行信道估计的。这里我们采用了1024个子载波的OFDM符号,为了减小OFDM符号的带外泄露,我们只使用了部分的数据子载波,生成发送端信号的频谱图为:

发送端生成OFDM符号之后添加同步前导序列,同步前导采用的是CA序列,利用其自相关特性进行数据帧的同步。将添加好的数据经过天线进行发送。

接后端接收到的信号:

接收端得到的信号能够明显的区分信号和噪声,通过发送端添加的前导序列进行数据帧的同步,然后得到同步的结果:

其中红色的线为判决门限,其中很高的脉冲点为数据帧的起始点,因此通过接收端的同步能够很轻松的进行数据帧的同步。

同步完成之后就需要在接收端进行OFDM符号的解调操作,同时需要对无线信道进行估计,同时程序中还添加了接收端信号频率偏移的估计等操作,这部分内容在代码中都有体现,感兴趣的同学可以拿到代码后进行学习和讨论。

信号解调之后我们得到了解调信号的星座图:

得到解调信号之后下面就需要进行卷积编码的译码和PCM的解码,程序中还对PCM编码后和解码前的比特信息进行了对比:

最后,就得到了还原的语音信号:

最后程序中记录了运行过程中产生的结果,通过UI界面进行展示:

其中每个按钮都对应了运行过程的展示。

本文章主要介绍了基于OFDM的数字语音传输系统,相比于模拟传输,其可靠性性能大大提升,数字传输系统误码率低,适合高品质数据的传输。

最后我整理了这个程序的整个工程文件和相关的流程说明都放在了下面的链接中,欢迎大家进行下载尝试运行,运行过程中对程序原理或者流程有什么问题欢迎私信我讨论。原创不易,还望大家尊重知识产权,侵权必究!!

源码链接:

通过网盘分享的文件:链接: https://pan.baidu.com/s/1ej2QPOfbFo1ct9iD1gDPNw?pwd=jv5h 提取码: jv5h

https://m.tb.cn/h.6ihN2PR?tk=V7ZFVY0giquhttps://m.tb.cn/h.6ihN2PR?tk=V7ZFVY0giqu

本期就到这里,大家有任何问题欢迎进行讨论,下期再见!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值