云计算百科
云计算领域专业知识百科平台

045_硬同步与重同步在帧接收过程中的分工

从一个\”丢帧\”的深夜调试说起

几年前做一个无线数据采集项目,接收端跑在一个低功耗处理器上。测试环境很干净,发射端每隔固定周期发一帧定长数据,接收端用中断加状态机的方式逐位采样。白天在办公室跑了一整天,一帧没丢。晚上把设备拿到另一个房间做距离拉远测试,问题来了:距离一远,接收端偶尔会连续丢两三帧,然后自己恢复,过一会儿又丢。

一开始怀疑是信号弱、误码率高。但用逻辑分析仪抓接收端的解调输出波形,发现一个很反直觉的现象:丢帧的时候,解调输出的数据流本身是\”像样\”的,前导码和同步字都能在波形上找到,可接收状态机就是没认出来。换句话说,物理层把数据送上来了,链路层却没接住。

这个现象逼着我去把\”帧接收\”这件事拆开看。拆开之后才发现,很多人(包括当时的我)把\”同步\”当成一个动作,实际上它是两个职责完全不同、时序位置也不同的动作:一个负责\”第一次怎么找到帧的起点\”,另一个负责\”帧进行到一半乱了怎么重新找回节奏\”。前者我后来习惯叫硬同步,后者叫重同步。它们混在一个状态机里写,平时没事,一旦信道变差,就会互相踩脚。

下面把这两个东西的分工、边界、以及现场怎么判断问题出在谁身上,按我踩过的坑顺序讲一遍。

硬同步到底在解决什么问题

硬同步要回答的问题只有一个:在这一串连续的比特流里,哪一位是这一帧的第一个比特。

注意这里的关键词是\”连续\”。接收端在空闲时,线路上的电平是随机的,可能是噪声,可能是上一帧的尾巴,也可能是别的设备在说话。硬同步的任务就是在一堆看起来都差不多的比特里,标定出帧的绝对起点。

工程上实现硬同步,主流就两类做法:

第一类是

赞(0)
未经允许不得转载:网硕互联帮助中心 » 045_硬同步与重同步在帧接收过程中的分工
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!