基于原理架构的BASK/BPSK/BFSK数字通信仿真平台
项目介绍
本项目是一个专门用于演示与研究数字调制解调过程的MATLAB仿真系统。其核心逻辑完全脱离了MATLAB内置的通信库函数(如awgn, modem等),而是基于通信原理教科书中的底层物理模型进行开发。通过纯数值计算和手动实现的算法结构,该平台完整再现了确定性信号在包含噪声的信道中传输、变换及恢复的全过程。它不仅可以作为教学论证的工具,从时频两域观察信号演变,还能够通过科学的蒙特卡罗方法对系统可靠性(误码率)进行精确量化评估。
功能特性
- 纯手工算法实现:不调用内置通信对象,手动实现滤波器系数生成、差分方程滤波、相干相乘及抽样判决逻辑。
- 多种调制体制覆盖:支持二进制振幅键控(BASK)、二进制相移键控(BPSK)以及二进制频移键控(BFSK)三种经典的数字调制方式。
- 全流程可视化:实时生成从原始基带信号到已调载波波形,再到解调滤波后的中间过程波形,以及对应的功率谱密度图。
- 闭环性能评估:能够绘制随信噪比(SNR)变化的实测误码率(BER)曲线,并自动与理论极限性能(erfc函数计算值)进行对比验证。
- 自定义数字信号处理工具:内置手动编写的巴特沃斯低通滤波器生成算法和直接II型滤波器函数。
使用方法
- 环境配置:准备好安装有MATLAB环境的计算机(建议R2016b及以上版本,无需安装额外的通信工具箱)。
- 运行仿真:在MATLAB编辑器中打开主程序脚本,点击“运行”或在命令行窗口键入主函数名。
- 结果观测:系统将自动弹出四张结果图表,依序展示时域波形图、功率谱密度图、解调判决时刻细节图以及误码率对比曲线。
- 参数调整:用户可自行修改代码顶部的初始化参数,如采样率fs、码元速率Rb、载波频率fc等,以观察不同系统参数对仿真结果的影响。
系统要求
- 软件支持:MATLAB R2016b或更高版本。
- 硬件要求:通用计算机配置即可。
- 依赖项:本项目为独立实现,无需安装MATLAB Communication Toolbox或Signal Processing Toolbox。
实现逻辑说明- 参数与信源生成:
系统首先定义全局时间轴,利用随机整数函数生成二进制比特序列。随后将每个比特拉伸为对应的采样点,形成非归零矩形脉冲基带信号。
- 调制过程实现:
- BASK调制:通过基带信号(1/0状态)与正弦载波直接点乘,实现受控的幅度变化。
- BPSK调制:将0/1比特映射为-1/+1的极性电平,再与单载波相乘,实现180度的相位翻转。
- BFSK调制:根据当前比特逻辑,在两个不同频率的本地载波源之间进行切换输出。
- 信道模拟(AWGN):
系统不依赖内置噪声函数,而是先计算已调信号的平均功率,根据设定的线性信噪比推导噪声方差,利用标准正态分布函数生成随机噪声序列并手动叠加到信号上。
- 相干解调架构:
- BASK/BPSK解调:接收信号首先与本地同频同相参考载波相乘,由于积化和差原理,信号将被搬移到低频(期望分量)和两倍载波频率(冗余分量)处。
- BFSK解调:采用双支路相干检测架构,分别与两个载波频率进行相乘处理。
- 滤波与判决逻辑:
- 滤波:使用手动实现的5阶巴特沃斯低通滤波器滤除载波倍频分量。
- 抽样判决:在每个码元的中心时刻(最佳抽样点)进行取值。针对BASK使用0.5阈值,BPSK使用0阈值,BFSK则通过对比两个支路的能量输出进行逻辑判定。
关键算法与细节分析- 自定义Butterworth滤波器设计:
代码中包含了一个模拟底层逻辑的滤波器设计函数。它通过构建低通原型极点,利用双线性变换将S平面极点映射到Z平面,从而计算出分式的分子分母系数(b, a)。这种方法模拟了硬件电路设计中的滤波特性。
- 直接II型滤波器函数:
实现了一个通用的差分方程求解器。它通过维护一个状态向量并执行迭代运算,处理输入序列x与滤波器系数的关系,完成了不依赖内置filter函数的信号消噪与平滑。
- 功率谱密度(PSD)计算:
利用快速傅里叶变换(FFT)将时域信号转换为频域能量分布,通过幅值归一化和对数化处理,清晰地展示出不同调制信号占用的频带宽度及其旁瓣特性。
- 蒙特卡罗仿真逻辑:
为获得稳定的误码率,系统在不同的信噪比下循环运行。每次循环中产生大量的测试比特,通过统计解调回复的比特与原始发送比特的差异数,计算当前SNR对应的误码百分比。
- 理论与实测对比:
在最后的可视化中,系统利用互补误差函数(erfc)绘制了BPSK和BFSK的理论性能参考线。这允许用户直观地验证手写算法是否达到了通信原理中定义的理想解调性能。