数据交织方法及FPGA与流程

文档序号:28694610发布日期:2022-01-29 12:08阅读:364来源:国知局
数据交织方法及FPGA与流程
数据交织方法及fpga
技术领域
1.本发明涉及译码技术领域,具体而言,涉及一种数据交织方法及fpga。


背景技术:

2.turbo码是在卷积码和迭代思想的基础上发展而来的,交织技术在turbo码中具有非常重要的作用,通过交织技术可以将原始数序列打乱,使交织前后数据序列的相关性减弱,从而大大降低数据访问时出现地址冲突的概率,提高turbo码的可靠性。
3.对于高比特速率传输的通信系统来说,为了降低turbo码译码延迟,提高吞吐量,通常采用并行译码。在并行译码时,数据交织的随机置换更容易引起存储器地址竞争问题,因此也更容易出现地址冲突,如何避免并行译码时数据交织产生地址冲突是本领域技术人员亟待解决的问题。


技术实现要素:

4.本发明提供了一种数据交织方法及fpga,其能够在译码设备的多个译码器并行译码时避免数据交织产生地址冲突。
5.第一方面,本发明提供一种数据交织方法,应用于fpga的处理单元,所述fpga运行有多个译码器,所述fpga还包括内部存储单元,所述内部存储单元包括与译码器数量相同的多个存储器,每一所述存储器包括多个存储块,每一时刻每一所述译码器读取一个存储块,所述方法包括:获取每一所述译码器在当前时刻所需访问的数据在每一所述译码器内部的数据偏移;按照预设交织规则,从所述多个存储器中确定与每一所述译码器的数据偏移对应的目标存储器及在所述目标存储器中的目标存储块,其中,任意两个所述译码器在所述当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同;按照每一所述译码器的所述目标存储器的目标存储块,访问每一所述译码器与所述数据偏移对应的交织后的数据。
6.第二方面,本发明提供一种fpga,所述fpga运行有多个译码器,所述fpga包括处理单元和内部存储单元,所述内部存储单元包括与译码器数量相同的多个存储器,每一所述存储器包括多个存储块,每一时刻每一所述译码器读取一个存储块;所述处理单元,用于获取每一所述译码器在当前时刻所需访问的数据在每一所述译码器内部的数据偏移;所述处理单元,还用于按照预设交织规则,从所述多个存储器中确定与每一所述译码器的数据偏移对应的目标存储器及在所述目标存储器中的目标存储块,其中,任意两个所述译码器在所述当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同;所述处理单元,还用于按照每一所述译码器的所述目标存储器的目标存储块,访问每一所述译码器与所述数据偏移对应的交织后的数据。
7.相对于现有技术,本发明首先获取每一译码器在当前时刻的所需访问的数据在每一译码器内部的数据偏移,然后按照预设交织规则,从多个存储器中确定与每一译码器的数据偏移对应的目标存储器及在目标存储器中的目标存储块,任意两个译码器在当前时刻
的目标存储器及在对应目标存储器中的目标存储块均不同,按照每一译码器的目标存储器的目标存储块,访问每一译码器与数据偏移对应的交织后的数据。通过使任意两个译码器在同一时刻访问不同的目标存储器的不同的目标存储块,避免了多个译码器并行译码时数据交织产生地址冲突。
附图说明
8.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
9.图1为本发明实施例提供的fpga的方框示意图。
10.图2为本发明实施例提供的迭代译码流程示例图。
11.图3为本发明实施例提供的读写内存数据时发生冲突的示例图。
12.图4为本发明实施例提供的一种数据交织方法的流程示例图。
13.图5为本发明实施例提供的交织前数据的存储示例图。
14.图6为本发明实施例提供的另一种数据交织方法的流程示例图。
15.图7为本发明实施例提供的再一种数据交织方法的流程示例图。
16.图8为本发明实施例提供的译码器的数据偏移与目标存储器中的目标存储块的映射过程的示例图。
17.图9为本发明实施例提供的交织前数据的存储示例图。
18.图10为本发明实施例提供的2个译码器并行译码时交织后的读写顺序示例图。
19.图11为本发明实施例提供的4个译码器并行译码时交织后的读写顺序示例图。
20.图12为本发明实施例提供的4个译码器并行译码时处理时序的示例图。
21.图标:10-fpga;11-处理单元;12-内部存储单元。
具体实施方式
22.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
23.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
25.在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元
件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
26.此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
27.需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
28.对于turbo码来说,最常用的译码方式是迭代译码,fpga上通常运行有迭代译码器,先对turbo的一个子码译码,再把该迭代译码器的输出结果送到另一个迭代译码器的输入端,进行第二个子码译码,然后把第二个迭代译码器的输出结果再送到第一个迭代译码器的输入端,如此反复迭代,直到达到一定的迭代次数。虽然上述迭代流程中出现两个迭代译码器:第一迭代译码器和第二迭代译码器,事实上,在物理层面,这两个迭代译码器可以用同一个硬件结构完成,第i次迭代译码时,第一迭代译码器和第二迭代译码器串行执行,第一迭代译码器先执行,第二迭代译码器后执行,然后是第i+1次迭代译码,同样地,第一迭代译码器和第二迭代译码器串行执行,第一迭代译码器先执行,第二迭代译码器后执行。
29.迭代译码器可以包括多个并行译码的子译码器,多个子译码器并行译码的处理过程可以概述为:将待译码数据分成多个数据块,将每一数据块采用一个子译码器进行译码,得到每一数据块的译码结果,最后再将所有数据块的译码结果进行组合,得到最终的译码结果。
30.请参照图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允许无限次的编程。
31.fpga10包括处理单元11和内部存储单元12,内部存储单元12包括多个存储器。每一存储器中还存在一个包括多个按序存储的存储块,fpga10上运行有多个译码器,译码器的数量和存储器的个数相同,该译码器可以是前述迭代译码器中的子译码器,每一个译码器按照预设顺序读写对应的存储块,任意两个子译码器在当前时刻读写存储块的存储序号不同。
32.存储器12是内置于fpga10中的存储装置。
33.为了更清楚地说明上述译码的处理过程,本发明实施例还提供了一种迭代译码流程示例图,请参照图2,图2为本发明实施例提供的迭代译码流程示例图,图2中,迭代译码器1和迭代译码器2在物理层面是同一个硬件结构,为了方便描述,图2中将其示例为两个独立的迭代译码器。校验信息1、原信息和先验概率信息作为迭代译码器1的输入,其中,先验信息2为迭代译码器2输出的外信息2解交织后得到,迭代译码器1输出的外信息1交织后得到先验信息,先验信息、交织后的原信息及校验信息2为迭代译码器2的输入。对于每一迭代译
码器的每一输入数据而言,每一输入数据均先进行数据分段,将分段后的数据同时输入多个子译码器进行并行译码,再将多个子译码器的译码结果进行组合,最终得到每一迭代译码器的输出。
34.一般情况下,数据交织时可以采用的交织方式有多种,每一种交织方式也称为交织器,按照交织器的交织形式,交织器可以分为分组交织器、随机交织器、对称交织、线性同余交织等。分组交织器结构简单,但因为其随机化程度不够理想,而且收尾性能很差,整体性能一般,典型的分组交织器有行列交织器,螺旋交织器等。随机交织器随机化很高,整体性能也比较理想,但交织器结构复杂,只能采用存储表的形式解交织,一般有伪随机交织器和s随机交织器。
35.线性同余交织器中比较典型的有arp交织和drp交织算法。以dvb-rcs2的turbo码的arp交织器为例,该arp交织器的交织规则能够实现多个连续数据同时读取和写入并行,但是不能实现turbo码译码过程中,前向递推或者反向递推过程并行。
36.有鉴于此,本发明实施例提供一种数据交织方法及fpga,以实现并行译码过程中数据既能并行读取和写入,又不会产生地址冲突,下面将对其进行详细描述。
37.由于存储资源有限,迭代译码器1读取原信息和迭代译码器2读取的交织后的原信息在内部存储单元12中只存储一份。迭代译码器1输出的外信息1、迭代译码器2获得的先验信息、迭代译码器2输出的外信息2和迭代译码器1获得的先验概率信息在内部存储单元12中只存储一份。由此可以在不增加额外存储资源的情况下实现并行译码,既保证了多个子译码器同时工作,进而保证译码误码率性能。
38.在并行译码过程中,避免多个子译码器同时读取同一个存储器的相同存储位置,避免存储区域访问冲突是实现并行译码的关键。假设将一个待译码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中读数据。
39.避免内存冲突是并行化译码设计的关键,假设在某一个时刻,同时计算个数据段中的同一位置的数据,对应原始数据段中第, ,,

