通信,就是将信息准确无误地从发件人传递给收件人的过程。信息在光纤,电缆中以电信号传播,在传播过程中信号会因为噪声和干扰而“受伤”,因此我们需要想办法保证信息传递的准确性。
重传
我前段时间网购了一只可爱的熊本熊,但是过了好几天快递记录一直停滞不更新。我心急,联系商家,他说跟快递确认可能小熊已经丢了,于是给我重新发了一只。
可以粗略地将通信模型类比成网购熊本熊,其中的熊本熊就是需要传递的信息块1(如下图所示),商家是发送方(transmitter),我是接收方(receiver),委托的快递是信道(可以简单理解为信息传递的管道)。
我通过查询快递,发现熊本熊发货异常,与商家联系之后,他给我又发了一只过来。
在信息传递错误的情况下,会使用与我类似的策略:如果接收方发现信息有误(不完整,损坏或者丢失),就要求发送方将原来的信息重新发送一次,这就是重传机制。
重传机制在日常生活中也非常常见,比如我们交谈时候,如果没有听清楚,会不自觉地“嗯?”一声,对方就会将刚才的话再说一遍。
前向错误更正
我们通过听到的语音片段,判断对方发出的信息是否正确,那手机和计算机又怎么判断发送信息是否正确呢?使用CRC校验。
网购熊本熊,收到货物之后,我怎么判断是我买的那只呢?
我会将它与网店的照片和描述进行比对,比如外观,颜色,材质,样式等等,如果这些关键信息与网店描述一致,那么就可以肯定我收到的是正品。与商家确认之前,我利用了网店的冗余信息,判断网购货物的真伪。
前向错误更正是一种在单向通信系统中控制传输错误的技术,通过连同数据发送额外的资讯进行错误恢复,以降低比特误码率。
电子设备也是根据发送信息中携带的冗余信息来验证正确性的,这种技术角前向错误更正。所有的电子设备与人类不同,它们只认识0和1,传递的信息也是一串010101010101...
一样的码流,所以在传送的信息码流之后,发送方会添加与信息码流相关的冗余信息,供接收方判断收到信息的正确性。本质上,是通过一系列的运算,提取出信息码流的特征,用冗余信息描述,并将冗余信息附在信息码流的之后一起发送出去。
如下图所示,黄色块是信息比特,CRC bits就是冗余信息。接收方解码出信息比特,再运算出CRC bits与发送的CRC bits进行比较:如果相同,则信息接收无误,否则说明信息传输错误。CRC的具体的机制可以参考我之前的博文CRC校验编码。
ARQ和HARQ
ARQ
之前介绍的重传机制就是一种ARQ(Automatic Repeat-reQuest)技术。
如下图所示,接收方在收到信息之后,会借助前向错误更正技术来判断收到的信息是否损坏,如果没有则反馈一条ACK(ACKnowledgement)的信息,告诉发送方信息已经正确接收,发送方知晓之后继续发送新的信息;否则,如果发现有误,就丢弃该信息,然后发送一条Non-ACKnowledgement(NACK)的反馈信息,发送方收到信息之后会重新发送原来的信息。
该技术有如下几个关键特征:
- 接收方会发送反馈信息给发送方。无论接收正确与否,都需要反馈接收情况给发送方;
- 接收正确之后才继续发送信息。在前一个信息没有正确确认之前,不得发送下一条信息,所以ARQ又称为stop and wait ARQ。如下图所示
HARQ
我们留意到,如果信息有误就直接丢弃,丢弃掉的信息仅仅是部分损坏,那如果不丢弃,是不是可以利用里面的信息解码呢?
答案是肯定的。有一个很直观的例子,比如发送一页书,只是后面的一小部分模糊不清,如果重发之后之前损坏的那一小部分是好的,就可以将二者拼接起来,完整地复原之前的结果,这里的“拼接”就是通信信号中的软合并(soft combine)技术。
如上图所示,很明显如果将之前传输有误的数据缓存起来,与现有的损坏数据做分集合并,必然会提高信息正确解码的概率,这种结合了分集合并和ARQ的技术就称为HARQ,即混合ARQ技术。
HARQ与之前的ARQ有两个显著区别:
- 缓存损坏数据。ARQ将损坏数据直接扔掉,而HARQ需要缓存起来;
- 缓存数据与当前数据软合并解码。缓存数据就是为了软解码,提高正确检测率。
如上图所示,如果数据块2一直发送失败,接收方会一直反馈失败,直到与本地缓存数据联合正确解码为止。
根据发送方重发数据的内容是否一致,可以将HARQ分为跟踪合并和增量冗余两种类型。
- 跟踪合并(Chase Combining)
发送端将原始信息比特(Information Bits)加上CRC(Cyclic Redundancy Check, CRC)后通过Turbo Encoder编码产生数据包(Coded Bits),无论首次还是之后重传都要发送这个数据包Coded Bits,接收方则利用Maximum-ratio概念组合现在及之前收到的Coded Bits后,再进入解码器(Decoder)。由於每次重傳都與第一次傳的資料相同,所以並不會增加編碼率(Coding Rate),但可以在每次重傳時都增加訊噪比(Signal to Noise Ratio, SNR)Eb/N0。
- 增量冗余(Incremental Redundancy)
與Chase Combining不同的是,傳送端在傳送前會將Coded Bits透過循環緩衝器(Circular Buffer)用打孔(Puncturing)的方式分成四種冗餘版本(Redundancy Version, RV)第一次傳送r.v.=0,若有需要重傳,通常會依序再傳r.v.=2、r.v.=3及r.v.=1的部分,若傳送四次合併之後仍無法正確解碼,才會全部捨棄再從頭重傳一遍,其相關概念如圖5所示。LTE中的HARQ結合Soft Combining都是以Incremental Redundancy為主。因此,FEC及Soft Combining提供的低誤碼率,將可以大幅減少傳統ARQ所必須重傳的次數。