基础
BPSK 的时域表达式是
:待发送的二进制信息 :符号周期 :成型滤波器的冲激响应 :载波中心频率
:未必整数倍
MATLAB 仿真

按照上图流程进行 MATLAB 仿真
调制与解调
设定参数:系统时钟频率为
,根升余弦滤波器滚降系数 ,其它参数可修改
1
2
3
4
5
6
7 sys_clk = 160e6;
Rb = 5e6; % //FIXME
Rs = Rb; Ts = 1 / Rs;
usmp_rate = sys_clk / Rs; % //FIXME
fc = 20e6; % //FIXME
hrc = 'rrc'; % //FIXME
- 随机生成
num个二进制数,并对极化处理:
1 | num = round(100000 * 10 ^ (EbNo / 10)); |
- 成型滤波,并去除延迟:
1 | switch hrc |

- 载波调制
1 | phase = 2 * pi * rand; |

- 经过高斯白噪声信道
与 的关系:
1 | SNR = EbNo - 10 * log10(usmp_rate / 2); |
- 相干解调
1 | local_carrier = 2 * carrier; |

- 匹配滤波与抽样判决
1 | mf_dout = conv(received_signal, fliplr(h)); |

仿真结果
将仿真得到的误比特率曲线与理论误比特率曲线比较,基本重合

理论分析
载波频率对误比特率的影响
带通采样定理:
频带信号如图所示,为了保证被采样后不会发生混叠,需要满足条件:
则
在采样频率、码元速率一定时,由带通采样定理可以推导出载波频率
当
内插系数对误比特率的影响
当
接收机采样点位置对误比特率的影响

由仿真结果可以看出,在最佳的接收机采样点处采样,误比特率最低,距离该点越远,误比特率越高。
成型滤波器对误比特率的影响
几乎无影响。
FPGA 仿真(调制)
设定参数:系统时钟频率为
,传输速率 ,发送比特数为 位。
1 | reg [14:0] counter = 15'd0; |
由系统时钟频率和传输速率可以得到内插系数为 reg [14:0] counter,每计数 counter 的高
存储数据、成型滤波、载波调制等过程通过 IP 核实现:
| 功能 | IP 核 |
|---|---|
| 存储数据 | Block Memory Generator |
| 成型滤波 | FIR Compiler |
| 生成载波 | DDS Compiler |
| 载波调制 | Multiplier |
| 生成系统时钟 | Clock Wizard |
仿真波形如下图

附录
噪声建模
- SNR 与 Eb/n0 的关系
下文用到的符号表示:
:比特能量,单位 :噪声的功率谱密度,单位 :无量纲 :信号功率,单位 :噪声功率,单位 带宽 :信噪比,无量纲 :比特速率,单位 ; :传输每比特所需的时间 :符号速率,单位 :码片速率,单位 :调制星座点个数 :扩频比 :根升余弦成型滤波器的滚降因子 :内插系数
SNR(Signal Noise Radio)表示信噪比,
其中带宽
最终得到,
注:
- 在常规通信系统中,
是仿真中的采样速率与 符号速率 之比; - 在扩频通信系统中,
是仿真中的采样速率与 码片速率 之比;
BPSK 的 MATLAB 仿真
- MATLAB 仿真代码(CPU 版)
1 | close all; clear; clc; |
- MATLAB 仿真代码(GPU 版)
1 | close all; clear; clc; |

讨论
评论