可见光通信 VLC/LiFi 深度解析:为什么“用灯上网“信号必须非负,附可复现 Python 仿真(多径误码率地板实测)
2026/9/18 9:17:30 网站建设 项目流程

一、什么是可见光通信:用灯上网

可见光通信(Visible Light Communication, VLC)指利用 400~700nm 可见光波段(白光 LED 为主)传输数据。它的商用昵称叫LiFi——对应 WiFi,强调"光版无线"。

核心想法特别朴素:LED 可以每秒开关几百万次,人眼根本察觉不到闪烁。于是你把数据编码成"亮一下=1、暗一下=0",接收端用一个光电二极管(PD)测光强变化,就把数据解出来了。一盏照明的顶灯,就这样顺便成了一个千兆级热点。

二、VLC 与 RF 的本质区别:信号必须非负

这是全篇最该记住的一点。射频(RF/WiFi)通信里,我们发的是一个可以正可以负的交流电磁波,正交调制、负频复信号随便玩。

但 VLC 不行。LED 发出的是光强,光强只能 ≥ 0——你不能"发负的亮度"。所以 VLC 的收发机采用IM/DD(Intensity Modulation / Direct Detection,强度调制/直接检测)

  • 发射端:调的是 LED 的瞬时光强(驱动电流),信号天然非负;

  • 接收端:光电二极管直接把光强转成电流,也是非负;

  • 因此所有调制都必须叠加一个直流偏置保证光强不为负,像 OOK 这种最简单的调制直接用"亮=1、灭=0"。

这个"非负约束"带来一连串后果:不能用负频率、不能随便复基带、带宽受 LED 调制带宽限制、收发端要直流耦合。理解了这条,VLC 后面所有"为什么和 RF 不一样"都顺了。

三、入门调制:OOK 与它的误码率

最简单的 VLC 调制就是OOK(On-Off Keying,开关键控):发 1 就开灯(光强 A),发 0 就关灯(光强 0)。接收端把收到的光强和一个门限比较,门限取 A/2 时误码率最优。

在 AWGN(加性高斯白噪声)信道下,OOK 的理论误码率是:

BER = Q( sqrt(SNR) / 2 )

其中 Q 函数是高斯尾函数。这个公式说明:每提高 3dB 信噪比,误码率大概下一个数量级,和你熟悉的 RF OOK 一致。

四、动手仿真:vlc_lifi_demo.py

我写了一个vlc_lifi_demo.py,做两件事:

  1. 解析公式算 AWGN 下 OOK 理论误码率;

  2. 用蒙特卡洛仿真,对比**纯视距(LOS)加了一条墙面反射(2径)**两种信道,在不同 SNR 下的误码率。

脚本核心(完整文件见仓库vlc_lifi_demo.py):

import math def qfunc(x): return 0.5 * math.erfc(x / math.sqrt(2)) def ook_ber_awgn_db(snr_db): snr_lin = 10 ** (snr_db / 10) return qfunc(math.sqrt(snr_lin) / 2)

多径用一个简单 FIR 模拟:直射径增益 1.0 延迟 0,一条反射径增益 0.15 延迟 2 个码元。

真实运行输出(本地 Python 3 跑出)

[表1] AWGN 下 OOK 误码率 vs SNR (理论 + 蒙特卡洛) SNR(dB) | 理论BER | MC BER(LOS) | MC BER(2径) 0 | 3.0854e-01 | 3.0917e-01 | 3.1001e-01 5 | 1.8696e-01 | 1.8746e-01 | 1.9181e-01 10 | 5.6923e-02 | 5.6270e-02 | 6.6530e-02 15 | 2.4640e-03 | 2.3200e-03 | 7.6350e-03 20 | 2.8665e-07 | n/a | 8.0000e-05 25 | 3.0173e-19 | n/a | n/a 30 | 1.2984e-56 | n/a | n/a

怎么读这张表:

  • 理论 vs 蒙特卡洛 LOS 列:几乎完全吻合,验证了仿真模型没写错。高 SNR 时 LOS 列显示 n/a,是因为 20 万比特里一个错都没出(低于统计下限),符合理论 BER≈1e-7 的预期。

  • 2 径列出现"误码率地板":注意 SNR 从 15dB 升到 20dB,LOS 已经几乎不错了,可 2 径误码率卡在 8e-5 左右不再下降。这就是多径反射造成的ISI(码间串扰)error floor——光被墙面/桌面反射后晚到两个码元,把前一个码元"冲花"了,再怎么提高发射功率也消不掉。

