交错/解交错的方法及装置的制作方法

文档序号:7538926阅读:408来源:国知局
专利名称:交错/解交错的方法及装置的制作方法
技术领域
本发明涉及一种交错/解交错的方法及其装置,特别是涉及一种不对称数字用户线路ADSL;Asymmetric Digital SubscriberLines的收发机用的交错/解交错的方法及其装置。
在如不对称数字用户线路的数据通讯系统中,受干扰的传输线可能导致数据的失真或遗失。为了修正错误与恢复遗失的数据,额外的错误校验(error-checking)数据常与传输数据一起传送。一组传输数据用的传输数据字节与错误校验数据的组合称为一代码字(codeword)。如果在接收代码字中错误或遗失的数量是相当小时,这些增加的错误校验数据能帮助以容易恢复在接收位置的原始错误数据。但在现实的应用中,在代码字中的很多错误校验数据可能在有线或无线传输缆线中遭受一连串的破坏是常见的。这些破坏造成数据无法恢复。为了降低破坏的效果,数据交错技术被采用。在传送前,利用不同的代码字中交错数据及在接收触解交错接收的数据,使得一连串破坏被分布在不同的代码字,因此降低在各代码字中遗失或破坏,致使在各代码字中的传输数据的恢复是可能的。
通常被应用在通讯系统中有两种方式的交错技术,一种是区块(block)交错,而另一种是回旋(convolutional)的交错。在不对称数字用户线路的通讯协议G.992.1中,因为回旋交错比起区块交错使用较少存储器与较短的端对端延迟,因此采用回旋交错的方式。在协议G.992.1中的回旋交错以两个系数来控制。第一个系数是在各代码字中的数据的字节的数目,其在以下中以标号N表示。第二个系数是执行的交错深度,其在以下的标号D表示。回旋交错要求在各代码字中的N个字节B0、B1、…、BN-1中的各组延迟以字节指针呈线性变化的数值。字节Bi(是指代码字中指针为i的字节)是延迟(D-1)*i个字节。
请参照

