ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DCO-OFDM光通信系统原理与MATLAB仿真实现

DCO-OFDM光通信系统原理与MATLAB仿真实现 简介直流偏置光正交频分复用DCO-OFDM是可见光通信VLC中应对LED非线性失真、提升频谱效率的重要调制技术广泛用于室内高速光通信场景。这份MATLAB代码资源面向光通信、数字信号处理领域的研究人员与工程师提供了从可见光信道建模到完整DCO-OFDM收发链路的仿真实现覆盖符号映射、IFFT、加循环前缀、直流偏置、光电检测、同步均衡等关键环节信道建模部分着重考虑光强度调制/直接检测、大气吸收与散射以及光电探测器特性便于贴近实际环境开展性能评估。压缩包共2个m文件体积仅3KB一个用于VLC信道建模一个用于DCO-OFDM基带仿真结构精简、易读易扩展。目前已有1550人学习下载适合正在开展可见光通信课题的本科生、研究生及工程技术人员。借助脚本读者可直观观察信道因素对信号的影响并可通过修改调制阶数、直流偏置深度、循环前缀长度等参数快速获得误码率、频谱效率等性能曲线为算法改进和系统设计提供可复现的实验基础。1. DCO-OFDM先把双极性波形抬进光强度区间IM/DD 光链路里LED 或激光器的输出功率只能随驱动电流单向变化而 OFDM 的复基带符号经过 IFFT 之后时域波形会在零附近摆动负半轴没法直接“发光”。如果强行负值截断等效于给每个符号注入大量非线性削波噪声误码率会迅速恶化。DCO-OFDM 的做法是在每个 OFDM 符号上叠加一个“直流偏置”把整体波形平移到非负区间配合限幅把残余负峰修掉。这个方案牺牲了平均光功率换来了接收机只需一个光电二极管就能完成包络检测的简单性因此在可见光通信、塑料光纤以及短距离数据中心链路的 OFDM 设计中是首选调制方案。适合想快速搭出 DCO-OFDM 物理层链路、评估偏置和削波对 BER 影响的人。做好这件事只需要抓住偏置因子、Hermitian 对称映射和限幅策略三个点。2. DCO-OFDM 的原理为什么一张 IFFT 表要同时考虑偏置和对称2.1 IM/DD 信道对负半轴的物理限制光强度调制直接检测信道的核心指标是光强度。接收端用光电二极管把光功率转成电流输出是单极性信号任何负的幅度在物理上都不存在。这与无线 OFDM 完全不同无线接收机可以恢复双极性实数或复数基带信号而 IM/DD 只能调制光强度不能调制相位或幅度符号。LED 的 I-V 曲线正半轴有近似线性区负向驱动电流超过阈值后直接截止产生削波并伴随色彩偏移和效率下降。因此OFDM 时域信号在进入光域前必须完成单极性变换。所谓单极性变换不是简单取绝对值那种非线性变换会破坏子载波之间的正交性。DCO-OFDM 的路线是保留原始波形形状用一个直流分量把它抬起来让最左侧的负峰值也能落在非负区域。这一抬升就是标题里“直流偏置光正交频分复用”的直接含义。尽管 Hermitian 对称让可用子载波数减半但换来的是接收机成本大幅下降。若与直接检测光学接收机配合不需要本振激光器不需要相干接收机和复杂的相位恢复 DSP这在中短距离链路中比频谱效率更优先。在 DCO-OFDM 中实际传输的实波形就是光强度接收端 FFT 后只取数据子载波因此直流偏置并不直接贡献信号功率开销它只消耗链路平均光功率预算。2.2 偏置因子和削波概率的定量关系设原始 OFDM 时域信号为x[n]均值近似为 0均方根为σ。加直流偏置μ后得到x_dco[n] x[n] μ若该值小于 0 就截为 0。定义偏置因子α μ / σ这是 DCO-OFDM 最核心的归一化参数。由于x[n]近似服从高斯分布其负值超过μ的概率是0.5 * erfc(α / √2)。α 越大削波概率越小但平均光功率也越高。下表列出了不同 α 下的削波概率和平均光功率水平做链路预算时可快速选点。表 1 DCO-OFDM 直流偏置因子与削波代价偏置因子 α负峰削波概率平均光功率水平3.0约 0.135%3σ4.0约 3.2e-54σ6.0约 1.0e-86σ8.0可忽略8σα4 时残余削波对 QPSK 几乎无影响但对 64QAM 仍可能贡献不可忽略的噪声项α6 时削波基本退出影响因素代价是平均光功率从 α3 时提高一倍即 3dB。若只从电功率角度看直流分量消耗的功率正比于 α²从 3 提高到 6 要增加 12dB但 IM/DD 链路真正受限制的是平均光功率因此应把 α 的线性关系作为预算主线。2.3 Hermitian 对称与频谱效率损失DCO-OFDM 发射端用 N 点 IFFT 生成实值时域信号频域输入必须满足 Hermitian 对称性X[N-k] conj(X[k])直流子载波X[0]和奈奎斯特子载波X[N/2]必须为实数通常置零。这样可供承载数据的独立子载波数量是N/2 - 1。这是 DCO-OFDM 相对 ACO-OFDM 等方案在频谱效率上的主要损失。符号速率由子载波间隔和循环前缀共同决定一个 N64 的子帧最多承载 31 个 QAM 符号数据率约等于R_s * 31 * log2(M) / (N CP)。实际系统还会在有效子载波里留出导频可用数量会更低。下表给出了一套后续仿真用的链路参数偏置因子 α6 时削波影响很小是验证接收机算法比较稳妥的起点。表 2 仿真的 DCO-OFDM 基础参数参数项取值FFT 点数 N64有效数据子载波31循环前缀长度16调制方式16QAM偏置因子 α6每个 SNR 点符号数10003. 用 MATLAB 搭一套 DCO-OFDM 收发链路重点看偏置如何影响误码3.1 先定好参数表和信号流代码中的信号流是随机比特 → QAM 映射 → Hermitian 对称填充 → IFFT → 加循环前缀 → 叠加直流偏置 → 负峰限幅 → 加入 AWGN → 去循环前缀 → FFT → 提取有效子载波 → 迫零均衡 → QAM 解调 → 统计误码率。参数的选取参考表 2。使用 MATLAB 通信工具箱的qammod/qamdemod可以省去手动进制转换但要注意设置UnitAveragePower, true保证映射后的符号平均功率为 1这样 IFFT 后时域信号功率也便于预测。3.2 发射机实现Hermitian 对称和直流偏置的具体写法以下是发射机核心代码直接放在脚本中运行N 64; % FFT 点数 N_data 31; % 有效数据子载波数 cp_len 16; % 循环前缀样点 M 16; % 16QAM num_sym 1000; % OFDM 符号数 bias_alpha 6; % 直流偏置因子 % 生成随机比特并映射 nbits N_data * log2(M) * num_sym; bits_tx randi([0 1], nbits, 1); data_sym qammod(bits_tx, M, InputType, bit, UnitAveragePower, true); data_mat reshape(data_sym, N_data, num_sym); % Hermitian 对称填充 freq_grid zeros(N, num_sym); freq_grid(2:N_data1, :) data_mat; % 子载波 1:31 freq_grid(N-(1:N_data)1, :) conj(data_mat(end:-1:1, :)); % 镜像到 63:33 % IFFT 并保持时域电功率为 1 x_time ifft(freq_grid, N, 1) * sqrt(N); x_time real(x_time); x_cp [x_time(end-cp_len1:end, :); x_time]; % 加循环前缀 % 加直流偏置和负峰限幅 mu bias_alpha * std(x_cp(:)); x_dco x_cp mu; x_dco(x_dco 0) 0; % 削掉残余负峰代码逻辑freq_grid(2:N_data1,:)放置有效数据N-(1:N_data)1生成从 N 到 N-N_data1 的镜像位置与conj(data_mat(end:-1:1,:))配对保证 IFFT 输出虚部被抵消。IFFT 后乘以sqrt(N)是把 Parseval 定理中的 1/N 因子补偿掉使得时域均方根接近星座图 RMS 电平。后续加直流偏置的标准差用加循环前缀后的波形计算因为循环前缀不改变信号的分布特性。负峰限幅放在加偏置之后因为限幅阈值固定为 0实际 LED 的截止就是这样。这里有一个容易踩的坑计算偏置时必须用std(x_cp(:))而不是用mean。OFDM 时域信号接近零均值但峰值远大于均值直流偏置的真正设计目标是覆盖负峰只有用标准差才能对应高斯分布的峰均关系。3.3 接收机FFT 后为什么不需要专门滤除直流接收机代码% 假设信道是单位增益平坦信道只叠加 AWGN snr_dB 20; P_signal var(x_cp(:)); % 交流信号功率 sigma_n sqrt(P_signal / (10^(snr_dB/10))); y_rx x_dco sigma_n * randn(size(x_dco)); % 去循环前缀后 FFT r_time y_rx(cp_len1:end, :); freq_rx fft(r_time, N, 1) / sqrt(N); data_rx freq_rx(2:N_data1, :); % 追零均衡这里用已知数据做 LS 信道估计便于观察链路自身性能 h_est sum(sum(data_rx .* conj(data_mat))) / sum(sum(abs(data_mat).^2)); eq_sym data_rx / h_est; % QAM 解调 bits_rx qamdemod(eq_sym(:), M, OutputType, bit); ber mean(bits_tx ~ bits_rx);直流偏置在时域是一个常数FFT 之后只出现在 0 号子载波而数据放在 1 到 31 号因此freq_rx里不包含直流能量不需要额外的直流滤除模块。AWGN 叠加在x_dco上等效于 PIN 管的散粒噪声和热噪声即使信号中包含直流分量噪声模型依然是加性高斯。这里的 LS 信道估计借用了发送符号实际系统中对应块状导频短距离光链路信道变化慢这种做法是有效的。3.4 Monte Carlo 遍历偏置因子观察误码率拐点把上述收发过程包成函数后用两层循环扫描偏置和 SNRbias_list [3 4 6 8]; snr_list 0:5:30; for b 1:length(bias_list) for s 1:length(snr_list) % 执行发射机、加噪声、接收机解调 % 保存 ber(b, s) end end semilogy(snr_list, ber, -o);预期结果是α3 在低 SNR 时与 α4 几乎相同但高 SNR 会进入误码率地板因为削波噪声构成了底噪α6 和 α8 的 BER 曲线基本重合此时限幅不再制约链路剩下的只有 AWGN。若换成 64QAMα6 仍会看到微弱的地板效应需要调到更高偏置。仿真过程中对比不同调制阶数能更清楚体会到高偏置不是“越大越好”而是要在光功率预算和星座密度之间折中。4. 调优与验证用 EVM 和偏置扫描把链路调到最佳区间4.1 用 EVM 判断削波贡献比 BER 更灵敏高阶调制下 BER 为零时误码率曲线无法区分偏置差异这时工程上更常用误差矢量幅度。在接收机解调前计算ref_sym data_mat(:); evm_num sqrt(mean(abs(eq_sym(:) - ref_sym).^2)); evm_den sqrt(mean(abs(ref_sym).^2)); evm evm_num / evm_den;EVM 能反映星座的整体偏移、旋转和压缩对削波这类非线性失真非常敏感。实际调试时先固定 SNR 在 25dB 以上把 EVM 作为偏置因子 α 的函数画出来可以直接看到拐点α 从 3 往 6 变化时 EVM 快速下降超过 6 后几乎不变说明继续加大偏置只是浪费光功率。4.2 网格搜索偏置因子并加入光功率约束常见做法是扫描 α 从 3 到 8、步进 0.5对每个 α 计算 EVM得到“α-EVM”曲线再结合平均光功率预算选择工作点。如果链路预算允许 2dB 光功率余量通常选曲线拐点处的 α而不是 EVM 最小的 α。若 LED 正半轴还有最大电流限制需要同时搜索正向限幅点形成二维网格搜索。一次完整仿真在一个 CPU 核上运行几十秒就能完成比直接调硬件快得多。4.3 降低 PAPR 可以降低偏置压力DCO-OFDM 的高偏置本质上是为高峰均比买单。如果先用选择性映射或压扩变换把时域波形的 PAPR 压低 2-3dB负峰值幅度也会下降同样的 α 下削波概率大幅降低或者在相同削波概率下允许更低的 α。这正因为如此完整的 DCO-OFDM 优化链路通常把偏置选择和 PAPR 抑制放在一起做而不是孤立地调直流点。调试时先用归一化直方图观测加偏置前波形的负尾再用上述网格搜索确定最经济的偏置区间。本文还有配套的精品资源点击获取
返回列表