微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
1、背景
数字信号在传输过程中,由于存在干扰,码元波形将变坏。接收端收到后可能发生错误判决。由乘性干扰引起的码间串扰,可以采用均衡的办法纠正。而加性干扰的影响,先合理选择调制制度、解调方法以及发送功率,其次可以把差错控制作为附加手段。
差错控制是以降低信息传输效率为代价换取提高传输可靠性。
2、差错控制技术
从差错控制角度出发,按照加性干扰引起的错误分布规律不同,信道可以分为三类:随机信道(random channal)、突发信道(burst channal)和混合信道(mixed channal)。
随机信道:错码的出现是随机的,而且错码之间是独立统计的。
突发信道:错码是成串集中出现的,在一些短促的时间段内会出现大量错码,而在这些短促的时间段之间存在较长的无错码区间。成串出现的错码称为突发错码。产生的主要原因有:脉冲干扰和信道中的衰落现象
混合信道:既存在随机错码又存在突发错码,且哪一种都不能忽略不计的信道
差错控制技术主要有四种,检错重发、前向纠错、反馈校验、检错删除
(1)检错(error detection)重发(retransmission)
在发送码元序列中加入差错控制码元,接收端利用这些码元检测到有错码时,利用反向信道通知发送端,要求发送端重发,直到正确接收为止。
检测到有错码,是指在一组接收码元中知道有一个或一些错码,但不知道该错码应该如何纠正。
二进制系统中,可以通过对错码码元取补即能纠正,不需要重发;多进制系统中,即使知道了错码的位置,也无法确定其正确值。
采用检错重发技术,通信系统需要有双向信道传输重发指令。
(2)前向纠错FEC
接收端利用发送端在发送码元序列中加入的差错控制码元,不但能发现错码,还能将错码恢复其正确取值。
采用FEC时,不需要反向信道传送重发指令,也没有因反复重发而产生的时延,故实时性好。
为了能够纠正错码,不仅仅检测到有错码,还需要加入更多的差错控制码元。故设备要比检测重发设备复杂。
(3)反馈(feedback)校验(checkout)
不需要在发送序列中加入差错控制码元。接收端将接收到的码元原封不动地转发回发送端。在发送端将它和原发送码元逐一比较。若发现不同,则认为接收端收到的序列中有错码,发送端立即重发。
需要双向信道,因为每个码元都需要占用两次传输时间,传输效率比较低。
(4)检测删除(deletion)
和检测重发的区别在于,在接收端发送错码后,立即将其删除,不要求重发。只适用于在少数特定系统,在发送码元中有大量多余度,删除部分接收码元不影响应用。
3、纠错编码效率
(1)监督码元
在发送端需要在信息码元序列中增加一些差错控制码元,称为监督码元,监督码元与信息妈呀之间有确定的关系,比如某种函数关系,使接收端有可能利用这种关系发现或者纠正可能存在的错码。
差错控制编码又称为纠错编码。不同编码方法,有不同的检错或纠错能力。
(2)编码效率(code rate)、多余度以及冗余度
设编码序列中信息码元数量为k,总码元数量为n,比值k/n就是编码效率,或码率。监督码元数(n-k)和信息码元数k之比(n-k)/k称为冗余度
比如在编码序列中平均每两个信息码元就添加一个监督码元,这编码的多余度为1/3,编码效率为2/3。
4、自动要求重发系统(ARQ)
采用检错重发法的通信系统,通常称为自动要求重发ARQ系统
三种ARQ系统,停止等待ARQ系统、拉后ARQ系统和选择重发ARQ系统
(1)停止等待ARQ系统
数据按分组发送,每发送一组数据后,发送端等待接收端的确认ACK答复,然后发送下一组数据。若某一组数据有误,接收端发回一个否认NAK答复。发送端将重新发送该组数据。系统处于半双工(half-duplex)状态,传输效率较低。
(2)拉后ARQ系统
发送端连续发哦送数据组,接收端对于每个接收到的数据组都发回确认(ACK)或否认(NAK)答复。一旦接收某组数据有误,则在发送端收到该组数据的否认答复后,从该组数据从新发送数据组。需要对发送的数据组和答复进行编号,以便识别。需要双工通信。
(3)选择重发(selective repeat)ARQ系统
只重发出错的数据组,提高了传输效率
(4)ARQ系统原理框图
①在发送端,输入的信息码元在编码器中被分组编码,并加入监控码元,除了立即发送,还缓存于缓冲存储器buffer中。
②若接收端解码器检出错码,则由解码器控制产生一个重发指令。此指令讲过反向信道发送至发送端。
③发送端重发控制器控制缓冲存储器重发一次。
④接收端仅当解码器认为接收信息码元正确时,将信息码元送给收信者,否则在输出缓冲存储器中删除接收码元。
⑤当解码器未发现错码时,经过反向信道发出不需要重发指令,接收端收到此指令后,继续发送后一码组,发送端的缓冲存储器的内容也随之更新。