这也解释了为什么真实 VLC 系统要做均衡、要限制符号率、要用更复杂的调制(如 DCO-OFDM)——单靠 OOK 太容易被多径坑。

这里还有个常被忽略的瓶颈:LED 本身的调制带宽。照明用的白光 LED 为了亮度和成本,电-光响应往往只有几 MHz 到十几 MHz,远低于射频载波。直接 OOK 想冲高速率,会被 LED 带宽卡死。所以高速 VLC 要么用蓝光滤波后只驱动高频分量、要么用多 LED 阵列做空分复用(MIMO),这也是为什么"LiFi 标称几个 Gbps"通常是实验室理想条件,家用照明级 LED 实际没那么猛。把下面这张表和 RF 对比一下就清楚 VLC 的定位:

维度

WiFi/RF

VLC/LiFi

信号可负

可以(交流)

必须非负、加直流偏置

穿墙

可以

不能(光被墙挡住)

电磁干扰

有,医院受限

无,可进医院/矿井

多径

瑞利衰落等

朗伯反射主导,易 ISI 地板

带宽来源

授权/免许可射频段

可见光,免许可但受 LED 带宽限

典型定位

全屋广覆盖

室内定点补盲/保密/无电磁环境

五、信道到底长什么样:Lambertian 发射与多径

要把仿真做得更接近真实,得知道 VLC 的信道增益怎么来。顶灯的 LED 不是向各个方向均匀发光的,它遵循Lambertian 朗伯辐射模型:发光强度随发射角余弦衰减,越偏离法线方向越暗。直射径(LOS)的直流增益大致和"LED 到 PD 的距离平方成反比、和发射/接收角度有关"。

这就解释了两件事:

  1. 为什么灯正下方信号最好、角落弱——朗伯衰减 + 距离平方;

  2. 为什么房间里必须靠反射补覆盖——灯照不到的死角,靠墙面漫反射把光"弹"过去,而这条反射路径又正好是制造多径 ISI 的元凶。

所以室内 VLC 是一个"直射为主、反射补盲、反射又带来串扰"的矛盾体。工程上典型做法是布多盏 LED 灯(多输入)、接收端做角度分集,并在基带做均衡把多径拖尾压平。我们仿真里那条增益 0.15、延迟 2 码元的反射径,就是把"一次墙面反射"高度浓缩成的最简模型——真实房间是几十上百条这样的径叠加。

六、VLC 的优劣势

优势

  • 频谱无限免许可(可见光不用像射频那样抢频段);

  • 不穿墙、天然物理隔离,办公室之间不串扰,适合保密;

  • 无电磁干扰,医院/飞机/矿井等禁 RF 场景能用。

劣势

  • 必须有光线直射/反射路径,挡一下就断(手挡灯就没网);

  • 多径与 LED 调制带宽限制了速率;

  • 反向信道(手机→灯)通常还得回 RF 补。

七、与 6G 的关系

VLC/LiFi 在 6G 里不是要取代 WiFi,而是作为室内热点补盲与高精度定位的补充:灯在哪、光就照到哪,天然带"位置感知"。它和我们前面写过的太赫兹、RIS 一样,都是 6G 频谱向更高频段/非传统介质扩展的一部分——只不过这次用的是你头顶那盏灯。

八、小结

  • VLC/LiFi 用 LED 照明顺便通信,收发是 IM/DD 强度调制;

  • 最本质约束:光强非负、要直流偏置;

  • OOK 理论 BER = Q(√SNR/2),本脚本本地复现;

  • 室内反射多径会造成误码率地板,提高功率无法消除,必须靠均衡/更优调制。

完整可复现脚本vlc_lifi_demo.py已随文附上,python3 vlc_lifi_demo.py即可复现上表。想自己玩,可以把反射增益改成 0.05/0.3、延迟改成 1/4 码元,观察误码地板随多径强度怎么移动——这比只看公式直观得多。


参考资料

  1. OOK 调制在 AWGN 下的误码率公式(通信原理经典)

  2. VLC IM/DD 强度调制直接检测原理(可见光通信教材)

  3. 室内可见光多径信道与 ISI(IEEE 802.15.7 / 光通信文献)

  4. 本仓库vlc_lifi_demo.py实测数据表(运行日期 2026-09-18)

说明:仿真中反射增益 0.15、延迟 2 码元为"典型室内示意"参数,非某实测房间;结论定性成立。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询