在自动重复请求系统中恢复数据的 方法和设备 发明的领域
本发明一般说来涉及数据处理和通信领域,具体而言,涉及到经过通信信道发送的和从存储器检索到的数据的恢复。
发明的背景和概要
在数字数据系统中,存放在存储器中的数据以及通过通信信道发送的数据因差错而被破坏是常有的事。一般用来检测差错和/或纠正检测到的差错的技术是多种多样的。差错检测技术的一个例子是熟知的循环冗余码(CRC)校验。其它使用信息块码和卷积码等技术可以同时进行差错检测和差错纠正。为了差错检测和纠正,在数据比特上要加进附加的编码比特。当从通信信道上收到数据或从存储器中检索到数据时,就用附加地比特以相同的方式对收到的或检索到的数据进行解码以检测是否有某些数据出了差错。考虑这些解码过程的一种方法是把它们模拟成为人类在阅读印刷文字时纠正拼写差错的能力。由于各字词相互间有很大的不同,读者直觉地知道那个词是什么意思。
这些差错检测和/或纠正编码技术都在不同程度上增加了冗余信息。在数据的一个单元中加入更多的冗余,就更容易使差错被正确地检测到,在某些情况下,就更容易被纠正。很遗憾,随着编码/冗余比特数的增加,数据的总体“吞吐量”就减少。换句话说,每单位时间所发送的实际数据内容被减少了。此外,由于编码/冗余比特数增加,编码/解码算法的复杂性增加,这要消耗有限的数据处理资源并减慢数据处理的时间。
在某些相对“干净”的环境里,数据在这里不太可能被损坏,可以结合较为简单的差错检测和/或纠正过程而使用较少的编码/冗余比特。但是,在具有相当数量的噪声、干扰等不那么有利的环境中,这样的简化通常并不是一种选择。例如考虑一个无线通信的环境。射频通信通道会受到许多破坏性因素的阻塞,这些因素包括始终存在的噪声、几乎连续不断变化的通信信道特性、多径衰落、引起符号间干扰的时间漂移、来自相邻信道通信的干扰、以及一大群其它因素。
用来保护免受这些不同的破坏因素影响的一种通信协议(即过程)是自动重复请求(ARQ)事务处理。纯粹的只使用差错检测-差错纠正的ARQ系统是不使用的。更具体地说,具有某种类型差错检测比特/编码的数据分组从发送器通过一个通信信道发送到接收器。接收器对每个收到的数据分组用包含在数据分组中的差错检测比特进行处理以确定数据分组是否被正确接收。如果分组被完全准确地收到,则接收器向发送器送回一个确认信号(ACK)。如果检测到差错,则接收器向发送器送回一个否定确认(NAK),并放弃该数据分组,等待从发送器重新发送该同一个数据分组。此外,规定了一个预先确定的计时窗口以允许发送器有足够时间发送信息、接收器有足够时间接收并处理信息,然后向发送器发送一个ACK或NAK信号。如果发送器在预定的窗口内没有收到ACK或者在窗口期间收到了NAK信号,则发送器重新发送数据分组。
在一个具有噪声或别的数据可能被破坏的环境如无线通信中,在数据被正确接收之前可能发生大量的重新发送。值得注意的是。不管一个数据分组被发送/重新发送了多少次,接收器都不会变得更“聪明”一些来懂得如何从一个后来重新发送的数据分组中解码出正确的信息来。换句话说,在任何一个给定的数据分组重新发送中正确接收分组的概率不会优于该分组前一次重新发送的概率。
改进这种ARQ协议的一个可能的选择是给数据分组加上正向纠错(FEC)比特以准许某种程度的比特纠正。这样的“混合”技术的一个例子是用Bose-Chaudhuri-Hocquenghem(BCH)奇偶校验比特取代CRC差错检测比特。如果接收器可以纠正差错比特,那么可以向发送器发送去一个确认而无需作进一步的重新发送。即使用这样一种能够纠正有限数量的差错形式的混合技术,这样的混合技术(和纯ARQ协议一样)并没有利用包含在以前所收到的分组中的信息。在纯ARQ协议下的有差错的数据分组或具有使用混合技术纠正不了的差错的数据分组只是简单地被加以放弃并需要连续的重新发送的序列。
这里需要的是能用于例如ARQ协议的数据恢复技术,它利用包含在以前所发送的数据分组中的信息,也就是利用有差错的数据分组而不是放弃它们,从而使得当前收到的重新发送的数据分组可以利用从以前接收到的数据分组中的信息而得到纠正。以前发送的分组中的许多比特很可能是正确的,而在多数情况下只有一个或几个比特是受损的。本发明的一个主要目的是利用从以前发送的分组中所积聚的正确信息来产生正确的数据分组。不过,这样一种技术不应该消耗过多的处理时间,并且可能的话,还应该尽量减小这种处理所需的存储器数量,以便这种技术能用于存储器资源有限的各种不同环境中,例如用于便携式/移动无线装置中。因此,在一个ARQ协议中具有正向纠错而无需给每个数据分组加上正向纠错比特将是很吸引人的。
本发明的一个目的是提供一种数据恢复系统,其中利用包含在前面接收/发送的但却是不能接受的数据单元中的信息来恢复正确的数据单元。
本发明的又一个目的是在自动重复请求(ARQ)事务环境中提供这样一种数据恢复技术。以便使数据能得到纠正而不必在数据单元上加上另外的正向纠错比特。
本发明的另外一个目的是提供一种差错恢复技术,它可以有效地在恶劣的环境中恢复数据而无需给数据分组附加正向纠错比特、无需复杂的正向差错数据纠正编码过程、或无需大量的存储器资源。
本发明解决了上面所提到的各种问题并满足了这些和其它一些目的。在一种自动重复请求数据发送系统中,对数据单元进行接收、检验差错、并且如果检测到差错就重新发送,从而产生一组数据单元,对于这样的系统本发明对序列中的交替的数据单元执行第一重构操作,并对序列中的别的一些数据单元执行第二重构操作,以便重构一个可以接受的数据单元。重构操作之一可能包括根据序列中当前收到的数据单元和以前收到的数据单元来确定一个经多数表决的数据单元。另外的重构操作可能包括对经多数表决的数据与当前收到的数据单元执行直接比较以识别那些具有不同比特值的比特位置。在那些比特位置上的一个或几个比特值被改变,为的是期望产生一个正确的数据单元。把表决和分组比较重构技术在纯自动重复请求(ARQ)环境(即没有正向纠错的环境)中交替应用是极为有效的,因为在高比特差错率的环境中通信单元可以明显地改进它的性能并增加在较短的时间周期内正确接收一个已发送的分组的概率。
在使用交替的多数表决和分组比较数据单元重构技术的优选实施例中,当表决的分组为偶数时由于难以分辨“平分秋色”的表决而使多数表决不那么有效。例如,如果有4个分组参与表决,当有两个分组的某一比特位置的值为“1”而另外两个分组的该比特位置的值为“0”时该比特位置究竟应赋什么值?本发明的优选实施例不是任意地选择一个“1”或“0”,而是只对奇数的收到的数据分组采用多数表决,对于偶数的数据分组则采用将当前收到的数据分组与多数表决分组直接相比较,以避免这种打破平局的两难困境。在多数表决和直接比较技术中,都利用了以前收到的数据分组中的信息,这增加了获得正确分组的可能性。
由于多数表决和直接比较操作的实施相对比较简单,因此消耗相对较少数量的数据处理资源和时间。此外,本发明还提供了一种以最小的存储量来利用包含在以前所收到的但却是错误的分组中的信息的新技术。虽然从前面收到的错误分组中的信息被保留,但分组本身却并不被存储。相反,本发明对于重构的数据分组中的每一个相应的比特位置根据每个收到的数据单元在该比特位置积累起各比特的和。然后根据在该序列中重新发送的数据单元的数量确定一个阈值,每个积累的和要与该阈值相比较。如果积累的和小于或等于阈值,则重构的数据分组的相应比特位置的比特值被规定为0。否则,重构的数据分组中相应比特位置的比特值就规定为1。
本发明的这些和另外一些目的以及本发明的特定实施例将结合下列附图作一介绍,图中相同的参考数字代表相同的部件:
图1是按照本发明的一个实施例的数据通信系统的功能方块图;
图2是说明按照本发明的一个实施例的一种方法的流程图;
图3A-3C说明数据消息和包含在数据消息中的数据分组的例子;
图4说明一个多数表决分组;
图5说明按照本发明的一个实施例的比特积累功能;
图6说明对收到的数据分组和多数表决分组的直接比较;
图7是一个多站点中继无线通信系统的示意图,本发明可具体应用于该系统中;
图8是可以使用本发明的无线数据网络的功能方块图;
图9是可以按照本发明进行使用的便携式/移动收发器单元的功能方块图;
图10是说明按照本发明的一个实施例的数据恢复过程的流程图;
图11是说明可以按照本发明的一个实施例来实施的直接比较操作的流程图;
图12是说明可以按照本发明的一个数据恢复方案的一个实施例来执行的多数表决过程的流程图。
在下面的叙述中,为了解释而并非为了限制,提出了具体的细节,例如专门的电路、接口、技术等等,以便提供对本发明的彻底理解。但是,对于熟悉本项技术的人来说很清楚的是本发明可以用别的与特定细节有差异的实施例来实现。在另外的情况下,一些熟知的方法、器件和电路的详细说明均被省略以免因不必要的细节而模糊了对本发明的说明。
本发明是在数据通信系统的意义上仅作为例子而说明的。随后的各实施例说明了把本发明具体地应用到一个无线通信环境中,关于这一点本发明并不仅限于无线通信或任何类型的数据通信。本发明的其它应用可以是任何类型的数据处理系统,这种系统必须接收和/或访问有可能被破坏的数据,包括例如从存储设备传送来的或要传送给存储设备的各种数据。
因此,图1说明了一种有线形式的数据通信网络,它包括一个例如数据处理器20的发送器12,后者把数据分组通过网络总线16送到数据接收器14,该接收器14可以是另外一个数据处理器或别的某种设备,例如一台外部设备。两个数据处理器20和26都有它们相应的存储器22和28,且两个数据处理器都包括相应的收发器24和30,用于在网络总线16上交换分组信息。数据处理器20和收发器按照用于在网络总线16上进行发送的相应协议把数据格式化,包括把数据划分为数据单元或数据分组以及对差错检测比特进行加入/编码。数据处理器26按照存放在存储器28中的算法对从收发器30接收到的数据单元进行处理以便检测每一数据单元是否正确地接收。在本发明的一个特别有利的应用中,在发送器和接收器之间使用了自动重复请求(ARQ)协议,使得当接收器14正确地收到一个数据单元时,接收器14通过网络总线16向发送器12送回一个确认(ACK)。如果数据单元设有被正确接收且不能按照本发明正确地重构,则接收器14通过网络16向发送器12发一个否定确认,这时发送器对其响应而重新发送同一个数据单元。
现在用图2来说明:接收器数据处理器26通过使用数据恢复技术以便从该数据单元的一系列的重新发送的版本中正确地恢复该数据单元。虽然以下所说明的数据单元的序列其含义是指通过通信信道(有线的或无线的)重新发送的,但是数据单元的序列也可以是同一数据单元从数据存储设备多次访问而产生的。重新发送或访问的次数当然是任何一个系统的设计参数。在更易于出错的系统中可以规定更高次数的重发或访问。而在相对说来无差错的系统或环境中则可以规定一个较低的限度。
在数据恢复过程40中,接收一个数据单元并进行差错检验(块41)。如果收到的当前数据单元没有差错(或者另外的情况如在使用时可接受的比特差错率,例如数字声音可以容忍某些比特差错),则从接收器14送回一个确认(ACK)返回到发送器12(块47),接着检验下一个收到的数据单元是否有错(块41)。否则就确定这是否是数据单元的第一次发送(块43)。如果是,接收器14请求重新发送该数据单元(块44)并返回去接收重新发送的数据单元并检验有无差错(块41)。
如果这是数据单元的一次重新发送,则确定这个数据单元是否是一个“交替的”数据单元(块48)。作为一个例子,交替的数据单元可能对应于同一数据单元的“奇次”发送,即发送1、重发3、重发5等等。另一方面,交替的数据单元可能对应于“偶次”发送,即重发2、重发4、重发6等等。如果数据单元是一个交替的数据单元,则执行第一种数据单元重构操作(块50)。否则在(块51)执行第二种数据单元重构操作。
在执行了第一或第二数据单元重构操作之后,在块54作出判断:重构的数据单元是否有效,即重构的数据单元是否没有比特差错或处在预定的比特差错阈值之下。如果是这样,控制返回到块47,在那里接收器14向发送器12送回一个确认。否则,控制返回到块44去请求重发该数据单元。
本发明可以应用于任何数据格式,只要数据是以单元形式发送的。例如,图3A表示用于数字数据消息的一个格式举例。消息可以由一个头部开始,头部的各比特可分配给任意数量的不同功能,包括数据消息的开始、发送器和/或接收器的地址信息、消息的长度等等。这种头部的一个例子是标准的因特网协议(IP)头部。头部之后紧跟着数据分组,在图3中表示为分组1号、分组2号、分组3号…。
在图3B中表示的每个分组都同时包括数据和差错检测比特。换句话说,每个分组中并不是所有比特相应于要发送的实质的信息。很清楚,在本发明有时用到了数据分组这个术语,但本发明可以用于任何的数据单元而不一定限于数据分组。
图3C表示一个数据分组的结构的特定例子。在数据分组的第一部分中的预定数量的数据比特之后紧跟着第二部分,即循环冗余检验比特(CRC)。循环冗余检验只提供差错检测-它不是用于纠正差错的。熟知的CRC例子包括CRC-CCITT和CRC-16。本发明也可以使用正向差错检测和纠正比特,如BCH奇偶校验比特。不过,本发明的优点之一是正向纠错比特和编码/解码算法在数据恢复中并不需要使用。
第一和第二数据单元重构操作之一可能是多数表决操作,这将结合图4的举例图解在此说明。在优选实施例中,多数表决技术是应用在交替的奇数次数据分组发送中的。因此,在图4所示的简单例子中,多数表决操作是对数据分组的三次发送而进行的。在这个非限制性例子中每个数据分组可以包含32个数据比特和16个CRC比特。如果在一个特定的比特位置上二个或三个比特具有相同的值,则在多数表决后的数据分组中该比特位置就被赋以该值。在三个数据分组的第一个8比特字节的两个例子表明,第4个比特位置上,1、1和0的多数表决其结果是个1。相反,在第7比特位置上,进行多数表决的比特值为0、1和0,其结果是第7比特位置的赋值为0。虽然没有说明,但数据分组各比特的任何部分都可以用来实现多数表决操作。不过,对包括所有32个数据比特和16个CRC比特的整个数据分组实施多数表决可以得到更多的信息。
多数表决后的分组把从第1、第2和第3数据分组中积累的比特信息组合在单独一个数据分组中。如图4所示,这些比特中许多是正确地收到的(在特定比特位置中全为0和全为1)。即使是在那些具有不同的比特值而需要进行多数表决判定的比特位置中,多数表决可产生相应的正确比特值的概率仍然相当高。在产生多数表决的分组后就对数据分组实施CRC操作以确定它是否正确或在可接受的容限之内。
本发明的一个特别有益但非限定性质的实施方法是在多数表决确定过程中所用的一种新的比特累加性能。通过为数据分组中每个比特位置产生和保持比特累加器而不是把每个收到的数据分组存入存储器然后再检索出这些已存储的每一数据分组供多数表决操作之用,可以节省存储器并减少复杂性。收到的数据分组的每一比特加到相应的比特累加器。因此,如果每个数据分组有48个比特,则数据分组将有48比特的累加器,每个累加器的大小是1字节。比特值为“1”将使一个“1”加到那个比特位置的比特累加器中,而比特值为“0”则对相应的比特累加器的值不产生变化。在这种方式下,就可以保持数据分组中每个比特位置为“1”的总数的连续相加的和。每个比特累加器中总和的值与所收到的数据分组数相比较。如果比特累加器的总和的值超过某一阈值,多数表决后的比特设置为“1”,否则多数表决比特置为“0”。阈值可规定为收到的分组数的一半。
这样一种比特累加器对于可能需要大量的分组重新发送的环境是特别有利的。例如,假定允许分组重发的总数是255,每个比特累加器可以规定为单独一个8比特(即1字节)的区。换句话说,每个字节是一个单独的分组累加器。使用这种结构,具有16个数据字节和2个CRC字节的数据分组需要144个比特累加器(即144个字节)以对应于多达255次的数据分组重发。与把每个分组重发单独存放在RAM中相比,这可以提供明显的RAM的节约。如果分组被发送了255次,把每个分组单独存储将需要255×18字节=4590字节的RAM。而在本发明所使用的比特累加器中,只需要144个字节,明显地节约了存储器。另一种结构只允许数据分组重发共15次并且用4个比特(半字节)的比特累加器区。这种结构允许单独一个RAM字节支持2个比特累加器。
在奇数数据分组接收的情况下,收到的数据分组的每个比特位置的比特值都加到相应的比特累加器以建立一个新的多数表决后的数据分组。然后这个新的多数表决后的数据分组用CRC算法加以处理。如果它通过了CRC验证,这个多数表决过的数据分组就被接受,并产生一个送给发送方的确认以表明分组已正确接收。如果多数表决后的分组仍然有错,则向发送器送回一个否定确认以便该分组可以重发。
尽管多数表决可以用于偶然的分组接收中,但这项技术并不那么有效,因为存在着潜在的“平局”,即在收到4个分组时可能会在单独一个比特位置上有两个“1”和两个“0”。相反,在本发明的优选实施例中,偶数的数据分组(收到时有不可接受的差错)是直接与在以前奇数数据分组接收中所计算的多数表决后的数据分组相比较的。偶数数据分组的数据分组比特值如上面所述加到数据分组比特累加器中。但是,多数表决本身并不执行,从而使得多数表决过的分组(直接比较就是对它进行的)和由以前奇数数据分组接收所计算的保持一样。
直接比较数据单元重构技术的一个例子如图6所示。直接比较,举例而言,是用一个异或操作(XOR)来实现的,这时当两个相比较的数据分组的比特不同时结果就得到二进制“1”,而两个比特相同时结果就得到“0”。和多数表决一样,直接比较可以在数据分组的一部分比特上实施,或者更为可取的是,对分组的所有数据比特上实施。为了实现后面的情况,举例来说,所示的收到的数据分组的全部数据比特和CRC比特要与多数表决后的数据分组的全部数据和CRC比特相比较。
如果比特差异的数量超过阈值,那么根据下面将要说明的理由,要谨慎地放弃该分组并向发送器送一个否定确认信号。但是,如果分组的差异仅只有几个比特位置,那么这些不同的比特被系统地设置成所有可能的组合,同时对每一种可能的组合进行CRC算法的运算以检验数据的正确性。换句话说,如果不同的比特位置之一当前是置成“1”,则把它变成“0”,然后检验CRC算法。如果有两个比特位置存在不同,则要试验4种不同的可能的比特组合。对三个比特位置,则试验8种可能的比特组合,并依此类推。这样,可能的比特组合数等于2bitdifs,此处“bitdifs”等于不同的比特数。如果这些比特组合中的任何一个产生了有效的CRC检验,则接收器产生一个确认并且接受该纠正了的分组。如果不能恢复有效的分组,则发送一个否定确认信号。
在两种数据单元重构技术之间,即偶数和奇数分组接收之间的交替过程继续进行,直到该分组或者被正确确认、或者已经达到了最大次数的重复尝试为止。在上面所说的利用8比特累加器的结构例子中,最大允许的重复尝试/重新发送的次数为255。
在确定直接比较技术的阈值时,对于可允许的比特差异的数量有一个实际的限制。首先一个问题是在对所有可能的组合计算CRC时所涉及的处理时间。这个处理时间必须加以限制以保证接收器在预定数量的时间以内(例如若干分之一秒以内)向发送器提供某种正确确认/否定确认信号。如果接收器耗费了过多的时间来尝试所有可能的比特组合,这个ACK/NAK发射时间窗口可能会超过很多。其次一个问题是接收了一个被认为是正确的分组但却不是发送器真正发送的分组这样的问题,即“造假”的问题。如果两个分组间比特差异的数量很大,则把分组纠正到一个不正确的值但却能通过CRC验证的概率就增加。因此,在直接比较技术中接受更多的比特差异的代价是更长的数据处理时间、增大的功率消耗、以及更高的“造假”概率。
本发明的一个明显特点是:丢弃那些错误的或不可纠正的分组,不会造成丢失那些错误的数据分组中的重要信息。相反,本发明同时利用多数表决和直接比较差错纠正技术来保留和利用这些重要信息。
例如,考虑一个具有百分之二的比特差错率(BER)的环境,其中数据分组含有4个字节的数据和2个字节的CRC代码比特,总共为48比特。在这样的环境中,在每次发送中数据分组将含有一个或多个差错的概率是高的(62%),在没有本发明时,在没有差错的情况下收到任何一次数据分组的发送的概率可以根据下式来确定:
Pgood packet=(Pcorrect bit)number of bits (1)因此,收到带有一个或多个比特差错的任何分组的概率可由下式确定:
Perror packet=1-(Pcorrect bit)number of bits (2)在这个2%的比特差错率的环境中,单独一个比特的正确接收的概率是98%(即Pcorrect bit=98%)。但是,如果分组中数据比特的总数从4字节增加到16字节(总计144比特),则在分组中含有一个差错的概率将变得非常高(94.5%)。因此,当前的这种仅仅把有错的分组丢弃而又希望下次的发送会带来没有差错的发送这种技术是不现实的和无效率的。在没有本发明的数据恢复/重构技术的帮助下,在两次数据发送中成功地收到一个可接受的数据分组的概率如下式所示:
Psuccess=Pgood packet+(Perror packet)(Pgood packet) (3)在2%的比特差错环境下,对48比特的分组,在两次尝试中成功地接收到分组的概率是61.8%,即使对于这种相对较低比特差错率的环境来说这也不是特别令人鼓舞的。
但是,根据本发明的优选实施例,通过对偶数编码的发送附加上直接比较和对奇数编号的发送附加上多数表决,正确收到多次发送的数据分组的概率将明显地得到改进。对于这两种纠错技术的每一种,下面的概率计算有助于定量分析这种改进。
对于直接比较技术,假定在不同分组之间只允许2比特差别,成功地对仅发送两次的分组进行解码的概率可按下列各式确定:
Psuccess with directt comparison added=Pgood pkt+(Perror packet)(Pgood pkt)
+(Perror pkt)(Perror pkt)
(P1-bit pkt error)(P1-bit pkt error (not same as previous pkt)) (4)在此P1-bit pkt error=48(1-Pcorrect bit)(Pcorrect bit)num of bits-1 (5)以及P1-bit pkt error(not same as previous pkt)=47(1-Pcooect bit)(Pcooect bit)num of bits-1 (6)当包含了直接比较技术时,正确接收一个数据分组的概率从约62%增加到67%。这种增加是适度的,因为在这种场合收到的分组和多数表决后的分组仅允许有2个比特的差异。换句话说,两个分组的每一个只允许有一个错误的比特而且两个分组中的单独一个比特错误还不能处在同一位置。但是,如果允许的比特差异数增加到包括三或四个比特差异,那么成功接收的概率将明显增加。
把上面的多数表决附加进数据恢复过程就改进了对发送过3次的分组的纠错概率。利用上面的正确接收发送一次的分组的概率的公式,可得到如下所示的在没有多数表决时接收到发送三次的分组的概率:
Psuccess=Pgood pkt+(Perror pkt)(Pgood pkt)+(Perror pkt)2(Pgood pkt) (7)在2%比特差错率环境,对于48比特的数据分组,Psuccess=74.8%。如果把多数表决包括进来,正确接收有三次发送的分组的概率如下所示:Psuccess=Pgood pkt+(Perror pkt)(Pgood pkt)+(Perror pkt)2(Pgood pkt)+(Perror pkt)3
(Pgood majority vote) (8)其中 Pgood majority vote
=[3(Pcorrect bit)2(1-Pcorrect bit)+(Pcorrect bit)3]num of bits (9)利用多数表决时正确接收分组的概率是98.7%。
如果同时把直接比较和多数表决两种技术附加进来,那么在2%的比特差错率的环境中对仅仅发送三次而收到的48比特的分组进行正确解码的概率将近为100%。很明显,这种正确地恢复数据分组的概率的增加是在没有对数据分组附加上另外的正向纠错比特的情况下得到的。相反,本发明将训练接收器使得它更“灵巧”地应用以前所收到的数据分组中的有价值的信息来纠正当前收到的数据分组。此外,直接比较和多数表决技术只需要最少的时间、计算和存储器资源。即使在噪声特别严重的环境下因而需要超过三次的发送,本发明也能随着每次新的接收而越来越接近于正确地恢复发送来的数据分组。
本发明的一个潜在的用途是无线通信领域,在这种领域中的数据处理的能力有限、存储空间需要节约使用、而且通信环境一般都是很恶劣(较高的比特差错率)。通信系统的一个例子是示于图7的干线无线中继系统100。干线无线中继系统100是一个“多站点”系统,其中的站点控制器S1从移动无线装置和复盖区域A1收到一个呼叫,它请求一个信道以便与特定的被呼叫者或一组被呼叫者通信。呼叫者通过按下他的便携/移动射频收发器上的“按下通话”(PTT)按钮来请求信道。这个操作通过在指定的射频控制信道上传播的入站数字控制消息告诉站点控制器:需要一个音频工作信道。站点控制器S1向呼叫者指定一个工作信道并命令呼叫者的无线单元从控制信道切换到指定的工作信道。这个指定的工作信道支持在该站点所复盖的区域内的通信。
此外,站点控制可能送一个包括指定的工作信道的控制消息到多站点交换台104。该交换台接着又送一个信道请求到其它站点控制器并指定音频信号的路由,以便在为呼叫者服务的射频站点中继站和为被呼叫者服务的射频站点中继站之间建立起音频信号的通路。此外,也可用相似的方式建立起其它音频信号通路,使得一个或多个调度控制台106和陆地线路的用户(通过中央电话互连交换台108)也能够被包括到通信里面来。在收到信道请求消息后,这些二级站点控制器的每一个都可能给该呼叫指定一个射频工作信道(例如,如果由呼叫者的信道请求消息所指定的被呼叫者正好在物理上位于由相应的射频收发器站点所服务的复盖区域之内)。同时,多交换台200保证呼叫者的音频信号已被指定了从站点S1的活动的射频接收器到参与该呼叫的其余各站点的活动发送器的路由。更多的细节在例如美国专利5,200,954中被提供。
数据通信可以利用便携/移动无线单元在数据网络上实施。例如图8表明了两种不同类型的网络,包括一个以太网110和一个无线数据网112。以太网110和无线网112是按“因特网方式工作”的,利用了一个网关114和数据接口模块126。数据网关114为在两个网络间转译消息提供一个接口。数据网关利用例如标准的协议(如TCP/IP)连接到在以太网同轴电缆114上的主计算机116、118和120。在射频数据网络112中数据接口模块126连接到多个站点122和124,它们通过射频通信信道与一个或多个无线单元128和130通信。无线数据终端132和134(例如膝上计算机)可以分别连接到无线装置128和130以进行数据通信。
为了实现从无线数据终端132到主计算机A的通信,无线装置128通过射频控制信道告诉站点122,它有一个消息并请求一个射频工作信道。站点122指定一个可用的射频工作信道并通知无线装置128。然后站点122将一个呼叫委派发送到数据接口模块126,后者把这个委派转送到数据网关114以便在数据网关和射频工作信道之间建立一个数据通路。无线装置128把消息分开成为若干分组并把分组经过射频工作信道送到站点122。站点122把数据分组按其收到的样式经过数据接口模块126转发到数据网关114。在数据网关114收到消息分组的脉冲串后,它进行检验并弄清楚它们是否被正确地接收,并经过射频工作信道向无线装置送回一个或多个确认信号。如果数据分组没有被正确接收,就向无线装置发送一个否定确认信号,然后无线装置重新发送包含着数据网关没有正确接收到的分组的另一个脉冲串。这一过程继续进行直到数据网关114收到整个消息或无线装置用尽了它的重发尝试。如果数据网关114成功地接收了数据消息,则数据网关114把这个消息通过总线114送到主计算机116。
用在本发明中的一台合适的移动便携无线单元的总体结构是以微处理器为基础的,如图9所示。微处理器150带有合适的存储器152和输入/输出(I/O)电路154以便和无线装置显示器、键盘、按下通话(PTT)开关、以及音频电路168相接口,后者提供接到扬声器的音频输出并从微音器接收模拟音频输入。一台调制解调器156用作为与声音加密、车辆定位、多站点交换台、以及包括无线数据终端132在内的其它类型的数字通信子系统的数字接口。在某些情况下,希望像CRC检验这样的差错检测算法由硬件而不是由软件来实现。如果情况是这样,那么调制解调器156除了调制/解调的功能之外还可能包括硬件电路以实现差错检测和/或纠正功能。I/O电路154也允许由射频接收器162和发送器160的微处理器150来进行适当的程序控制,它们通过传统的信号组合器164允许在一个共同的天线166上进行双工通信,这对熟悉本项技术的人员来说是能理解的。无线数据终端132通过连接到调制解调器156上的RS-232电缆158实现通信。
本发明在例如上面说明的无线通信网络中的实施方法将在下面作进一步的详细说明。具体而言,这里要结合图10所示的流程图来说明无线接收器所实施的数据恢复过程,接收器接收经由无线信道发送的数据分组。开始时,分组计数变量PACKETCNT被置成等于零(方块180)。然后(块182)收到一个数据分组,此时分组计数变量增1(块184)。假定数据分组具有图4-6所示相似的格式,就对收到的分组进行CRC检验以检测是否有任何差错(块186)。如果CRC检验确认数据分组已正确接收(块188),则接收器在无线通信信道上发送一个确认信号(块202)并且控制返回到块182以接收下一个数据分组。否则,收到的数据分组的比特值附加到为这一数据分组而保留的相应的比特累加器上(块190)。在块192中作出判断:当前的分组计数是否为奇数,即这是这个数据分组的偶数次还是奇数次的重新发送。如果是奇数次发送,则实施在图11中有更详细说明的多数表决数据单元恢复算法(块194)。如果这是偶数次发送,则实施如图12所示的直接比较数据恢复过程(块196)。在实施了图11和图12所示任何一种数据恢复操作之后,控制返回到块198以确定该分组是否已用CRC检验而成功地解码了。如果不是,则在块200中请求再次尝试,同时控制返回到块182以接收重新发送的分组。否则该重构的数据分组就是可接受的,并发送一个确认信号(块202)同时在块204中处理下一个实质的数据分组。
现在结合图11所示的流程图来说明直接比较算法(块210)。在紧靠着当前收到的偶数次发送的数据分组之前对奇数次发送的数据分组所计算的多数数据分组与当前收到的偶数的数据分组以图6所示的相似方式进行异或操作(块212)。作为异或比较结果的相互不同的比特数量的和(即那些具有异或输出为“1”的比特位置数之和)被赋值给变量DITDIF(块214)。接着(块216)作出判断,看变量BITDIF是否小于或等于预先规定的阈值。如前所述,该阈值是为改进数据恢复性能与按照所建议的、由这个比特差异数而造成的比特组合次数来计算CRC所需要的数据处理的时间/资源之间的折衷。如果有差异的比特数超过该阈值,则成功标志被置为假(块218)。控制返回到图10,作出一个再次尝试的请求以使该数据分组重新发送。否则,利用不同的比特组合来产生可能的尝试数据分组的清单(块220)。选择那些可能的尝试数据分组中的一个(块222)并执行CRC检验计算(块224)。如果CRC检验为满意(块226),则把成功标志置成真(块232),控制返回到图10,在那里发送一个确认信号。否则,在块228作出判断,看是否所有可能的尝试数据分组的组合都已经分析过。如果没有,控制回到块222去选择一个尚未分析的可能的尝试数据分组。不然的话,就是所有可能的尝试数据分组都产生不可接受的结果。成功标志被置成假(块230),控制返回到图10从而送出一个否定确认信号以使数据分组被重新发送。
现在结合图12所示的流程图来说明多数表决算法(块250)。在块252中,设置了一个变量TOTALBITS,它对应于数据分组中比特的总数。按照本发明中所用的非限制性的例子,比特总数被置为48。比特累加器是作为变量BITNUM而被初始化的,该变量“指向”数据分组中的比特位置中的一个。在块254中规定了阈值变量T。计算阈值的一个举例的方法是把分组计数除以2并舍去(“TRUNC”)余数。
在块256中作出判断:正被指向的当前比特位置的比特累加器中的比特和是否超过了阈值T(块256)。如果超出,那么多数数据分组中这个比特数的比特值被置成1(块258)。如果设有超出,那么多数数据分组中这个比特位置的比特值被置成0(块260)。然后在块262,变量BITNUM被增加1以指向下一个比特位置/比特累加器。在块264中作出判断:新的比特位置(BITNUM)是否小于数据分组中的比特总数。如果是这样,块256-264的过程被重复。否则对这个数据分组的多数表决操作已告完成,并在块266中实施CRC检验。如果CRC检验的结果是良好(块268),则成功标志被置为等于真(块272);否则成功标志被置成假(块270)。然后控制返回到图10以便或者发送一个确认(块202)、或者请求一个再尝试(块200)。
因此,本发明利用从以前接收到的数据分组中的信息来恢复数据,它在设定比特差错率小于50%的条件下以不断增加的重构实际发送的数据分组的概率来重构数据分组。随着每次新的接收,积累的信息使接收器更加趋近于获得实际发送的数据分组。这种对本来可能被丢弃掉的信息的利用,使得高度有效和实用的比特差错纠正对于在恶劣通信环境中只具有有限的数据处理和/或存储器资源的收发器来说特别有用。
虽然本发明是参考了它的特定实施例来说明的,但本发明的范围以及它的应用和特点可以扩充到其它实施例并且只由下面的权利要求所限制。