具体实施方式
在图1中说明根据实施例的用于对位序进行编码的方法。
图1显示根据实施例的流程图100。
在步骤101中,选择第一编码区块的位数与第一编码方案。
在步骤102中,将位序次分割成至少一个第一位块与第二位块,其中,所述至少一个第一位块中的每个第一位块包括第一编码区块的位数的位,且第二位块包括少于第一编码区块的位数的位。
在步骤103中,选择用于第二位块的第二编码方案,所述第二编码方案不同于第一编码方案。
在步骤104中,使用第一编码方案对至少一个第一位块进行编码,且使用第二编码方案对第二位块进行编码。
在另一实施例中,提供了一种根据上述方法的计算机程序产品。
在另一实施例中,提供了一种用于对位序进行编码的编码电路。在图2中对该电路进行说明。
图2显示根据实施例的编码电路200。
编码电路200包括第一选择电路201,该第一选择电路201用于选择第一编码区块的位数与第一编码方案。
编码电路200还包括次分割电路202,该次分割电路202用于将位序次分割成至少一个第一位块与第二位块,其中,所述至少一个第一位块中的每个第一位块包括第一编码区块的位数的位,且第二位块包括少于第一编码区块的位数的位。
编码电路200的第二选择电路203配置为选择用于第二位块的第二编码方案,该第二编码方案不同于第一编码方案。
编码电路200还包括处理电路204,该处理电路204用于使用第一编码方案对至少一个第一位块进行编码,且使用第二编码方案对第二位块进行编码。
编码电路200还包括存储器,存储器中储存有关于可以被选择的编码方案的信息(例如程序代码、参数值、位组合规则)。
在实施例中,所使用的存储器可以是易失性存储器,例如动态随机存取存储器(DRAM);或非易失性存储器,例如可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存,例如浮栅存储器、电荷补捉存储器、MRAM(磁阻随机存取存储器)或PCRAM(相变随机存取存储器)。
编码电路例如是发射器的一部分。
在一个实施例中,换言之,例如用于前向纠错(FEC)的待编码的位序,例如为了传送位序,通过将位序次分割成用于一个以上编码方案的输入数据区块而进行编码。例如,将位序次分割成用于第一编码方案的给定大小的多个输入数据区块,使得输入数据区块位大小最大,即对于整个输入数据区块而言,与输入数据区块无关的位数太小。然后,所剩余的位可通过位填充而编组成第二输入数据区块。这允许为第一编码方案选择大的区块位大小、即大的第一编码区块位大小数目,而不会因为对于用于第一编码方案的输入数据区块而言剩余位极其地少而影响编码率,在所述第一编码方案会需要大数目的填充位。因此,在一个实施例中,选择第二编码方案,使得用于第二编码方案的输入数据区块小于用于第一编码方案的输入数据区块,因此相比于对剩余位使用第一编码方案的情形,可以需要较少的填充位。例如选择第二编码方案,使得将所有剩余位放入用于第二编码方案的一个输入数据区块中。
例如对第一位块进行编码,以产生第一编码区块。第一位块可称为用于第一编码方案的输入数据区块,且第一编码区块可称为第一编码方案的输出数据区块。类似地,第二位块可称为用于第二编码方案的输入数据区块,且第二位块编码的第二编码区块可称为第二编码方案的输出数据区块。此编码方案的输入数据区块例如是作为整体被转换成各输出数据区块的位的区块。这意味着,输出数据区块例如取决于各输入数据区块的所有位,而对应于不同输入数据区的输出数据区块彼此无关。具体地,输出数据区块可以仅取决于其对应的输入数据区块的位的值。
例如就输入数据区块大小和/或输出数据区块大小而言,第一编码方案可以不同于第二编码方案。
在一个实施例中,提供了一种数据编码方法,关于就期望的质量要求而言的编码方案的选择,该方法允许具有高度弹性,所述期望的质量要求例如是BER性能和数据吞吐量。
在一个实施例中,“电路”可以理解为任何种类的逻辑执行实体,其可以是硬件、软件、固件或其任意组合。因此,在一个实施例中,“电路”可以是硬件实现的逻辑电路,或诸如可编程处理器的可编程逻辑电路,所述可编程处理器例如微处理器(例如,复杂指令集计算机(CISC)处理器或精简指令集计算机(RISC)处理器)。“电路”也可以是由处理器所执行或实施的软件,例如任何种类的计算机程序,所述计算机程序例如是使用诸如Java的虚拟机代码的计算机程序。下面将更详细地说明各功能的任何其他种类的实施,这些实施也可以理解为根据替代实施例的“电路”。
在用于对位序进行编码的方法的上下文中所描述的实施例对于计算机程序产品与编码电路类似地有效。
在一个实施例中,根据第二位块的位数来选择第二编码方案。例如,选择第二编码方案,使得该第二编码方案的输入区块大小比第二位块的位数大。例如,该第二编码方案选为多个第二编码方案之中的这样一种编码方案,这种编码方案在输入区块大小比所述第二位块的位数大的所述多个第二编码方案中具有最小的输入区块大小。
在一个实施例中,根据第一编码方案的输入区块大小来选择第一编码区块的位数。
在一个实施例中,对位序进行编码以用于传输位序,且根据该传输的最大允许误码率,选择第一编码方案。例如,根据最大允许误码率,选择适用于最大允许误码率的多个编码方案,且第一编码方案选为多个编码方案中具有最高编码率和/或最高编码增益的编码方案。
在一个实施例中,第一编码方案为乘积码,例如是Turbo乘积码。例如,第一编码方案是基于两个扩展汉明码的Turbo乘积码。
在一个实施例中,该第二编码方案为乘积码,例如是Turbo乘积码。第二编码方案例如是基于两个扩展汉明码的Turbo乘积码。在其他实施例中,第一编码方案和/或第二编码方案基于可能彼此不同的其他码,例如奇偶校验码与汉明码、两个奇偶校验码等。
在一个实施例中,所述方法包括传输已编码的第一位块与已编码的第二位块。例如,根据OFDM传输已编码的第一位块与已编码的第二位块。
在一个实施例中,所述方法还包括将已编码的第一位块的数据与已编码的第二位块的数据映射至调制符号。所述方法例如还包括将已编码的第一位块的数据与已编码的第二位块的数据映射至OFDM符号。在一个实施例中,已编码的第一位块的数据量不同于映射至OFDM符号的数据量。已编码的第一位块的数据量例如指已编码的第一位块的位数。这意味着在本实施例中,包括已编码的第一位块的码区块的大小与OFDM符号的大小并不匹配。
在一个实施例中,将已编码的第一位块的数据映射至至少两个OFDM符号。
在一个实施例中,已编码的第二位块的数据量不同于映射至OFDM符号的数据量。
所述方法还可包括对第二位块进行位填充,以适合作为用于第二编码方案的输入。
在一个实施例中,所述方法还包括从因对填充位进行编码而产生的已编码的第二位块省略至少一些零位。例如,所述方法还包括从因对填充位进行编码而产生的已编码的第二位块省略所有零位。
图3表示根据实施例的发射器300。
在本例子中,发射器300使用正交频分复用(OFDM),用于发射由数据源301提供的数据。
将由数据源301所提供的数据编组成数据区块302,提供给编码电路303。根据数据区块302的码区块格式,编码电路303对数据区块302进行编码。这意味着编码电路303使用包括来自一个或多个数据区块302的一定数目(在以下称为每个码区块的(有用)数据的位数)的位的输入数据区块,且从输入数据区块产生包括一定数目(在以下称为每个码区块的编码位数)的位的输出码区块。本例子中的输出码区块称为TPC区块,这是由于在本例子中,假设所使用的编码方案为Turbo乘积码。
将TPC区块304提供给调制电路305,调制电路305以TPC区块304的位产生OFDM符号306的序列。每个OFDM符号包括调制符号,以用于根据OFDM方案所使用的每个次载体、例如64或128个次载体,所述调制符号例如是根据QAM64(QAM:正交幅度调制)或PSK(相移键控)的调制符号。将OFDM符号306的序列编组成构成基本传输格式的OFDM帧。
然后,可以将OFDM符号306提供给IFFT电路307,IFFT电路307实施反向快速傅立叶变换,且将其输出提供给发射电路308,所述发射电路308例如包括数模转换电路、混频器以及一个或多个发射天线,并将IFFT电路307的输出作为无线电信号发射。
需要注意,发射器300中可以包括其他电路。例如,在编码电路303与调制电路305之间可以有实施TPC区块304的位交错的交错电路。
在本实施例中,OFDM(符号)帧是指包括相等长度与大小的正好Q个OFDM符号的数据结构。在图4中图示了OFDM帧与TPC区块的关系。
图4表示根据实施例的OFDM帧400。
如上所述,OFDM帧400包括多个OFDM符号401。OFDM符号401与产生这些符号的多个TPC区块402相对应,即,例如根据所使用的调制方案而使用星座映射,将TPC区块402的数据映射至OFDM符号401。这意味着,例如第一个OFDM符号401是由第一个TPC区块402的第一的位产生,即用于每个次载体的调制符号是根据这些位而选出,第二个OFDM符号401是由第一个TPC区块402的随后的位产生,以此类推。
在一个实施例中,TPC区块402的大小与OFDM符号401的大小并不匹配。特别地,可能会需要填充位403,以使最后的OFDM符号401具有足够的位。
通常,Turbo乘积码对应于码(当以矩阵形式写入输入数据区块时,这可以视为一个码对应于行,而其他码对应于列)。这两个码也称为Turbo乘积码的分量,可具有相同类型与相同大小。以下,码的大小用来指码输入数据区块大小和/或输出码区块大小。
Turbo乘积码的分量的可能类型例如是奇偶校验码、汉明码、扩展汉明码、BCH(Bose-Chaudhuri-Hocquenghem)码。例如可以将这些例子的任何两者用于TPC(区块)码。例如可以基于参数选择用于TPC码的分量,所述参数例如期望的BER性能、期望的编码率或执行的难易。
表2表示例如用于所有相同类型的具有不同大小的两个码的可能组合的例子,所述相同类型在本例子中为扩展汉明码。
表2:基于TPC区块大小的用于扩展汉明码的例子
区块类型TPC(nx,kx)(ny,ky) |
每个区块的数据位 |
每个区块的已编码位 |
编码率 |
TPC(128,120)(128,120) |
14400 |
16384 |
0.89 |
TPC(128,120)(64,57) |
6840 |
8192 |
0.83 |
TPC(64,57)(64,57) |
3249 |
4096 |
0.79 |
TPC(64,57)(32,26) |
1482 |
2048 |
0.72 |
TPC(32,26)(32,26) |
676 |
1024 |
0.66 |
TPC(32,26)(16,11) |
286 |
512 |
0.55 |
TPC(16,11)(16,11) |
121 |
256 |
0.47 |
TPC(16,11)(8,4) |
44 |
128 |
0.34 |
TPC(8,4)(8,4) |
16 |
64 |
0.25 |
从而,Turbo乘积码的大小由TPC(nx,kx)(ny,ky)给定,而(nx,kx)给定第一分量的大小,且(ny,ky)给定第二分量的大小,使得nx乘以ny为Turbo乘积码的各输出码区块的位数,且kx乘以ky是Turbo乘积码的各输入数据区块的位数。
表2列出了基于TPC区块大小而未缩短的扩展汉明码的范围,在一个实施例中,可以使用具有大于(128,120)(128,120)的大小的TPC。从表2可以看出,Turbo乘积码的编码率随着Turbo乘积码的大小而增加。
因此,在一个实施例中,为了至少部分地编码数据区块302,使用例如在多个所给定而允许Turbo乘积码中具有最大大小的TPC。
在一个实施例中,基本途径是使允许最大编码率和编码增益的OFDM帧的TPC区块的区块大小最大化。在一个实施例中,根据以下规则进行编码:
i.假设在OFDM帧中有P个TPC区块(即,对应于图4中所示的OFDM帧),其中P不等于Q。
ii.选择前面P-1个TPC区块,使其具有相同大小。这些区块称为OFDM帧的主区块类型的区块。最后的TPC区块可以有不同的大小。该区块称为该OFDM帧的替代区块类型的区块。
iii.基于期望的误码率(BER)选择主区块类型。
iv.将替代区块类型的大小选为小于或等于主区块类型的大小。通常,当区块的大小较小时,码的错误校正性能较高。因此,帧的整体错误校正性能并不受限于替代区块类型。
v.可以缩短或可以不缩短替代区块、即替代区块类型的区块。
换言之,基于期望的误码率,选择具有一定大小的TPC码。该TPC码用于将数据区块302的数据编码为输入数据区块。结果是P-1个在本例子中也称为TPC区块的输出码区块。这P-1个TPC码区块均具有相同的大小。包括这P-1个TPC区块在内,还产生有第P个TPC区块。P-1个TPC区块与第P个TPC区块一起形成位序,所述位序被映射至OFDM帧的OFDM符号。除了具有主区块大小的P个TPC区块形成映射至一个OFEM帧的恰好长度的位序的被情形之外,第P个TPC区块要短于主区块类型的P-1个TPC区块。因此,产生第P个TPC区块的TPC码所具有的大小不同于用于产生主区块类型的P-1个TPC区块的TPC码。因此,产生第P个TPC区块的输入数据区块的大小小于产生前面P-1个TPC区块的输入数据区块的大小,所述第P个TPC区块也称为替代区块类型的TPC区块。这意味着将来自产生P个TPC输出码区块的输入数据区块302的数据编组成第一大小的P-1个输入数据区块以及小于该第一大小的第二大小的第P个输入数据区块。对于前面P-1个输入数据区块,使用例如第一大小的码的第一编码方案;而对于第P个输入数据区块,使用例如小于第一大小的第二大小的码的第二编码方案。
在下文中,假设一个输入数据区块302恰好包括使用一个OFDM数据帧所传输的数量的(有用)数据。还假设此数据区块302的大小为L位。
在一个实施例中,例如由一组可用的区块类型选择主区块类型,换言之,主区块类型为TPC大小,其在那些符合BER要求、即对于BER要求适合的主区块类型中具有最高编码率。主区块、即具有主区块形式的TPC区块数Ppb可以由下式计算:
其中,
代表下限函数,且U
pb=k
x·k
y是用以产生主区块的大小为TPC(n
x,k
x)(n
y,k
y)的码的未编码的位数。这意味着U
pb是用以产生主区块(称为主码的类型)的Turbo乘积码的输入数据区块大小。
此数据区块的剩余位Bab被用作码(称为替代码)的输入,以产生替代区块,剩余位Bab即未用于产生主区块的输入数据区块的部分位。Bab可以由下式计算:
Bab=L-Ppb·Upb (2)
在一个实施例中,根据以下规则选择替代区块类型:
vi.从表3中,选择基于Bab的替代区块大小最大的码类型。需要注意,iv仍然适用。
表3:用于选择TPC替代码的条件的例子
条件 |
TPC替代码类型 |
3249≥Bab>1482 |
TPC(64,57)(64,57) |
1482≥Bab>676 |
TPC(64,57)(32,26)或TPC(32,26)(64,57) |
676≥Bab>286 |
TPC(32,26)(32,26) |
286≥Bab>121 |
TPC(32,26)(16,11)或TPC(16,11)(32,26) |
121≥Bab>44 |
TPC(16,11)(16,11) |
44≥Bab>16 |
TPC(16,11)(8,4)或TPC(8,4)(16,11) |
16≥Bab |
TPC(8,4)(8,4) |
表3通过对可能的替代码的分析导出。在表3中所列的条件仅用于说明。也可有其他组合,例如由特定的外部条件产生。例如,如果此数据区块长度为8的倍数且主区块大小为TPC(32,26)(32,26),则未使用在表3左栏中所列的条件中的奇数边界。表3仅表示了上至最大大小TPC(64,57)(64,57)的条件。基于表3的选择设计也可以扩展至更大的TPC大小。
对于可以被选用于替代码的编码方案(且类似地,对于可以被选用于主码的编码方案),可以将用于这些编码方案的使用的信息储存于发射器300的存储器中。例如,可以储存用于执行各种编码方案的程序代码。此外,可以为各种编码方案储存用于所述各种编码方案的参数值(例如输入区块大小等)。例如,可以储存用于每种编码方案的规范,规范用于说明根据该编码方案,如何组合此输入数据区块的位才能产生相对应的输出数据区块。
作为示例,使L=2896位。假设信道状况指定:具有可以使用的最高编码率的TPC由TPC(32,26)(32,26)给出。这意味着主码由TPC(32,26)(32,26)给定,其中,在本例子中仍然假设该TPC是指基于两个扩展汉明码的组合的给定大小的TPC。
从等式(1)中可以得出:
Ppb=4。
等式(2)可以给出
Bab=2896-4*676=192。
因此,基于表3,在本例子中选择替代区块大小为TPC(16,11)(32,26)。
在一个实施例中,为了实现码的最大编码率,可以使用缩短(或切断(puncturing))以去除任何冗余的填充位,且因此降低了编码率。
对于区块码,可以进行列缩短、行缩短或两者的组合。如果数据区块大小L未知且并未事先固定,则同时使用行缩短和列缩短在实施中会遇到一些困难。如果L的范围大且可变,则通常可使用超大规模集成(VLSI)逻辑来决定用于每个可能L的最佳的行缩短与列缩短。
以下描述了使用行缩短的实施例。所描述的方法也可用于列缩短。
如果主区块按上述规则产生,则主区块不需要缩短。对于替代区块,所缩短的量有望取决于Bab。
由于Bab是用于产生替代区块的数据的位数,用于替代区块(使得用于替代码的输入数据区块具有所需的全部数目的位)所需填充的位数是
Bpad=Uab-Bab (3)
其中,Uab是用于替代区块的未编码的位数,即用于替代码的输入数据区块大小。
对于以上例子,Bab=192,
Bpad=286-192=94
图5中显示了编码前的要以填充位根据TPC(32,26)(16,11)进行编码的输入数据区块。
图5显示根据实施例的输入数据区块500。
可以看出,编号为8、9、10的行均由填充位(3*26=78个填充位)构成。与编号为7的行中的16个零一起,形成94个填充位。
图6显示根据实施例的输出码区块600。
输出码区块是根据TPC(32,26)(16,11)而由图5所示的输入数据区块500产生的TPC区块。在本例子中,由于最后三行(第13、14、15行)的所有位为零,故这三行可以被缩短(例如,在将TPC区块传至调制电路305之前删去)。
对于并非所有位均为零的第12行,则例如有两个选择:
选项1:忽略该行中的零位,且传输整个行(即,将整个行映射至OFDM符号)。这在图7中进行了图示。
图7表示根据实施例的缩短输出码区块700。
在缩短的输出码区块700中,仅包括零的最后三行被去除,但在第12行、即包括实际有用数据位的最后行中由于填充而产生的剩余零位则未被去除。
选项2:在传输之前,去除零位(所述零位由填充产生)。这在图8中进行了图示。
图8表示根据实施例的缩短输出码区块800。
在缩短的输出码区块800中,仅包括零的最后三行被去除,且在第12行、即包括实际有用数据位的最后行中由于填充而产生的剩余零位也被去除。
基于实施复杂度与编码率间的权衡而进行选项1与选项2之间的选择。如果数据区块大小L大,则具有有效数据(换言之,有用数据)的最后TPC行(在以上例中为行12)中的零位并不会显著影响编码率。
在缩短之后的TPC区块中的位数可以通过首先根据下式确定填充行数而计算:
其中,代表下限函数,Bpad通过等式(3)而给定,且kx为TPC区块每行的未编码数据的位数。
对于具有L=2896和Bpad=94的以上例子而言,
Npad=3
对于选项1,缩短之后的每个TPC区块的编码位数可以计算为
Cab_pad=Cab-Npad·nx (5)
且对于选项2可以计算为
Cab_pad=Cab-Npad·nx-Bpad mod kx (6)
其中,对于大小为TPC(nx,ky)(ny,ky)的Cab=nx·ny是在替代区块中编码的位数。
TPC区块的编码率可以计算为
其中,
为下限函数,且C
pb=n
x·n
y为大小TPC(n
x,k
y)(n
y,k
y)的主区块中编码的位数。C
ab=k
x·k
y为用于主区块的未编码的位数(即,用于主区块的输入数据区块的位数)。B
pad由等式(3)给定,而C
ab_pad分别由等式(5)或(6)所给定。
为了计算系统的真实编码率,可以考虑从已经已编码位至OFDM符号的映射。从图4可以看出,已编码位(即TPC区块402的位)的总数在缩短之后可能无法放入OFDM符号中。因此,可以使用用于最后OFDM符号的填充位403。
将使用OFDM符号帧所传输的已编码位的总数记为Ctotal,并由下式所给定:
Ctotal=Ppb·Cpb+Cab_pad (8)
为了确定在OFDM帧中的OFDM符号数,使Ncbps为每个OFDM符号的已编码位数、即使用OFDM符号所传输的已编码的位数。该值例如由调制方案(QAM64、PSK、...)以及所使用的次载体数决定。每个OFDM帧的OFDM符号数由下式给定:
考虑用于最后OFDM符号的可能填充,编码率因此由下式给定:
可以看出,编码率取决于替代区块与用于最后OFDM符号的填充的位数。
为了确保一致的高编码率,在一个实施例中,遵守下述指导原则的一个或多个:
·选择大的数据区块长度L;
·选择数据区块长度L,使得对于最后OFDM符号的填充的位数为最小;
·如果使用行缩短且如果行大小与列大小不相等,则将TPC区块的行大小选为小于TPC区块的列大小。如果使用列缩短(例如,类似于以上说明行缩短)且如果行大小与列大小不相等,则将TPC列的大小选为小于行的大小。
在一个实施例中,提供了一种形成或设计用于基于OFDM的系统的Turbo乘积码的方法。相比于现有系统,该方法可以实现具有良好编码增益的更高的编码率。在一个实施例中,编码实施起来简单且在TPC码的选择上具有更高的弹性。此外,相比于使用TPC码的传统的基于OFDM的系统,本发明可以实现以下优点:
·可以实现更高的编码率而不会牺牲BER性能;
·用于TPC的分量代码并不受限于TPC区块大小。这意味着可以使用更强健的代码,例如扩展汉明码、而非简单的奇偶校验码;
·帧中可以有更大范围的数据区块长度;
·在来自TPC码的OFDM符号大小上没有限制。因而,可以仅通过信道状况来决定每个OFDM符号的位数。在用于物理层前端设计期间允许有更大的弹性;
·由于TPC区块的类型受到限制,故所述方法的执行较简单。在一个实施例中,仅使用了扩展汉明码。而且,设计所需要的缩短相比于传统设计非常简单。
本发明的实施例可以用于3G系统、有线局域网络(LAN)通信系统、光学通信系统、磁记录系统以及任何包括信道代码的通信系统。例如,实施例可以用于根据3GPP(第三代伙伴计划)、FOMA(自由移动存取)或CDMA 2000(CDMA:码分多址)的移动通信系统。