可见光通信中计算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急剧恶化,可能通信中断
posted @ 2026-02-03 14:14  别说我的眼泪有点咸  阅读(9)  评论(0)    收藏  举报