背景技术
多数通讯系统使用涡轮(turbo)编码从发射器向接收器发送数据。所述数据由发射器使用turbo编码来编码并且在接收端以迭代方式解码。一个使用UMTS标准的通讯系统就是这种系统的实施例。在发射器和接收器之间数据通过信道传输。此信道可能产生噪声,该噪声可在接收器收到的数据中产生错误。
turbo编码的使用允许在接收器端进行适当的误差校正。因此,这种通讯系统产生相对低的误差率。
图1示出了使用turbo编码的通讯系统的实施例。这种系统包含一个编码器件ENC、一个传输信道CHAN和一个解码器件DEC。在编码器件ENC处,数据矢量S1被第一系统递归编码器11编码来产生第一奇偶校验矢量P1。并行地,所述数据矢量S1的数据被第一交叉器12交叉,并且其结果矢量被第二系统递归编码器13编码以产生第二奇偶校验矢量P2。
矢量交叉的数据包含以预定的顺序改变此矢量的分量的次序来获得另一个矢量。以下将不加区别地讨论矢量数据的交叉或矢量的交叉来简化描述。
所述数据矢量S1、第一奇偶校验矢量P1和第二奇偶校验矢量P2就通过传输信道CHAN被发送到解码器件DEC。
所述解码器件DEC包含一个第一解码器14、一个第二解码器16、一个第二交叉器15、一个第三交叉器17和一个反交叉器18。在图1所示的实施例中,解码器14和16为软输入软输出(SISO)解码器。
此解码器件DEC以迭代方式运行。在一次迭代期间,第一解码器14由收到的数据矢量S1、第一个收到的奇偶校验矢量P1以及来自于第二解码器16的外部数据矢量计算出第一外部输出数据矢量。如果还没有来自于第二解码器16的外部数据矢量,它就被预定的矢量代替,例如,单位矢量。这种情况在解码第一次进行迭代时是可能的。
所述第一外部输出数据矢量是通过第二交叉器15被交叉的,并且此处得到的矢量被发送到第二解码器16。第二解码器16就由第二奇偶校验矢量P2、来自于第三交叉器17的矢量S2,该交叉器的输入为数据矢量S1、以及来自于第二交叉器15的矢量计算出第二外部输出数据矢量。所述第二外部输出数据矢量就被反交叉器18反交叉,并且所得到的矢量被发送到第一解码器14。一次新的迭代就完成了。
图2示出了能够实现所述解码器件DEC的体系结构的实施例。所述解码器件DEC包含一个解码器20、一个第一存储器21以及一个第二存储器22。
所述解码器20交替担任第一解码器14和第二解码器16的功能。所述解码器20因此以两种模式运行:
-SISO1模式,其中所述解码器20充当图1所示的第一解码器14,
-SISO2模式,其中所述解码器20充当图1所示的第二解码器16。
在一次迭代期间,处于SISO1模式的所述解码器20如图1所详述的过程处理输入矢量,并计算第一外部输出数据矢量。所述解码器20就进入SISO2模式,处理输入矢量并计算第二外部输出数据矢量。该解码器20因此必须从存储器中读取外部数据并在存储器中写入外部数据。所述外部数据存储在第一和第二存储器21和22中。
当所述解码器20处于SISO1模式时,它完成外部数据矢量的反交叉读取23,该外部数据矢量是存储在第二存储器22中的。然后该解码器计算第一外部输出数据矢量并在第一存储器21中执行此第一外部输出数据矢量的线性写入24。然后所述解码器20变为SISO2模式。
当所述解码器20处于SISO2模式时,它完成外部数据矢量的交叉读取25,该外部数据矢量是存储在第一存储器21中的。然后该解码器计算第二外部输出数据矢量并在第二存储器22中执行此第二外部输出数据矢量的线性写入26。
所述反交叉读取23和所述交叉读取25由反交叉器和交叉器分别执行,未在图2中示出。
此解码系统的一个缺点在于需要两个存储器来存储所述外部数据矢量。在所使用的turbo解码器中,例如,在UMTS标准中,一个外部数据矢量包含5114个数据。因此,用于存储外部数据所需的存储器容量就非常大,这要求在容纳这种turbo解码器的电路中具有相当大的硅表面,所以这种存储器是笨重的。
这一系列存储器构成了外部数据存储器系统。
具体实施方式
图3a示出了依据本发明的解码电路。所述电路包含一个第一解码器14、一个第二解码器16、一个第二交叉器18、一个第一反交叉器15和一个单一存储器31。
此电路如下所述以迭代方式运行。一次迭代包含第一次和第二次半迭代。
在第一次半迭代期间,第一解码器14需要读取由第二解码器16在前次迭代中计算的外部数据,以便计算外部输出数据矢量。单一存储器31包含一个矢量,其分量为第一解码器14要读取的外部数据。每一分量对应一个要解码的数据,该数据包含在下述细节中示出的数据矢量S1中。
假定数据矢量S1包含10个分量S10至S19。此数据S1表示为:
S1=[S10 S11 S12 S13 S14 S15 S16 S17 S18 S19]。
奇偶校验矢量P1表示为:P1=[P10P11P12P13P14P15P16P17P18P19],与此数据矢量S1相对应。
由第二解码器16在前次迭代中计算的外部数据矢量存储在单一存储器31中,并表示为:
La2=[La20 La21 La22 La23 La24 La25 La26 La27 La28 La29]。
在此实施例中,单一存储器31包含10个地址@0至@9。分量La20存储在地址@0中,分量La21存储在地址@1中等等。分量La20为与数据S10相对应的外部数据,分量La21为与数据S11相对应的外部数据等等。
与数据矢量S1的各分量相对应的外部输出数据的计算以下述方式进行。第一解码器14依次读取外部数据矢量La2的各分量,并为该矢量La2的各分量计算一个数值α,该数值α符合第一函数f1且取决于矢量S1和P1的对应分量。例如,第一解码器14计算数值α10=f1(La20,S10,P10)。因此得到矢量α1,其表示为:
α1=[α10 α11 α12 α13 α14 α15 α16 α17 α18 α19]。
此矢量α1存储在图3a中未示出的附加存储器中。
然后,第一解码器14为La2的各分量计算数值β,该数值符合第二函数f2且取决于矢量S1和P1的对应分量。此计算进行的顺序与数值α的计算顺序相反。为了达到此目的,第一解码器14从计算数值β19=f2(La29,S19,P19)开始。每次计算数值β,第一解码器14计算数值La,该数值La符合函数f3且取决于于此数值β以及相应数值α。因此第一解码器14计算数值La19=f3(α19,β19)并把这个数值写入单一存储器31的地址@9。然后第一解码器计算数值La18=f3(α18,β18),并把该数据写入单一存储器31的地址@8,等等。以这种方式在单一存储器31中获得了外部数据矢量La1,表示为La1=[La10 La11 La12 La13 La14La15 La16 La17 La18 La19]。
外部数据的计算对于本领域的技术人员来说是众所周知的。例如,在S.A.Barbulescu的题目为《turbo编码及其它链接码的迭代解码,南澳大利亚大学,PhD Dissertation》,1995年8月出版的论文中被描述。
应该看到,利用本领域的技术人员熟知的名为“滑动窗口”的计算技术也是可能的。此技术包括将矢量划分到窗口中。在上述实施例中,例如,考虑两个窗口,一个窗口包含所述矢量的前五个分量,另一个窗口包含后五个分量。外部数据的计算以下述方式进行。
第一解码器14第一次计算数值α10、α11、α12、α13和α14。然后计算数值β14以及数值La14。然后把数值La14写入单一存储器31的地址@4,并且同时从单一存储器31的地址@5中读取数值La25。
单一存储器31因此包含用于在不同地址中写入并同时读取数据的方法。单一存储器31最好包含一个读取端口和一个写入端口。读取端口的意思是适合读取数据的端口,它并不排除数据也从此端口写入。相似的,写入端口的意思是适合写入数据的端口,它并不排除数据也从此端口读取。另一种同时写入和读取数据的方法在图4和图5中描述。
在第二次半迭代期间,第二解码器16从单一存储器31中读取外部数据矢量La1的分量。这种读取依靠第二交叉器15以预定的交叉顺序以交叉的方式进行。例如,第二解码器16可能逐个读取分量La12、La19、La11、La15、La14、La18、La10、La17、La13以及La16。依靠矢量S2,该矢量与由第三交叉器17交叉的矢量S1相对应,交叉器17未在图中示出,以及依靠第二奇偶校验矢量P2,该矢量与第一个交叉的奇偶校验矢量相对应,第二解码器16以如上所述的方式计算数值α22、α29、α21、α25、α24、α28、α20、α27、α23以及α26。例如,α22=f1(La12,S22,P22)。
第二解码器16然后计算数值β26=f2(La16,S26,P26)以及数值La’26=f3(α26,β26),即为与数据S16相对应的外部输出数据。第二解码器然后将此数值La’26写入单一存储器31的外部数据La16所在的地址中,即地址@6。这是依靠反交叉器18完成的。因为一旦第二解码器16已计算出数值La’26,就没有必要保留相应的外部输入数据La16并且因此能够使用单一存储器31的地址@6来在其中写入数值La’26,所以上述方法可能的。
第二解码器16然后计算数值β23=f2(La13,S23,P23)以及数值La’23=f3(α23,β23),并把此数值写入地址@3,等等。一旦因此在单一存储器31中得到一个外部数据矢量La’2,其表示为La’2=[La’20La’21 La’22 La’23 La’24 La’25 La’26 La’27 La’28 La’29]。
外部数据的此矢量La’2然后可被第一解码器14在下一次迭代中使用。
将‘滑动窗口’技术用于第二解码器也是可能的。
应该注意,通过本发明的优点,第一解码器14和第二解码器16计算的外部输出数据通常以线性的方式存储在单一存储器31中。经过预定次数的迭代,解码停止并且外部数据被最终电路读取,该最终电路未在图3a中示出。因此,如果解码在第一解码器计算出其外部输出数据之后停止,那么简单的线性读取允许最终电路读取这些外部数据。如果解码在第二解码器计算出其外部输出数据后停止,这种情况会同样地保持。最终电路因此没有必要进行交叉读取。
这就提供了一种优于以前本领域技术的优点。实际上,在以前本领域中,如果解码在第二解码器计算出其外部输出数据之后停止,最终电路就会执行如图2所示的第二存储器的反交叉读取。这就要求一个附加的反交叉器,这对于解码电路的功耗来说具有非常显著的缺点。
还应该注意,本发明不局限于以线性方式存储在单一存储器31中的外部数据矢量。例如,可以考虑以交叉的方式存储外部数据矢量。在这种情况下,第一解码器14将从单一存储器31中以反交叉的方式读取,而且第二解码器16将会从单一存储器31中以线性方式读取。
图3b示出了包含一个唯一解码器20的解码电路。该解码器交替执行图3a所示的第一解码器14和第二解码器16的功能。
‘滑动窗口’技术的使用要求能够同时在单一存储器31中读取和写入数据。当单一存储器31只有一个端口时,通过用一个时钟来控制此单一存储器31来实现此功能是可能的,该时钟的频率是控制解码器20的时钟频率的两倍。
图4示出了这种解码电路。所述解码器20由第一时钟CLK控制,其频率为f。单一存储器31由第二时钟CLK2x控制,其频率为f的两倍。
在第二时钟CLK2x的周期中,单一存储器31能够读取或写入数据。因此,在第二时钟CLK2x的两个周期中,单一存储器31能够读取数据然后写入另一个数据,反之亦然。第二时钟CLK2x的两个周期对应于第一时钟CLK的一个周期。因此,在第一时钟的一个周期中,单一存储器31能够读取和写入两个不同的数据。这意味着在第一时钟CLK的一个周期中,解码器20能够在单一存储器31的不同地址中读取和写入两个数据。因为此技术要求在控制解码器20的一个时钟周期,即,本实施例的第一时钟CLK内,读取并写入不同的数据,所以解码器20能够轻松地实现滑动窗口技术。
但是,如图5所示,在这种情况下单一存储器31的输出数据仅在第二时钟CLK2x的一个周期,即,第一时钟CLK的半个周期内有效。因此,为了使用如上所述的解码电路,必须重新编程解码器20,使得它能够只在其控制时钟的半个周期内读取数据。
为了减轻这个缺点,解码电路最好包含一个由第一时钟CLK控制的寄存器41。当数据离开单一存储器31时,它被锁存在该寄存器中,并在第一时钟CLK的一个周期内保持有效。所述解码器20因此能够在第一时钟CLK的一个周期期间读取该数据。因此,没有必要重新编程解码器20。本发明的第三个实施例的这种变体因此能够被用于以前本领域的解码器。
图5示出了使理解图4所示解码电路的运行成为可能的时域图。此时域图包含第一时钟CLK、第二时钟CLK2x、用于激活单一存储器31的端口的使能信号en、写信号wr、地址信号add、输入信号in、输出信号out以及寄存器信号reg。
存储器31的端口包含接受使能信号en的使能输入、接受写信号WR的读/写输入、接受地址信号add的地址输入、数值为输入信号in的输入端口以及数值为输出信号out的输出端口。
第一时钟信号CLK在t1至t7时刻具有上升及下降沿,t1时刻对应于上升沿。
-在t1时刻之后,信号en的值为1,信号wr的值为0并且信号的值为@1。这意味着解码器20将要读取位于单一存储器31的地址@1中的数据。因此,在控制单一存储器31的时钟的下一个上升沿,即,第二时钟CLK2x,位于地址@1中的数据进入单一存储器31的输出端口。这种情况仅在t2时刻之后(out=read@1)发生。
单一存储器31的输出端口的此数据在第二时钟CLK2x的下一个上升沿,即t3时刻之前保持有效。因此,此数据仅在第一时钟CLK的半周期内有效。为了使此数据在第一时钟CLK的整个周期内有效,此数据在t3时刻被锁存在寄存器41中。为了实现这个功能,寄存器41被用于在控制存储器31的时钟,即此实施例中第一时钟CLK的上升沿复制单一存储器31的输出端口的数值。因此,在t3时刻,所述寄存器复制单一存储器31(reg=rd@1)的输出端口的数值,并在第一时钟CLK的下一周期之前保持此数值。此数值因此在第一时钟CLK的一个周期,t3至t5时刻之间保持有效。在第一时钟CLK的该周期内,解码器20能够读取此数据。因此,对于解码器20,一切的发生就好象单一存储器31是由第一时钟CLK控制的。
-在t2时刻和t3时刻之间,写入信号wr的数值为1,并且信号add的数值为@2。这意味着数据将被写入单一存储器31的地址@2。此数据,表示为wr@2在t2时刻和t3时刻之间(in=wr@2)被传送到单一存储器31的输入端口。
-在t2时刻之后,数据wr@2被写入单一存储器31的地址@2。应该注意到,输出端口的数值因此为(out=wr@2)。
-在t3时刻和t4时刻之间,写入信号wr的数值为0,并且信号add的数值为@3。这意味着解码器20将读取位于单一存储器31的地址@3中的数据。因此,在第二时钟CLK2x的下一个上升沿,位于地址@3中的数据被传送到单一存储器31的输出端口。这种情况在t4时刻(out=read@3)之后发生。
-在t4时刻和t5时刻之间,写入信号wr的数值为1,并且信号add的数值为@4。这意味着数据将被写入单一存储器31的地址@4。此数据,表示为wr@4在t4时刻和t5时刻之间(in=wr@4)被传送到单一存储器31的输入端口。
-在t5时刻之后,数据wr@4被写入到单一存储器31的地址@4。因此应该注意到,输出端口的数值为此数值wr@4(out=wr@4)。
应注意到,当控制寄存器41的时钟在高电平状态时从单一存储器31中开始读取数据以及当控制寄存器41的时钟在低电平状态时开始写入是重要的。实际上,通过在控制寄存器41的时钟处于高电平状态时开始读取数据,在控制寄存器41的时钟处于低电平以及此时钟具有上升沿时,要读取的数据在输出端口是有效的。因此将此数据锁存在寄存器41中是可能的。
如果当控制寄存器41的时钟处于低电平时读取操作被启动,在控制寄存器41的时钟处于高电平时,要读取的数据在输出端口是有效的,但是如果此时钟具有上升沿此数据将不再有效。因此就不可能将此数据锁存在寄存器41中。
根据本发明的解码电路可被用于电子器件如移动电话中。根据本发明的解码电路因此可被用于通讯网络中,该通讯网络至少包含一个能够发送编码信号的发送器、一个传输信道和一个能够接收所述信号的接收器。
本发明还涉及可用于电子电路中的解码方法,该电子电路包含根据本发明的解码电路。这种解码方法包含:
-第一步,其中第一解码器线性读取存储在包含地址的单一存储器中的外部输入数据,从各外部输入数据计算外部输出数据并且在存有相应外部输入数据的地址中写入各外部输出数据;
-第二步,其中第二解码器以交叉方式读取外部输入数据,该数据存储在单一存储器中并与第一解码器在第一步中计算的外部输出数据相对应,第二解码器计算外部输出数据并将各外部输出数据写入存有相应外部输入数据的地址中。
从原理上来说,依靠适当的程序集成电路来实现此解码方法是可能的。在程序存储器中包含的一系列指令可命令该集成电路执行前述不同的步骤。此系列指令可通过读取数据载体,例如,此系列指令被编码的磁盘,被装入程序存储器中。通过通讯网络,例如,互连网来读取也是有效的。在那种情况下,服务提供商将使感兴趣的用户处理该系列指令。
动词“包含”极其各个变化形式将被广泛地解释,即不排除除了那些列在所述动词之后的元素,以及多个已经列在所述动词之后和由冠词“一个”或“一种”开头的元素。