,的数据(相隔一个长度,每一个数据段对应一个子译码器),保证任意两个子译码器并行访问时无地址冲突,无访问冲突的并行交织和解交织的交织器的数学条件是:,其中,表示数据在子译码器内的偏移;,表示第个子译码器;,表示第个子译码器,并且;表示交织器,和表示交织前的存储位置。
40.本发明实施例基于上述无访问冲突的数学条件,提供了一种数据交织方法,为了
便于理解,本发明实施例先描述数据存储方式,然后再描述基于该数据存储方式对数据进行存储后,对数据进行读取的实现方式。
41.在本实施例中,为了充分利用多个存储器,需要将待存储数据分散存储于各存储器中,并保证多个子译码器同时访问多个存储器时不会出现冲突,请参照图4,图4为本发明实施例提供的一种数据交织方法的流程示例图,该方法以4个存储器为例说明存储数据具体实现方式,该方法包括以下步骤:步骤s100,根据每一交织前数据的序号及存储器个数,确定每一交织前数据应存储的存储器的序号。
42.在本实施例中,当对原数据进行交织时,交织前数据就是原数据,当对外信息进行交织时,交织前数据就是外信息。
43.在本实施例中,交织前数据为多个、且按序编号,对于任一交织前数据而言,将多个交织前数据按序排列,根据排列的先后顺序为每一个交织前数据设置一个对应的序号,例如,多个交织前数据按序排列为:a1、a2、a3,则a1的序号为0,a2的序号为1,a3的序号为2。
44.在本实施例中,将多个存储器按序编号,每一存储器对应一个唯一序号,作为一种具体实现方式,对于任一交织前数据,按照公式确定交织前数据应存储的存储器的序号,其中,为交织前数据的序号,为交织前数据应存储的存储器的序号。
45.作为另一种具体实施例,交织前数据应存储的存储器的序号还可以采用如下方式确定:存储器的序号为0、1、2、3,对于目标待存储数据的序号x而言,上述公式还可以表示为:,其中,为所述数量,为待存储数据的个数,x为目标待存储数据的序号,0、1、2、3为目标存储器的序号。
46.步骤s110,将每一交织前数据按照对应的序号存储至对应序号的存储器中。
47.为了更清楚地说明交织前数据的存储过程,请参照图5,图5为本发明实施例提供的交织前数据的存储示例图,图5中,交织前数据共56个,并按序编号0~55,其中i为交织前数据的编号,fpga中存储器的个数为4,分别为内存0~内存3,y为内存的编号,c为arp周期,取值4,r为交织前数据在各自内存中的数据偏移。
48.本发明实施例提供的上述方法,可以将数据分散存储于多个存储器中,保证了存储器的并发访问,提高了译码的吞吐量,减小了译码的时延,并且,当存储器的数据增加时,可以对应扩展并行度,设计简单,具有较强的实用性。
49.基于按照上述方法对数据进行存储后,本发明实施例还提供了一种访问交织后的数据的方式,请参照图6,图6为本发明实施例提供的另一种数据交织方法的流程示例图,该方法包括以下步骤:步骤s120,获取每一译码器在当前时刻所需访问的数据在每一译码器内部的数据偏移。
50.在本实施例中,数据偏移为每一译码器在当前时刻所需访问的数据在该译码器内部的偏移,例如,时刻t需访问译码器a的第0个数据,则此时的数据偏移为0,时刻t+1需访问译码器a的第1个数据,则此时的数据偏移为1。
51.步骤s130,按照预设交织规则,从多个存储器中确定与每一译码器的数据偏移对应的目标存储器及在目标存储器中的目标存储块,其中,任意两个译码器在当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同。
52.在本实施例中,存储器包括多个按序存储的存储块,每一时刻每一译码器读取一个存储块,任意两个译码器在当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同,即任意两个译码器在当前时刻读取的是不同的存储块。
53.在本实施例中,数据在存储器中存储的位置在交织前后是不变的,但是,在交织前后从存储器中读取的顺序是不同,例如,存储器包括4个存储块:存储块1~存储块4,译码器有4个:a、b、c和d,交织前,a、b、c和d分别读取存储块1、2、3和4,交织后,a、b、c和d分别读取存储块4、1、2和3,在交织前后,存储器中存储的数据是一样的。
54.步骤s140,按照每一译码器的目标存储器的目标存储块,访问每一译码器与数据偏移对应的交织后的数据。
55.在本实施例中,访问每一译码器与数据偏移对应的交织后的数据可以是读取其中的数据,也可以是向其中写入数据,具体看应用场景的需要。
56.本发明实施例提供的上述方法,通过使任意两个译码器在同一时刻按照不同的存储序号、从同一存储器中读取不同的目标存储块,在不增加存储资源的情况下,避免了多个译码器并行译码时数据交织产生地址冲突。
57.在图4和图6的基础上,本发明实施例还提供了一种具体确定目标存储器及目标存储块的实现方式,请参照图7,图7为本发明实施例提供的另一种数据交织方法的流程示例图,步骤s130包括以下子步骤:子步骤s1301,根据每一译码器的数据偏移和每一译码器的序号,确定与每一译码器的数据偏移对应的译码数据序号。
58.在本实施例中,多个译码器和多个存储器均分别按序编号,交织前数据按序编号、并预先存储于多个存储器中的多个存储块中。
59.在本实施例中,译码数据序号为译码器处理数据的序号,标识译码器处理数据的顺序,例如,交织前数据共56个,按序编号0~55,则译码数据序号为0~55。
60.子步骤s1302,根据每一译码器的数据偏移对应的译码数据序号、存储器个数及交织前数据的码长,确定每一译码器的数据偏移对应的交织前数据的序号。
61.在本实施例中,交织前数据的码长指交织前数据的数据长度,由于交织前数据通常是以比特对形式表示,此时,交织前数据的码长可以为交织前数据中比特对的个数。
62.在本实施例中,每一译码器的数据偏移是相对于自身而言的,因此,在当前时刻,每一译码器的数据偏移可以相同,例如,在当前时刻,每一译码器的数据偏移均为5,则表示在当前时刻,每一译码器需读取的数据都是本译码器的第5个数据。
63.在本实施例中,arp交织方式(也称为arp交织器)常被用在咬尾turbo码中,咬尾turbo码与循环码类似,而且简化了设计。如果arp器用在咬尾turbo码中,将引起更小的最小距离,并带来性能损失。因此,在dvb-rcs2中的turbo卷积码被提议设计为咬尾的形式。
64.如果信息长度设为,一个长度下规则置换交织器被定义为:长度下规则置换交织器被定义为:作为交织前的序列位置,是交织器后的相应位置,是信息长度,是一个主要跟有关的数据, 且是奇数。是个常数,是一个比较小的整数(能被整除)叫做循环长度,也叫arp周期,而是长度的一个摆动向量。被定义为:被定义为:和都是长度的向量,周期的被使用。和元素都是的倍数。在dvb-rcs2中取4。
65.arp交织器具有很好的误码性能曲线。对于一个arp交织器的长度和循环长度, 设并行译码。
66.在本实施例中,作为一种具体实现方式,对上述公式进行改进,结合上述无访问冲突的并行交织和解交织的交织器的数学条件,对于任一目标译码器而言,其对应的交织前数据的序号的计算方式可以是:根据目标译码器的数据偏移对应的译码数据序号及待译码数据的码长,按照公式:确定目标译码器的数据偏移对应的交织前数据的序号,其中,i为目标译码器的数据偏移对应的交织前数据的序号,j为目标译码器的数据偏移对应的译码数据序号,、、、为预设参数,为待译码数据的码长。作为一种具体实现方式,上述公式中的 ,,,,。
67.作为另一种具体实现形式,当,并行译码时,交织器公式还可以修改为以下形式:其中,
ꢀꢀꢀꢀ
,为数据长度。
68.若交织前,按照公式
将数据分别存储至四个存储器中,其中是交织之前数据存储的顺序。
69.再将公式简写成以下形式:,其中,为数据长度,,是交织后,数据读写的顺序。交织后读写第个数据时,该数据在原序列中的存储位置。
70.子步骤s1303,根据每一译码器的数据偏移对应的交织前数据的序号及存储器个数,确定与每一译码器的数据偏移对应的目标存储器及在目标存储器中的目标存储块。
71.在本实施例中,以4个存储器为例,确定目标存储器及目标存储块的具体实现方式可以是:首先,对于任一目标译码器而言,根据公式,得到目标译码器的数据偏移对应的目标存储器的序号,其中,f为目标译码器的数据偏移对应的目标存储器的序号,i为目标译码器的数据偏移对应的交织前数据的序号。
72.例如,,存储器包括fpga内存0~ fpga内存3,时:,数据0存储到fpga内存0里面;时:,数据1存储到fpga内存1里面;时:,数据2存储到fpga内存2里面;时:,数据3存储到fpga内存3里面;时:,数据4存储到fpga内存0里面;i为其他值时依次类推,此处不再赘述。
73.其次,根据公式,得到目标存储器中的目标存储块的偏移,其中, i为目标译码器的数据偏移对应的交织前数据的序号,表示向下取整,r为目标存储器中的目标存储块的序号。
74.为了便于理解,本发明实施例以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时刻与之类似。
75.以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和码长及上述公式:确定各译码器的数据偏移对应的交织前数据的序号i,j为5、20、35及50分别对应的i为0、15、54及53;第三,根据i的值利用上述公式和,确定目标存储器及在目标存储器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)。
76.请参照图9~图12,图9~图12为本发明实施例提供用于说明并行译码交织前后读写顺序的示例图,图9为本发明实施例提供的交织前数据的存储示例图,图9中,存储器为fpga内存,交织前数据的长度为56,即交织前数据按照上述存储公式存储于4个内存(fpga内存0~fpga内存3)中。需要说明的是,对于读数据而言,交织前后,数据存储的位置不会发生变化,只是读取顺序在交织前后不同。
77.图10为本发明实施例提供的2个译码器并行译码时交织后的读写顺序示例图。图10中,不同灰度的数据表示存储于不同的内存块,方块中的数字代表数据在原序列中的位置,方块外的数字被分为两类:非斜体数字代表被译码器1处理,斜体数字代表被译码器2处理,数据大小代表被处理的时间,保证了两个译码器访问内存时,不会产生冲突。
78.图11为本发明实施例提供的4个译码器并行译码时交织后的读写顺序示例图。图11中,不同灰度的数据表示存储于不同的内存块,方块外的数字根据被分为四类:正常字体0~14代表被译码器0处理、斜体字体0~14代表被译码器1处理,加下划线字体0~14代表被译码器2处理,加粗字体0~14代表被译码器3处理,以上的处理结构能够保证四个译码器同时运行,对数据的读写不冲突。
79.为了更清楚地说明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)。
80.由图10~图12可以看出,每一译码器在相同的时刻读取的是不同内存的不同位置,从而保证了多个译码器同时运行,对数据的读写不冲突。
81.图9~图12中交织后的目标存储器及目标存储块的确定过程可以是:当时,;当时,;当时,;当时,;其中,,,,,,,j为目标译码器的数据偏移对应的译码数据序号,i为目标译码器的数据偏移对应的交织前数据的序号。
82.将上述参数的取值代入以上的公式中得到以下的方程式:当时,(1)当时,(2)当时,(3)当时,(4)以上的方程式等价于当时,设,则:(5)当时,设,则:(6)当时,设,则:(7)当时,设,则:(8)其中。
83.以上的(5)、(6)、(7)、(8)四个公式中的i对4求余得:公式(5)时,(9)公式(6)时,(10)公式(7)时,(11)公式(8)时,(12)由以上的推导可知,所有j满足的数据,用本发明实施例中的数据交织方法交织计算出来的i,满足;所有j满足的数据,用本发明实施例中的数据交织方法交织计算出来的i,满足;
所有j满足的数据,用本发明实施例中的数据交织方法交织计算出来的i,满足;所有j满足的数据,用本发明实施例中的数据交织方法交织计算出来的i,满足;以上的j和i一一对应,并保持以4为周期,循环出现。
84.图9~图12的译码时序满足以下条件:(1)译码器的数量和存储器的数量一致;(2)原数据在内存中的存储顺序按照图 9保存;(3)每个译码器的j起始位置满足不同;(4)每一个译码器的译码顺序j是一段连续的数据;i是交织由交织公式:唯一确定。
85.满足以上条件的前提下,就能保证4个译码器访问4个fpga内存时,不冲突。
86.需要说明的是,数据的交织和解交织互为逆过程,本领域技术人员完全可以根据本发明实施例上述描述的交织实现方式得到对应的解交织实现方式,本发明实施例不再赘述解交织的具体实现过程。
87.综上所述,本发明实施例提供了一种数据交织方法及fpga,应用于fpga的处理单元,fpga运行有多个译码器, fpga还包括内部存储单元,内部存储单元包括与译码器数量相同的多个存储器,每一存储器包括多个存储块,每一时刻每一译码器读取一个存储块,所述方法包括:获取每一译码器在当前时刻所需访问的数据在每一译码器内部的数据偏移;按照预设交织规则,从多个存储器中确定与每一译码器的数据偏移对应的目标存储器及在目标存储器中的目标存储块,其中,任意两个译码器在当前时刻的目标存储器及在对应目标存储器中的目标存储块均不同;按照每一译码器的目标存储器的目标存储块,访问每一译码器与数据偏移对应的交织后的数据。相对于现有技术,本发明实施例通过使任意两个译码器在同一时刻访问不同的目标存储器的不同的目标存储块,避免了多个译码器并行译码时数据交织产生地址冲突。
88.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1