背景技术
在现有技术中,无线通信系统的发送端如果数据传输的速率不高,可以按照图1所示的方式以比特流配合缓存方式串行进行卷积编码、缓存打孔和交织等数据处理。在调制之前进行串并转换,获得高阶调制所需要的多比特数据。在这个过程中,显然图2所示的逐次型交织器无法达到极高的数据吞吐率,为了提高无线通信系统的发送端数据吞吐率,需要将待发送数据分割成独立几段,对其采用并行方式进行编码与交织。这样可以极大地提高数据处理效率,因此得到了广泛的应用,特别是在OFDM调制的4G通信系统中,例如LTE/LTE-A等。
在公开号为CN102394663A的中国专利申请中,公开了一种大幅改进的分段并行卷积编码的方法。如图3所示,该方法通过修改分段后的待编码数据块之间的重叠部分数据比特为0,巧妙的利用了卷积编码记忆特性,对于初始状态错误(全0)的分块输出比特与前一个分块末尾(正确的待编码数据是下一个分块启始比特,但分段时填入全0)的等长度错误输出,两者按比特求异或,就能得到该段位置正确的卷积编码输出。
但是,该方法需要对编码块按并行度进行分块,利用多块存储器存储待编码块。若采用乒乓机制缓存数据,则存储器的消耗量将翻倍,若待编码块的数据量变大,则存储器的消耗量也将变大。此外,分段并行编码方式还需要配合分段并行交织方式,才能真正提高系统整体的吞吐率。
在公开号为CN101116249A的中国专利申请中,采用并行输入数据,同时写入多个存储库构成的存储器,并以与写入不同的顺序读出已写入的数据,由此实现对二维排列型交织方式的并行交织。该方法通过如下的公式确定分块输出的数据块大小,避免出现对存储库单元的存取争用现象。
Ksout=ceiling((C-floor(Ro*Ms/R))/Ms_*R+Ro
其中,C表示存储库数量,R表示存储库深度。在PIL交织方式下,Ro为一质数。对于输入分块数量、输出分块数量和存储库数量相等时的情况,按具体应用场景取1或4,获得Ksout。如此获得的Ksout由于与存储库数量互质,所以按列读取时不会发生第一段输出与第二段输出数据取自同一个库的情况,然后按Ksout重整交织表,如图4所示,以K=45,C=5,R=10,5个存储库为例,配合存储在LUT(显示查找表)中的交织表读取地址,可不产生存取争用。Ro=1,计算可得Ksout=11,所以输出的5段数据长度为11,内部交织图案也为5个LUT。
如图5所示,内部交织图案按存储库个数分为N个,LUT交织表内灰色部分表示该比特(bit)是虚拟比特,在输出端利用指示信号区别。图5中并行度为5,参考LUT0中存储的内容,其中k表示交织后输出的第k个比特,A(k)表示输出的第k个比特是原来的第A(k)个比特,即U(k)=A(k),b0表示所属的存储库,a0表示所属库的存储地址,cnt_r是一个计数器,用来同步控制与计算,见下式。
b[m]=floor{A(cnt_r+m*C)/C}
a[m]=A(cnt_r+m*C)modC
为使具体操作更加明确,该专利申请给出了交织器的系统读写操作时序,具体如图6所示。
上述并行交织方法能够不出现存取争用的本质是基于PIL交织方式,并且计算Ksout改变并行输出数据序列的长度,来规避存储单元数量C对于输出端的影响。对非PIL交织方式,若合理划分交织器并行度也可采用该并行交织方法,但是依然有可能出现存取争用的现象。理论上对于任意的交织方式,该方法无法保证能完全避免存取争用,需要结合具体的交织方式对系统支持的所有内部交织图案进行逐个分析,在不同交织方式下需要修改LUT内存储的交织图案,运算及控制逻辑十分复杂。
此外为了达到不出现存取争用、适配任意的交织表的效果,可以采用仲裁电路决定信号存取。如图7所示,交织图案预先对存入的比特进行判断,若同一时刻出现两个或多个比特存入同一块存储库,则按一定的优先顺序缓存部分比特,采用FIFO(First In First Out,先入先出队列)缓存竞争数据,待其它存储库出现存入争抢并且本存储库没有写入操作时,将FIFO缓存数据写入。仲裁电路的加入无疑增加了逻辑的复杂性,随着并行度的提高、交织表深度的加深以及数量增加,需要的FIFO数量也随之增加。因此,正确分配缓存数据的逻辑设计十分复杂,系统整体的复杂度也极大提升。
发明内容
针对现有技术所存在的不足,本发明所要解决的技术问题在于提供一种适用于任意交织方式,将并行编码与并行交织相结合的无线通信传输方法。
为实现上述的发明目的,本发明采用下述的技术方案:
一种基于并行编码与并行交织的无线通信传输方法,在信道编码过程中,首先对待编码数据划分分块并进行并行编码,然后将并行编码所获得的数据作为待交织数据进行并行交织;
在所述并行交织过程中,无需考虑交织方式,对待交织数据划分分块,并且修改交织表的存储内容和存储格式。按所述原交织表的最大深度L,采用L个寄存器存储交织数据。根据调整后的交织表存储的位置信息,判断待交织数据与寄存器的位置关系是否正确,如果位置关系正确,则存储待交织数据。完成所有数据存储后,寄存器移位输出,其中L为正整数。
在所述并行编码过程中,首先将所述待编码数据共S比特划分为N个分块,由一个编码器同时对S/N个比特进行编码,一次编码操作后输出(S/N)*R个比特编码结果,其中N为正整数,R为编码率。
其中较优地,在所述并行编码过程中,利用比特模式转化模块将介质访问控制层的待编码数据划分为3/2/1个比特的小块进行编码。
其中较优地,在修改交织表的存储内容时,所述交织表的第k个单元存储交织前第k个信息经过交织后所在的位置信息,所述交织表的第k个地址不再代表交织后的第k个信息,其中K为正整数。
其中较优地,在修改交织表的存储格式时,将顺序的已修改存储内容的L个位置信息按并行度M,每隔M个位置信息存储在交织表的同一个地址。
其中较优地,如果所述交织表的深度L不能被M整除,在空余比特位置填入极大值,使该地址无效。
其中较优地,在所述并行编码过程和所述并行交织过程中,采用寄存器存储数据。
与现有技术相比较,本发明具有以下的技术特点:
1.采用完全不同的架构实现并行编码,一次编码操作输出N比特编码后结果,不消耗存储器,也不需要额外控制单元。
2.使用组合逻辑,依靠简便判断方式与寄存器物理特性,适用与任意交织方式,完全避免存取竞争,大大降低了设计复杂度,节省系统整体资源开销。
3.可以直接适配不同调制方式,减少系统缓存存储,大大系统发送端的数据吞吐率。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的详细说明。
作为本发明的一个实施例,假定短距无线通信协议802.11ac中存在如下场景:正交子载波间隔不变(3.125khz),256子载波80M带宽,基带处理器在一个OFDM symbol内(3.2us)完成OFDM信号时域采样(FFT)。在此场景下,若每个子载波携带高阶调制信息,例如64QAM。这里的QAM是用两路独立的基带信号对两个相互正交的同频载波进行抑制载波双边带调幅,利用这种已调信号的频谱在同一带宽内的正交性,实现两路并行的数字信息的传输。该调制方式通常有二进制QAM(4QAM)、四进制QAM(l6QAM)、八进制QAM(64QAM)、……。对应的空间信号矢量端点分布图称为星座图,分别有4、16、64、……个矢量端点。理论上,介质访问控制层(MAC)与物理层(PHY)之间的数据传输率可以达到292.5M bit/s(介质访问控制层每3.2us+0.8us向物理层传递1170比特),但是比特流编码模块无法在3.2us+0.8us内完成1170比特的1/2卷积码编码,逐次交织模块更无法在3.2us+0.8us内完成1404比特的交织。
另一方面,在现有技术中进行分段并行编码,需要缓存一个符号(symbol),将所有待发送数据进行乒乓处理。这样会消耗存储器资源。而系统采用交织方式如图17所示,非PIL交织。现有分段并行交织也无法适应短距无线通信的交织方式,若直接使用现有的并行编码与并行交织则会大大增加了系统的整体设计复杂度与资源开销。
针对上述的问题,发明人考虑到前馈卷积码编码器具有记忆性。当前时刻的编码器状态与下一时刻的编码器状态不相同,其差别在于下一时刻的状态是本时刻状态的移位。暂不考虑状态转移,在初始时刻,如果获取了当前时刻输入,与下一个时刻输入,则下一时刻初试状态是已知的。下面以N=2,卷积深度M为6为例,如图8所示。由图8可知,若在0时刻更新bit_in[0]和bit_in[1],那么0时刻前馈编码器的状态可由前0至5号存储单元确定,1时刻前馈编码器的状态可由前1至6号存储单元确定,所以能在同一时刻同时获取两组输出的初始状态。若间隔一个存储单元进行状态转移操作,那么对于下一时刻更新的两个输入而言,编码器状态依然是正确的。
在上述思路的指引下,本发明在信道编码过程中,采用如下的并行编码方法:
步骤1:采用分块划分待编码数据的方式提高并行度,待编码的数据块(block)共S比特,将S比特按先后顺序划分为ceil[S/N]块(ceil函数表示向上取整,即返回大于或者等于指定表达式的最小整数),每时刻更新N比特进行编码,数据不够补0。
步骤2:若生成多项式M阶,一共使用(N—1+M)个存储单元。当前时刻更新一个数据块输入,即(N—1)比特至0比特。下一时刻,此N比特依次赋值给(M—1)号存储单元至(M—1—N+1)号存储单元,(N—1)比特赋值给(M—1)号存储单元,0比特赋值给(M—1—N+1)号存储单元,同时更新输入数据块。同时(M—1)至N号存储单元存储的共(M—N)个原数据间隔(N—1)个存储单元传递数据,即X号存储单元的数据赋值给(X—N)号存储单元。(N—1)号存储单元至0号存储单元只更新数据,不再传递数据。
在图9所示的实施例中,N=2,卷积深度M为6。在每一个时钟周期内,输入端更新2比特,余下寄存器按虚线移位。
步骤3:按规定生成多项式,(N—1+M—1)号存储单元到(N—1)号存储单元,共M个单元,结合(N—1)比特产生第(N—1)比特编码结果。依次类推,(M—1)号存储单元到0号存储单元,共M个单元,结合0比特产生第0比特编码结果。则总共产生了N比特编码结果。这里的S、M和N均为正整数。
因此,本发明完成一个数据块编码所需要的时间只需要原来的1/N,即完成并行编码后获得分段待交织数据所需要的时间只需要原来的1/N,极大地提高了无线通信系统的编码效率。
在完成并行编码后可以获得分段待交织数据。接下来,介绍本发明中所采用的并行交织方法。前已述及,现有技术(例如公开号为CN101116249A的中国专利申请)中采用并行交织器,通过将输入数据写入多个存储库构成的存储器,并以与写入不同的顺序读出已写入的数据,由此实现对二维排列的数据结构以行方向优先的方式写入数据。为避免存取争用现象,上述分段并行交织方法需要结合PIL交织方式,并且计算Ksout改变并行输出数据序列的长度,从而规避存储单元数量C对于输出端的影响。对非PIL交织方式若合理划分交织器并行度也可采用该并行交织方法,但是依然有可能出现存取争用的现象。理论上对于任意的交织方式,该处理方法无法保证完全避免存取争用,需要结合具体交织方式对系统支持的所有内部交织图案进行逐个分析。之所以出现存取争用现象,是由于交织表中并行输出多个比特存储于同一个存储库,而该存储库若不使用多口存储器无法在同一时刻操作不同地址。
为解决上述的技术缺陷,本发明所采用的并行交织方法不使用存储器(Memory),可以避免存储竞争。该方法具体包括以下步骤:
步骤1:采用分块划分待交织数据的方式提高并行度,R表示编码率(R=(打孔后数据数量/打孔前数据数量),若不打孔,则R=1),并行编码器输出为N比特,待交织数据块共S比特。将S比特按输入先后顺序划分为ceil[S/(N*R)]块,每时刻更新N*R比特进行交织操作,空余位置使用任意数据填满。
步骤2:参见图10所示,修改原始交织表的存储内容,交织表第k个单元存储交织前第k个信息经过交织后所在的位置信息,交织表第k个地址不再代表交织后的第k个信息。
步骤3:参见图10所示,修改原始交织表的存储结构,将步骤2后顺序的N*R个位置信息并行的存储在交织表的同一个地址,交织表地址m位置存储的是:交织前第(m—1)*(N*R),第(m—1)*(N*R)+1,直到第(m—1)*(N*R)+(N*R)—1比特经过交织处理后所处的位置。在时刻m,前级模块或并行编码器输出一个block=N*R个已编码数据,此N*R个编码数据与本步骤中地址m存储的第(m—1)*(N*R),第(m—1)*(N*R)+1,直到第(m—1)*(N*R)+(N*R)—1信息一一对应,即m(m从1开始计数)时刻,前级模块或并行编码器输出的N*R比特中,第N*R—1比特就是交织表地址m中的第(m—1)*(N*R)+(N*R)—1比特,所以第N*R—1比特交织后的位置信息存储于交织表地址m的(m—1)*(N*R)+(N*R)—1位置。
将所有交织方式形成的交织表按步骤2、3中所描述的规则重新整理。若交织表深度不能被N*R整除,可在空余比特位置填入极大(max)值,保证该地址无效。
步骤4:按交织表最大深度L,L=S,采用L个寄存器而不是存储器类器件存储待交织数据。每个寄存器存储经过交织后的该位置的信息。
步骤5:判断待交织数据交织后存储于几号寄存器。具体地说,如果第k个寄存器存储交织后处于第k个位置的数据信息。m时刻读取步骤3处理后交织表,同时获得0~(N*R)—1个的位置信息,同时前级输出并行编码后N*R个比特。第k个寄存器判断当前时刻这N*R个比特的位置信息是否与自己位置k相同,若有相同,则将该位置对应的比特存储。
上述步骤3中,交织后地址排列与N*R个比特存在一一对应关系,若N*R个比特的位置信息中有任意一个等于k,则将该位置信息对应的那个比特存储在第k个寄存器中。具体的判断逻辑流程如图11所示。
对于一个原始未经过步骤2、3变化的交织表,由于交织是一一对应的,每个位置k寄存器只有一个比特对应,所以第k个位置寄存器无需对所有的N*R个位置进行判断,而只需要在交织表读出N*R个位置时,比较某个特定位置存储的数据是否等与k,若相等,将该特定位置对应的已编码比特存储即可。
本发明在原始交织表的基础上进行改进,原始交织表第k个位置存储的是交织后第k个位置对应的交织前的数据位置。对原始交织表地址k存储的数据L,进行mod(N*R)操作,获得结果L mod(N*R)是编码后第L比特数据对应在并行编码N*R输出中的位置。根据此信息第k个寄存器只需要判断N*R中某个特定位置即可,而无需要判断所有N*R个比特。参见图12与图13,图12中为寄存器A至Z的原始交织表,图13所示为判断逻辑的产生方式。
如图13所示,读取交织表获得0~(N*R)—1位置存储的信息。如果Z mod(N*R)位置存储数据等于寄存器号S,寄存器S存储第A mod(N*R)bit,对应bit A mod(N*R)。如果Z mod(N*R)位置存储数据等于寄存器号M,寄存器M存储第Z mod(N*R)bit,对应bit Z mod(N*R)。
步骤6:对于系统有多张交织表的情况,交织深度必然有差别,则会出现k号寄存器对应N*R个比特中不同的比特。此时针对不同原始交织表反复执行步骤5,若不同交织表之间相同地址获得的存储信息mod(N*R)结果不同,则需要增加不同的判断逻辑。若结果有部分相同,相同的部分只需要一个判断逻辑即可,如图12、图14所示。其中,图12中寄存器145的判断逻辑产生方式如图14所示。
步骤7:完成所有数据交织后,按后续模块需要,寄存器移位输出即完成交织过程。
基于上述的并行编码方法和并行交织方法,本发明中进一步设计了相应的TX(发送)系统,包括并行编码电路和并行交织器电路,如图15所示。在该TX系统中,由于物理层从介质访问控制层在每符号时间内获取1140比特信息。因此在电路设计中增加了比特模式转化模块,将介质访问控制层24比特位宽数据分割为3/2/1比特的小块进行编码。这样,介质访问控制层与物理层之间的数据交互只需要缓存少量数据,物理层自动搬走数据,按上述并行编码方法、并行交织方法进行数字电路设计。
图16所示为并行度为3的并行编码模块,其输入数据块为3比特,编码后数据块为6比特,经过打孔模块适配速率后,进行4并行度的并行交织。相应的交织公式如图17所示。
按图17所示的公式获取原始交织表,将所得到的交织表变换步骤2、3且所有交织表按4并行度存储,设计如下并行交织器:交织器深度为1404,按步骤5进行设计。交织深度最深的表为1404,次深为938,次次深为648。因此938至1403号寄存器只需要判断一个位置,648至937号寄存器最多需要判断两个位置,而0至647号寄存器最多需要判断四个位置。这样,本发明只需要用Excel工具结合perl/tcl等脚本工具就可以轻松地完成最优交织器设计,完全无需人工完成。需要说明的是,由于FPGA原型验证平台与ASIC存在本质差别,这里插入了二级流水用来缓解时序关键路径。ASIC设计中完全可以只用一级寄存器和移位寄存器完成设计,限于极高吞吐率与诸多因素限制,接收端解交织部分只复用交织表。
参见图18至图20所示,分别用于0~647比特、648~937比特、938~1403比特的三段并行交织器一起组成交织器整体,该并行编码、交织体系可灵活适配多种不同的数据率,大大提高了发送端数据吞吐率,且系统设计简单明了,消耗资源少,适合FPGA平台上设计实现工作。
在本发明的另外一个实施例中,并行交织器也可以采用以下的设计方案:假设并行度为N,交织表可以不改变存储内容,只是将数据改为依次N*R个并行存储,空闲位置的数据填写无效地址。并行交织器由N*R个存储器构成,每个存储器每次写操作并行写入所有N*R个并行编码后数据,N*R个存储器写入数据内容一样。存储器读侧需要使用一套与写侧不同的地址线与数据线,读侧地址线改为顺序读,每个存储器每次读操作只读出N*R个数据中的一个,读地址根据并行交织表产生,每块存储器读地址不相同,第X号存储器读地址是并行交织表某地址存储内容的第X段,其中X为正整数。由此,N*R块存储器读出的数据各不相同,一共读出了N*R个交织后数据,达到并行交织的目的。
与现有技术相比较,本发明提供了一种相对简易的并行编码方法和并行交织方法,可以节省大量的系统资源,大大减少了系统设计复杂度,同时满足了吞吐率需求。在增加一定的控制电路后,就能改变并行度,灵活适配介质访问控制层的数据率,并且灵活适配调制模块输入需求。本发明尤其适合采用非PIL交织方式的高速无线通信系统。对于非PIL交织方式的短距无线通信系统,利用本发明也能够极大地提高发送端的数据传输速率。
上面对本发明所提供的基于并行编码与并行交织的无线通信传输方法进行了详细的说明。对一般领域的技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。