可见光通信中计算OOK调制的误码率
可见光通信中计算OOK调制的误码率,核心在于分析接收端的光功率分布。
核心模型:总接收功率 = 直视分量 + 弥散分量
室内VLC信道通常建模为两部分之和:
1. 直流增益模型
接收功率 \(P_r\) 由发射功率 \(P_t\) 和信道直流增益 \(H(0)\) 决定:
\(P_r = P_t \cdot H(0)\)
而总信道增益 \(H(0)\) 又包含:
\(H(0) = H_{\text{LOS}}(0) + H_{\text{diff}}(0)\)
a) 直视链路增益 (LOS)
这是最稳定的主分量,可由朗伯辐射模型推导:
\(H_{\text{LOS}}(0) = \frac{(m+1)A}{2\pi d^2} \cos^m(\phi) T_s(\psi) g(\psi) \cos(\psi), \quad \text{当 } 0 \le \psi \le \Psi_c\)
- \(m = -\ln 2 / \ln(\cos \Phi_{1/2})\) :朗伯辐射阶数,由LED半功率角 \(\Phi_{1/2}\) 决定
- \(A\) :探测器有效接收面积
- \(d\) :发射端与接收端距离
- \(\phi, \psi\) :LED辐射角与探测器入射角
- \(T_s(\psi), g(\psi)\) :光学滤波器和聚光器增益
- \(\Psi_c\) :探测器视场角
b) 弥散反射增益 (Diffuse)
由墙面等多次反射形成,常用迭代法或积分法计算。一种实用的简化模型是:
\(H_{\text{diff}}(0) \approx \sum_{\text{反射面}} \rho \cdot \frac{(m+1)A}{2\pi (d_1 + d_2)^2} \cos^m(\phi) \cos(\alpha) \cos(\beta) \frac{\text{反射面面积}}{\pi}\)
- \(\rho\) :墙面反射系数
- \(d_1, d_2\) :LED到反射点、反射点到接收器的距离
- \(\alpha, \beta\) :相关的入射角和反射角
误码率(BER)计算:考虑多径弥散
总接收光功率 \(P_r\) 转换为电信号电流 \(R \cdot P_r\) ,其中 \(R\) 是探测器响应度。由于存在多径,信号会产生码间干扰(ISI),影响BER。
1. 接收端信噪比(SNR)
假设主要噪声为散粒噪声和热噪声:
\(\sigma_{\text{total}}^2 = \sigma_{\text{shot}}^2 + \sigma_{\text{thermal}}^2\)
\(SNR = \frac{(R \cdot P_r)^2}{\sigma_{\text{total}}^2}\)
2. 考虑ISI的OOK误码率闭式解
理论推导表明,在ISI影响下,OOK的BER公式为:
\(BER_{\text{OOK}} = Q\left( \sqrt{SNR} \right) \quad \text{(无ISI的理想情况)}\)
而实际中,由于多径弥散导致脉冲展宽,需考虑相邻码元的干扰。最终推导出的闭式解为:
\(BER = \frac{1}{2} \text{erfc}\left( \frac{R \cdot (P_{\text{LOS}} + P_{\text{diff}})}{\sqrt{2} \sigma_{\text{total}}} \right) - \frac{1}{4} e^{-\frac{(R \cdot P_{\text{LOS}})^2}{2 \sigma_{\text{total}}^2}} \cdot I_0\left( \frac{R^2 P_{\text{LOS}} P_{\text{diff}}}{\sigma_{\text{total}}^2} \right)\)
其中 ( \(\text{erfc}\) ) 是互补误差函数,( \(I_0\) ) 是零阶修正贝塞尔函数。此公式清晰地分离了直视分量和弥散分量的影响,适用于分析功率分布。
MATLAB实现关键步骤与代码框架
%% 参数设置
Pt = 2; % 发射功率 (W)
R = 0.54; % 探测器响应度 (A/W)
A = 1e-4; % 接收面积 (m^2)
d = 2.5; % 传输距离 (m)
phi_half = 60; % LED半功率角 (度)
FOV = 60; % 接收器视场角 (度)
rho = 0.6; % 墙面反射系数
roomSize = [5, 5, 3]; % 房间尺寸 [长,宽,高] (m)
%% 1. 计算信道直流增益
% 1.1 计算LOS增益
m = -log(2) / log(cosd(phi_half)); % 朗伯阶数
HLOS = (m+1)*A/(2*pi*d^2) * cosd(0)^m * 1 * 1 * cosd(0); % 假设垂直对齐
PLOS = Pt * HLOS;
% 1.2 计算弥散增益 (简化版:考虑一次反射)
% 此处需根据房间模型计算所有反射路径的积分,为简化,给出函数框架:
Hdiff = calculateDiffuseGain(Pt, roomSize, rho, m, A, FOV);
Pdiff = Pt * Hdiff;
% 总接收功率
Pr_total = PLOS + Pdiff;
%% 2. 计算噪声方差
B = 20e6; % 系统带宽 (Hz)
q = 1.6e-19; % 电子电荷
I_bg = 0.01; % 背景光电流 (A)
I2 = 0.562; % 噪声带宽因子 (BPSK)
I3 = 0.0868; % 噪声带宽因子 (OOK)
kB = 1.38e-23; % 玻尔兹曼常数
Tk = 300; % 绝对温度 (K)
G = 10; % 探测器开环增益
Gamma = 1.5; % FET通道噪声因子
Cpd = 1e-12; % 探测器电容 (F)
% 散粒噪声
sigma_shot2 = 2*q*R*(Pr_total + P_background)*B + 2*q*I_bg*I2*B;
% 热噪声
sigma_thermal2 = (8*pi*kB*Tk*Cpd*A*I2*B^2)/G + (16*pi^2*kB*Tk*Gamma*Cpd^2*A^2*I3*B^3)/G^2;
sigma_total = sqrt(sigma_shot2 + sigma_thermal2);
%% 3. 计算BER (考虑功率分布)
% 使用闭式解
SNR_factor = (R * Pr_total) / sigma_total;
% 辅助项 (用于闭式解中的Bessel函数部分)
x = (R^2 * PLOS * Pdiff) / (sigma_total^2);
% 利用闭式解计算BER
term1 = 0.5 * erfc(SNR_factor / sqrt(2));
term2 = 0.25 * exp(-(R*PLOS)^2/(2*sigma_total^2)) * besseli(0, x); % besseli是MATLAB的修正Bessel函数
BER = term1 - term2;
fprintf('LOS功率分量: %.4f W\n', PLOS);
fprintf('弥散功率分量: %.4f W\n', Pdiff);
fprintf('总接收功率: %.4f W\n', Pr_total);
fprintf('系统误码率(BER): %.4e\n', BER);
参考代码 VLC 功率分布 计算可见光通信OOK调制方式的BER www.3dddown.com/cnb/55140.html
如何分析“功率分布”的影响?
“功率分布”在VLC中特指直视分量与弥散分量的比例,它直接受环境影响:
| 场景特点 | 功率分布特点 | 对BER的影响 |
|---|---|---|
| 空旷直视路径 | \(P_{\text{LOS}}\) 主导,反射极少 | 近似高斯信道,BER性能最优,趋近理论值 |
| 强反射环境(如白墙小房间) | \(P_{\text{diff}}\) 占比显著提升 | ISI严重,产生错误平层,BER难以低于 \(10^{-4}\) |
| 部分遮挡 | \(P_{\text{LOS}}\) 骤降, \(P_{\text{diff}}\) 为主 | BER急剧恶化,可能通信中断 |
浙公网安备 33010602011771号