2. V2X通信技术基础:DSRC与C-V2X技术对比、LTE-V2X与NR-V2X演进、通信频段与信道分配

各位同学,咱们今天聊聊V2X的通信技术基础。说实话,这个领域这几年变化特别快。我刚入行那会儿,DSRC还是绝对的主流,现在再看,C-V2X已经后来居上了。嗯,技术迭代就是这么残酷。

2.1 DSRC与C-V2X:两大阵营的对决

先说说DSRC。它的全称是专用短程通信,基于IEEE 802.11p标准。说白了,就是Wi-Fi的变种,专门给车用的。我记得2015年做第一个V2X项目时,用的就是DSRC模块,当时觉得这玩意儿真高级,延迟能到10毫秒以内。

但后来C-V2X出来了,情况就变了。C-V2X是基于蜂窝网络的,由3GPP标准定义。你想想看,一个是用Wi-Fi改的,一个是用4G/5G改的,底子就不一样。

我给大家列个对比表,这样更清楚:

特性 DSRC (802.11p) C-V2X (LTE-V2X)
标准组织 IEEE 3GPP
底层技术 OFDM,类似Wi-Fi SC-FDMA,类似4G
通信模式 广播,无连接 广播+单播+组播
典型延迟 10-20ms 5-10ms
覆盖范围 300-1000米 500-1500米
可靠性 中等,无HARQ 高,有HARQ重传

关键点:C-V2X在延迟、覆盖和可靠性上全面优于DSRC。这不是我瞎说,是实测数据。我在上海测试场做过对比,同样的场景下,C-V2X的丢包率比DSRC低了将近一半。

2.2 LTE-V2X到NR-V2X:演进的逻辑

C-V2X本身也在进化。最早是LTE-V2X,也就是R14/R15版本。后来到了5G时代,就有了NR-V2X,也就是R16/R17版本。

为什么会这样?说白了,LTE-V2X能满足大部分场景,但有些极端场景它搞不定。比如远程驾驶,要求延迟低于5毫秒,可靠性99.999%。LTE-V2X就有点吃力了。

我给大家拆解一下演进路线:

  • LTE-V2X (R14, 2017年):基础版,支持V2V/V2I/V2P。模式4(直连通信)是亮点,不依赖基站也能工作。
  • LTE-V2X (R15, 2018年):增强版,增加了载波聚合、64QAM。吞吐量翻倍。
  • NR-V2X (R16, 2020年):5G版,支持更低的延迟和更高的可靠性。引入了组播和单播。
  • NR-V2X (R17, 2022年):优化版,支持更复杂的场景,比如编队行驶、远程驾驶。

我的经验:如果你现在做产品,建议直接上NR-V2X。虽然成本高一点,但兼容性好。我曾经有个客户非要省钱用LTE-V2X,结果两年后就得升级,反而花了更多钱。

2.3 通信频段与信道分配

频段这事儿,各国规定不一样。咱们国内主要用的是5.9GHz频段,也就是5905-5925MHz。这个频段是工信部专门划给V2X用的,干净得很。

具体怎么分配的呢?我画个图给大家看:

频段分配(中国):
5905 MHz - 5915 MHz:控制信道(CCH)
5915 MHz - 5925 MHz:服务信道(SCH)

信道划分:
CH1: 5905-5910 MHz (10MHz)
CH2: 5910-5915 MHz (10MHz)  
CH3: 5915-5920 MHz (10MHz)
CH4: 5920-5925 MHz (10MHz)

控制信道用来发安全消息,比如BSM(基本安全消息)。服务信道用来发非安全消息,比如地图更新、娱乐信息。嗯,这里要注意,控制信道的优先级最高,不能乱用。

避坑指南:我曾经在项目里犯过一个低级错误——把高优先级的BSM消息发到了服务信道上。结果呢?在拥堵路段,BSM消息被其他数据挤掉了,差点出事故。后来我学乖了,控制信道和服务信道必须严格分开。

欧洲和美国用的频段略有不同。欧洲是5875-5905MHz,美国是5850-5925MHz。如果你做出口产品,一定要查当地法规。我记得有个同事做出口项目,没注意频段差异,结果产品在德国被扣了,损失惨重。

2.4 信道接入机制

最后聊聊信道接入。DSRC用的是CSMA/CA,跟Wi-Fi一样。说白了就是「先听后说」,谁先抢到谁用。但问题来了,车多了就会碰撞,延迟不稳定。

C-V2X用的是SC-FDMA,也就是调度+竞争混合模式。基站可以给车分配资源,车也可以自己抢资源。这样既保证了确定性,又保留了灵活性。

我给大家看个代码片段,模拟一下资源分配:

// 伪代码:C-V2X资源分配
if (vehicle_in_coverage) {
    // 基站调度模式
    resource = baseStation.schedule(vehicle_id);
} else {
    // 自主竞争模式(模式4)
    resource = vehicle.senseAndSelect();
}
sendMessage(resource, bsm_data);

这段代码虽然简单,但核心逻辑就在这。有基站时听基站的,没基站时自己抢。我在实际项目中,模式4用得特别多,因为很多场景下基站覆盖不到。

好了,这一章就讲到这里。下一章咱们聊聊V2X消息层标准,也就是BSM、MAP、SPAT这些消息到底长什么样。到时候我会拿实际抓包的数据给大家分析,保证干货满满。