CN111628787B - 一种无冗余数据的卷积交织与解交织fpga实现方法和系统 - Google Patents
一种无冗余数据的卷积交织与解交织fpga实现方法和系统 Download PDFInfo
- Publication number
- CN111628787B CN111628787B CN202010448061.XA CN202010448061A CN111628787B CN 111628787 B CN111628787 B CN 111628787B CN 202010448061 A CN202010448061 A CN 202010448061A CN 111628787 B CN111628787 B CN 111628787B
- Authority
- CN
- China
- Prior art keywords
- value
- counter
- branch
- read
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2732—Convolutional interleaver; Interleavers using shift-registers or delay lines like, e.g. Ramsey type interleaver
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2939—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using convolutional codes
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
一种无冗余数据的卷积交织与解交织FPGA实现方法和系统,包括:对输入数据进行数据拼接,得到拼接后的新数据;通过第一计数器对所述拼接后新数据有效信号进行计数,得到第一计数值;根据第一计数值分别产生第一写分支地址和第一读分支地址,得到卷积交织后的第一输出数据;通过第二计数器和第三计数器对所述卷积交织后的第一输出数据进行计数,得到第二计数值;根据第二计数值分别产生第二写分支地址和第二读分支地址,得到解交织后的第二输出数据。本发明无冗余数据输出的卷积交织匹配无冗余数据输入的卷积解交织,无冗余数据输入的卷积解交织匹配无冗余数据输出的卷积交织。提高系统的吞吐率,卷积解交织无冗余数据输入降低系统的延时。
Description
技术领域
本发明属于数字信号传输领域,特别涉及一种无冗余数据的卷积交织与解交织FPGA实现方法和系统。
背景技术
现代数字通信系统中,传输信道往往受到各种干扰和衰弱影响,所以传输的信号会发生错误。为此一般都会采用信道编码和交织,以提高系统性能。信道编码往往采用前向纠错码(FEC,Forward Error Correction)作外码,而采用交织码作内码。对于随机错误,一般可由信道纠错编码来加以纠正,而对于突发错误,则必须再加上交织技术。即在发射端将所要传输的数据通过交织把顺序打乱,然后在接收端再通过解交织把数据原来的顺序恢复出来。这样就可以把成群的突发错误离散化,转变为随机错误,然后可以通过纠错编码来纠正。
卷积交织是现有交织技术最常用手段。卷积交织由延时成等差递增的I路移位寄存器组成,输入数据依次进入I路不同的输入端,输出数据经过延时从相应路读出。由于延时不同,相邻的输入数据在输出端被离散化。卷积交织的优点是输入输出同步,性能相同的情况下,所需的存储空间是块交织的一半。欧洲的DVB-C系统采用了卷积交织技术,使用12个分支,递增延时单位是17。解交织则是按照与交织相反的方式把数据重新排列回原来的顺序,一般需要与交织相同的存储器,结构上也类似。
目前基于基于FPGA实现的卷积交织与解交织多是对相关的存储单元进行改进,但不管哪种存储方式,目前卷积交织的输出都会包含冗余数据,与之对应的解交织的输入也必须包含冗余数据,因此,卷积交织的输出包含冗余数据会影响系统吞吐率,与之对应的解交织的输入包含冗余数据会影响系统延时。
发明内容
鉴于上述问题,本发明提供一种克服上述问题或者至少部分地解决上述问题的一种无冗余数据的卷积交织与解交织FPGA实现方法和系统。
一种无冗余数据的卷积交织与解交织FPGA实现方法,其特征在于,包括:
S100.对输入数据进行数据拼接,得到拼接后的新数据;
S200.通过第一计数器对所述拼接后新数据有效信号进行计数,得到第一计数值;
S300.根据第一计数值分别产生第一写分支地址和第一读分支地址,得到卷积交织后的第一输出数据;
S400.通过第二计数器和第三计数器对所述卷积交织后的第一输出数据进行计数,得到第二计数值;
S500.根据第二计数值分别产生第二写分支地址和第二读分支地址,得到解交织后的第二输出数据。
进一步地,所述S100具体方法为:对所述输入数据后面加上一定长度l的无效数据0;无效数据0的长度l与交织原理中的分支数(B)和分支长度(L)有关,具体的换算关系为:
l=[(B–1)+(B-2)+……+1]*L。
进一步地,所述S200方法为:对所述拼接后新数据有效信号进行计数,分别对所述数据的列、行、块进行计数,所述计数规则为首先对列进行计数,列计数的计数范围为0~B-1,当列计数的值等于B-1时,行计数的值加1;行计数的计数范围是0~L-1,当列计数的值等于B-1且行计数的值等于L-1时,块计数的值加1,块计数的计数范围是0~块计数终止值M;其中块计数的终止值计算方式如下:
块计数的终止值M=有效数据长度/(B*L)+B-2
其中,B为分支数,L为分支长度。
进一步地所述列计数的初始值与块计数的值有关,当块计数器的值小于有效数据长度/(B*L)时,列计数器的初始值为0,当块计数器的值大于等于有效数据长度/(B*L)时,列计数器的初始值随着块计数器的值加1而加1。
进一步地,所述S300具体方法为:根据列计数的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址,每条分支的写地址有其固定的初始值和终止值;第1条分支的数据无需存储,直进直出;第2条分支初始值为0,终止值=初始值+(i–1)*L–1;第3条分支到第B条支路写地址的初始值和终止值计算方式如下:
初始值=前一条支路的终止值+1
终止值=初始值+(i–1)*L–1
其中,i为当前分支号,L为分支长度;
依据列计数的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应;列计数器的取值范围是0~B-1,数据有效后,列计数器的值为0表示第1条分支的读使能有效;列计数器的值为1表示第2条分支的写使能和读使能有效,以此类推,列计数器的值为B-1表示第B条分支的写使能和读使能有效。
进一步地,所述第一写分支地址和第一读分支地址操作第一RAM,所述第一RAM存储数据采用的是RAM分区循环法,第一RAM深度计算如下所示:
第一RAM深度=(1+2+3+4+……+B-1)*L
其中,B为分支数,L为分支长度。
进一步地,所述S400具体方法为:
第二计数器执行卷积解交织写操作,对于第二计数器,其中的列计数器有初始值和终止值,都与块计数器的值有关;当块计数器的值小于有效数据长度/(B*L)时,列计数器的初始值等于0,终止值随着块计数器的值加1而加1;当块计数器的值大于等于有效数据长度/(B*L)时,列计数器的初始值随着块计数器的值加1而加1,终止值等于B-1;
第三计数器执行卷积解交织读操作,对于第三计数器,其中的列计数器有固定的初始值和终止值,初始值等于0,终止值等于B-1。
进一步地,所述第二写分支地址和第二读分支地址操作第二RAM,所述第二RAM存储数据采用的是RAM分区循环法,第二RAM深度计算如下所示:
第二RAM深度=B*(B*L)
其中,B为分支数,L为分支长度。
本发明还公开了一种无冗余数据的卷积交织与解交织FPGA实现系统,包括:
数据拼接模块、第一计数器模块、第一写RAM模块、第一读RAM模块、第一RAM储存模块、第二计数器模块、第三计数器模块、第二写RAM模块、第二读RAM模块、第二RAM储存模块;
数据拼接模块,对输入数据进行数据拼接,得到拼接后的新数据;
第一计数器模块,对所述拼接后新数据有效信号进行计数,得到第一计数器的值;
第一写RAM模块,产生第一RAM的写使能、写地址,根据第一计数器中列计数器的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址;
第一读RAM模块,产生第一RAM的读使能、读地址,根据第一计数器中列计数器的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应;
第一RAM模块,用于存储数据,根据第一计数器中列计数器的值以及第一写RAM模块产生的写使能和写地址,选择当前对RAM中的哪条支路进行写操作,同时,根据第一计数器中列计数器的值以及第一读RAM模块产生的读使能和读地址,选择当前对RAM中的哪条支路进行读操作;
第二计数器模块,执行卷积解交织写操作,分别产生第二计数器模块中的列、行、块计数器;
第三计数器模块,执行卷积解交织读操作,分别产生第三计数器模块中的列、行、块计数器;
第二写RAM模块,产生第二RAM的写使能、写地址。根据第二计数器中列计数器的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址;
第二读RAM模块,产生第二RAM的读使能、读地址,依据第三计数器中列计数器的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应;
第二RAM模块,用于存储数据,根据第二计数器中列计数器的值以及第二写RAM模块产生的写使能和写地址,选择当前对RAM中的哪条支路进行写操作。同时,根据第三计数器中列计数器的值以及第二读RAM模块产生的读使能和读地址,选择当前对RAM中的哪条支路进行读操做。
本发明的有益效果是:
本发明对通讯数据进行卷积交织和卷积解交织,对于卷积交织,采用非固定初始值、固定终止值的方式进行列计数,然后依据列计数器的值单独对某个分支进行RAM的读写操作,实现卷积交织无冗余数据输出。对于卷积解交织,采用等长分区循环的方法存储各分支数据;采用非固定初始值、非固定终止值的方式进行写计数;采用固定初始值、固定终止值的方式进行读计数;根据读写列计数器的值对RAM中某一分支进行读写操作,实现无冗余数据输入和无冗余数据连续输出。本发明无冗余数据输出的卷积交织匹配无冗余数据输入的卷积解交织;无冗余数据输入的卷积解交织匹配无冗余数据输出的卷积交织。卷积交织无冗余数据输出提高系统的吞吐率,卷积解交织无冗余数据输入降低系统的延时。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例1中,一种无冗余数据的卷积交织与解交织FPGA实现方法流程图;
图2为本发明实施例1中,第一RAM深度示意图;
图3为本发明实施例1中,第二RAM深度示意图;
图4为本发明施例2中,一种无冗余数据的卷积交织与解交织FPGA实现系统工作框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为了解决现有技术卷积交织的输出都会包含冗余数据,与之对应的解交织的输入也必须包含冗余数据,影响系统吞吐率和系统延时的问题。
本发明实施例提供了一种无冗余数据的卷积交织与解交织FPGA实现方法和系统。
实施例1
本实施例公开了一种无冗余数据的卷积交织与解交织FPGA实现方法,如图1,包括:
S100.对输入数据进行数据拼接,得到拼接后的新数据;
具体的,所述S100具体方法为:对所述输入数据后面加上一定长度l的无效数据0;无效数据0的长度l与交织原理中的分支数(B)和分支长度(L)有关,具体的换算关系为:
l=[(B–1)+(B-2)+……+1]*L
S200.通过第一计数器对所述拼接后新数据有效信号进行计数,得到第一计数值;
具体的,所述S200方法为:对所述拼接后新数据有效信号进行计数,分别对所述数据的列、行、块进行计数,所述计数规则为首先对列进行计数,列计数的计数范围为0~B-1,当列计数的值等于B-1时,行计数的值加1;行计数的计数范围是0~L-1,当列计数的值等于B-1且行计数的值等于L-1时,块计数的值加1,块计数的计数范围是0~块计数终止值M;其中块计数的终止值计算方式如下:
块计数的终止值M=有效数据长度/(B*L)+B-2
其中,B为分支数,L为分支长度,n为RAM个数。
在一些优选实施例中,所述列计数的初始值与块计数的值有关,当块计数器的值小于有效数据长度/(B*L)时,列计数器的初始值为0,当块计数器的值大于等于有效数据长度/(B*L)时,列计数器的初始值随着块计数器的值加1而加1。
S300.根据第一计数值分别产生第一写分支地址和第一读分支地址,得到卷积交织后的第一输出数据;
具体的,所述S300具体方法为:根据第一计数器中列计数器的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址,每条分支的写地址有其固定的初始值和终止值;第1条分支的数据无需存储,直进直出;第2条分支初始值为0,终止值=初始值+(i–1)*L–1;第3条分支到第B条支路写地址的初始值和终止值计算方式如下:
初始值=前一条支路的终止值+1
终止值=初始值+(i–1)*L–1
其中,i为当前分支号,L为分支长度;
依据列计数的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应;列计数器的取值范围是0~B-1,数据有效后,列计数器的值为0表示第1条分支的读使能有效;列计数器的值为1表示第2条分支的写使能和读使能有效,以此类推,列计数器的值为B-1表示第B条分支的写使能和读使能有效。
在一些优选实施例中,如图2,第一写分支地址和第一读分支地址操作第一RAM,所述第一RAM存储数据采用的是RAM分区循环法,第一RAM深度计算如下所示:
第一RAM深度=(1+2+3+4+……+B-1)*L
其中,B为分支数,L为分支长度。
S400.通过第二计数器和第三计数器对所述卷积交织后的第一输出数据进行计数,得到第二计数值;
具体的,所述S400具体方法为:第二计数器执行卷积解交织写操作,对于第二计数器,其中的列计数器有初始值和终止值,都与块计数器的值有关;当块计数器的值小于有效数据长度/(B*L)时,列计数器的初始值等于0,终止值随着块计数器的值加1而加1;当块计数器的值大于等于有效数据长度/(B*L)时,列计数器的初始值随着块计数器的值加1而加1,终止值等于B-1;列计数器的取值范围是0~B-1,列计数器的值为0表示第1条支路写使能有效;列计数器的值为1表示第2条支路写使能有效;以此类推,列计数器的值为B-1表示第B条支路的写使能有效;
第三计数器执行卷积解交织读操作,对于第三计数器,其中的列计数器有固定的初始值和终止值,初始值等于0,终止值等于B-1;列计数器的取值范围是0~B-1,列计数器的值为0表示第1条支路读使能有效;列计数器的值为1表示第2条支路读使能有效;以此类推,列计数器的值为B-1表示第B条支路的读使能有效。
S500.根据第二计数值分别产生第二读分支地址和第二写分支地址,得到解交织后的第二输出数据。
根据第二计数器中列计数的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址,每条分支的写地址有其固定的初始值和终止值;第1条支路的初始值是0,终止值是B*L-1;第2条第B条支路写地址的初始值和终止值计算方式如下:
初始值=前一条支路的终止值+1
终止值=初始值+B*L–1
其中,i为当前分支号,L为分支长度;
根据第二计数器中列计数的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应。
在一些实施例中,如图3,所述第二写分支地址和第二读分支地址操作第二RAM,所述第二RAM存储数据采用的是RAM分区循环法,如图3,第二RAM深度计算如下所示:
RAM深度=B*(B*L)
其中,B为分支数,L为分支长度。
本方法对通讯数据进行卷积交织和卷积解交织,对于卷积交织,采用非固定初始值、固定终止值的方式进行列计数,然后依据列计数器的值单独对某个分支进行RAM的读写操作,实现卷积交织无冗余数据输出。对于卷积解交织,采用等长分区循环的方法存储各分支数据;采用非固定初始值、非固定终止值的方式进行写计数;采用固定初始值、固定终止值的方式进行读计数;根据读写列计数器的值对RAM中某一分支进行读写操作,实现无冗余数据输入和无冗余数据连续输出。本发明无冗余数据输出的卷积交织匹配无冗余数据输入的卷积解交织;无冗余数据输入的卷积解交织匹配无冗余数据输出的卷积交织。卷积交织无冗余数据输出提高系统的吞吐率,卷积解交织无冗余数据输入降低系统的延时。
实施例2
本实施例公开了一种无冗余数据的卷积交织与解交织FPGA实现系统,具体系统工作流程框图如图4,包括:数据拼接模块、第一计数器模块、第一写RAM模块、第一读RAM模块、第一RAM储存模块、第二计数器模块、第三计数器模块、第二写RAM模块、第二读RAM模块、第二RAM储存模块。
数据拼接模块,对输入数据进行数据拼接,得到拼接后的新数据;
第一计数器模块,对所述拼接后新数据有效信号进行计数,得到第一计数器的值;具体的,第一计数器模块分为列计数器子模块、行计数器子模块、块计数器子模块;对所述拼接后新数据有效信号进行计数,分别对所述数据的列、行、块进行计数,所述计数规则为首先对列进行计数,列计数的计数范围为0~B-1,当列计数的值等于B-1时,行计数的值加1;行计数的计数范围是0~L-1,当列计数的值等于B-1且行计数的值等于L-1时,块计数的值加1,块计数的计数范围是0~块计数终止值M;其中块计数的终止值计算方式如下:
块计数的终止值M=有效数据长度/(B*L)+B-2
其中,B为分支数,L为分支长度。
第一写RAM模块,产生第一RAM的写使能、写地址,根据列计数器子模块的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址;
第一读RAM模块,产生第一RAM的读使能和读地址,依据列计数器的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应;
所述第一写RAM模块和第一读RAM模块工作方法为:根据第一计数器中列计数的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址,每条分支的写地址有其固定的初始值和终止值;第1条分支的数据无需存储,直进直出;第2条分支初始值为0,终止值=初始值+(i–1)*L–1;第3条分支到第B条支路写地址的初始值和终止值计算方式如下:
初始值=前一条支路的终止值+1
终止值=初始值+(i–1)*L–1
其中,i为当前分支号,L为分支长度;
根据第一计数器中列计数的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应;列计数器的取值范围是0~B-1,数据有效后,列计数器的值为0,表示第1条分支的读使能有效;列计数器的值为1表示第2条分支的写使能和读使能有效,以此类推,列计数器的值为B-1表示第B条分支的写使能和读使能有效。
第一RAM模块,用于存储数据,根据第一计数器中列计数器的值以及第一写RAM模块产生的写使能和写地址,选择当前对RAM中的哪条支路进行写操作,同时,根据第一计数器中列计数器的值以及第一读RAM模块产生的读使能和读地址,选择当前对RAM中的哪条支路进行读操作;
所述第一RAM存储数据采用的是RAM分区循环法,RAM深度计算如下所示:
RAM深度=(1+2+3+4+……+B-1)*L
其中,B为分支数,L为分支长度。
第二计数器模块,对所述卷积交织后的第一输出数据进行计数,得到第二计数器的值;第二计数器模块分为列计数器子模块、行计数器子模块、块计数器子模块;第二计数器执行卷积解交织写操作,对于第二计数器,其中的列计数器有初始值和终止值,都与块计数器的值有关;当块计数器的值小于有效数据长度/(B*L)时,列计数器的初始值等于0,终止值随着块计数器的值加1而加1;当块计数器的值大于等于有效数据长度/(B*L)时,列计数器的初始值随着块计数器的值加1而加1,终止值等于B-1;
第三计数器模块,对所述卷积交织后的第一输出数据进行计数,得到第三计数器的值;第三计数器模块分为列计数器子模块、行计数器子模块、块计数器子模块;第三计数器执行卷积解交织读操作,对于第三计数器,其中的列计数器有固定的初始值和终止值,初始值等于0,终止值等于B-1。
第二写RAM模块,产生第二RAM的写使能、写地址。根据第二计数器中写列计数器的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址;
第二读RAM模块,产生第二RAM的读使能和读地址,依据第三计数器中列计数器的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应;
所述第二写RAM模块和第二读RAM模块工作方法为:根据第二计数器中列计数的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址,每条分支的写地址有其固定的初始值和终止值;第1条分支初始值为0,终止值=初始值+B*L–1;第2条分支到第B条支路写地址的初始值和终止值计算方式如下:
初始值=前一条支路的终止值+1
终止值=初始值+B*L–1
其中,i为当前分支号,L为分支长度;
依据第三计数器中列计数的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应。
第二计数器中列计数器的取值范围是0~B-1,列计数器的值为0表示第1条支路写使能有效;列计数器的值为1表示第2条支路写使能有效;以此类推,列计数器的值为B-1表示第B条支路的写使能有效。第三计数器中列计数器的取值范围是0~B-1,列计数器的值为0表示第1条支路读使能有效;列计数器的值为1表示第2条支路读使能有效;以此类推,列计数器的值为B-1表示第B条支路的读使能有效。。
第二RAM模块,用于存储数据,根据第二计数器中列计数器的值以及第二写RAM模块产生的写使能和写地址,选择当前对第二RAM中的哪条支路进行写操作。同时,根据第三计数器中列计数器的值以及第二读RAM模块产生的读使能和读地址,选择当前对第二RAM中的哪条支路进行读操作。
在一些实施例中,第二RAM深度计算如下所示:
RAM深度=B*(B*L)
其中,B为分支数,L为分支长度。
本系统对通讯数据进行卷积交织和卷积解交织,对于卷积交织,采用非固定初始值、固定终止值的方式进行列计数,然后依据列计数器的值单独对某个分支进行RAM的读写操作,实现卷积交织无冗余数据输出。对于卷积解交织,采用等长分区循环的方法存储各分支数据;采用非固定初始值、非固定终止值的方式进行写计数;采用固定初始值、固定终止值的方式进行读计数;根据读写列计数器的值对RAM中某一分支进行读写操作,实现无冗余数据输入和无冗余数据连续输出。本发明无冗余数据输出的卷积交织匹配无冗余数据输入的卷积解交织;无冗余数据输入的卷积解交织匹配无冗余数据输出的卷积交织。卷积交织无冗余数据输出提高系统的吞吐率,卷积解交织无冗余数据输入降低系统的延时。
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
结合本文的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或其组合。软件模块可以位于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。该ASIC可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。
对于软件实现,本申请中描述的技术可用执行本申请所述功能的模块(例如,过程、函数等)来实现。这些软件代码可以存储在存储器单元并由处理器执行。存储器单元可以实现在处理器内,也可以实现在处理器外,在后一种情况下,它经由各种手段以通信方式耦合到处理器,这些都是本领域中所公知的。
上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
Claims (6)
1.一种无冗余数据的卷积交织与解交织FPGA实现方法,其特征在于,包括:
S100.对输入数据进行数据拼接,得到拼接后的新数据;
S200.通过第一计数器对所述拼接后新数据有效信号进行计数,得到第一计数值;所述S200方法为:对所述拼接后新数据有效信号进行计数,分别对所述数据的列、行、块进行计数,所述计数规则为首先对列进行计数,列计数的计数范围为0~B-1,当列计数的值等于B-1时,行计数的值加1;行计数的计数范围是0~L-1,当列计数的值等于B-1且行计数的值等于L-1时,块计数的值加1,块计数的计数范围是0~块计数终止值M;其中块计数的终止值计算方式如下:
块计数的终止值M=有效数据长度/(B*L)+B-2
其中,B为分支数,L为分支长度;
所述列计数的初始值与块计数的值有关,当块计数器的值小于有效数据长度/(B*L)时,列计数器的初始值为0,当块计数器的值大于等于有效数据长度/(B*L)时,列计数器的初始值随着块计数器的值加1而加1;
S300.根据第一计数值分别产生第一写分支地址和第一读分支地址,得到卷积交织后的第一输出数据;
S400.通过第二计数器和第三计数器对所述卷积交织后的第一输出数据进行计数,得到第二计数值;所述S400具体方法为:
第二计数器执行卷积解交织写操作,对于第二计数器,其中的列计数器有初始值和终止值,都与块计数器的值有关;当块计数器的值小于有效数据长度/(B*L)时,列计数器的初始值等于0,终止值随着块计数器的值加1而加1;当块计数器的值大于等于有效数据长度/(B*L)时,列计数器的初始值随着块计数器的值加1而加1,终止值等于B-1;列计数器的取值范围是0~B-1,列计数器的值为0表示第1条支路写使能有效;列计数器的值为1表示第2条支路写使能有效;以此类推,列计数器的值为B-1表示第B条支路的写使能有效;
第三计数器执行卷积解交织读操作,对于第三计数器,其中的列计数器有固定的初始值和终止值,初始值等于0,终止值等于B-1;列计数器的取值范围是0~B-1,列计数器的值为0表示第1条支路读使能有效;列计数器的值为1表示第2条支路读使能有效;以此类推,列计数器的值为B-1表示第B条支路的读使能有效;
S500.根据第二计数值分别产生第二写分支地址和第二读分支地址,得到解交织后的第二输出数据。
2.如权利要求1所述的一种无冗余数据的卷积交织与解交织FPGA实现方法,其特征在于,所述S100具体方法为:对所述输入数据后面加上长度l的无效数据0;无效数据0的长度l与交织原理中的分支数B和分支长度L有关,具体的换算关系为:
l=[(B–1)+(B-2)+……+1]*L。
3.如权利要求1所述的一种无冗余数据的卷积交织与解交织FPGA实现方法,其特征在于,所述S300具体方法为:根据列计数的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址,每条分支的写地址有其固定的初始值和终止值;第1条分支的数据无需存储,直进直出;第2条分支初始值为0,终止值=初始值+(i–1)*L–1;第3条分支到第B条支路写地址的初始值和终止值计算方式如下:
初始值=前一条支路的终止值+1
终止值=初始值+(i–1)*L–1
其中,i为当前分支号,L为分支长度;
依据列计数的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应;列计数器的取值范围是0~B-1,数据有效后,列计数器的值为0,表示第1条分支的读使能有效;列计数器的值为1表示第2条分支的写使能和读使能有效;以此类推,列计数器的值为B-1表示第B条分支的写使能和读使能有效。
4.如权利要求1所述的一种无冗余数据的卷积交织与解交织FPGA实现方法,其特征在于,所述第一写分支地址和第一读分支地址存储于第一RAM,所述第一RAM存储数据采用的是RAM分区循环法,第一RAM深度计算如下所示:
第一RAM深度=(1+2+3+4+……+B-1)*L
其中,B为分支数,L为分支长度。
5.如权利要求1所述的一种无冗余数据的卷积交织与解交织FPGA实现方法,其特征在于,所述第二写分支地址和第二读分支地址存储于第二RAM,所述第二RAM存储数据采用的是RAM分区循环法,第二RAM深度计算如下所示:
第二RAM深度=B*(B*L)
其中,B为分支数,L为分支长度。
6.一种无冗余数据的卷积交织与解交织FPGA实现系统,包括:
数据拼接模块、第一计数器模块、第一写RAM模块、第一读RAM模块、第一RAM储存模块、第二计数器模块、第三计数器模块、第二写RAM模块、第二读RAM模块、第二RAM储存模块;
数据拼接模块,对输入数据进行数据拼接,得到拼接后的新数据;
第一计数器模块,对所述拼接后新数据有效信号进行计数,得到第一计数器的值;第一计数器模块工作的方法为:对所述拼接后新数据有效信号进行计数,分别对所述数据的列、行、块进行计数,所述计数规则为首先对列进行计数,列计数的计数范围为0~B-1,当列计数的值等于B-1时,行计数的值加1;行计数的计数范围是0~L-1,当列计数的值等于B-1且行计数的值等于L-1时,块计数的值加1,块计数的计数范围是0~块计数终止值M;其中块计数的终止值计算方式如下:
块计数的终止值M=有效数据长度/(B*L)+B-2
其中,B为分支数,L为分支长度;
所述列计数的初始值与块计数的值有关,当块计数器的值小于有效数据长度/(B*L)时,列计数器的初始值为0,当块计数器的值大于等于有效数据长度/(B*L)时,列计数器的初始值随着块计数器的值加1而加1;
第一写RAM模块,产生第一RAM的写使能、写地址,根据列计数器子模块的值,产生不同分支的写使能,再根据写使能产生不同分支的第一写地址;
第一读RAM模块,产生第一RAM的读使能和读地址,根据列计数器的值,产生不同分支的读使能,再根据读使能产生不同分支的第一读地址,读分支地址与写分支地址一一对应;
第一RAM模块,用于存储数据,根据第一计数器中列计数器的值以及第一写RAM模块产生的写使能和写地址,选择当前对RAM中的哪条支路进行写操作,同时,根据第一计数器中列计数器的值以及第一读RAM模块产生的读使能和读地址,选择当前对RAM中的哪条支路进行读操作;
第二计数器模块,执行卷积解交织写操作,分别产生第二计数器模块中的列、行、块计数器;第二计数器模块执行卷积解交织写操作,对于第二计数器,其中的列计数器有初始值和终止值,都与块计数器的值有关;当块计数器的值小于有效数据长度/(B*L)时,列计数器的初始值等于0,终止值随着块计数器的值加1而加1;当块计数器的值大于等于有效数据长度/(B*L)时,列计数器的初始值随着块计数器的值加1而加1,终止值等于B-1;列计数器的取值范围是0~B-1,列计数器的值为0表示第1条支路写使能有效;列计数器的值为1表示第2条支路写使能有效;以此类推,列计数器的值为B-1表示第B条支路的写使能有效;
第三计数器模块,执行卷积解交织读操作,分别产生第三计数器模块中的列、行、块计数器;第三计数器模块执行卷积解交织读操作,对于第三计数器,其中的列计数器有固定的初始值和终止值,初始值等于0,终止值等于B-1;列计数器的取值范围是0~B-1,列计数器的值为0表示第1条支路读使能有效;列计数器的值为1表示第2条支路读使能有效;以此类推,列计数器的值为B-1表示第B条支路的读使能有效;
第二写RAM模块,产生第二RAM的写使能、写地址,根据第二计数器模块中列计数器的值,产生不同分支的写使能,再根据写使能产生不同分支的写地址;
第二读RAM模块,产生第二RAM的读使能和读地址,依据第三计数器模块中列计数器的值,产生不同分支的读使能,再根据读使能产生不同分支的读地址,读分支地址与写分支地址一一对应;
第二RAM模块,用于存储数据,根据第二计数器中列计数器的值以及第二写RAM模块产生的写使能和写地址,选择当前对RAM中的哪条支路进行写操作,同时,根据第三计数器中列计数器的值以及第二读RAM模块产生的读使能和读地址,选择当前对RAM中的哪条支路进行读操做。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010448061.XA CN111628787B (zh) | 2020-05-25 | 2020-05-25 | 一种无冗余数据的卷积交织与解交织fpga实现方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010448061.XA CN111628787B (zh) | 2020-05-25 | 2020-05-25 | 一种无冗余数据的卷积交织与解交织fpga实现方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111628787A CN111628787A (zh) | 2020-09-04 |
CN111628787B true CN111628787B (zh) | 2022-03-22 |
Family
ID=72272289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010448061.XA Active CN111628787B (zh) | 2020-05-25 | 2020-05-25 | 一种无冗余数据的卷积交织与解交织fpga实现方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111628787B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5535220A (en) * | 1993-01-19 | 1996-07-09 | Matsushita Electric Industrial Co., Ltd. | Forward error correcting transmitter and receiver |
CN1838542A (zh) * | 2005-02-07 | 2006-09-27 | 索尼株式会社 | 解码设备和方法以及程序 |
CN101116249A (zh) * | 2005-02-03 | 2008-01-30 | 松下电器产业株式会社 | 并行交织器、并行解交织器以及交织方法 |
CN101257313A (zh) * | 2007-04-10 | 2008-09-03 | 深圳市同洲电子股份有限公司 | 一种基于fpga实现的解卷积交织器及解卷积交织方法 |
CN101674093A (zh) * | 2009-09-28 | 2010-03-17 | 北京海尔集成电路设计有限公司 | 卷积交织两级实现方法及其装置 |
CN102414991A (zh) * | 2009-04-24 | 2012-04-11 | 诺基亚公司 | 用于解码器的数据重排 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020078416A1 (en) * | 2000-12-01 | 2002-06-20 | Hitachi, Ltd. | Method of recording/reproducing digital data and apparatus for same |
US7178080B2 (en) * | 2002-08-15 | 2007-02-13 | Texas Instruments Incorporated | Hardware-efficient low density parity check code for digital communications |
US7266756B2 (en) * | 2004-06-25 | 2007-09-04 | Via Telecom Co., Ltd. | Read enable generator for a turbo decoder deinterleaved symbol memory |
US10270473B2 (en) * | 2014-11-26 | 2019-04-23 | Nxp Usa, Inc. | Turbo decoders with stored column indexes for interleaver address generation and out-of-bounds detection and associated methods |
-
2020
- 2020-05-25 CN CN202010448061.XA patent/CN111628787B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5535220A (en) * | 1993-01-19 | 1996-07-09 | Matsushita Electric Industrial Co., Ltd. | Forward error correcting transmitter and receiver |
CN101116249A (zh) * | 2005-02-03 | 2008-01-30 | 松下电器产业株式会社 | 并行交织器、并行解交织器以及交织方法 |
CN1838542A (zh) * | 2005-02-07 | 2006-09-27 | 索尼株式会社 | 解码设备和方法以及程序 |
CN101257313A (zh) * | 2007-04-10 | 2008-09-03 | 深圳市同洲电子股份有限公司 | 一种基于fpga实现的解卷积交织器及解卷积交织方法 |
CN102414991A (zh) * | 2009-04-24 | 2012-04-11 | 诺基亚公司 | 用于解码器的数据重排 |
CN101674093A (zh) * | 2009-09-28 | 2010-03-17 | 北京海尔集成电路设计有限公司 | 卷积交织两级实现方法及其装置 |
Non-Patent Citations (2)
Title |
---|
TD-LTE系统咬尾卷积速率匹配算法及DSP实现;董宏成等;《光通信研究》;20130726(第04期);65-68 * |
一种滑窗结构的Turbo译码器实现方法;汪烜等;《制导与引信》;20160615;第37卷(第02期);51-55 * |
Also Published As
Publication number | Publication date |
---|---|
CN111628787A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6035427A (en) | Convolutional interleaver and method for generating memory address therefor | |
US5886998A (en) | Method and apparatus for interleave/de-interleave addressing in data communication circuits | |
RU2255419C2 (ru) | Перемежитель и способ перемежения в системе связи | |
US6748561B2 (en) | Interleavers and de-interleavers | |
US7024597B2 (en) | Generalized convolutional interleaver/deinterleaver | |
US6138262A (en) | Memory address generator in convolutional interleaver/deinterleaver | |
JP2004504754A (ja) | デジタルデータの送受信装置 | |
CN111628787B (zh) | 一种无冗余数据的卷积交织与解交织fpga实现方法和系统 | |
US7363552B2 (en) | Method and apparatus for convolutional interleaving/de-interleaving technique | |
GB2456292A (en) | Interleaver which reads out and writes into the nth memory address of the previous frames read/write address sequence for each successive frame | |
JP2998366B2 (ja) | Crcチェック方法 | |
KR100371950B1 (ko) | 비터비디코더용논리블록 | |
US20050102599A1 (en) | Address generator for block interleaving | |
US6385258B1 (en) | Viterbi decoder for use in a mobile communication system | |
JP3304632B2 (ja) | インターリーブ方法およびインターリーブ回路 | |
KR100215566B1 (ko) | 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법 | |
US11836376B2 (en) | Convolution time de-interleaver and method for operating a convolution time de-interleaver | |
TW201635741A (zh) | 時間解交錯電路與執行時間解交錯處理之方法 | |
KR0155516B1 (ko) | 비터비 복호기에서 한개의 메모리를 사용한 상태 매트릭 메모리 운용방법 및 그 장치 | |
KR0183171B1 (ko) | 인터리버 및 디인터리버와 그 방법 | |
CN108540138B (zh) | 一种csraa编码电路及编码器 | |
US7818654B2 (en) | Addressing strategy for Viterbi metric computation | |
SU1619278A1 (ru) | Устройство дл мажоритарного выбора сигналов | |
JPH10163887A (ja) | インターリーブ装置およびデインターリーブ装置 | |
KR100218153B1 (ko) | 데이터 통신의 블록 인터리브/디인터리브 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Huang Li Inventor after: Zha Yingdi Inventor after: Zhang Man Inventor after: Cai Zhou Inventor before: Zha Yingdi Inventor before: Zhang Man Inventor before: Cai Zhou |
|
GR01 | Patent grant | ||
GR01 | Patent grant |