可见光通信中计算OOK调制的误码率

2026-2-3

可见光通信中计算OOK调制的误码率,核心在于分析接收端的光功率分布

核心模型:总接收功率 = 直视分量 + 弥散分量

室内VLC信道通常建模为两部分之和:

1. 直流增益模型
接收功率 由发射功率 和信道直流增益 决定:

而总信道增益 又包含:

a) 直视链路增益 (LOS)
这是最稳定的主分量,可由朗伯辐射模型推导:

  • :朗伯辐射阶数,由LED半功率角 决定
  • :探测器有效接收面积
  • :发射端与接收端距离
  • :LED辐射角与探测器入射角
  • :光学滤波器和聚光器增益
  • :探测器视场角

b) 弥散反射增益 (Diffuse)
由墙面等多次反射形成,常用迭代法或积分法计算。一种实用的简化模型是:

  • :墙面反射系数
  • :LED到反射点、反射点到接收器的距离
  • :相关的入射角和反射角

误码率(BER)计算:考虑多径弥散

总接收光功率 转换为电信号电流 ,其中 是探测器响应度。由于存在多径,信号会产生码间干扰(ISI),影响BER。

1. 接收端信噪比(SNR)
假设主要噪声为散粒噪声和热噪声:

2. 考虑ISI的OOK误码率闭式解
理论推导表明,在ISI影响下,OOK的BER公式为:

而实际中,由于多径弥散导致脉冲展宽,需考虑相邻码元的干扰。最终推导出的闭式解为:

其中 ( ) 是互补误差函数,( ) 是零阶修正贝塞尔函数。此公式清晰地分离了直视分量弥散分量的影响,适用于分析功率分布。

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的影响
空旷直视路径 主导,反射极少 近似高斯信道,BER性能最优,趋近理论值
强反射环境(如白墙小房间) 占比显著提升 ISI严重,产生错误平层,BER难以低于
部分遮挡 骤降, 为主 BER急剧恶化,可能通信中断