Bootstrap

MPSK(BPSK/QPSK/8PSK)调制解调的Matlab仿真全套

一、概述

MPSK(BPSK、QPSK、8PSK)等是常用的相位调制方式,本文对数据获取、比特流组织、基带调制、上变频发送、添加噪声、接收下变频、基带解调、数据还原等过程进行仿真。

模块化、通用化设计,将函数分为(1)数据读取转比特流;(2)基带调制【参数控制调制类型】;(3)上变频发射;(4)噪声;(5)下变频;(6)基带解调【参数控制解调类型】;(7)比特流还原数据存储文件。包含全套matlab代码及配套文档,内含过程中的频谱图、星座图、光谱图等。

信源编码、译码,信道编码、译码等可用类型较多,本文不涉及。

本文仿真参数如下:

fs=1000000;                      % 采样率

fc=320000;                       % 射频载波频率

Rs=10000;                        % 符号速率

sps=fs/Rs;                        % 每码元样点数

Nsym=20;                        % 根升余弦滤波器阶数

Roll=0.25;                        % 根升余弦滤波器滚降系数

m=2;                            % MPSK调制深度的m值

入口脚本:conmunicate.m

二、数据获取

常见的博文大多使用随机数生成函数randi()生成,方便且便捷,但仿佛仅仅为了仿真而仿真。本博文使用文件作为数据源,实现取数据并将数据转为二进制比特流输出,使用以下函数实现:

bit=yin_read_bitstream(filename)

其中,主要使用了matlab提供的de2bi函将十进制数转为二进制比特数组。注意该函数转换后的结果是低位在前高位在后。

一般地,传输信息以帧分割数据,属于传输协议层需要解决的问题,本博文不涉及,而是将所有数据一次性传输。

本文组织了一段文本作为传输样本文件。如下图所示。

图1 源数据文件:source.txt

其中,前8行编了一段频率不同的二进制比特,可理解为同步头,便于接收端使用相关算法找到实际报文数据的起点。一般同步头由协议控制,本文为了简便将同步头放在数据文件中。接收端一般可利用滑动相关算法检测到同步头,进而准确定位报文的起点,本文并未涉及该部分内容。

;