基于Walsh-Hadamard码的CDMA通信系统仿真
项目介绍
本项目是一个基于MATLAB开发的码分多址(CDMA)通信系统仿真平台。该系统模拟了从多个用户原始数据生成、信号扩频、信道传输(叠加AWGN噪声)到接收端解扩还原数据的完整通信链路。其核心目的是验证Walsh-Hadamard正交码在多用户环境下区分不同信道的能力,并评估系统在不同信噪比(Eb/N0)条件下的误码率(BER)性能。
功能特性
- 多用户并发支持:系统默认支持8个用户同时在线通信,展现了CDMA技术的多址接入能力。
- 正交扩频技术:采用16阶Walsh-Hadamard矩阵生成正交扩频序列,确保用户信号在理想同步条件下互不干扰。
- 高效调制解调:使用BPSK(二进制相移键控)调制方式,结合相关检测(Correlation Receiver)进行信号恢复。
- 信道模拟:实现了加性高斯白噪声(AWGN)信道模型,并精确计算了考虑扩频增益后的噪声功率。
- 性能量化分析:自动生成仿真误码率与理论BPSK误码率的对比曲线,支持0dB到12dB的信噪比步进测试。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 工具箱需求:无需特殊工具箱,使用MATLAB核心内置函数(如hadamard, randi, erfc等)。
实现逻辑与流程
仿真程序严格遵循以下数字通信流程:
- 参数初始化:
设定用户数为8,扩频因子(Walsh阶数)为16,每个用户发送10,000个随机比特,测试信噪比范围设定为0至12dB,步长为2dB。
- 扩频码生成:
通过内置算法生成16x16的正交Hadamard矩阵。系统选取该矩阵的前8行,分别分配给8个不同的用户作为其唯一的扩频地址码。
- 仿真循环迭代:
程序按设定的信噪比序列进行外层循环,在每个SNR点执行以下操作:
*
源数据生成:随机产生0和1的等概比特矩阵,每行代表一个用户。
*
BPSK映射:将原始比特0转化为幅度-1,比特1转化为幅度1。
*
扩频调制:利用克罗内克积的思想,将每个用户的符号与对应的Walsh序列相乘。每个比特被扩展为16个码片(Chips)。
*
信道叠加:所有用户的扩频信号在时域上进行线性相加,模拟无线信道的空中叠加。
*
噪声施加:根据当前Eb/N0计算噪声方差。由于扩频带来的处理增益,计算噪声标准差时需结合扩频因子进行定标,随后在合成信号上叠加高斯白噪声。
*
解扩处理:接收端将受污染的信号重组,并与特定用户的Walsh码执行内积运算(计算相关性),以提取该用户的信号成分。
*
硬判决:对相关后的结果进行零阈值检测,大于0判为比特1,否则判为比特0。
- 性能统计:
对比原始比特矩阵与恢复后的比特矩阵,统计总误码数,计算当前信噪比下的平均误码率。
关键函数与实现细节分析
正交扩频算法
程序利用Hadamard矩阵的行正交特性。在实现中,通过将用户数据向量化并与特定的Walsh行向量相乘,实现了高效的信号展宽。这种正交性保证了在接收端进行解扩时,非目标用户的信号在相关运算后取值为0。
噪声功率匹配
这是一个实现细节上的关键点:代码中通过 noise_sigma = sqrt(walsh_order / (2 * snr_linear)) 计算噪声。这里考虑了扩频因子 walsh_order 对能量分布的影响,确保仿真中的SNR定义与理论Eb/N0(每比特能量与噪声功率谱密度之比)保持一致。
相关接收机实现
解扩过程反映了匹配滤波器的原理。通过 reshaped_received * user_codes(i, :).' 这一矩阵运算,程序一次性完成了整个比特流的相关计算。这种向量化处理不仅提高了运算速度,也准确模拟了相干解调的过程。
可视化对比
系统最后利用 semilogy 函数绘制对数坐标曲线。除了绘制仿真生成的 ber_results,还利用互补误差函数 erfc 计算了BPSK在AWGN信道下的理论极限。这使得用户可以直观地观察到,当使用正交扩频码时,CDMA系统的性能能够完美贴合单用户BPSK的理论性能表现。