一种数据序列扰乱装置及方法 【技术领域】
本发明数据处理领域,尤其涉及一种数据序列扰乱装置方法。
背景技术
数据交织的目的是将突发错误变为随机错误,从而提高数据传输出错时被纠正的概率。数据交织也称数据扰乱,块交织和卷积交织是数据交织的两种主要方法。块交织示意图1所示,M行×I列的块交织器按照从上到下的顺序依次写入块交织器的每一行,直至填满整个交织器,再从左到右按列依次读出,其中M,I均为自然数。也有一些变形方式,比如在按列输出时对列的顺序不是从左到右,而是按照一定的规律将列顺序打乱输出。与行进列出对应的也有列进行出的交织顺序。
数据的块交织的硬件实现一般都采用在系统运行过程中数据输出和输入同时进行,因此大多数实现采用乒乓RAM的设计方法。下面以一个6x4的交织块为例进行说明。
如图2所示,数据按照1、2、......、24的顺序写入RAM1然后第一个交织块(RAM1)填满,此时内交织开始按照1,5,9,13,17,21,2,6,...,24的列顺序输出。在输出第一个交织块的同时数据继续按1-24的顺序写入RAM2.交织块。当RAM2写满时,RAM1已经全部输出,因此在第二个交织块开始按1,5,9,13,17,21,2,6,...,24的列顺序输出RAM2数据的时候,又可以向RAM1写入。由此可以看出采用此种方法需要用到2个RAM资源。
在数据交织的过程中使用2个RAM,不管是采用电路实现还是编程实现,所需要的资源都比较大,从而实现成本较高。
【发明内容】
为了解决上述的技术问题,本发明提供了一种数据序列扰乱装置及方法,其目的在于,在具有相同数据交织能力的情况下,减少数据的存储资源,从而能降低电路的面积,降低实现成本。
本发明提供了一种数据序列扰乱方法,该方法中使用存储空间为M×M的RAM对M行×I列的数据块进行交织,包括:
步骤1,将接收的第一M行×I列的数据块以行为单位依次写入RAM,形成M行×I列的数据块;
步骤2,将M行×I列的数据块以列为单位读出,并将接收的第二M行×I列的数据块以列为单位依次写入RAM中空闲的空间,形成M列×I行的数据块;其中,以列为单位读出M行×I列的数据块中的数据时,每一列中的数据按照先进先出的顺序读取;
步骤3,将M列×I行的数据块以行为单位读出,并在RAM中空闲的空间以行为单位写入后续接收的一M行×I列的数据块中的数据,形成M行×I列的数据块;其中,以行为单位读出M列×I行的数据块中的数据时,每一行中的数据按照先进先出的顺序读取;
其中,2I≥M≥I,M、I均为自然数。
空闲的空间包括数据已读出的空间和当前未存储数据的空间。
从RAM中读取数据的速度大于或等于数据写入RAM的速度;步骤2中,将接收的第二M行×I列的数据块先写入当前未存储数据的空间,然后再写入数据已读出的空间。
步骤3中,后续接收的一M行×I列地数据块中的数据先写入当前未存储数据的空间,然后再写入数据已读出的空间。
M=384/192,I=360/144。
本发明提供了一种数据序列扰乱装置,用于对M行×I列的数据块进行交织,包括存储空间为M×M的RAM以及读写控制模块;
读写控制模块,用于将接收的第一M行×I列的数据块以行为单位依次写入RAM,形成M行×I列的数据块;将M行×I列的数据块以列为单位读出,并将接收的第二M行×I列的数据块以列为单位依次写入RAM中空闲的空间,形成M列×I行的数据块,其中,以列为单位读出M行×I列的数据块中的数据时,每一列中的数据按照先进先出的顺序读取;将M列×I行的数据块以行为单位读出,并在RAM中空闲的空间以行为单位写入后续接收的一M行×I列的数据块中的数据,,形成M行×I列的数据块,其中,以行为单位读出M列×I行的数据块中的数据时,每一行中的数据按照先进先出的顺序读取;
其中,2I≥M≥I,M、I均为自然数。
空闲的空间包括数据已读出的空间和当前未存储数据的空间。
从RAM中读取数据的速度大于或等于数据写入RAM的速度;读写控制模块将接收的第二M行×I列的数据块先写入当前未存储数据的空间,然后再写入数据已读出的空间。读写控制模块将后续接收的一M行×I列的数据块中的数据先写入当前未存储数据的空间,然后再写入数据已读出的空间。
M=384/192,I=360/144。
本发明能够节省RAM资源,减少了整个芯片面积,从而节约了芯片制造的成本。
【附图说明】
图1是现有技术中数据交织原理示意图;
图2是现有技术中在芯片中使用的乒乓交织技术原理示意图;
图3a-图3c是本发明提供的第一个实施例;
图4a-图4c是本发明中提供的第二个实施例;
图5a-图5b是本发明提供的第三个实施例;
图6是本发明提供的数据序列扰乱装置示意图;
图7是本发明提供的数据序列扰乱方法示意图。
【具体实施方式】
本发明提供了一种可以节省RAM资源的实现装置。例如,如图2所示的6x4大小的交织块,传统方式需要2个6x4的存储空间,本发明给出的实现装置使用一个6x6的存储空间就可以完成。交织块越大,资源节约越明显。
下面给出了三种实施例
实施例一:
M=6,I=4,每一个交织块的数据标记为1,2,3,...,24,RAM的大小是6x6。
步骤A1:图3-a给出了第一个交织块按行写入后的示意图,行序为1、2、3、4、5、6,列序为1、2、3、4,故右侧有两列空余空间,其列序号为5,6。从图3-a可知,第一个数据块交织输出逐列进行,列序为输入时每一行中的列序1、2、3、4,在每一列中输出的顺序以输入时的行序为序,分别是1、2、3、4、5、6,交织结果是1,5,9,13,17,21,2,6,...,24;
步骤A2:图3-b给出了第二个数据块按列写入后的示意图。由前面的描述可知第一个数据块按列输出,为了充分利用RAM空间,第二个数据块按列写入,且先从原来空余的列写入,也就是5、6列先写入,空余列写完后再按照上一个交织块输出时的列序输入,也就是1、2、3、4列的顺序,在每一列中的数据顺序按照前一个数据块输出时每一列中的行序为序,也就是1、2、3、4、5、6行序中的前4个1、2、3、4行,这样第二个数据块输入完成后,5、6行是剩余空间。第二个数据块的交织输出逐行进行,行序就是输入时的每一列中的行序,也就是1、2、3、4行,每一行中的序号按照输入时的列序,也就是5、6、1、2、3、4,这样交织结果仍然是1,5,9,13,17,21,2,6,...,24。
步骤A3:图3-c给出了第三个数据块按行写入后的示意图。由前述可知前一个数据块按行输出,因此,第三个数据块按行写入。行的顺序是先写空余的行,也就是5、6行,然后按照前一个数据块输出时的行顺序1、2、3、4行写入。每一行中顺序,按照前一个数据块输出时每一行中的列序为序,也就是5、6、1、2列,这样,3、4列就是剩余空间。第三个数据块交织输出时逐列进行,列的序号就是当前数据块输入时每一行中的列顺序,也就是5、6、1、2列,每一列中的顺序按照数据输入时的行序也就是5、6、1、2、3、4行为序,这样交织结果仍然是1,5,9,13,17,21,2,6,...,24。
重复步骤A2和步骤A3,直至完成所有数据块交织。
实施例二:
M=4,I=6,每一个交织块的数据标记为1,2,3,...,24,RAM的大小是6x6。
步骤B1:图4-a给出了第一个交织块按行写入后的示意图,行序为1、2、3、4,列序为1、2、3、4、5、6,RAM下面有剩余空间,其行序号为5、6。从图4-a可知,第一个数据块交织输出逐列进行,列序为输入时每一行中的列序1、2、3、4、5、6,在每一列中输出的顺序以输入时的行序为序,分别是1、2、3、4,交织结果是1,7,13,19,2,8,...,24;
步骤B2:图4-b给出了第二个数据块按列写入后的示意图。由前面的描述可知第一个数据块按列输出,为了充分利用RAM空间,第二个数据块按列写入,顺序按照上一个数据块输出时的列序为序,也就是1、2、3、4列,在每一列中的数据首先写原来剩余的行,也就是5、6行,然后按照上一个数据块中的行序为序写入,也就是1、2、3、4行。这样第二个数据块输入完成后,5、6列是剩余空间。第二个数据块的交织输出逐行进行,行序就是输入时的每一列中的行序,也就是5、6、1、2、3、4行,每一行中的序号按照输入时的列序,也就是1、2、3、4,这样交织结果仍然是1,7,13,19,2,8,...,24。
步骤B3:图4-c给出了第三个数据块按行写入后的示意图。由前述可知前一个数据块按行输出,因此,第三个数据块按行写入。行的顺序按照前一个数据块输出时的行顺序5、6、1、2行写入。每一行中的顺序,先写上一个数据块的剩余列,也就是5、6列,然后按照前一个数据块输出时每一行中的列序为序,也就是1、2、3、4列,这样,3、4行就是剩余空间。第三个数据块交织输出时逐列进行,列的序号就是当前数据块输入时每一行中的列顺序,也就是5、6、1、2、3、4列,每一列中的顺序按照数据输入时的行序也就是5、6、1、2行为序,这样交织结果仍然是1,7,13,19,2,8,...,24。
重复步骤B2和步骤B3,直至完成所有数据块交织。
实施例三:
M=4,I=6,每一个交织块的数据标记为1,2,3,...,24,RAM的大小是6x6。
步骤C1:图5-a给出了第一个交织块按行写入后的示意图,行序为1、2、3、4,列序为1、2、3、4、5、6,RAM下面有剩余空间,行序号为5、6。从图4-a可知,第一个数据块交织输出逐列进行,列序为输入时每一行中的列序1、2、3、4、5、6,在每一列中输出的顺序以输入时的行序为序,分别是1、2、3、4,交织结果是1,7,13,19,2,8,...,24;
步骤C2:图5-b给出了第二个数据块按列写入后的示意图。由前面的描述可知第一个数据块按列输出,第二个数据块按列写入,顺序1、2、3、4列进行,每一列中的数据按照1、2、3、4、5、6行的顺序进行。这样第二个数据块输入完成后,5、6列是剩余空间。第二个数据块的交织输出逐行进行,行序就是输入时的每一列中的行序,也就是1、2、3、4、5、6行,每一行中的序号按照输入时的列序,也就是1、2、3、4,这样交织结果仍然是1,7,13,19,2,8,...,24。
重复步骤C1和步骤C2,直至完成所有数据块交织。
为了配合交织块的写入和读出,本发明中还提供了一个写入读出控制装置。该装置的作用主要是控制读和写的时序。
当第一个交织块填满时,开始第一个交织块读出。因为写入第二个交织块和读出第一个交织块同时进行,因此控制装置要控制输入数据时,要写入的位置是上一个数据的未用空间或上一个数据块已经交织输出的空间保证第二个交织块不会覆盖第一个交织块的数据。
本发明提供的数据序列扰乱装置如图6所示,用于对M行×I列的数据块进行交织,包括存储空间为M×M的RAM501以及读写控制模块502;
读写控制模块502,用于将接收的第一M行×I列的数据块以行为单位依次写入RAM,形成M行×I列的数据块;将M行×I列的数据块以列为单位读出,并将接收的第二M行×I列的数据块以列为单位依次写入RAM中空闲的空间,形成M列×I行的数据块,其中,以列为单位读出M行×I列的数据块中的数据时,每一列中的数据按照先进先出的顺序读取;将M列×I行的数据块以行为单位读出,并在RAM中空闲的空间以行为单位写入后续接收的一M行×I列的数据块中的数据,形成M行×I列的数据块,其中,以行为单位读出M列×I行的数据块中的数据时,每一行中的数据按照先进先出的顺序读取;其中,2I≥M≥I,M、I均为自然数。
本发明提供的数据序列扰乱方法,如图7所示,该方法中使用存储空间为M×M的RAM对M行×I列的数据块进行交织,包括:
步骤101,将接收的第一M行×I列的数据块以行为单位依次写入RAM,形成M行×I列的数据块;
步骤102,将M行×I列的数据块以列为单位读出,并将接收的第二M行×I列的数据块以列为单位依次写入RAM中空闲的空间,形成M列×I行的数据块;其中,以列为单位读出M行×I列的数据块中的数据时,每一列中的数据按照先进先出的顺序读取;
步骤103,将M列×I行的数据块以行为单位读出,并在RAM中空闲的空间以行为单位写入后续接收的一M行×I列的数据块中的数据,形成M行×I列的数据块;其中,以行为单位读出M列×I行的数据块中的数据时,每一行中的数据按照先进先出的顺序读取;
其中,2I≥M≥I,M、I均为自然数。
为了得到本发明所能解约的RAM资源,下面通过计算进行比较:
现有技术中,为了对M行×I列的数据进行交织,需要2块大小为M×I的RAM;由于M、I均为自然数,不妨设M≥I;
本发明中,为了实现对M行×I列的数据进行交织,需要1块大小为M×M的RAM;
如果使本发明能过起到节约RAM资源的效果,需要满足条件M×M≤2M×I,其中M≥I;
因此可以得到当2I≥M≥I时,本发明能够起到节约RAM资源的效果。由于现有的标准中的数据交织块(M=386/192,I=360/144)满足上述条件,所以本发明可以起到相应的效果。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。