CN113992212B - 数据交织方法及fpga - Google Patents

数据交织方法及fpga Download PDF

Info

Publication number
CN113992212B
CN113992212B CN202111607838.3A CN202111607838A CN113992212B CN 113992212 B CN113992212 B CN 113992212B CN 202111607838 A CN202111607838 A CN 202111607838A CN 113992212 B CN113992212 B CN 113992212B
Authority
CN
China
Prior art keywords
data
decoder
interleaving
target
memory
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
Application number
CN202111607838.3A
Other languages
English (en)
Other versions
CN113992212A (zh
Inventor
黄海莲
邹刚
张哲�
赵深林
刘波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Xinglian Xintong Technology Co ltd
Original Assignee
Chengdu Xinglian Xintong Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Xinglian Xintong Technology Co ltd filed Critical Chengdu Xinglian Xintong Technology Co ltd
Priority to CN202111607838.3A priority Critical patent/CN113992212B/zh
Publication of CN113992212A publication Critical patent/CN113992212A/zh
Application granted granted Critical
Publication of CN113992212B publication Critical patent/CN113992212B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/27Coding, 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/2771Internal interleaver for turbo codes
    • H03M13/2775Contention or collision free turbo code internal interleaver

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
技术领域
本发明涉及译码技术领域,具体而言,涉及一种数据交织方法及FPGA。
背景技术
Turbo码是在卷积码和迭代思想的基础上发展而来的,交织技术在turbo码中具有非常重要的作用,通过交织技术可以将原始数序列打乱,使交织前后数据序列的相关性减弱,从而大大降低数据访问时出现地址冲突的概率,提高turbo码的可靠性。
对于高比特速率传输的通信系统来说,为了降低turbo码译码延迟,提高吞吐量,通常采用并行译码。在并行译码时,数据交织的随机置换更容易引起存储器地址竞争问题,因此也更容易出现地址冲突,如何避免并行译码时数据交织产生地址冲突是本领域技术人员亟待解决的问题。
发明内容
本发明提供了一种数据交织方法及FPGA,其能够在译码设备的多个译码器并行译码时避免数据交织产生地址冲突。
第一方面,本发明提供一种数据交织方法,应用于FPGA的处理单元,所述FPGA运行有多个译码器,所述FPGA还包括内部存储单元,所述内部存储单元包括与译码器数量相同的多个存储器,每一所述存储器包括多个存储块,每一时刻每一所述译码器读取一个存储块,所述方法包括:获取每一所述译码器在当前时刻所需访问的数据在每一所述译码器内部的数据偏移;按照预设交织规则,从所述多个存储器中确定与每一所述译码器的数据偏移对应的目标存储器及在所述目标存储器中的目标存储块,其中,任意两个所述译码器在所述当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同;按照每一所述译码器的所述目标存储器的目标存储块,访问每一所述译码器与所述数据偏移对应的交织后的数据。
第二方面,本发明提供一种FPGA,所述FPGA运行有多个译码器,所述FPGA包括处理单元和内部存储单元,所述内部存储单元包括与译码器数量相同的多个存储器,每一所述存储器包括多个存储块,每一时刻每一所述译码器读取一个存储块;所述处理单元,用于获取每一所述译码器在当前时刻所需访问的数据在每一所述译码器内部的数据偏移;所述处理单元,还用于按照预设交织规则,从所述多个存储器中确定与每一所述译码器的数据偏移对应的目标存储器及在所述目标存储器中的目标存储块,其中,任意两个所述译码器在所述当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同;所述处理单元,还用于按照每一所述译码器的所述目标存储器的目标存储块,访问每一所述译码器与所述数据偏移对应的交织后的数据。
相对于现有技术,本发明首先获取每一译码器在当前时刻的所需访问的数据在每一译码器内部的数据偏移,然后按照预设交织规则,从多个存储器中确定与每一译码器的数据偏移对应的目标存储器及在目标存储器中的目标存储块,任意两个译码器在当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同,按照每一译码器的目标存储器的目标存储块,访问每一译码器与数据偏移对应的交织后的数据。通过使任意两个译码器在同一时刻访问不同的目标存储器的不同的目标存储块,避免了多个译码器并行译码时数据交织产生地址冲突。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的FPGA的方框示意图。
图2为本发明实施例提供的迭代译码流程示例图。
图3为本发明实施例提供的读写内存数据时发生冲突的示例图。
图4为本发明实施例提供的一种数据交织方法的流程示例图。
图5为本发明实施例提供的交织前数据的存储示例图。
图6为本发明实施例提供的另一种数据交织方法的流程示例图。
图7为本发明实施例提供的再一种数据交织方法的流程示例图。
图8为本发明实施例提供的译码器的数据偏移与目标存储器中的目标存储块的映射过程的示例图。
图9为本发明实施例提供的交织前数据的存储示例图。
图10为本发明实施例提供的2个译码器并行译码时交织后的读写顺序示例图。
图11为本发明实施例提供的4个译码器并行译码时交织后的读写顺序示例图。
图12为本发明实施例提供的4个译码器并行译码时处理时序的示例图。
图标:10-FPGA;11-处理单元;12-内部存储单元。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
对于turbo码来说,最常用的译码方式是迭代译码,FPGA上通常运行有迭代译码器,先对turbo的一个子码译码,再把该迭代译码器的输出结果送到另一个迭代译码器的输入端,进行第二个子码译码,然后把第二个迭代译码器的输出结果再送到第一个迭代译码器的输入端,如此反复迭代,直到达到一定的迭代次数。虽然上述迭代流程中出现两个迭代译码器:第一迭代译码器和第二迭代译码器,事实上,在物理层面,这两个迭代译码器可以用同一个硬件结构完成,第i次迭代译码时,第一迭代译码器和第二迭代译码器串行执行,第一迭代译码器先执行,第二迭代译码器后执行,然后是第i+1次迭代译码,同样地,第一迭代译码器和第二迭代译码器串行执行,第一迭代译码器先执行,第二迭代译码器后执行。
迭代译码器可以包括多个并行译码的子译码器,多个子译码器并行译码的处理过程可以概述为:将待译码数据分成多个数据块,将每一数据块采用一个子译码器进行译码,得到每一数据块的译码结果,最后再将所有数据块的译码结果进行组合,得到最终的译码结果。
请参照图1,图1为本发明实施例提供的FPGA10的方框示意图,现场可编程逻辑门阵列FPGA(Field Programmable Gate Array,FPGA)属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数较少的问题。FPGA10的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块随机存储器RAM(Random-Access Memory,RAM),布线资源,内嵌专用硬核,底层内嵌功能单元。FPGA10利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA10的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA10所能实现的功能,FPGA10允许无限次的编程。
FPGA10包括处理单元11和内部存储单元12,内部存储单元12包括多个存储器。每一存储器中还存在一个包括多个按序存储的存储块,FPGA10上运行有多个译码器,译码器的数量和存储器的个数相同,该译码器可以是前述迭代译码器中的子译码器,每一个译码器按照预设顺序读写对应的存储块,任意两个子译码器在当前时刻读写存储块的存储序号不同。
存储器12是内置于FPGA10中的存储装置。
为了更清楚地说明上述译码的处理过程,本发明实施例还提供了一种迭代译码流程示例图,请参照图2,图2为本发明实施例提供的迭代译码流程示例图,图2中,迭代译码器1和迭代译码器2在物理层面是同一个硬件结构,为了方便描述,图2中将其示例为两个独立的迭代译码器。校验信息1、原信息和先验概率信息作为迭代译码器1的输入,其中,先验信息2为迭代译码器2输出的外信息2解交织后得到,迭代译码器1输出的外信息1交织后得到先验信息,先验信息、交织后的原信息及校验信息2为迭代译码器2的输入。对于每一迭代译码器的每一输入数据而言,每一输入数据均先进行数据分段,将分段后的数据同时输入多个子译码器进行并行译码,再将多个子译码器的译码结果进行组合,最终得到每一迭代译码器的输出。
一般情况下,数据交织时可以采用的交织方式有多种,每一种交织方式也称为交织器,按照交织器的交织形式,交织器可以分为分组交织器、随机交织器、对称交织、线性同余交织等。分组交织器结构简单,但因为其随机化程度不够理想,而且收尾性能很差,整体性能一般,典型的分组交织器有行列交织器,螺旋交织器等。随机交织器随机化很高,整体性能也比较理想,但交织器结构复杂,只能采用存储表的形式解交织,一般有伪随机交织器和S随机交织器。
线性同余交织器中比较典型的有ARP交织和DRP交织算法。以DVB-RCS2的turbo码的ARP交织器为例,该ARP交织器的交织规则能够实现多个连续数据同时读取和写入并行,但是不能实现turbo码译码过程中,前向递推或者反向递推过程并行。
有鉴于此,本发明实施例提供一种数据交织方法及FPGA,以实现并行译码过程中数据既能并行读取和写入,又不会产生地址冲突,下面将对其进行详细描述。
由于存储资源有限,迭代译码器1读取原信息和迭代译码器2读取的交织后的原信息在内部存储单元12中只存储一份。迭代译码器1输出的外信息1、迭代译码器2获得的先验信息、迭代译码器2输出的外信息2和迭代译码器1获得的先验概率信息在内部存储单元12中只存储一份。由此可以在不增加额外存储资源的情况下实现并行译码,既保证了多个子译码器同时工作,进而保证译码误码率性能。
在并行译码过程中,避免多个子译码器同时读取同一个存储器的相同存储位置,避免存储区域访问冲突是实现并行译码的关键。假设将一个待译码turbo码分成a/b/c/d四段,子译码的个数为4,每一段数据都连续存储的。由于迭代译码器1的数据不涉及到交织,所以只需要将a/b/c/d四段数据分别存储到A/B/C/D四个存储块中,按照存储顺序,依次读取a/b/c/d四段数据即可。对于迭代译码器2,因为需要按照交织后的顺序读取数据,如果在同一个时间内,迭代译码器2中的子译码器a和子译码器d同时读写存储块C,则发生内存冲突,请参照图3,图3为本发明实施例提供的读写内存数据时发生冲突的示例图,图3(a)为写内存数据时发生冲突的示例图,图3(a)中,子译码器a和子译码器d同时向存储块C写数据,发生内存冲突,图3(b)为读内存数据时发生冲突的示例图,图3(b)中,子译码器a和子译码器d同时从存储块C中读数据。
避免内存冲突是并行化译码设计的关键,假设在某一个时刻,同时计算
Figure F_211222105449541_541878001
个数据段中的同一位置的数据,对应原始数据段中第
Figure F_211222105449706_706980002
Figure F_211222105449882_882206003
Figure F_211222105450007_007177004
,…,
Figure F_211222105450116_116628005
的数据(相隔一个
Figure F_211222105450228_228894006
长度,每一个数据段对应一个子译码器),保证任意两个子译码器并行访问时无地址冲突,无访问冲突的并行交织和解交织的交织器的数学条件是:
Figure F_211222105450385_385303007
,其中
Figure F_211222105450527_527697008
Figure F_211222105450669_669770009
表示数据在子译码器内的偏移;
Figure F_211222105450795_795721010
Figure F_211222105450952_952553011
表示第
Figure F_211222105451110_110845012
个子译码器;
Figure F_211222105451401_401214013
Figure F_211222105451542_542386014
表示第
Figure F_211222105451700_700145015
个子译码器,并且
Figure F_211222105451851_851961016
Figure F_211222105452023_023556017
表示交织器,
Figure F_211222105452164_164452018
Figure F_211222105452325_325072019
表示交织前的存储位置。
本发明实施例基于上述无访问冲突的数学条件,提供了一种数据交织方法,为了便于理解,本发明实施例先描述数据存储方式,然后再描述基于该数据存储方式对数据进行存储后,对数据进行读取的实现方式。
在本实施例中,为了充分利用多个存储器,需要将待存储数据分散存储于各存储器中,并保证多个子译码器同时访问多个存储器时不会出现冲突,请参照图4,图4为本发明实施例提供的一种数据交织方法的流程示例图,该方法以4个存储器为例说明存储数据具体实现方式,该方法包括以下步骤:
步骤S100,根据每一交织前数据的序号及存储器个数,确定每一交织前数据应存储的存储器的序号。
在本实施例中,当对原数据进行交织时,交织前数据就是原数据,当对外信息进行交织时,交织前数据就是外信息。
在本实施例中,交织前数据为多个、且按序编号,对于任一交织前数据而言,将多个交织前数据按序排列,根据排列的先后顺序为每一个交织前数据设置一个对应的序号,例如,多个交织前数据按序排列为:a1、a2、a3,则a1的序号为0,a2的序号为1,a3的序号为2。
在本实施例中,将多个存储器按序编号,每一存储器对应一个唯一序号,作为一种具体实现方式,对于任一交织前数据,按照公式
Figure F_211222105452500_500903020
确定交织前数据应存储的存储器的序号,其中,
Figure F_211222105452659_659942021
为交织前数据的序号,
Figure F_211222105452769_769415022
为交织前数据应存储的存储器的序号。
作为另一种具体实施例,交织前数据应存储的存储器的序号还可以采用如下方式确定:
存储器的序号为0、1、2、3,对于目标待存储数据的序号x而言,上述公式还可以表示为:
Figure F_211222105452909_909087023
,其中,
Figure F_211222105453061_061436024
为所述数量,
Figure F_211222105453203_203012025
为待存储数据的个数,x为目标待存储数据的序号,0、1、2、3为目标存储器的序号。
步骤S110,将每一交织前数据按照对应的序号存储至对应序号的存储器中。
为了更清楚地说明交织前数据的存储过程,请参照图5,图5为本发明实施例提供的交织前数据的存储示例图,图5中,交织前数据共56个,并按序编号0~55,其中i为交织前数据的编号,FPGA中存储器的个数为4,分别为内存0~内存3,y为内存的编号,C为ARP周期,取值4,r为交织前数据在各自内存中的数据偏移。
本发明实施例提供的上述方法,可以将数据分散存储于多个存储器中,保证了存储器的并发访问,提高了译码的吞吐量,减小了译码的时延,并且,当存储器的数据增加时,可以对应扩展并行度,设计简单,具有较强的实用性。
基于按照上述方法对数据进行存储后,本发明实施例还提供了一种访问交织后的数据的方式,请参照图6,图6为本发明实施例提供的另一种数据交织方法的流程示例图,该方法包括以下步骤:
步骤S120,获取每一译码器在当前时刻所需访问的数据在每一译码器内部的数据偏移。
在本实施例中,数据偏移为每一译码器在当前时刻所需访问的数据在该译码器内部的偏移,例如,时刻t需访问译码器a的第0个数据,则此时的数据偏移为0,时刻t+1需访问译码器a的第1个数据,则此时的数据偏移为1。
步骤S130,按照预设交织规则,从多个存储器中确定与每一译码器的数据偏移对应的目标存储器及在目标存储器中的目标存储块,其中,任意两个译码器在当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同。
在本实施例中,存储器包括多个按序存储的存储块,每一时刻每一译码器读取一个存储块,任意两个译码器在当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同,即任意两个译码器在当前时刻读取的是不同的存储块。
在本实施例中,数据在存储器中存储的位置在交织前后是不变的,但是,在交织前后从存储器中读取的顺序是不同,例如,存储器包括4个存储块:存储块1~存储块4,译码器有4个:a、b、c和d,交织前,a、b、c和d分别读取存储块1、2、3和4,交织后,a、b、c和d分别读取存储块4、1、2和3,在交织前后,存储器中存储的数据是一样的。
步骤S140,按照每一译码器的目标存储器的目标存储块,访问每一译码器与数据偏移对应的交织后的数据。
在本实施例中,访问每一译码器与数据偏移对应的交织后的数据可以是读取其中的数据,也可以是向其中写入数据,具体看应用场景的需要。
本发明实施例提供的上述方法,通过使任意两个译码器在同一时刻按照不同的存储序号、从同一存储器中读取不同的目标存储块,在不增加存储资源的情况下,避免了多个译码器并行译码时数据交织产生地址冲突。
在图4和图6的基础上,本发明实施例还提供了一种具体确定目标存储器及目标存储块的实现方式,请参照图7,图7为本发明实施例提供的另一种数据交织方法的流程示例图,步骤S130包括以下子步骤:
子步骤S1301,根据每一译码器的数据偏移和每一译码器的序号,确定与每一译码器的数据偏移对应的译码数据序号。
在本实施例中,多个译码器和多个存储器均分别按序编号,交织前数据按序编号、并预先存储于多个存储器中的多个存储块中。
在本实施例中,译码数据序号为译码器处理数据的序号,标识译码器处理数据的顺序,例如,交织前数据共56个,按序编号0~55,则译码数据序号为0~55。
子步骤S1302,根据每一译码器的数据偏移对应的译码数据序号、存储器个数及交织前数据的码长,确定每一译码器的数据偏移对应的交织前数据的序号。
在本实施例中,交织前数据的码长指交织前数据的数据长度,由于交织前数据通常是以比特对形式表示,此时,交织前数据的码长可以为交织前数据中比特对的个数。
在本实施例中,每一译码器的数据偏移是相对于自身而言的,因此,在当前时刻,每一译码器的数据偏移可以相同,例如,在当前时刻,每一译码器的数据偏移均为5,则表示在当前时刻,每一译码器需读取的数据都是本译码器的第5个数据。
在本实施例中,ARP交织方式(也称为ARP交织器)常被用在咬尾turbo码中,咬尾turbo码与循环码类似,而且简化了设计。如果ARP器用在咬尾turbo码中,将引起更小的最小距离,并带来性能损失。因此,在DVB-RCS2中的turbo卷积码被提议设计为咬尾的形式。
如果信息长度设为
Figure F_211222105453328_328578026
,一个
Figure F_211222105453446_446847027
长度下规则置换交织器被定义为:
Figure F_211222105453569_569869028
Figure F_211222105453696_696235029
作为交织前的序列位置,
Figure F_211222105453806_806963030
是交织器后的相应位置,
Figure F_211222105453948_948208031
是信息长度,
Figure F_211222105454059_059444032
是一个主要跟
Figure F_211222105454184_184048033
有关的数据, 且
Figure F_211222105454343_343654034
是奇数。
Figure F_211222105454472_472189035
是个常数,
Figure F_211222105454598_598519036
是一个比较小的整数(能被
Figure F_211222105454770_770856037
整除)叫做循环长度,也叫ARP周期,而
Figure F_211222105454961_961453038
Figure F_211222105455090_090492039
长度的一个摆动向量。
Figure F_211222105455216_216701040
被定义为:
Figure F_211222105455413_413020041
Figure F_211222105455585_585941042
Figure F_211222105455733_733312043
都是
Figure F_211222105455980_980262044
长度的向量,周期的被
Figure F_211222105456248_248280045
使用。
Figure F_211222105456401_401260046
Figure F_211222105456527_527743047
元素都是
Figure F_211222105456693_693702048
的倍数。在DVB-RCS2中
Figure F_211222105456827_827384049
取4。
ARP交织器具有很好的误码性能曲线。对于一个ARP交织器的长度
Figure F_211222105456963_963253050
和循环长度
Figure F_211222105457076_076534051
, 设
Figure F_211222105457267_267011052
并行译码。
在本实施例中,作为一种具体实现方式,对上述公式进行改进,结合上述无访问冲突的并行交织和解交织的交织器的数学条件,对于任一目标译码器而言,其对应的交织前数据的序号的计算方式可以是:
根据目标译码器的数据偏移对应的译码数据序号及待译码数据的码长,按照公式:
Figure F_211222105457455_455473053
确定目标译码器的数据偏移对应的交织前数据的序号,其中,i为目标译码器的数据偏移对应的交织前数据的序号,j为目标译码器的数据偏移对应的译码数据序号,
Figure F_211222105457686_686070054
Figure F_211222105457852_852444055
Figure F_211222105458127_127844056
Figure F_211222105458286_286520057
为预设参数,
Figure F_211222105458478_478381058
为待译码数据的码长。作为一种具体实现方式,上述公式中的
Figure F_211222105458605_605763059
Figure F_211222105458743_743567060
Figure F_211222105458855_855869061
Figure F_211222105458998_998855062
Figure F_211222105459155_155738063
作为另一种具体实现形式,当
Figure F_211222105459285_285088064
,并行译码时,交织器公式
Figure F_211222105459411_411999065
还可以修改为以下形式:
Figure F_211222105459552_552593066
其中,
Figure F_211222105459712_712314067
Figure F_211222105459854_854449068
Figure F_211222105459963_963323069
Figure F_211222105500138_138580070
Figure F_211222105500282_282126071
Figure F_211222105500425_425194072
为数据长度。
若交织前,按照公式
Figure F_211222105500565_565774073
将数据分别存储至四个存储器中,其中
Figure F_211222105500708_708463074
是交织之前数据存储的顺序。
再将公式
Figure F_211222105500834_834812075
简写成以下形式:
Figure F_211222105500991_991083076
其中,
Figure F_211222105501149_149833077
为数据长度,
Figure F_211222105501248_248932078
,是交织后,数据读写的顺序。
Figure F_211222105501377_377343079
交织后读写第
Figure F_211222105501502_502798080
个数据时,该数据在原序列中的存储位置。
子步骤S1303,根据每一译码器的数据偏移对应的交织前数据的序号及存储器个数,确定与每一译码器的数据偏移对应的目标存储器及在目标存储器中的目标存储块。
在本实施例中,以4个存储器为例,确定目标存储器及目标存储块的具体实现方式可以是:
首先,对于任一目标译码器而言,根据公式
Figure F_211222105501625_625358081
,得到目标译码器的数据偏移对应的目标存储器的序号,其中,f为目标译码器的数据偏移对应的目标存储器的序号,i为目标译码器的数据偏移对应的交织前数据的序号。
例如,
Figure F_211222105501766_766420082
,存储器包括FPGA内存0~ FPGA内存3,
Figure F_211222105501909_909586083
时:
Figure F_211222105502115_115633084
,数据0存储到FPGA内存0里面;
Figure F_211222105502243_243518085
时:
Figure F_211222105502352_352884086
,数据1存储到FPGA内存1里面;
Figure F_211222105502464_464196087
时:
Figure F_211222105502588_588814088
,数据2存储到FPGA内存2里面;
Figure F_211222105502715_715728089
时:
Figure F_211222105502846_846624090
,数据3存储到FPGA内存3里面;
Figure F_211222105502955_955950091
时:
Figure F_211222105503083_083903092
,数据4存储到FPGA内存0里面;
i为其他值时依次类推,此处不再赘述。
其次,根据公式
Figure F_211222105503194_194652093
,得到目标存储器中的目标存储块的偏移,其中,i为目标译码器的数据偏移对应的交织前数据的序号,
Figure F_211222105503351_351668094
表示向下取整,r为目标存储器中的目标存储块的序号。
为了便于理解,本发明实施例以turbo码的码长为56比特对为例进行说明,将56的数据分成4段,每段有14个数据,译码器的个数和存储器的个数均为4,这4段数据分别由4个译码并行译码,译码器和存储器均按序进行编号,译码器编号为:0~3,对应译码器0~译码器3,存储器的编号为0~3,对应FPGA内存0~FPGA内存3,以读数据为例,请参照图8,图8为本发明实施例提供的译码器的数据偏移与目标存储器中的目标存储块的映射过程的示例图。图8中,t=0时刻,每一译码器读取自身的第0个数据,此时,每一译码器的数据偏移均为0,其他t时刻与之类似。
以t=5为例,当t=5时,每一译码器的数据偏移为5。首先,根据每一译码器的数据偏移和每一译码器的序号,确定每一译码器的数据偏移对应的译码数据序号j,对于译码器0,数据偏移为5,译码器编号为0,则对应的j为5;对于译码器1,数据偏移为5,译码器编号为1,则对应的j为20;对于译码器2,数据偏移为5,译码器编号为2,则对应的j为35;对于译码器3,数据偏移为5,译码器编号为3,则对应的j为50;其次,根据j和码长及上述公式:
Figure F_211222105503463_463287095
确定各译码器的数据偏移对应的交织前数据的序号i,j为5、20、35及50分别对应的i为0、15、54及53;第三,根据i的值利用上述公式
Figure F_211222105503652_652237096
Figure F_211222105503761_761619097
,确定目标存储器及在目标存储器f中的目标存储块的序号r,i为0、15、54及53分别对应f和r的值为:(f=0,r=0)、(f=3,r=3)、(f=2,r=13)、(f=1,r=13)。
请参照图9~图12,图9~图12为本发明实施例提供用于说明并行译码交织前后读写顺序的示例图,图9为本发明实施例提供的交织前数据的存储示例图,图9中,存储器为FPGA内存,交织前数据的长度为56,即交织前数据按照上述存储公式存储于4个内存(FPGA内存0~FPGA内存3)中。需要说明的是,对于读数据而言,交织前后,数据存储的位置不会发生变化,只是读取顺序在交织前后不同。
图10为本发明实施例提供的2个译码器并行译码时交织后的读写顺序示例图。图10中,不同灰度的数据表示存储于不同的内存块,方块中的数字代表数据在原序列中的位置,方块外的数字被分为两类:非斜体数字代表被译码器1处理,斜体数字代表被译码器2处理,数据大小代表被处理的时间,保证了两个译码器访问内存时,不会产生冲突。
图11为本发明实施例提供的4个译码器并行译码时交织后的读写顺序示例图。图11中,不同灰度的数据表示存储于不同的内存块,方块外的数字根据被分为四类:正常字体0~14代表被译码器0处理、斜体字体0~14代表被译码器1处理,加下划线字体0~14代表被译码器2处理,加粗字体0~14代表被译码器3处理,以上的处理结构能够保证四个译码器同时运行,对数据的读写不冲突。
为了更清楚地说明4个译码处理时序及对应的数据,请参照图12,图12为本发明实施例提供的4个译码器并行译码时处理时序的示例图。图12中,不同灰度的方块表示不同的内存,译码器1、2、3、4在时序0分别读取FPGA内存3的第1个数据块(即数字3)、FPGA内存2的第11个数据块(及数字42)、FPGA内存1的第11个数据块(即数字41)、FPGA内存0的第7个数据块(即数字24)。
由图10~图12可以看出,每一译码器在相同的时刻读取的是不同内存的不同位置,从而保证了多个译码器同时运行,对数据的读写不冲突。
图9~图12中交织后的目标存储器及目标存储块的确定过程可以是:
Figure F_211222105503873_873434098
时,
Figure F_211222105504001_001467099
Figure F_211222105504126_126819100
时,
Figure F_211222105504255_255319101
Figure F_211222105504417_417477102
时,
Figure F_211222105504620_620640103
Figure F_211222105504814_814367104
时,
Figure F_211222105505019_019755105
其中,
Figure F_211222105505288_288699106
Figure F_211222105505491_491127107
Figure F_211222105505760_760761108
Figure F_211222105505962_962240109
Figure F_211222105506140_140512110
Figure F_211222105506372_372567111
,j为目标译码器的数据偏移对应的译码数据序号,i为目标译码器的数据偏移对应的交织前数据的序号。
将上述参数的取值代入以上的公式中得到以下的方程式:
Figure F_211222105506566_566798112
时,
Figure F_211222105506777_777693113
(1)
Figure F_211222105507059_059340114
时,
Figure F_211222105507284_284398115
(2)
Figure F_211222105507494_494862116
时,
Figure F_211222105507798_798672117
(3)
Figure F_211222105508034_034000118
时,
Figure F_211222105508198_198553119
(4)
以上的方程式等价于
Figure F_211222105508386_386615120
时,设
Figure F_211222105508513_513556121
,则:
Figure F_211222105508625_625881122
(5)
Figure F_211222105508735_735216123
时,设
Figure F_211222105508846_846113124
,则:
Figure F_211222105508988_988158125
(6)
Figure F_211222105509099_099490126
时,设
Figure F_211222105509226_226460127
,则:
Figure F_211222105509399_399727128
(7)
Figure F_211222105509556_556523129
时,设
Figure F_211222105509652_652211130
,则:
Figure F_211222105509792_792835131
(8)
其中
Figure F_211222105509948_948580132
以上的(5)、(6)、(7)、(8)四个公式中的i对4求余得:
公式(5)时,
Figure F_211222105510091_091652133
(9)
公式(6)时,
Figure F_211222105510202_202950134
(10)
公式(7)时,
Figure F_211222105510312_312408135
(11)
公式(8)时,
Figure F_211222105510424_424208136
(12)
由以上的推导可知,
所有j满足
Figure F_211222105510533_533572137
的数据,用本发明实施例中的数据交织方法交织计算出来的i,满足
Figure F_211222105510660_660638138
所有j满足
Figure F_211222105510769_769931139
的数据,用本发明实施例中的数据交织方法交织计算出来的i,满足
Figure F_211222105510881_881708140
所有j满足
Figure F_211222105511007_007002141
的数据,用本发明实施例中的数据交织方法交织计算出来的i,满足
Figure F_211222105511117_117535142
所有j满足
Figure F_211222105511230_230321143
的数据,用本发明实施例中的数据交织方法交织计算出来的i,满足
Figure F_211222105511339_339774144
以上的j和i一一对应,并保持以4为周期,循环出现。
图9~图12的译码时序满足以下条件:
(1)译码器的数量和存储器的数量一致;
(2)原数据在内存中的存储顺序按照图 9保存;
(3)每个译码器的j起始位置满足
Figure F_211222105511514_514118145
不同;
(4)每一个译码器的译码顺序j是一段连续的数据;
i是交织由交织公式:
Figure F_211222105511641_641000146
唯一确定。
满足以上条件的前提下,就能保证4个译码器访问4个FPGA内存时,不冲突。
需要说明的是,数据的交织和解交织互为逆过程,本领域技术人员完全可以根据本发明实施例上述描述的交织实现方式得到对应的解交织实现方式,本发明实施例不再赘述解交织的具体实现过程。
综上所述,本发明实施例提供了一种数据交织方法及FPGA,应用于FPGA的处理单元,FPGA运行有多个译码器, FPGA还包括内部存储单元,内部存储单元包括与译码器数量相同的多个存储器,每一存储器包括多个存储块,每一时刻每一译码器读取一个存储块,所述方法包括:获取每一译码器在当前时刻所需访问的数据在每一译码器内部的数据偏移;按照预设交织规则,从多个存储器中确定与每一译码器的数据偏移对应的目标存储器及在目标存储器中的目标存储块,其中,任意两个译码器在当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同;按照每一译码器的目标存储器的目标存储块,访问每一译码器与数据偏移对应的交织后的数据。相对于现有技术,本发明实施例通过使任意两个译码器在同一时刻访问不同的目标存储器的不同的目标存储块,避免了多个译码器并行译码时数据交织产生地址冲突。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (8)

1.一种数据交织方法,其特征在于,应用于FPGA的处理单元,所述FPGA运行有多个译码器,所述FPGA还包括内部存储单元,所述内部存储单元包括与译码器数量相同的多个存储器,每一所述存储器包括多个存储块,每一时刻每一所述译码器读取一个存储块,所述多个译码器和所述多个存储器均分别按序编号,交织前数据按序编号、并预先存储于所述多个存储器中的多个存储块中,所述方法包括:
获取每一所述译码器在当前时刻所需访问的数据在每一所述译码器内部的数据偏移;
按照预设交织规则,从所述多个存储器中确定与每一所述译码器的数据偏移对应的目标存储器及在所述目标存储器中的目标存储块,其中,任意两个所述译码器在所述当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同;
按照每一所述译码器的所述目标存储器的目标存储块,访问每一所述译码器与所述数据偏移对应的交织后的数据;
所述按照预设交织规则,从所述多个存储器中确定与每一所述译码器的数据偏移对应的目标存储器及在所述目标存储器中的目标存储块的步骤包括:
根据每一所述译码器的数据偏移和每一所述译码器的序号,确定与每一所述译码器的数据偏移对应的译码数据序号;
根据每一所述译码器的数据偏移对应的译码数据序号、存储器个数及所述交织前数据的码长,确定每一所述译码器的数据偏移对应的所述交织前数据的序号;
根据每一所述译码器的数据偏移对应的所述交织前数据的序号及所述存储器个数,确定与每一所述译码器的数据偏移对应的目标存储器及在所述目标存储器中的目标存储块。
2.如权利要求1所述的数据交织方法,其特征在于,所述存储器的个数为4个,所述根据每一所述译码器的数据偏移对应的译码数据序号、存储器个数及所述交织前数据的码长,确定每一所述译码器的数据偏移对应的所述交织前数据的序号的步骤包括:
对于任一目标译码器,根据所述目标译码器的数据偏移对应的译码数据序号及待译码数据的码长,按照公式
Figure F_220223144437276_276627001
确定所述目标译码器的数据偏移对应的交织前数据的序号,其中,i为所述目标译码器的数据偏移对应的交织前数据的序号,j为所述目标译码器的数据偏移对应的译码数据序号,
Figure F_220223144437547_547637002
Figure F_220223144437721_721910003
Figure F_220223144437816_816188004
Figure F_220223144437909_909946005
为预设参数,
Figure F_220223144437995_995389006
为所述待译码数据的码长。
3.如权利要求2所述的数据交织方法,其特征在于,所述根据每一所述译码器的数据偏移对应的所述交织前数据的序号及所述存储器个数,确定与每一所述译码器的数据偏移对应的目标存储器及在所述目标存储器中的目标存储块的步骤包括:
对于所述目标译码器,根据公式
Figure F_220223144438089_089140007
,得到所述目标译码器的数据偏移对应的目标存储器的序号,其中,f为所述目标译码器的数据偏移对应的目标存储器的序号;
根据公式
Figure F_220223144438158_158509008
,得到所述目标存储器中的目标存储块的偏移,其中,
Figure F_220223144438356_356192009
表示向下取整,r为所述目标存储器中的目标存储块的序号。
4.如权利要求1所述的数据交织方法,其特征在于,所述交织前数据为多个、且按序编号,所述方法还包括:
根据每一所述交织前数据的序号及存储器个数,确定每一所述交织前数据应存储的存储器的序号;
将每一所述交织前数据按照对应的序号存储至对应序号的存储器中。
5.如权利要求4所述的数据交织方法,其特征在于,所述存储器个数为4,所述根据每一所述交织前数据的序号及存储器个数,确定每一所述交织前数据应存储的存储器的序号的步骤包括:
对于任一交织前数据,按照公式
Figure F_220223144438634_634550010
确定所述交织前数据应存储的存储器的序号,其中,
Figure F_220223144438855_855227011
为所述交织前数据的序号,
Figure F_220223144439052_052518012
为所述交织前数据应存储的存储器的序号。
6.一种FPGA,其特征在于,所述FPGA运行有多个译码器,所述FPGA包括处理单元和内部存储单元,所述内部存储单元包括与译码器数量相同的多个存储器,每一所述存储器包括多个存储块,每一时刻每一所述译码器读取一个存储块,所述多个译码器和所述多个存储器均分别按序编号,交织前数据按序编号、并预先存储于所述多个存储器中的多个存储块中;
所述处理单元,用于获取每一所述译码器在当前时刻所需访问的数据在每一所述译码器内部的数据偏移;
所述处理单元,还用于按照预设交织规则,从所述多个存储器中确定与每一所述译码器的数据偏移对应的目标存储器及在所述目标存储器中的目标存储块,其中,任意两个所述译码器在所述当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同;
所述处理单元,还用于按照每一所述译码器的所述目标存储器的目标存储块,访问每一所述译码器与所述数据偏移对应的交织后的数据;
所述处理单元具体用于:
根据每一所述译码器的数据偏移和每一所述译码器的序号,确定与每一所述译码器的数据偏移对应的译码数据序号;
根据每一所述译码器的数据偏移对应的译码数据序号、存储器个数及所述交织前数据的码长,确定每一所述译码器的数据偏移对应的所述交织前数据的序号;
根据每一所述译码器的数据偏移对应的所述交织前数据的序号及所述存储器个数,确定与每一所述译码器的数据偏移对应的目标存储器及在所述目标存储器中的目标存储块。
7.如权利要求6所述的FPGA,其特征在于,所述交织前数据为多个、且按序编号,所述FPGA还用于:
根据每一所述交织前数据的序号及存储器个数,确定每一所述交织前数据应存储的存储器的序号;
将每一所述交织前数据按照对应的序号存储至对应序号的存储器中。
8.如权利要求7所述的FPGA,其特征在于,所述存储器个数为4,所述FPGA具体还用于:
对于任一交织前数据,按照公式
Figure F_220223144439132_132587013
确定所述交织前数据应存储的存储器的序号,其中,
Figure F_220223144439210_210709014
为所述交织前数据的序号,
Figure F_220223144439288_288819015
为所述交织前数据应存储的存储器的序号。
CN202111607838.3A 2021-12-27 2021-12-27 数据交织方法及fpga Active CN113992212B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111607838.3A CN113992212B (zh) 2021-12-27 2021-12-27 数据交织方法及fpga

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111607838.3A CN113992212B (zh) 2021-12-27 2021-12-27 数据交织方法及fpga

Publications (2)

Publication Number Publication Date
CN113992212A CN113992212A (zh) 2022-01-28
CN113992212B true CN113992212B (zh) 2022-03-22

Family

ID=79734423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111607838.3A Active CN113992212B (zh) 2021-12-27 2021-12-27 数据交织方法及fpga

Country Status (1)

Country Link
CN (1) CN113992212B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6971057B1 (en) * 2000-02-25 2005-11-29 Globespanvirata, Inc. System and method for efficient convolutional interleaving/de-interleaving
CN101534130A (zh) * 2009-04-17 2009-09-16 华为技术有限公司 数据交织方法和装置、数据解交织方法和装置以及译码器
CN101707490A (zh) * 2009-09-22 2010-05-12 重庆重邮信科通信技术有限公司 并行Turbo码内交织方法
CN101771422A (zh) * 2009-01-04 2010-07-07 华为技术有限公司 交织方法、编码方法、交织器与编码器
CN104184536A (zh) * 2013-05-21 2014-12-03 华为技术有限公司 基于LTE Turbo译码的子块交织控制方法、装置及设备
US10044369B1 (en) * 2018-03-16 2018-08-07 Centri Technology, Inc. Interleaved codes for dynamic sizeable headers
CN110278000A (zh) * 2019-07-16 2019-09-24 南京中科晶上通信技术有限公司 基于dvb-s2标准的ldpc码并行译码fpga实现架构及译码方法
CN113258940A (zh) * 2021-06-15 2021-08-13 成都星联芯通科技有限公司 turbo译码方法、装置、译码设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101813031B1 (ko) * 2010-04-13 2017-12-28 엘지전자 주식회사 상향링크 신호를 전송하는 방법 및 이를 위한 장치
CN101969310B (zh) * 2010-10-22 2012-11-28 上海交通大学 Turbo码并行译码器的QPP内交织器及其交织方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6971057B1 (en) * 2000-02-25 2005-11-29 Globespanvirata, Inc. System and method for efficient convolutional interleaving/de-interleaving
CN101771422A (zh) * 2009-01-04 2010-07-07 华为技术有限公司 交织方法、编码方法、交织器与编码器
CN101534130A (zh) * 2009-04-17 2009-09-16 华为技术有限公司 数据交织方法和装置、数据解交织方法和装置以及译码器
CN101707490A (zh) * 2009-09-22 2010-05-12 重庆重邮信科通信技术有限公司 并行Turbo码内交织方法
CN104184536A (zh) * 2013-05-21 2014-12-03 华为技术有限公司 基于LTE Turbo译码的子块交织控制方法、装置及设备
US10044369B1 (en) * 2018-03-16 2018-08-07 Centri Technology, Inc. Interleaved codes for dynamic sizeable headers
CN110278000A (zh) * 2019-07-16 2019-09-24 南京中科晶上通信技术有限公司 基于dvb-s2标准的ldpc码并行译码fpga实现架构及译码方法
CN113258940A (zh) * 2021-06-15 2021-08-13 成都星联芯通科技有限公司 turbo译码方法、装置、译码设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Block-Interleaved Error-Resilient Entropy Coding;Yong Fang等;《2007 IEEE International Symposium on Circuits and Systems (ISCAS)》;20070625;全文 *
基于迭代的同频混合信号单通道盲分离/译码算法;廖灿辉等;《通信学报》;20110825;第32卷(第8期);111-117 *

Also Published As

Publication number Publication date
CN113992212A (zh) 2022-01-28

Similar Documents

Publication Publication Date Title
KR100703271B1 (ko) 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치
US7840859B2 (en) Block interleaving with memory table of reduced size
US8010867B2 (en) Error correction code decoding device
US8438434B2 (en) N-way parallel turbo decoder architecture
JP2003500971A (ja) 移動通信システムの直列鎖状コンボルーション符号化器に使用するためのインタリーバ及びそのインタリービング方法
JP4551445B2 (ja) サブ・ブロック・インターリーバおよびデインターリーバを有する多次元ブロック符号器
WO2012083714A1 (zh) Turbo码数据交织处理方法和用于交织turbo码数据的交织器
JP4837645B2 (ja) 誤り訂正符号復号回路
US20140111882A1 (en) Constrained on-the-fly interleaver address generator circuits, systems, and methods
US7761772B2 (en) Using no-refresh DRAM in error correcting code encoder and decoder implementations
TWI422166B (zh) Turbo解碼器裝置及解碼turbo編碼信號的方法
CN100508405C (zh) 提高Turbo码译码速度的并行译码方法及译码装置
US8448033B2 (en) Interleaving/de-interleaving method, soft-in/soft-out decoding method and error correction code encoder and decoder utilizing the same
CN113992212B (zh) 数据交织方法及fpga
US20110087949A1 (en) Reconfigurable turbo interleavers for multiple standards
US20050089121A1 (en) Configurable architectrue and its implementation of viterbi decorder
US7743287B2 (en) Using SAM in error correcting code encoder and decoder implementations
JP2009246474A (ja) ターボデコーダ
JP2006217072A (ja) ターボ復号装置及びターボ復号方法
Briki et al. A design approach dedicated to network-based and conflict-free parallel interleavers
CN109935263B (zh) 非易失性存储器的编译码方法及存储系统
JP2004511179A (ja) 断片的脱インターリーブ
KR101355988B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US9015551B2 (en) Decoding apparatus with de-interleaving efforts distributed to different decoding phases and related decoding method thereof
CN106788465B (zh) 用于涡轮乘积码的装置和方法

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
GR01 Patent grant
GR01 Patent grant