发明内容
为了解决现有技术的问题,本发明实施例提供了一种基于LTE Turbo译码的子块交织控制方法、装置及设备。所述技术方案如下:
第一方面,提供了一种基于LTE Turbo译码的子块交织控制方法,所述方法包括:
根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;
根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址,所述第一子块为所述预设数量的子块中任一个子块;
计算所述第一子块中各个码元交织后的块索引;
根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;
存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。
在第一方面的第一种可能实施方式中,计算所述第一子块中各个码元交织后的块索引,包括:
根据所述第一子块中各个码元交织前的块内偏移地址和子块长度,应用下述公式计算所述第一子块中各个码元交织后的块索引;
其中,sel(i)是第一子块中交织前块内偏移地址为i的码元交织后所在的块,称为块索引,π(i)是输入数据中块内偏移地址为i的码元交织后的块内偏移地址,S是子块长,表示去掉内部代数式计算结果的小数部分,取整数部分。
在第一方面的第二种可能实施方式中,存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引,包括:
对于所述预设数量的子块中在交织前的块内偏移地址为第一地址的各个码元,将所述第一子块中交织前块内偏移地址为第一地址的码元在交织后的块内偏移地址,存储为所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元在交织后的块内偏移地址;
将所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元的块索引与存储的交织后块内偏移地址对应存储。
在第一方面的第三种可能实施方式中,根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引,包括:
根据下述公式,计算其他子块各个码元交织后的块索引;
sel(i+S*n)=(sel(i)+(f1mod PD)*n)mod PD
其中,sel(i+S*n)为交织前第n个子块中块内偏移地址为i的码元在交织后的块索引,sel(i)为第一子块中块内偏移地址为i的码元在交织后的块索引,i是交织前块内偏移地址,n为交织前的块索引,0≤n≤PD-1,PD是子块并行度,S为子块长度。
第二方面,提供了一种基于LTE Turbo译码的子块交织控制装置,所述装置包括:
分块模块,用于根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;
块内偏移地址计算模块,用于根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址,所述第一子块为所述预设数量的子块中任一个子块;
第一块索引计算模块,用于计算所述第一子块中各个码元交织后的块索引;
第二块索引计算模块,用于根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;
存储模块,用于存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。
在第二方面的第一种可能实施方式中,所述第一索引计算模块用于根据所述第一子块中各个码元交织前的块内偏移地址和子块长度,应用下述公式计算所述第一子块中各个码元交织后的块索引;
其中,sel(i)是第一子块中交织前块内偏移地址为i的码元交织后所在的块,称为块索引,π(i)是输入数据中块内偏移地址为i的码元交织后的块内偏移地址,S是子块长,表示去掉内部代数式计算结果的小数部分,取整数部分。
在第二方面的第二种可能实施方式中,所述存储模块具体用于对于所述预设数量的子块中在交织前的块内偏移地址均为第一地址的各个码元,将所述第一子块中交织前块内偏移地址为第一地址的码元在交织后的块内偏移地址,存储为所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元在交织后的块内偏移地址;将所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元的块索引与存储的交织后块内偏移地址对应存储。
在第二方面的第三种可能实施方式中,所述第二块索引计算模块具体用于根据下述公式,计算其他子块各个码元交织后的块索引;
sel(i+S*n)=(sel(i)+(f1mod PD)*n)mod PD
其中,sel(i+S*n)为交织前第n个子块中块内偏移地址为i的码元在交织后的块索引,sel(i)为第一子块中块内偏移地址为i的码元在交织后的块索引,i是交织前块内偏移地址,n为交织前的块索引,0≤n≤PD-1,PD是子块并行度,S为子块长度。
第三方面,提供了一种基于LTE Turbo译码的子块交织控制设备,所述设备包括:处理器和存储器,所述处理器和存储器耦合,
所述处理器用于根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;
所述处理器还用于根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址,所述第一子块为所述预设数量的子块中任一个子块;
所述处理器还用于计算所述第一子块中各个码元交织后的块索引;
所述处理器还用于根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;
所述存储器用于存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。
在第三方面的第一种可能实施方式中,所述处理器具体还用于根据所述第一子块中各个码元交织前的块内偏移地址和子块长度,应用下述公式计算所述第一子块中各个码元交织后的块索引;
其中,sel(i)是第一子块中交织前块内偏移地址为i的码元交织后所在的块,称为块索引,π(i)是输入数据中块内偏移地址为i的码元交织后的块内偏移地址,S是子块长,表示去掉内部代数式计算结果的小数部分,取整数部分。
在第三方面的第二种可能实施方式中,所述存储器具体用于对于所述预设数量的子块中在交织前块的内偏移地址均为第一地址的各个码元,将所述第一子块中交织前块内偏移地址为第一地址的码元在交织后的块内偏移地址,存储为所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元在交织后的块内偏移地址;
将所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元的块索引与存储的交织后块内偏移地址对应存储。
在第三方面的第三种可能实施方式中,所述处理器具体还用于所述第二块索引计算模块具体用于根据下述公式,计算其他子块各个码元交织后的块索引;
sel(i+S*n)=(sel(i)+(f1mod PD)*n)mod PD
其中,sel(i+S*n)为交织前第n个子块中块内偏移地址为i的码元在交织后的块索引,sel(i)为第一子块中块内偏移地址为i的码元在交织后的块索引,i是交织前块内偏移地址,n为交织前的块索引,0≤n≤PD-1,PD是子块并行度,S为子块长度。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例提供了一种基于LTE Turbo译码的子块交织控制方法、装置及设备,根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址,所述第一子块为所述预设数量的子块中任一个子块;计算所述第一子块中各个码元交织后的块索引;根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。采用本发明实施例提供的技术方案,计算具有相同偏移地址的码元的块索引,实现了并行计算交织地址,减小了计算量。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例中提供的基于LTE Turbo译码的子块交织控制方法流程图,参见图1,该方法包括:
101:根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;
102:根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址,所述第一子块为所述预设数量的子块中任一个子块;
103:计算所述第一子块中各个码元交织后的块索引;
104:根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;
105:存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。
本发明实施例提供了一种基于LTE Turbo译码的子块交织控制方法,通过根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址;计算所述第一子块中各个码元交织后的块索引;根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。采用本发明实施例提供的方法,计算具有相同偏移地址的码元的块索引,实现了并行计算交织地址,减小了计算量,降低了时间复杂度,在存储过程中,将分块后具有相同偏移地址的码元的交织地址存储在一个存储单元内,减少了存储空间,即空间复杂度较低。
图2a是本发明实施例中提供了一种基于LTE Turbo译码的子块交织控制方法流程图,该实施例的执行主体为交织器,该交织器用于为后续译码处理提供交织地址。参见图2a,该方法包括:
201:根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;
本领域技术人员可以获知,在计算机体系结构中,并行度是指并行执行指令的最大条数,而本实施例中所述的预设并行度可以是根据交织器的RAM个数由技术人员进行设置,还可以是由系统的能力进行限定。
另外,由于本实施例涉及的输入数据是Turbo码形式,因此,以Turbo码为例进行说明,当输入数据的码长为K,预设并行度为PD,则得到的预设个子块中每个子块长度为S=K/PD。例如,K=40,PD=4,则S=10,分块后的Turbo码可以如图2b所示,在图2b中,将交织前的Turbo码分为四个子块,即交织前第一个子块、交织前第二个子块、交织前第三个子块和交织前第四个子块,每个子块包括10个码元,每个子块中的码元数可以由技术人员进行设置,还可以是由系统的能力进行限定。
202:根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址,所述第一子块为所述预设数量的子块中任一个子块;
其中,第一子块中各个码元交织后的块内偏移地址计算公式可以如下:
offset(i)=π(i)mod(K/PD)
其中,offset(i)是分块后块内偏移地址为i的码元在交织后的块内偏移地址,π(i)是输入数据中块内偏移地址为i的码元交织后的块内偏移地址,K为输入数据的码长,PD为预设并行度。
具体地,按照存储地址的顺序从随机存储器RAM中读取第一子块中的码元的偏移地址,并根据读取到的偏移地址,对该码元交织后的块内偏移地址进行计算,由于对于其他子块来说,根据交织的特性,其他子块中交织前存储地址与该码元具有相同块内偏移地址的码元,其交织后的块内偏移地址相同,所以不必对其他子块中码元交织后的块内偏移地址进行计算。
图2c是本发明实施例中提供的一种交织后的各个子块的示意图,通过和图2b对比可以看出,交织前位于同一列的码元在交织后仍然位于同一列,即交织前具有相同块内偏移地址的码元在交织后仍然具有相同的块内偏移地址,所以,只要计算任一个子块中码元的块内偏移地址就可以得到其他子块中码元的块内偏移地址。
以下是对输入数据中块内偏移地址为i的码元交织后的块内偏移地址π(i)的计算过程说明,π(i)和输入数据中块内偏移地址i的关系如下:
π(i)=(f1*i+f2*i2)mod K
其中,f1和f2均由系统自动生成,f1是奇数,f2是偶数,K为输入数据的码长。
由上式可以得到:
π(i+1)=(π(i)+g(i))mod K
其中,
g(i)=(f1+f2+2f2*i)
g(i+1)=g(i)+2f2
π(0)=0,g(0)=f1+f2,
π(1)=(g(0))mod K=(f1+f2)mod K,
π(2)=(π(1)+g(1))mod K=(π(1)+g(0)+2f2)mod K,
......
利用QPP递推公式能够由交织前码元的存储地址顺序求出码元交织后的地址,除了计算第一个码元交织后的地址的以外,其他的码元交织后的地址计算都用到了上一个码元交织后的地址的计算结果。
下面公式推导证明了其他子块的块内偏移地址和第一子块的块内偏移地址相同:
offset(i+K/PD*n)
=π(i+(K/PD)*n)mod(K/PD)
=((f1·(i+(K/PD)*n)+f2·(i+(K/PD)*n)2)mod K)mod(K/PD)
=(f1·(i+(K/PD)*n)+f2·(i+(K/PD)*n)2)mod(K/PD)
=(f1·i+f1·(K/PD)*n+f2·i2+2f2·i·(K/PD)+f2·((K/PD)*n)2)mod(K/PD)
=(f1·i+f2·i2)mod(K/PD)
=π(i)mod(K/PD)
其中,1≤i≤S,0≤n≤PD-1,由以上公式可知,只要获取子块中的任一子块,并将其作为第一子块,计算第一子块的块内偏移地址即可得到其他子块的块内偏移地址。
203:根据所述第一子块中各个码元交织前的块内偏移地址和子块长度,应用下述公式计算所述第一子块中各个码元交织后的块索引:
其中,sel(i)是第一子块中交织前块内偏移地址为i的码元交织后所在的块,称为块索引,π(i)是输入数据中块内偏移地址为i的码元交织后的块内偏移地址,S是子块长,表示去掉内部代数式计算结果的小数部分,取整数部分。
该步骤203是计算所述第一子块中各个码元交织后的块索引的过程。
204:根据下述公式,计算其他子块各个码元交织后的块索引:
sel(i+S*n)=(sel(i)+(f1modPD)*n)mod PD;
其中,sel(i+S*n)为交织前第n个子块中块内偏移地址为i的码元在交织后的块索引,sel(i)为第一子块中块内偏移地址为i的码元在交织后的块索引,i是交织前块内偏移地址,n为交织前的块索引,0≤n≤PD-1,PD是子块并行度,S为子块长度。
利用第一子块的码元的块索引,通过上式可以计算其他子块的码元块索引,实现了并行计算。
下面是对块索引计算公式的推导过程:
其中,N代表使大括号内为正的最大正整数,f1%PD=f1[2:0],对于2f2*i%PD,由于PD在多数情况下取2或4两种可能,而子块S都是偶数,f2也是偶数,所以这一项被约掉,(f2*n*S)modPD同样也可以被约掉,经过化简,可以得到:
sel(i+S*n)
=(sel(i)+(f1mod PD)*n)mod PD
因此,在计算第一子块的码元块索引后,可以并行计算其他子块的码元块索引。
综上,并行度为PD时,处理时延仅为传统的交织计算的1/PD,若PD=4,则处理时延仅为传统的交织计算的1/4,采用并行的计算方式,极大地降低了时间复杂度。
需要说明的是,在块索引的计算过程中,还可以通过计算每个码元的交织后的地址,根据子块的长度获取码元的块索引。具体地,计算每个码元的交织地址,使用码元的交织地址除以子块的长度,获取商值,取该商值的最接近的整数,将该整数值作为该码元的块索引。
该步骤204是根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;
205:对于所述预设数量的子块中在交织前的块内偏移地址为第一地址的各个码元,将所述第一子块中交织前块内偏移地址为第一地址的码元在交织后的块内偏移地址,存储为所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元在交织后的块内偏移地址;
在本发明中,将块内偏移地址存储在低字节,块索引存储在高字节,对于块内偏移量相同的码元共用一个存储单元来存储块内偏移量和块索引。当并行处理时,各个分量译码单元同时读取的块内偏移地址相同,块索引不同,因此,交织表中存储的1个地址数据只需有1个块内偏移地址和PD个块索引即可。块内偏移地址和块索引共用一个存储单元的存储方式极大地降低了空间复杂度。
206:将所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元的块索引与存储的交织后块内偏移地址对应存储。
译码单元根据存储的块内偏移地址以及该块内偏移地址对应的多个块索引,读取Turbo码,进行译码。
下面以PD=4为例来说明块内偏移地址和块索引的存储方式,图2d是本发明实施例中提供的一种4并行的LTE Turbo交织地址存储格式示意图,第一译码单元、第二译码单元、第三译码单元、第四译码单元是4个译码单元,在存储单元中,块内偏移地址存储在低10位,每个块索引占用2位,一共有4个块索引,所以块索引占用了8位,即块索引存储在高8位,这样一个存储单元就需要18位的位宽。4个译码单元在译码时同时读取存储单元的0-9位,也就是说它们读取的块内偏移地址部分是相同的,除此之外,第一译码单元读取10-11位的块索引,第二译码单元读取12-13位的块索引,第三译码单元读取14-15位的块索引,第四译码单元读取16-17位的块索引,这样,4个译码单元可以根据读取的块内偏移地址和块索引并行地进行译码。
进一步地,在块内偏移地址和块索引的存储过程中,采用了奇偶模块存储和乒乓RAM存储的结构。
首先,LTE交织器的性质保证了奇数位地址一定交织到奇数位,偶数位地址一定交织到偶数位,因此交织地址是奇偶间隔的,利用LTE交织规律,分成奇偶模块分别存储,可以减少一块RAM的接口数量。
其次,为了加快交织器的存取速度,采用乒乓RAM,通过输入数据和输出数据按节拍、相互配合的切换,将经过缓冲的数据流没有停顿地输出,减少了输出延时。乒乓RAM——将输入数据流通过输入数据选择单元等时地将数据流分配到两个RAM缓冲区,通过两个RAM读和写的切换,来实现数据的流水式传输。
下面,以K=6144,PD=4为例进行说明本发明在存储过程中占用的内存空间的大小。4并行时,子块内偏移地址最大6144/4=1536,采用乒乓RAM,则相邻奇偶交织地址可以放在RAM的1个地址内,所以RAM最大深度为1536/2=768。用2bit表示对应的子块,块索引按升幂排列,对应相应的分量译码单元,则需要4*2=8bit。块内偏移地址只需10bit,RAM位宽是10+8=18bit。交织表例化奇偶地址分开存储,并且采用了乒乓RAM,则需要RAM2*2=4块,所以使用的RAM空间为4*768*18=55.296kbit。
图2e是本发明实施中提供的一种UMTS Turbo交织表RAM示意图,图中是一组RAM,包含奇RAM和偶RAM,奇RAM和偶RAM由乒乓RAM组成,如果对于4并行的Turbo译码,则需要4组这样的RAM,即用到的RAM的数量是16块,相比于本发明的4块RAM,现有技术对内存空间要求较高。在UMTSTurbo交织过程中,按顺序计算交织地址,分别存放在对应子块的RAM内,如码长K=6144时,每一个交织地址都对应一个存储单元,位宽为13bit,则所需RAM为6144*13=80kbit,支持乒乓RAM需要80*2=160kbit。
综上,在K=6144,PD=4时,1套4并行的Turbo译码单元可以优化RAM约160-55.296≈100kbit。所以,采用块内偏移地址和块索引的存储方式可以降低交织地址存储的空间复杂度。
步骤205-206是存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。
本发明实施例提供了一种基于LTE Turbo译码的子块交织控制方法,通过根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址;计算所述第一子块中各个码元交织后的块索引;根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。采用本发明实施例提供的技术方案,计算具有相同偏移地址的码元的块索引,实现了并行计算交织地址,减小了计算量,降低了时间复杂度,在存储过程中,将分块后具有相同偏移地址的码元的交织地址存储在一个存储单元内,减少了存储空间。进一步地,通过奇偶存储分别存储和乒乓存储,进一步地降低了空间复杂度。
图3是本发明实施例中提供的基于LTE Turbo译码的子块交织控制装置结构示意图,参见图3,该装置包括:
分块模块301,用于根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;
本领域技术人员可以获知,在计算机体系结构中,并行度是指并行执行指令的最大条数,而本实施例中所述的预设并行度可以是根据交织器的RAM个数由技术人员进行设置,还可以是由系统的能力进行限定。每个子块中的码元数可以由技术人员进行设置,还可以是由系统的能力进行限定。
块内偏移地址计算模块302,用于根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址,所述第一子块为所述预设数量的子块中任一个子块;
其中,第一子块中各个码元交织后的块内偏移地址计算公式如下:
offset(i)=π(i)mod(K/PD)
其中,offset(i)是分块后块内偏移地址为i的码元在交织后的块内偏移地址,π(i)是输入数据中块内偏移地址为i的码元交织后的块内偏移地址,K为输入数据的码长,PD为预设并行度。
具体地,按照存储地址的顺序从随机存储器RAM中读取第一子块中的码元的偏移地址,并根据读取到的偏移地址,对该码元交织后的块内偏移地址进行计算,由于对于其他子块来说,根据交织的特性,其他子块中交织前存储地址与该码元具有相同块内偏移地址的码元,其交织后的块内偏移地址相同,所以不必对其他子块中码元交织后的块内偏移地址进行计算。
第一块索引计算模块303,用于计算所述第一子块中各个码元交织后的块索引;
计算第一子块的码元的块索引的公式如下所示:
其中,sel(i)是第一子块中交织前块内偏移地址为i的码元交织后所在的块,称为块索引,π(i)是输入数据中块内偏移地址为i的码元交织后的块内偏移地址,S是子块长,表示去掉内部代数式计算结果的小数部分,取整数部分。
第二块索引计算模块304,用于根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;
所述第二块索引计算模块304具体用于根据所述第一子块中各个码元交织后的块索引,应用下述公式,计算其他子块各个码元交织后的块索引;
sel(i+S*n)=(sel(i)+(f1mod PD)*n)mod PD
其中,sel(i+S*n)为交织前第n个子块中块内偏移地址为i的码元在交织后的块索引,sel(i)为第一子块中块内偏移地址为i的码元在交织后的块索引,i是交织前块内偏移地址,n为交织前的块索引,0≤n≤PD-1,PD是子块并行度,S为子块长度。
存储模块305,用于存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。
所述存储模块305具体用于对于所述预设数量的子块中在交织前的块内偏移地址均为第一地址的各个码元,将所述第一子块中交织前块内偏移地址为第一地址的码元在交织后的块内偏移地址,存储为所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元在交织后的块内偏移地址;将所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元的块索引与存储的交织后块内偏移地址对应存储。
在本发明中,将块内偏移地址存储在低字节,块索引存储在高字节,对于块内偏移量相同的码元共用一个存储单元来存储块内偏移量和块索引。当并行处理时,各个分量译码单元同时读取的块内偏移地址相同,块索引不同,因此,交织表中存储的1个地址数据只需有1个块内偏移地址和PD个块索引即可。块内偏移地址和块索引共用一个存储单元的存储方式极大地降低了空间复杂度。
进一步地,在块内偏移地址和块索引的存储过程中,采用了奇偶模块存储和乒乓RAM存储的结构。
首先,LTE交织器的性质保证了奇数位地址一定交织到奇数位,偶数位地址一定交织到偶数位,因此交织地址是奇偶间隔的,利用LTE交织规律,分成奇偶模块分别存储,可以减少一块RAM的接口数量。
其次,为了加快交织器的存取速度,采用乒乓RAM,通过输入数据和输出数据按节拍、相互配合的切换,将经过缓冲的数据流没有停顿地输出,减少了输出延时。乒乓RAM——将输入数据流通过输入数据选择单元等时地将数据流分配到两个RAM缓冲区,通过两个RAM读和写的切换,来实现数据的流水式传输。
进一步地,译码单元根据存储的块内偏移地址以及该块内偏移地址对应的多个块索引,读取Turbo码,进行译码。
需要说明的是:上述实施例提供的基于LTE Turbo译码的子块交织控制装置在进行交织计算时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于LTE Turbo译码的子块交织控制装置与基于LTE Turbo译码的子块交织控制方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例提供了一种基于LTE Turbo译码的子块交织控制装置,通过根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址;计算所述第一子块中各个码元交织后的块索引;根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。采用本发明实施例提供的技术方案,计算具有相同偏移地址的码元的块索引,实现了并行计算交织地址,减小了计算量,降低了时间复杂度,在存储过程中,将分块后具有相同偏移地址的码元的交织地址存储在一个存储单元内,减少了存储空间,即空间复杂度较低。进一步地,通过奇偶存储分别存储和乒乓存储,进一步地降低了空间复杂度。
图4a是本发明实施例中提供的基于LTE Turbo译码的子块交织控制设备结构示意图,参见图4a,该设备包括:处理器401和存储器402,所述处理器401和存储器402耦合,
所述处理器401用于根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;
所述处理器401还用于根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址,所述第一子块为所述预设数量的子块中任一个子块;
所述处理器401还用于计算所述第一子块中各个码元交织后的块索引;
图4b是本发明实施例中提供的一种QPP交织递推公式中间函数g(i)生成电路示意图,参见图4b,在intl_en、tc_wr_start使能位,当置为1的条件下,交织表地址递推计算,直到计算完毕保持。图中采用递归的电路结构计算交织参数,其中,intl_g_data是g(i)的初始赋值,即g(0),tc_intl_2f[9:0]是输入参数f2,tc_intl_1f[9:0]是输入参数f1,tc_rx_cb_size[12:0]是子块长度,intl_cbsize[12:0]用于表示当前迭代或上一次迭代,gi_mux_2f_modk[12:0]是该电路生成的一个中间量。该电路生成intl_g_data[12:0]为交织参数g(i)。
图4c是本发明实施例中提供的一种交织地址生成电路示意图,其中,图4b中生成的intl_g_data[12:0]作为图4c的输入信号,intl_en、tc_wr_start使能位,当置为1的条件下,该电路处于有效状态,tc_rx_cb_size[12:0]是子块长度,该电路在本发明实施例中主要用于计算第一子块的交织地址,intl_addr[12:0]对应于第一子块的交织地址π(i),intl_subaddr[10:0]对应于第一子块的块内偏移地址,intl_sel0_data[1:0]对应于第一个子块中各个码元交织后的块索引。
所述处理器401还用于根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;
图4d是本发明实施例中提供的一种“编码后”的交织地址生成电路示意图,图4c中输出的信号intl_subaddr[10:0]和intl_sel0_data[1:0]作为图4d中电路的输入信号,经过图4d所示的电路生成出第一个子块以外的其他子块各个码元交织后的块索引,其中,intl_en、tc_wr_start使能位,当置为1的条件下,该电路处于有效状态,intl_sel1_data[1:0]、intl_sel2_data[1:0]和intl_sel3_data[1:0]是交织后的第2、3、4子块索引,intl_wdata[17:0]是由块内偏移地址和块索引组成的“编码后”的交织地址。图4d的电路中组合逻辑最长路径为2个14位减法器加上2个3位加法器和1个2选1多路复用器MUX。此时,当并行度(PD)为4时(tc_in_pd_num=1),intl_sel1_data[1:0]、intl_sel2_data[1:0]和intl_sel3_data[1:0]对应交织后的第2、3、4子块索引;当PD=2时(tc_in_pd_num=0),只需要对intl_sel0_data[1]取反即可(因为只有2个子块)得到第2子块索引。而根据译码原则,并行度为2时(tc_in_pd_num=0),只用两个译码单元,所以交织后的块索引存放在译码单元对应的存储位置。
所述存储器402用于存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。
所述处理器401具体还用于根据所述第一子块中各个码元交织前的块内偏移地址和子块长度,应用下述公式计算所述第一子块中各个码元交织后的块索引;
其中,sel(i)是第一子块中交织前块内偏移地址为i的码元交织后所在的块,称为块索引,π(i)是输入数据中块内偏移地址为i的码元交织后的块内偏移地址,S是子块长,表示去掉内部代数式计算结果的小数部分,取整数部分。
所述存储器402具体用于对于所述预设数量的子块中在交织前块的内偏移地址均为第一地址的各个码元,将所述第一子块中交织前块内偏移地址为第一地址的码元在交织后的块内偏移地址,存储为所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元在交织后的块内偏移地址;将所述预设数量的子块中交织前块内偏移地址均为第一地址的各个码元的块索引与存储的交织后块内偏移地址对应存储。
所述处理器401具体还用于所述第二块索引计算模块具体用于根据所述第一子块中各个码元交织后的块索引,应用下述公式,计算其他子块各个码元交织后的块索引;
sel(i+S*n)=(sel(i)+(f1mod PD)*n)mod PD
其中,sel(i+S*n)为交织前第n个子块中块内偏移地址为i的码元在交织后的块索引,sel(i)为第一子块中块内偏移地址为i的码元在交织后的块索引,i是交织前块内偏移地址,n为交织前的块索引,0≤n≤PD-1,PD是子块并行度,S为子块长度。
本发明实施例提供了一种基于LTE Turbo译码的子块交织控制设备,通过根据输入数据的码长和预设并行度,对所述输入数据进行分块,得到预设数量的子块;根据所述预设数量的子块的第一子块中各个码元的存储地址,计算所述第一子块中各个码元交织后的块内偏移地址;计算所述第一子块中各个码元交织后的块索引;根据所述第一子块中各个码元交织后的块索引,计算其他子块各个码元交织后的块索引;存储所述第一子块中各个码元交织后的块内偏移地址以及所述预设数量的子块中各个子块中的码元的交织后的块索引。采用本发明实施例提供的技术方案,计算具有相同偏移地址的码元的块索引,实现了并行计算交织地址,减小了计算量,降低了时间复杂度,在存储过程中,将分块后具有相同偏移地址的码元的交织地址存储在一个存储单元内,减少了存储空间,即空间复杂度较低。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。