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