图1,以N=5、D=2来举例说明回旋交错,而Bji是表示第j个代码字的第i个字节。在图1中的第一列是表示在交错前的原始代码字,以及在交错操作后它将被分布在两代码字中。而在图1中的第二列明白地显示出。假定在传送中有如图1的第二列所显示的,在Bj-14、Bj2、Bj+10连续的三个错误发生时,在解交错后这些错误明显分布在三个不同代码字中。
根据上述延迟规则中,需要一些存储器以储存针对交错而进入的数据量。为了交错,一代码字在一特定命令中存入存储器,而在另一命令中进行传送。在原始交错设计中,存储器的数量因被要求能执行上述方法,所以可能多到N*D字节。在协议G.992.1中,最大代码字长度(N)等于255,及深度(D)能增加至64。因此,存储器的数量要求可能如16K(255*64)字节那么大。再者,在传送端与接收端都需要此存储器以分别进行交错与解交错的动作。在硬件装置中,这些大存储器将占据比较大的芯片面积。因此,为了节省芯片面积,所以需要一种交错与解交错方法,以有效降低所要求的存储器数量。
而不对称数字用户线路采用的专利包括美国专利第5,636,224号及美国第5,764,649号两项专利。在美国专利第5,636,224号中描述一交错/解交错系统。此系统根据对应指针写入进入数据及使用进入指针与输出指针间的关系由存储器读出。各指针有一对应的缓冲器。而在此专利中所要求的存储器数量大约等于N*D的一半的这些缓冲器的总数。
在美国专利第5,764,649号专利中,描述了使用仅需等于(N-1)*(D-1)/2的最小理论值的存储器的地址结构的交错/解交错系统。交错集合被定义,在其次进入数据被写入以属于此集合的特定位置之前,在此相同地址内的一数据先被读出。因此存储器的要求数量被降低至最小。但在此专利中的交错/解交错运算较为复杂。
本发明的一目的在于提供一种不对称数字用户线路的收发机用的交错/解交错的方法,由该方法可达到存储器数量接近最小理论值的效果。
本发明的另一目的在于提供一种可达到节省芯片面积之功效的不对称数字用户线路的收发机用的交错/解交错的装置。
为达到上述目的,本发明的交错/解交错的方法,用于不对称数字用户线路的收发机使用,该交错在一预定的交错深度与由多个代码字组成的一进入数据中的各代码字具有一预定的代码字长度下执行,而各代码字中的各字节分别具有一相对应的指针,该方法包括以下步骤1)根据该预定交错深度与该预定代码字长度为基础,计算出字节的指针所对应的一群读出指针与写入指针,储存于一指针产生器中,并计算出分别对应这些指针的行数据缓冲器的起始地址与结束地址于一地址产生器;2)由一控制器控制由该指针产生器输出对应各字节的指针的一读出指针,送至该地址产生器,而该控制器控制该地址产生器输出对应该读出指针的一读出地址至一数据缓冲器,并由该控制器控制该数据缓冲器中对应该读出地址的一地址内的数据,经一多工器传送出;3)由该控制器控制该指针产生器,产生对应各字节的指针的一写入指针至该地址产生器,并控制该地址产生器,输出对应该写入指针的行数据缓冲器的起始地址作一写入地址至该数据缓冲器,而由该控制器将各字节数据写入该数据缓冲器中对应该写入地址的一地址中;4)递增该写入地址,并检验经该递增的写入地址是否等于其所位于的该行数据缓冲器的结束地址,若该地址小于该行数据缓冲器的结束地址,则将该递增的写入地址作为其后相同的该写入指针的写入地址,而若该地址等于该行数据缓冲器的结束地址,则重置该写入地址为该数据缓冲器的起始地址,作为其后相同的该写入指针的写入地址;及5)递增该字节的指针,并将该递增的指针除以该代码字长度后取余数作该输入数据的字节指针跳回步骤2),继续循环至该进入数据的字节都已经上述步骤送出为止。
下面结合附图及实施例对本发明进行详细说明图1是显示在交错深度为2与代码字长度为5的回旋交错/解交错范例之图表;图2是本发明的较佳实施例的电路方块图;图3是本发明的较佳实施例的流程图;图4是显示在交错深度D为4与代码字长度N为9的回旋交错/解交错范例之图表;图5是在交错深度D为4与代码字长度N为9的条件下,本发明的数据缓冲器的较佳结构图。
图2是本发明的较佳实施例的电路方块图。在本实施例中包括一指针产生器2、一地址产生器3、一数据缓冲器4、一控制器5及一多工器6。
该指针产生器2连接至控制器5,用以受控制器5的控制并根据进来的数据Din(指原始未经传送的数据)产生读出指针与写入指针而传送至地址产生器3。一般来说,进来的数据是由多个代码字所组成,而各代码字是一定长度N的字节,即指其包括一定数目的字节。而在本实施例中,该指针产生器2产生的读出指针与进来数据的字节于该代码字的位置i相同,然而写入指针index(i)却是由该字节的位置i经延迟交错形成(容后再述)。
该地址产生器3连接至指针产生器2、数据缓冲器4、控制器5,用以受控制器5的控制,并在接收指针产生器2所送出的读出指针与写入指针时,寻找已储存在地址产生器3内的对应读出与写入地址,并传送至数据缓冲器4。
该数据缓冲器4是由N-1个行数据缓冲器所形成,其中N是代码字长度,各行数据缓冲器的长度(即指其具有的储存格数目)依进入数据的代码字长度N与交错D来决定(容后再述),且接收进入数据并连接至地址产生器3与多工器6,用以受控制器5的控制,对应该读出地址读出于该数据缓冲器4中对应地址内的数据而送出后,再将进来字节的数据暂存于数据缓冲器4中的对应写入地址的地址中。在本实施例中,读出指针与写入指针是用以决定为数据缓冲器4中多个行数据缓冲器中的哪一行,而读出地址与写入地址则是决定为该行数据缓冲器中的哪一个储存格。
如前所述,该控制器5连接至指针产生器2、地址产生器3、数据缓冲器4及多工器6,用以控制这些装置的动作,更具有检验进来数据Din中各字节的延迟是否等于0的功能,若在该字节延迟为0时,则让该字节数据直接经多工器6传送出。若在字节延迟不为0时,让指针产生器1对应该字节的指针(即指该字节于其所属的代码字的位置)来产出读出指针与写入指针,并送至地址产生器3,产生分别对应读出与写入指针的一读出地址与写入地址,以利用这些地址,由数据缓冲器4内中对应地址中送出储存于其内的数据至多工器6传送出,然后再让该字节数据暂存于数据缓冲器4中对应于写入地址的地址内。
该多工器6接收进来数据Din及数据缓冲器4内储存的输出,并接受该控制器5的控制,在进来数据Din中字节的延迟等于0时,直接将该字节数据传送出。
在接下来的段落中,先对读出指针、写入指针、读出地址、写入地址、行数据缓冲器的长度等作一简单的描述。在下面的计算中,仍然以长度N表示进来数据各代码字长度,指针i表示各代码字中第i个字节,深度D表示交错深度。在此处,该读出指针与指针i相同。所以以下接着计算写入指针下文中以index[i]代表。首先,如公式1,根据在协议G.922.1中的延迟规定来计算各代码字中指针i的字节所应延迟的字节数量delay[i]=(D-1)*I …公式1而后再利用延迟delay[i]来运算出对应此字节的指针i经交错后写入指针index[i],如下列公式2所示index[i]=(i+delay[i])/N取余数其中0≤index[i]≤N-1 …公式2为了使上述公式运算更容易了解,举例来说明,请一并参照图4,假定在N=9、D=4的情况下,如图中原始数据的列所示,各代码字110、111、112、113包括9个字节,而经交错后如图中交错数据列所示,其中指针i=0的字节,由于延迟等于0(delay
=(4-1)*0=0),所以受控制器5的控制,该字节数据会经多工器6直接送出。指针i=1的字节的延迟等于3(delay[1]=(4-1)*1=3),所以其读出指针等于1,而其写入指针为4(index[1]=(1+3)/9=0…4)。指针i=2的字节的延迟6(delay[2]=(4-1)*2=6),其读出指针等于2,写入指针等于8(index[2]=(2+6)/9=0…8)。以此类推,指针i=3、4、5、6、7、8的读出指针依次为3、4、5、6、7、8,而写入指针依次为3、7、2、6、1、5。
而后,在本发明中第j行数据缓冲器所应具有的字节长度下文以size[j]代表与延迟delay[i]相关,以下列的公式3来说明size[j]=ceil(delay[i]/N)其中j=写入指针index[i]
size[j]≥1 …公式3即是将各字节的延迟除以N后取最小整数,请一并参照图5,以前述的例子(N=9,D=4)来说明,数据缓冲器4包含8个行数据缓冲器,这些行数据缓冲器的指针j依次为1、2、3、4、5、6、7、8,由于延迟等于0的字节数据直接经多工器6送出,所以不需设置为指针0的行数据缓冲器,而由进入数据各代码字中指针i=1的字节数据依写入指针为4应储存入指针j=4的行数据缓冲器,所以指针为4的行数据缓冲器的长度为1(size[4]=ceil(3/9)=1)。进入数据中指针i=2的字节数据依写入指针等于8应储存入指针j=8的行数据缓冲器,所以指针j为8的行数据缓冲器的长度也为1(size[8]=ceil(6/9)=1)。而进入数据中指针i=3的字节数据依写入指针等于3应储存入指针j=3的行数据缓冲器,指针j为3的行数据缓冲器的长度为1(size[3]=ceil(9/9)=1)。在进入数据中指针i=4的字节数据依写入指针等于7应储存入指针j=7的行数据缓冲器,所以指针j为7的行数据缓冲器的长度则为2(size[7]=ceil(12/9)=2)。以此类推,指针j为1、2、5、6的行数据缓冲器的长度依次为3、2、3、2。
而由于一般数据缓冲器是一由多个相邻的晶胞所形成的存储器,而各行数据缓冲器是分别占有该存储器中于不同地址的晶胞。换句话说,如图5,指针1的行数据缓冲器的三个储存格的地址依次为0、1、2,而指针为2的行数据缓冲器的两个储存格的地址接续上一个行数据缓冲器的地址依次为3、4。在此情况中,由于各行数据缓冲器的长度有限,经多次读写后可能会有跨行的情况发生。举例来说,假定在代码字110中,指针=7的字节数据由指针产生器2产生的写入指针为1,而等于1的写入指针至地址产生器3产生对应的写入地址为0,所以会将控制器5会控制数据写入指针j为1行数据缓冲器中的地址0的储存格中,而后递增该指针所对应的写入地址0回存至地址产生器3中(即指写入指针为1所对应的写入地址变成1),所以在代码字111中指针=7的字节会写入指针j=1的行数据缓冲器中地址1的储存格中,依此类推,在代码字113中指针为7的字节数据会写入地址为3的储存格中,但地址为3的储存格却是属于指针为2的行数据缓冲器。为了避免多次数据读写后跨行的情况发生,所以字节数据写入需对其写入指针的行数据缓冲器的边界作检验,以避免跨行的情况发生。而各行数据缓冲器的上限 值(下文中upper[j]作代表)与起始值(指下限值,下文中以addr(j))分别以接下来的公式4与公式5定义addr[j]=upper[j-1],1≤j≤N-1 公式5其中起始值addr[j]即指upper[j-1]与上限值upper[j]分别代表指针j的行数据缓冲器内的起始与结束地址。以前述例子(N=9,D=4)来说,指针j=1的行数据缓冲器的起始地址等于0(addr[1]=upper
),而结束地址为3(upper[1]=3)。而指针2的行数据缓冲器以上一个行数据缓冲器的结束地址当起始地址即为3,结束地址等于5(upper[2]=5)。其余的行数据缓冲器也以此类推而出。换而言之,在第一次写入动作时,以行数据缓冲器的起始值作写入地址,而后递增该写入地址(指将该写入地址加1)并与该写入指针相同的行数据缓冲器的上限值upper[j]比较,若经递增的写入地址小于上限值upper[j],则直接将经递增的写入地址回存地址产生器3中,以作为下一次同一写入指针所对应的写入地址。而若经递增的写入地址等于上限值upper[j],则将写入地址重置为该写入指针的行数据缓冲器的起始值(起始地址),在回存至地址产生器3作为下一次的写入地址。以前述例子来说,当代码字110中的字节A7写入指针j=1的行数据缓冲器中地址等于0的储存格中时,将为0的写入地址加1并与j=1的行数据缓冲器的上限值upper(1)比较,确定其小于上限值upper(1)(0+1=1<3)直接当作其后同一写入指针的写入地址,即代码字111的字节B7会存入写入地址1中,再重复上述递增与比较动作后,递增的写入地址仍小于上限值(1+1=2<3),所以代码字112的字节C7会写入等于2的写入地址中,但在接下来重复递增与比较动作后,确定递增的写入地址等于上限值(2+1=3=3),所以重置写入地址为j=1的行数据缓冲器的起始值(addr(1)=upper(0)=0)以作为下一次的写入地址。所以可有效避免前述数据经多次写入而跨行的情况发生。
接下来请参照图3,依据上述关系的本发明的交错/解交错操作的较佳实施例的流程图。首先,在步骤71中计算各字节的指针I的延迟delay[i],而后在步骤72中根据延迟delay[i]来安排数据缓冲器4(即指利用上面的运算方法可知进入数据中字节所属指针所对应储存的地址),完成后在步骤73中设定指针i=0。由于一旦各代码字中字节的数目N与交错深度D被固定,数据缓冲器4的安排(即指对应的读出/写入指针与写入/读出地址)也将决定。所以步骤71至73通常为前置步骤,是利用外部装置来进行运算后,直接将读出指针、写入指针、读出地址、写入地址、各行数据缓冲器的开始地址与结束地址等数据分别预先写入指针产生器2、地址产生器3,以对数据缓冲器4先做安排。接着,进入步骤74,多工器6接收进入数据后,由控制器5进行判断“延迟是否为0?”的工作。当该字节的延迟不等于0时,进入步骤75,由控制器5控制指针产生器2产生等于i的读出指针,并控制地址产生器3产生对应的读出地址,而该控制器5控制该数据缓冲器4中读出地址的数据传递至多工器6送出。其次在步骤76中,控制器5并控制指针产生器2产生对应的写入指针index[i],并控制地址产生器3产生对应的写入地址(在第一次写入时该写入地址为与该写入指针相同的行数据缓冲器的起始值),用以写入该字节数据至数据缓冲器4中。而后在步骤77中,将写入地址加1并检验是否等于该写入指针的行数据缓冲器的结束值即指上限值upper[j],若小于此上限值upper[j]直接将递增的写入地址写回地址产生器3中,以作为下一次写入动作的写入地址。但若等于此上限值upper[j],则重新设定写入地址为该写入指针的行数据缓冲器的初始值addr[j]即指upper[j-1],再回存至地址产生器3中,当作下一次读取的写入地址。而后进入步骤78,将进入数据的字节指针加1后,除以代码字长度N取余数,即进行下一个字节的读/写动作,跳回步骤74。而当在步骤74确定延迟等于0(即在字节指针i=0)时,进行步骤79,由控制器5控制此字节数据直接经多工器6输出,而后再跳至步骤78继续前述的循环动作。
以前述例子(N=9,D=4)来说,代码字110、111、112、113中指针=0的字节A0、B0、C0、D0将直接经步骤79送出,所以数据缓冲器可减少一指针为0的行数据缓冲器,让本发明所要求的存储器(即指数据缓冲器4)数目可较美国专利第5,636,224号所要求的存储器的数量少。此外,由于本发明的交错/解交错的方法先将储存在数据缓冲器4中的数据对应进入数据的诸字节的指针(读出指针=字节指针i)读出,而后再将此字节数据交错储存入数据缓冲器4中的写入地址中。以此例子来说,当进入数据的指针=1,则先将指针1的行数据缓冲器对应的读出地址内的数据读后,再将数据写入指针为4的行数据缓冲器的写入地址中,所以一代码字中的各字节输入时,首先分别让数据由指针1、2、3、4、5、6、7、8的行数据缓冲器中读出,而分别交错地被写入指针为4、8、3、7、2、6、1、5的行数据缓冲器中的写入地址内。在美国专利第5,636,224号中先依序写入再交错读出的方法中,以往美国专利案为了避免在不同代码字但存入同一指针的行数据缓冲器中相碰撞的情况发生,如图所示,当数据字节A3欲存入指针3的行数据缓冲器中,先前储存在指针3的Z3并尚未被读出,所以必须设置两个储存格。而本发明以先依序读出再交错写入的方法,并不会有以往专利碰撞情况发生,所以也不需多设置一个储存格,让本发明确实可达到降低存储器数量的需求的目的。
再者,美国专利第5,764,649号中复杂的运算方法来达成理想最小存储器数量,相比之下,本发明仅是以类似美国专利第5,636,224号那样简单的电路与先出后进的简单方法,即可达成接近理想存储器数量(N-1)*(D-1)。因此本发明相较美国专利第5,764,649号更能降低成本,以符合经济效应。
综上所述,本发明先以与进入数据的字节指针相同的读出指针由数据缓冲器4中读出数据,而后再以写入地址让字节数据能以交错方式存入数据缓冲器4中,迥异于两以往专利的进入数据的写入与读出的方法,且确实具有以简单的交错/解交错方法以达成降低存储器数目与节省芯片面积的优点。此外,利用将不需延迟(指延迟=0)的数据直接传送出,一方面可让这些数据可再交错至另一代码字,另一方面也可在存储器(即数据缓冲器4)中可节省储存这些数据的行数据缓冲器(指减少存储器所需的字节),对节省芯片稀少的面积又是一大助益。
权利要求
1.一种交错/解交错的方法,是供不对称数字用户线路的收发机使用,该交错在一预定的交错深度与由多个代码字组成的一进入数据中的各代码字具有一预定的代码字长度下执行,而各代码字中的各字节分别具有一相对应的指针,其特征在于该方法包括以下步骤1)根据该预定交错深度与该预定代码字长度为基础,计算出所述字节的指针所对应的一群读出指针与写入指针,储存于一指针产生器中,并计算出分别对应所述指针的行数据缓冲器的起始地址与结束地址于一地址产生器;2)由一控制器控制由该指针产生器输出对应各字节的指针的一读出指针送至该地址产生器,而该控制器并控制该地址产生器输出对应该读出指针的一读出地址至一数据缓冲器,并由该控制器控制该数据缓冲器中对应该读出地址的一地址内的数据经一多工器传送出;3)由该控制器控制该指针产生器,产生对应各字节的指针的一写入指针至该地址产生器,并控制该地址产生器输出对应该写入指针的行数据缓冲器的起始地址作一写入地址至该数据缓冲器,而由该控制器将各该字节数据写入该数据缓冲器中对应该写入地址的一地址中;4)递增该写入地址,并检验经该递增的写入地址是否等于其所位于的该行数据缓冲器的结束地址,若该地址小于该行数据缓冲器的结束地址,则将该递增的写入地址作为其后相同的该写入指针的写入地址,而若该地址等于该行数据缓冲器的结束地址,则重置该写入地址为该数据缓冲器的起始地址作为其后相同的该写入指针的写入地址;及5)递增该字节的指针,并将该递增的指针除以该代码字长度后取余数,作该输入数据的字节指针跳回步骤2)继续循环至该进入数据的所述字节都已经上述步骤送出为止。
2.如权利要求1所述的交错/解交错的方法,其特征在于在步骤1)中更包括一步骤1-1),是由该控制器检验该进入数据中的各字节对应该交错操作所产生的延迟是否为0,若该字节的延迟为0,则直接将该字节数据经该多工器送出并直接跳至步骤5),否则依序进行所述步骤。
3.如权利要求2所述的交错/解交错的方法,其特征在于在步骤1-1)中,该控制器在检验出该进入数据的字节的指针为0时,则将该字节数据直接经该多工器送出。
4.如权利要求1所述的交错/解交错的方法,其特征在于在该步骤1)中,该读出指针是与该进入数据的字节指针相同,而该写入指针是与该字节指针、该交错深度与该代码字长度相关。
5.如权利要求1所述的交错/解交错的方法,其特征在于在该步骤4)中的各该行数据缓冲器的长度是由对应指针字节的延迟与代码字长度决定。
6.一种交错/解交错的装置,是供不对称数字用户线路的收发机使用,该交错在一预定的交错深度D与一由多个代码字所组成的进入数据中的各该代码字长度N执行,即各该代码字具有N个字节而各该代码字中的各字节分别具有一相对应的指针i,其特征在于该装置包括一指针产生器,用以储存对应所述字节的指针的一群读出指针与写入指针,其中各读出指针与该字节指针相同,而各写入指针与各字节指针保持延迟关系;一地址产生器,连接至该指针产生器,用以储存对应所述指针的读出地址与写入地址,并接收该指针产生器所输出的读出指针与写入指针;一数据缓冲器,连接至该地址产生器并接收该进入数据,该数据缓冲器是由可指针化的N-1个行数据缓冲器所组成,而各行数据缓冲器具有不同的长度;一控制器,连接至该指针产生器、该地址产生器及该数据缓冲器,用以控制该指针产生器对应该进来数据的字节指针产生一读出指针,并由该地址产生器产生接收该读出指针并产生一读出地址至该数据缓冲器,并控制该数据缓冲器中的该读出地址内的数据送出,而后控制让该地址产生器对应该字节指针产生一写入指针至该地址产生器中,并由控制该字节数据储存入该数据缓冲器中与由该地址产生器产生的一写入地址中;及一多工器,是接收该进来数据与该数据缓冲器所输出的数据,并送出该数据缓冲器所输出的读出数据。
7.如权利要求6所述的交错/解交错的装置,其特征在于该控制器判断该进入数据的各字节的延迟是否为0,来决定各字节是否直接由该多工器送出。
8.如权利要求6所述的交错/解交错的装置,其特征在于各行数据缓冲器的长度是由对应指针字节的延迟与代码字长度决定。
9.如权利要求8所述的交错/解交错的装置,其特征在于各行数据缓冲器具有一起始地址与一结束地址,而所述地址储存于该地址产生器中。
全文摘要
一种交错/解交错的方法及其装置,而收发机是供不对称数字用户线路的收发机使用,其特征在于:根据进入数据的各字节指针产生一与该字节指针相同的读出指针,先将储存在一数据缓冲器对应该读出指针的地址内的数据读出,再利用对应该字节指针与延迟关系所产生的一写入指针,将进入数据写入该数据缓冲器中对应的地址,因而降低所需存储器的数量,以节省芯片面积。
文档编号H03M13/00GK1378372SQ01110508
公开日2002年11月6日 申请日期2001年4月5日 优先权日2001年4月5日
发明者黄咸钧, 邹庆锴, 陈伟坚 申请人:矽统科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1