用于解码器的数据重排的制作方法

文档序号:6596418阅读:239来源:国知局
专利名称:用于解码器的数据重排的制作方法
技术领域
概括地说,本发明涉及接收器中的数据排列。更具体地,本发明涉及用于移动通信网络的接收器中采用的turbo解码器的数据重排。
背景技术
在无线的无线电通信系统中,通信链路包括发送器、接收器和连接这两者的传播信道。传播信道并非理想的,因为他引起对所发送的信号的干扰,这导致收到的数据被破坏,这影响了接收器的检测和输出正确数据位/符号(symbol)的性能。为此,在发送器和接收器中使用各种方法。其中之一是使用信道纠错码。将纠错用作发送器的信道编码,以及接收器的解码。编码的目的是以受控方式向所发送的数据添加冗余。通常,这表示,在η 位中发送m个信息位,由此生成m/n的码率。增加的冗余可以是例如奇偶校验信息。奇偶校验位通知了在收到的数据中应该有多少是“1”的位。实践中,信道编码增加了信号空间中所发送的符号之间的距离。纠错码的一个实例是turbo码,这需要在发送器和接收器中分别采用turbo编码器和turbo解码器。如图IA所示,编码器140利用两个相同的卷积编码器106和110,他们经由并行级联而联接在一起并通过交织器108分离。示例性方案中,图IB中示出的turbo 解码器150还包括两个解码器116和120,他们经由串行级联而联接在一起并通过交织器 118分离。第一解码器116输出所发送的位的软判决,第二解码器120生成硬判决130,即所发送的位。解码器150还应用反馈环路112用于重复解码过程,以提高硬判决130的可靠性。turbo解码器150的缺陷是其高复杂性和高延迟,这包括由第一解码器116、第二解码器120生成的延迟以及输入数据被馈送至解码器150的方式。S卩,解码器150要求数据被按照特定的顺序馈送。这不是微不足道的操作,而且引起操作中的延迟。然而,对于许多应用来说,最小化延迟的操作是关键的,以提供足够的数据吞吐量。为此,需要降低解码过程所需的延迟的方案。

发明内容
本发明的目的在于提供一种用于解码器的数据排列的方案。根据本发明的一个方面,提供了一种如权利要求1所述的方法。根据本发明的一个方面,提供了一种如权利要求13和25中所述的设备。根据本发明的一个方面,提供了一种如权利要求沈中所述的计算机程序产品。本发明的实施例在从属权利要求中有所限定。


下文中,将参照实施例和附图详细描述本发明,其中图IA呈现turbo编码器;
图IB呈现turbo解码器;图2示出根据一个实施例的用于重排数据的设备;图3A示出根据一个实施例的格子图;图;3B呈现了根据一个实施例的临时寄存器;图4示出根据一个实施例的存储器;图5示出根据一个实施例用于重排数据的方法;以及图6示出根据一个实施例用于重排数据的方法。
具体实施例方式以下实施例是示例性的。尽管说明书可能在文本的一些位置引用了 “一”、“一个” 或“一些”实施例,但是这未必表示每个引用都针对相同的一(多)个实施例,或者特定的特征仅适用于单个实施例。不同实施例的多个单个特征也可以被合并,以提供其他实施例。尽管基于第三代合作伙伴计划(3GPP)的长期演进(LTE)或LTE-高级(LTE-A)描述了本发明,但是本发明也可适用于任意其他无线移动通信系统。例如,所述实施例可应用于UMTS或全球移动通信系统(GSM)。电信通信系统可具有向订户终端提供无线业务的固定架构。图IA示出根据一个实施例的turbo编码器140。如上所述,编码器140包括联接在一起但是被交织器108分开的两个卷积编码器106和110。交织器108用于对通常发生在脉冲中的差错进行随机化。在没有交织器108的情况下,接收到的数据的某个部分可能遭受无法恢复的严重差错。交织器108改变被发送的位的顺序,从而尽管可能在脉冲中发生差错,但是在接收器进行去交织之后,被破坏的位可能不是彼此相邻而是分散在所接收的数据上,在这种情况下纠正差错是可能的。图IA的编码器140输出3个位块没有任何修改的数据子块100、奇偶位(parity bits)的第一子块102和奇偶位的第二子块104。因此,图IA的编码器140的码率是1/3。 从3个子块形成的输出可被称为码块。码块可以是具有某个特定长度的字符串,其经过编码并被发送给接收器。没有任何修改的数据100也可被称为码块的系统部分。编码器106 和110可以是例如8状态编码器,每个都具有3个存储器寄存器。这里没有示出编码器106 和110的详细结构。由于如图IA所示的编码器140是有限状态机,所以编码器140的功能可通过格子图示出。格子图示出当存储器寄存器包含某个开始点时可生成的所有可能状态。格子图的使用是经过证明的,因为并非所有的转换都是可行的。例如,假设具有Ivk1和1 的3个存储器寄存器的卷积编码器在寄存器Ivk1和1 中分别包含位“1”、“1”和“0”(状态“110”)。 以输入位(寄存器1 的输入中)为基础,在下一轮编码器的寄存器Ivk1和1 可转换成状态“011”或状态“111”。其他状态(例如“110”或“100”)是不可行的。解码算法也利用这个思想如果接收的序列不适合格子图中的某些路径,则它被伴有误差地接收。因此,应该选择适合该图的最近的正确路径。在系统数据100全部被馈送至卷积编码器106和110之后,可将每个编码器的最后1位寄存器的最后内容向回反馈给编码器的输入端。可对与编码器长度(寄存器的数目)相等的多个时钟周期重复该过程。这个过程被称为格子终止,并得到编码器寄存器中的全0模式。它还产生了被称为尾部位的多个附加编码器输出。尾部位可按某些约定的顺序(例如在剩余位之后)被附加至数据位100、102和104,并与剩余位一起发送。图IB中所示的turbo解码器150典型地还包括数据插入模块或数据加载器114, 其为从混合自动重发请求(HARQ)接收数据120并按适当方式将数据重排到turbo核心存储器的功能块。数据120可包括数据的子块100、奇偶位的第一子块102和奇偶位的第二子块104。也就是说,其可在对数据120进行重排之后,经由数据输入线路122向turbo解码器150馈送子块100、102和104。根据LTE turbo解码算法,在每个周期,turbo解码器150应该接收与8个格子列, 即,在格子的“左手边”的4列以及它们在格子的“右手边”的“镜像”,对应的数据。然而, 数据120从HARQ串行地到达;因此,对数据加载器114的第一要求是,按照能够通过解码算法被容易地使用的方式对数据进行重排。由于解码器150的需求,数据加载器114不能简单地将待解码的数据120写入到空的存储器字并随后以逐个存储器槽为基础将数据从存储器读出并馈送到解码器150。根据一个实施例,需要数据加载器114的解码器结构可能存在于需要对输入数据进行解码的任何设备中。例如,数据加载器114可能在基站中、演进节点B(eNB)中、无线电网络控制器(RNC)中、用户终端中、掌上计算机中、移动电话中。图2中示出能够将数据重排到解码器的设备的非常笼统的架构的实例。图2仅示出理解根据本发明的实施例的设备所需的元件和功能性实体。为了简化的原因,省略了其他组件。元件和功能性实体的实现方式可能与图2所示的不同。图2中所示的连接是逻辑连接,而实际物理连接可能是不同的。本领域技术人员清楚,该设备还可包括其他功能和结构。用于对数据进行重排的图2的设备(也可被称为数据加载器)可包括处理器200。 处理器200可被实现为配备有嵌入在计算机可读介质上的合适软件、或配备有单独的逻辑电路(例如专用集成电路(ASIC))的单独数字信号处理器。处理器200可包括用于提供通信功能的接口,例如计算机端口。图2的设备的功能可被有效地分成两个部分,第一部分从HARQ接收数据并将它们写入存储器,并且第二部分在预定数目的时钟周期的时间段之后同时读取存储器,并将数据馈送至设计的剩余部分。让我们更深入地讨论这些部分。该设备还可以进一步包括分别用于输入和输出数据201或211的接口 202和212。 根据一个实施例,从HARQ缓冲器接收数据201。因此,接口 202可以简单地是用于提供通信功能的计算机端口。类似地,接口 212可以简单地是用于提供通信功能的计算机端口。接口 212可将数据211馈送至设计的其余部分,例如解码器。尽管图2示出两个接口 202和 212,但是该设备可以仅包括用于在处理器200的控制下执行数据的输入和输出的一个接口。然而,为了简明,让我们假设存在两个接口 202和212。根据一个实施例,接口 202在预定数目的时钟周期上接收至少一个数据采样201。 所述至少一个数据采样201可包括以下内容的至少一个至少一个系统位和至少一个奇偶位。换句话说,至少一个数据采样可包括系统数据的子块、奇偶位的第一子块和奇偶位的第二子块。从现在开始,让我们将数据的子块称为软位。一个软位可包括不同数目的位,例如 4位、5位或6位。也就是说,这种情况下,软位的宽度(Sw)可以分别是4、5或6位。
可在每个时钟周期接收软位,包括例如系统软位、第一奇偶软位(parity softbit)和第二奇偶软位。然而,如果需要,接口 202还可在每个时钟周期接收其他信息。 为了描述的简明,让我们假设数据加载器在每个时钟周期只接收上述3个软位。3个软位可对应于格子图的一列。也就是说,图2的设备可每个时钟周期都接收与一个格子列对应的数据。根据一个实施例,接口 202在预定数目的时钟周期上接收至少一个数据采样。为了描述的简明,让我们假设预定量的时钟周期为4。因此,数据加载器在4个时钟周期的时间段内收到12个软位,在4个时钟周期的每个时钟周期都接收3个软位。换句话说,数据加载器从4个邻近格子列收集系统软位、第一奇偶软位和第二奇偶软位,因此得到3X4 = 12个软位。根据一个实施例,数据加载器向临时寄存器存储在预定数目减1个时钟周期上接收的至少一个数据采样。也就是说,如果预定数目的时钟周期为4,则向临时寄存器存储在 3个时钟周期上接收的数据。假设,HARQ每周期提供3个软位(系统软位、第一奇偶和第二奇偶软位),则需要大小为3 ^ 3 ^ Sw = 9 ^ Sw的临时缓冲器/寄存器。图;3B中示出这个类型的寄存器204。图2中也示出该寄存器。图3A示出格子图,其具有用参考标号301至332标记的32列。参看图3A和!3B, 根据一个实施例,在第一时钟周期,数据加载器从格子图的第一列301接收至少一个数据采样(例如3个软位),并将收到的3个软位存储到图;3B的寄存器204中。从HARQ 350接收数据,并且去多路复用器352分出数据存储在寄存器槽361至369中的哪个/些。在第一时钟周期上,接收到的3个软位可被存储在例如寄存器槽361至363中。然而,数据还可存储在其他寄存器槽中,例如367至369,或3个任意选择的槽中。在下一时钟周期,接收来自格子列302的3个软位,并临时存储在寄存器槽364至366中。在第三时钟周期期间,寄存器槽367至369可被来自第三格子列303的软位占用。这样,寄存器204将在3个时钟周期期间收到的9个软位组在一起。周期可以是例如连续的时钟周期。图2的数据加载器的处理器200在每预定数目的时钟周期的最后时钟周期将接收到的至少一个数据采样写到包括一个或多个存储器槽的存储器228,从而按地址的升序填充预定的一个或多个存储器槽的多个第一部分,并且在预定的一个或多个存储器槽就第一部分被填充之后,按地址的降序填充预定的一个或多个存储器槽的多个第二部分,其中存储器槽的一部分存储在预定数目的时钟周期接收的至少一个数据采样。此外,一旦至少一个存储器槽的第一部分和第二部分被写入,处理器200还按地址的降序从预定的一个或多个存储器槽读取所写入的数据采样,其中读取发生在没有向存储器2 写入数据的时钟周期内。图4中示出存储器228。存储器2 可以是任意大小(任意数目的槽/字)。此外,存储器2 可以是具有位写入使能功能的任意类型的标准随机存取存储器(RAM)。根据一个实施例,存储器只具有在输入和/或输出数据中对其进行访问的一个端口。换句话说, 处理器200可经由单个端口访问用于输入和/或输出数据的存储器。根据一个实施例,存储器228的一个实现方式是,将存储器位宽度设置为
Sw,其中Sw是软位的宽度。这样的存储器宽度允许在一个存储器字中与8个格子列相关的软位的存储,假设每个格子列提供3个软位(例如系统软位、第一奇偶软位和第二奇偶软位)。换句话说,一个存储器槽(包括第一部分A和第二部分B)具有3 * 8 * Sw位的宽度。存储器2 包括一个或多个存储器槽401至415,每个槽都具有2个部分,第一部分A和第二部分B。根据一个实施例,第一部分A是存储器槽的最低有效的那一半,第二部分B是存储器槽的最高有效的那一半。存储器槽401至415的一部分可容纳在预定数目的时钟周期上接收的至少一个数据采样。也就是说,例如,12个软位。然而,如果需要,一部分甚至可存储更多数据。用地址来标识存储器槽401至415。图4中,存储器槽的地址增加,从而存储器槽 401的地址低于存储器槽402的地址,以此类推。因此,根据图4的示例性存储器,存储器 228的最低地址属于存储器槽401,而最高地址属于存储器槽415。根据一个实施例,在预定数目的时钟周期上接收的至少一个数据采样对应于码块的一部分。码块可以是需要在解码器处被解码的一定数目的位/软位。可基于码块大小的信息来确定要写入的预定的一个或多个存储器槽。可从设计的软件配置部分获得码块大小 N的信息。使用N,处理器200可计算所需的存储器槽和它们的地址,以及将从HARQ接收的与当前码块相关的软位的总数。例如,码块大小N对应于32格子列(如图3A的情况),则为码块预留的预定的一个或多个存储器槽包括4个存储器槽,假设一个存储器槽可占据与 8个格子列对应的软位。因此,例如,可使用存储器槽402至405来占据与码块对应的数据。 于是,存储器槽412至415可用于与下一相邻码块对应的数据。根据一个实施例,存储器槽 401至411用于稍后将描述的其他目的。参看图2和4,根据一个实施例,在寄存器204中存储在预定数目的时钟周期的3 个时钟周期接收的9个软位,并接收到在预定数目的周期的最后时钟周期(第四时钟周期) 的另外3个软位(对应于图3A的格子列304)之后,处理器200将存储的/缓存的内容(9 个软位)与新接收的软位的三元组一起写到存储器228的存储器槽402的第一部分A。也就是说,在预定数目的时钟周期的最后时钟周期(第四时钟周期),向存储器槽402A总共写入12个软位。在下一次访问存储器之前,允许经过预定数目的时钟周期,以允许与下4个格子列对应的另外12个软位的接收(9个在寄存器204中新存储的和3个在当前时钟周期接收的)。对于第二个12个软位的集合,对应的格子列是列305至308。因此,在进行中的预定数目的时钟周期的最后时钟周期,向存储器槽403A写入这12个软位。根据一个实施例,处理器200增加特定存储器槽的地址,直到写操作的数目达到预定阈值T,其中,接收的软位在每预定数目的时钟周期的最后时钟周期被写到该特定存储器槽中。预定阈值T可以是成列的格子图的中点。也就是说,当向存储器的第一部分写入与格子列的一半对应的数据时,达到阈值T。格子列的一半可能是格子列的“左半”。图3A 中,格子列的一半是用参考标号301至316标记的列1至16。参看图4,当正在重排第一码块的数据时,阈值T对应于存储器槽405。也就是说,当写存储器槽405时,停止存储器地址的增加。对于与第二码块对应的数据,阈值T是存储器槽415。换句话说,处理器200在增加数据在其中被写入的地址时持续写入,直到达到格子中点。处理器200可通过使用计数器206来增加地址。这样,处理器200按地址的升序向存储器2 持续写入接收的软位。根据一个实施例,在预定的一个或多个存储器槽401至415就第一部分A被填充之后,按地址的降序填充预定的一个或多个存储器槽401至415的第二部分B。也就是说, 从中点开始,把在预定数目的时钟周期内收集的数据写到存储器槽/字401至415的第二部分B,同时减少用于写入数据的地址。第一次为写入而访问特定存储器槽的第二部分的时间,是写入存储器槽405的第一部分A并接收下一软位集合时的时间。然后,处理器200 向存储器槽405的第二部分B写入接收的软位。向存储器槽405B写入的数据对应于从格子中点开始的下4个格子列。参看图3A,对应的格子列是列17至20(17 = 32/2+1且20 = 32/2+4),用参考标号317至320标记。根据一个实施例,处理器200此时向计数器206通知需要倒计数。换句话说,在达到预定阈值T之后,处理器200减小写入所接收的至少一个数据采样的特定存储器槽401 至415的地址,直到与当前码块对应的数据采样被写入。因此,在经过了下一预定数目的时钟周期之后,处理器200访问存储器槽404B以便写入。这样,处理器200按地址的降序持续向存储器2 写入所接收的软位。结果是实现了必要的重排,其中401至415的一个存储器槽对应于存储到存储器槽402的部分A的从格子左手边(例如列1至4)的4个邻近格子列,以及对应于存储到存储器槽402的部分B的从格子右手边(列四至32,假设格子具有32列)的它们的镜像。 然而,如上所述,存储器2 不是在每个时钟周期都被访问用来写入,而是仅仅每个第4时钟周期被访问用语写入。这留出了用于访问存储器以便读取的时间,而无需在可发生读取之前等待所有数据被接收和写入。向存储器槽401至415的第一部分A写入的过程进行N/8个写操作,其中N是格子图中格子列的数目。这是因为在一个写操作期间,向存储器228的多个第一部分A写入与4个格子列对应的4个软位集合。在N/8个写操作之后,在另一个N/8个写操作期间,向存储器228的多个第二部分B写入与4个镜像的格子列对应的另外4个软位集合。总而言之,这意味着一个存储器槽包含与8个格子列对应的数据。根据一个实施例,处理器200可经由控制线207简单地控制向存储器228的数据写入。存储器2 可经由存储器接口 208来访问,其实现用以访问存储器的“类FIFO”机制。存储器接口 208可从寄存器204接收要写入到存储器228的数据,其操作相对于图3 已经有所描述,并且可从接口 202接收数据。一旦至少一个存储器槽的第一部分A和第二部分B被写入,处理器200可读取至少一个满的存储器槽。实践中,要读取的第一存储器槽是存储器槽405,因为它是其第一 A 和第二B部分被写入的第一个存储器槽。换句话说,从至少一个存储器槽读取所写入的数据采样开始于具有与预定阈值T对应的地址的存储器槽。而且,可以在没有完成与当前码块对应的数据的写入时,开始读取。这是可能的,因为写仅仅占据为码块预留的总时钟周期的一部分。换句话说,当数据没有写到存储器2 时,读取在时钟周期内发生。假设仅仅每个第四周期向存储器228写入数据,则可在没有数据被写入的三个周期内读取数据。也就是说,当为当前码块预留的预定的一个或多个存储器槽401至405的至少一个第二部分B 为空时,数据被读取。根据一个实施例,基于逐个存储器槽读取数据。读取按降序发生。也就是说,在读取存储器槽405之后,接下来读取存储器槽404。 为此,处理器200减小要读取的存储器槽的地址,直到读取了与当前码块对应的数据采样。 处理器200可应用计数器216,用于执行倒计数操作。
根据一个实施例,处理器200可经由控制线217简单地控制从存储器228的对数据的读取。存储器2 可经由存储器接口 218来访问,其实现访问存储器的“类FIFO”机制。当达到预定阈值T时,处理器200知道读取可开始。例如,存储器接口 208通知 401至415的至少一个存储器槽具有写有数据的两个部分(第一部分和第二部分)。可借助于提出的“标志”来进行所述通知,该标志通知从现在开始在可进一步读取和处理的存储器228中存在完整的槽/字。如果在某时刻,所有完整的字都已经被读取,但是还没有接收或写入数据的整个码块,则降低相关的标志,并且读取将停止,直到401至415的存储器槽的另外的第二部分 B被写入,以致至少一个完整存储器字在存储器228中再次准备就绪。这样,在从HARQ收到数据之后,从缓冲存储器2 到解码器的数据传送可非常快地完成,从而turbo解码可开始,而没有由于数据的读取需要单独步骤集合而引起的任何附加延迟。期望在从HARQ接收到最后的数据采样之后仅几个时钟周期就开始turbo解码。因为将数据重排到解码器的需求(其要求中间缓存),所以这在LTE中并非微不足道的任务。根据一个实施例,在从HARQ 收到与当前码块对应的所有数据时,从该时间点经过2或3个时钟周期之后,可完成读取。因此,在从至少一个存储器槽读取了数据采样之后,接口 212将读取的数据采样 201从预定的一个或多个存储器槽转发至设备的其余部分,其可包括例如解码器。在存储软位中不使用为每个码块预留的存储器槽中具有最低地址的多个存储器槽的第一半A。也就是说,图4中,存储器槽401和411的第一部分A保持未使用。然而, 预留存储器槽401和411的第二部分B,用于存储编码器的尾部位。记得,可通过格子图的形式示出编码器,通过在所有信息位被编码之后从编码器寄存器提取尾部位来执行格子终止。由于为尾部位预留的第二部分B和未使用的第一部分A,根据一个实施例,处理器200 向用于与当前码块对应的数据采样的地址中具有第二最低地址(存储器槽402或412)的存储器槽的第一部分A,写入在预定数目的时钟周期最先收到的至少一个数据采样。当接口 202收到与当前码块对应的至少一个尾部数据采样时,处理器200向用于当前码块的地址中具有最低地址(存储器槽401或411)的存储器槽的第二部分B,写入收到的至少一个尾部数据采样。为此,相对于按地址的升序在数据的写入期间执行的N/8个写操作,按地址的降序的写操作将持续N/8+1个写操作。此外,处理器200需要处理码块的连续性接收。具体地,在一个码块的接收之后, 处理器200应该立即能够开始重排来自下一块的数据。因此,当达到预定阈值T并且写入按地址的降序开始时,处理器200记录当前存储器地址D。。根据一个实施例,在收到完整码块并且下一码块开始到来之后,处理器200开始从地址D。+l起填充存储器,因为是从存储器具有空的空间的地址开始的。因此,下一块的接收和重排可继续,不管是否完成了上一个码块的读取。换句话说,处理器知晓当前码块大小/长度,从而一接收到完整块,另一码块的写入可从地址Dc+1 ( = Ν/8+2)开始。因此,根据一个实施例,一旦接口 202收到与新码块对应的至少一个数据采样,处理器200就执行对码块的写入操作,从而写入开始于具有与上一码块中预定阈值T对应的并增加1的地址的存储器槽。此外,一旦存在要读取的完整存储器字/槽,对另一码块的读取从地址2 (Ν/8+1)开始。
当写入操作到达存储器的最高缓冲存储器地址(图4中的存储器槽415)时,其可返回至开始(存储器槽401)并无缝地继续该过程。这将仅在存储器槽401的先前内容已经被读取的情况下才发生。根据一个实施例,在具有最高地址的存储器槽415已被写入之后,处理器200通过从具有最低地址的存储器槽401开始来重用存储器228。图2的设备可包括判决器。判决器220将写和读访问信号收集在一起,并根据特定的存储器供应商的需求将他们压缩到单个存储器接口中。判决器220对写访问给予优先权。也就是说,在尝试写和读访问两者的情况下,随后将进行写访问。判决器220可经由控制线222向处理器200发送读取和写入操作的数目,以通知处理器200关于存储器的状态。这样,处理器200跟踪对于存储器228的写入和读取访问。 判决器220的使用并非强制性的,并且图2的设备可能不包括判决器220。在这样的情况下,处理器200自己获得对存储器228的写入和读取访问的信息。如果不存在判决器220, 则处理器200允许写操作在读操作之上的优先权。计数器206可用于执行进行写入操作所需的正计数或倒计数。换句话说,处理器 200采用具有并行加载能力的计数器206。根据一个实施例,计数器206可执行如下操作在与当前码块对应的存储器地址中的第二最低地址A处初始化计数器206 (因为具有最低地址D1的存储器槽的第一部分A将不被使用)。图:3B的模-4计数器3M通知何时软位的所有4个三元组已被接收。也就是说,执行了 3个存储操作(3X3软位),并且收到第四个三元组。当图:3B的模-4计数器3M指示存在要写入存储器228的数据时,处理器200 (或存储器接口 208)布置写入使能和位写入使能信号,以实现第一部分A写入操作,同时处理器 200命令计数器206正计数,以为下一地址做好准备。在计数器206的内容到达&+N/8 (预定阈值T)之后,处理器200将命令倒计数,同时处理器200(或存储器接口 208)将布置位写入使能信号,从而发生第二部分B写入操作。在计数器206到达对应码块的最低地址D1 之后,处理器200将重新初始化计数器206为A+N/8+1,以为下一码块做准备。读取操作可使用具有并行加载能力的倒计数器216。如先前说明的,可在 D2+N/8( = Ν/8+1)处初始化计数器216。通过“数据准备好”标志,向处理器200 (或存储器接口 218)通知关于存储器228中出现完整的槽/字。还通过“写入访问”标志向其通知是否在进行写入操作。如果在执行写入访问,则将不尝试读取,而是将等待下一空闲周期。假设“数据准备好”和“写入访问,,表明存在完整的字并且它们可被访问,处理器200安排存储器接口 218来执行读取操作。在计数器216提供的地址处进行读取,随后通过处理器200 指示计数器216来倒计数以为下一读取操作做准备。如上所述,根据一个实施例,处理器200将对写入操作和读取操作的数目进行计数,并获得码块大小的信息。基于该信息,处理器200可确定是否进行以下内容的至少一个存在要被读取的满的存储器槽,存储器为满,以及存储器为空。基于确定结果,处理器 200执行以下内容的至少一个如果有的话则控制对满的存储器槽的读取,如果存储器为满则限制接收至少一个数据采样,以及控制对空存储器的通知。换句话说,如果存在要被读取的满的存储器槽,则处理器200控制存储器槽的读取。例如,可提出“数据准备好”标志。此外,如果存储器2 为满并且加载器无法接受来自HARQ的更多数据采样,则处理器可经由控制线203给出溢出指示。然而,如果存储器228 完全为空(意为所有字都已被读取并被进一步传输),处理器200经由控制线205提出特定的“空”标志,这可内部地用于设计的其余部分(等同于由传统FIFO类型存储器提供的 FIFO空标志)。此外,当为了写入而访问存储器228时,处理器200(借助于“写入访问”标志)传输信息,从而不会同时尝试读取访问。处理器200还防止向其内容还没有被读取的存储器槽写入。处理器200可在这个情况下经由控制线203对HARQ提出“溢出”信号,从而HARQ停止发送软位,直到有空的存储器空间(至少一个槽被读取)。处理器200还可执行以下内容的至少一个如果存储器 228正被写入则限制读取存储器228,以及如果存储器2 正被读取则限制向存储器2 写入,以避免冲突。尽管图2示出了 2个存储器接口 208和218,但是如果处理器200直接访问存储器228,则可能不需要它们。尽管大部分描述引用了每个格子列有3个软位并且每个存储器槽能够存储8个格子列的内容的实例,但是如果HARQ例如逐个地而不是在三元组中提供软位,则完全相同的实现原理将适用。这样,图3B的寄存器204将略有不同,并且每12个周期将访问一次存储器以便写入(假设这个实例中存储器槽的一部分也可存储12个软位)。图5示出根据本发明一个实施例的重排数据的方法。该方法在步骤500开始。步骤502中,在预定数目的时钟周期上接收至少一个数据采样。步骤504包括在每个预定数目的时钟周期的最后时钟周期期间,向包括一个或多个存储器槽的存储器写入接收的至少一个数据采样,从而按地址的升序填充预定的一个或多个存储器槽的多个第一部分,以及在所述预定的一个或多个存储器槽就第一部分被填充之后,按地址的降序填充所述预定的一个或多个存储器槽的第二部分,其中存储器槽的一部分存储在预定数目的时钟周期接收的至少一个数据采样。步骤506包括一旦至少一个存储器槽的第一部分和第二部分被写入,按降序从预定的一个或多个存储器槽读取写入的数据采样,其中所述读取发生在没有向存储器写入数据的时钟周期期间。结果是,当例如在数据加载器接收与一个码块对应的数据所用的时间段上监听时,数据的写入和读取并行发生。步骤508中,从所述预定的一个或多个存储器槽转发所读取的数据采样。该方法在步骤510结束。图6示出根据本发明一个实施例的重排数据的方法。该方法在步骤600开始。步骤602中,在预定数目的时钟周期上接收至少一个数据采样。步骤604包括在每个预定数目的时钟周期的最后时钟周期期间,控制向包括一个或多个存储器槽的存储器写入所接收的至少一个数据采样,从而按地址的升序填充预定的一个或多个存储器槽的多个第一部分,以及在所述预定的一个或多个存储器槽就第一部分被填充之后,按地址的降序填充所述预定的一个或多个存储器槽的多个第二部分,其中存储器槽的一部分存储在预定数目的时钟周期上接收的至少一个数据采样。步骤606包括一旦至少一个存储器槽的第一部分和第二部分被写入,控制按降序从预定的一个或多个存储器槽读取所写入的数据采样,其中所述读取发生在没有向存储器写入数据的时钟周期期间。步骤608中,从所述预定的一个或多个存储器槽转发所读取的数据采样。该方法在步骤610结束。本发明的实施例提供许多优点。在数据被读取的同时为当前码块预留的存储器槽中关于第二部分仍然有至少一个空存储器槽意义上的同时的写入和读取,节省了总体操作中的大量时钟周期,而对于缓冲存储器没有施加任何特定需求(即不必是双端口类型)。在实施例中,一个存储器槽占据8个格子列,节省的时钟周期等于N/8个时钟周期,这是在写入和读取没有如上所述并行工作而是顺序工作的情况下所需的时间。此外,通过所提出的方案,在一个时钟周期期间不存在同时读取和写入访问尝试。本方案的另一优点在于,否则将不得不考虑向设计增加额外turbo核心的可能性,以实现LTE所需的吞吐量。这将明显影响空间/成本和功耗。这里所述的技术和方法可通过各种手段实现。例如,这些技术可在硬件(一个或多个设备)、固件(一个或多个设备)、软件(一个或多个模块)、或其组合中实现。对于硬件实现,图2的设备可实现于一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、场可编程门阵列(FPGA)、处理器、控制器、 微控制器、微处理器、被设计为执行这里所述功能的其他电子单元、或其组合中。对于固件或软件,可通过执行这里所述功能的至少一个芯片集(例如过程、功能等)的模块来实现。 软件代码可存储于存储器单元中并通过处理器执行。存储器单元可在处理器中或在处理器外部实现。在后者的情况下,它可经由本领域已知的各种手段通信地耦合至处理器。此外, 这里所述的系统的组件可通过附加组件重排和/或补充,以便于这里所述的各个方面等的实现,并且它们不限于给定附图中阐述的精确配置,这是本领域技术人员可理解的。因此,根据一个实施例,用于执行图2至6的任务的设备包括接口部件,用于在预定数目的时钟周期上接收至少一个数据采样;处理部件,用于在每个预定数目的时钟周期的最后时钟周期期间向包括一个或多个存储器槽的存储器写入所接收的至少一个数据采样,从而按地址的升序填充预定的一个或多个存储器槽的第一部分,以及在所述预定的一个或多个存储器槽就第一部分被填充之后,按地址的降序填充所述预定的一个或多个存储器槽的第二部分,其中存储器槽的一部分存储在预定数目的时钟周期上接收的至少一个数据采样;处理部件,用于一旦至少一个存储器槽的第一部分和第二部分被写入,按降序从预定的一个或多个存储器槽读取所写入的数据采样,其中所述读取发生在没有向存储器写入数据的时钟周期期间;以及接口部件,用于从所述预定的一个或多个存储器槽转发所读取的数据采样。本发明的实施例可作为根据本发明实施例的图2的设备中的计算机程序来实现。 计算机程序包括用于执行计算机处理的指令,该计算机处理用于为解码器提供更有效的数据排列的方案。处理器中实现的计算机程序可执行但不限于图2至6有关的任务。计算机程序可存储于计算机或处理器可读取的计算机程序分布介质上。计算机程序介质可以是例如但不限于,电、磁、光、红外或半导体系统、设备或传输介质。计算机程序介质可包括以下介质的至少一个计算机可读介质、程序存储介质、记录介质、计算机可读存储器、随机存取存储器、可擦除可编程只读存储器、计算机可读软件分布包、计算机可读信号、计算机可读电信信号、计算机可读印刷物质、和计算机可读压缩软件包。尽管根据附图参照实例在上面描述了本发明,但应当明了,本发明不限于此,可在所附权利要求的范围内以若干方式修改。此外,本领域技术人员应当理解,所述实施例可以,但不要求,以各种方式与其他实施例组合。
权利要求
1.一种方法,包括在预定数目的时钟周期上接收至少一个数据采样;在每预定数目的时钟周期的最后时钟周期期间,向包括一个或多个存储器槽的存储器写入所接收的至少一个数据采样,从而按地址的升序填充预定的一个或多个存储器槽的第一部分,以及在所述预定的一个或多个存储器槽就第一部分被填充之后,按地址的降序填充所述预定的一个或多个存储器槽的第二部分,其中存储器槽的一部分存储在预定数目的时钟周期上接收的所述至少一个数据采样;一旦至少一个存储器槽的第一部分和第二部分被写入,按地址的降序从预定的一个或多个存储器槽读取所写入的数据采样,其中所述读取发生在没有向存储器写入数据的时钟周期期间;以及从所述预定的一个或多个存储器槽转发所读取的数据采样。
2.如权利要求1所述的方法,进一步包括在预定数目的时钟周期上接收至少一个数据采样,其中所述至少一个数据采样对应于码块的一部分。
3.如权利要求2所述的方法,进一步包括在每预定数目的时钟周期的最后时钟周期期间,向特定存储器的第一部分写入所接收的至少一个数据采样;增加所述特定存储器槽的地址,直到写入操作的数目达到预定阈值,其中,在每预定数目的时钟周期的最后时钟周期期间所接收的至少一个数据采样被写入所述特定存储器槽; 以及在达到预定阈值之后,减小所述特定存储器槽的地址,直到与所述当前码块对应的数据采样被写入,其中,所接收的至少一个数据采样在每预定数目的时钟周期的最后时钟周期期间被写入到所述特定存储器槽。
4.如权利要求2至3中任一项所述的方法,进一步包括在预定的一个或多个存储器槽的至少一个第二部分为空时,以具有与预定阈值对应的地址的存储器槽为起始从至少一个存储器槽读取所写入的数据采样;以及降低所读取的存储器槽的地址,直到与当前码块对应的数据采样被读取。
5.如权利要求2至4中任一项所述的方法,进一步包括接收与另一码块相关的至少一个数据采样;以及执行对所述码块的写入和读取操作,从而从具有与上一码块中预定阈值对应的并增加 1的地址的存储器槽开始写入。
6.如权利要求2至5中任一项所述的方法,进一步包括向用于与当前码块对应的数据采样的地址中具有第二最低地址的存储器槽的第一部分写入最先接收的至少一个数据采样;接收与当前码块对应的至少一个尾部数据采样;以及向用于当前码块的地址中具有最低地址的存储器槽的第二部分写入所接收的至少一个尾部数据采样。
7.如权利要求1至6中任一项所述的方法,其中所述至少一个数据采样包括以下内容的至少一个至少一个系统位和至少一个奇偶位。
8.如权利要求1至7中任一项所述的方法,其中所述第一部分是存储器槽的最低有效的那一半,以及第二部分是存储器槽的最高有效的那一半。
9.如权利要求1至8中任一项所述的方法,进一步包括在临时寄存器中存储在预定数目减1的时钟周期上接收的至少一个数据采样。
10.如权利要求1至9中任一项所述的方法,进一步包括经由单个端口访问存储器以便输入或输出数据。
11.如权利要求1至10中任一项所述的方法,进一步包括在具有最高地址的存储器槽被写入之后,通过从具有最低地址的存储器槽开始来重用存储器。
12.如权利要求1至11中任一项所述的方法,进一步包括对写入操作和读取操作的数目进行计数;获取码块大小的信息;确定是否发生以下内容的至少一个存在要读取的满存储器槽,存储器为满,以及存储器为空;以及执行以下内容的至少一个如果有的话则控制对满存储器槽的读取,如果存储器为满则限制接收所述至少一个数据采样,以及控制对空存储器的通知。
13.一种设备,包括接口,被配置为在预定数目的时钟周期上接收至少一个数据采样;所述设备进一步包括处理器,被配置为在每预定数目的时钟周期的最后时钟周期期间,向包括一个或多个存储器槽的存储器写入所接收的至少一个数据采样,从而按地址的升序填充预定的一个或多个存储器槽的第一部分,以及在所述预定的一个或多个存储器槽就第一部分被填充之后,按地址的降序填充所述预定的一个或多个存储器槽的第二部分,其中存储器槽的一部分存储在预定数目的时钟周期上接收的所述至少一个数据采样;一旦至少一个存储器槽的第一部分和第二部分被写入,按地址的降序从预定的一个或多个存储器槽读取所写入的数据采样,其中所述读取发生在没有向存储器写入数据的时钟周期期间,以及所述接口进一步被配置为从所述预定的一个或多个存储器槽转发所读取的数据采样。
14.如权利要求13所述的设备,其中,所述至少一个数据采样对应于码块的一部分。
15.如权利要求14所述的设备,其中,所述处理器进一步被配置为在每预定数目的时钟周期的最后时钟周期期间,向特定存储器槽的第一部分写入所接收的至少一个数据采样;增加所述特定存储器槽的地址,直到写入操作的数目达到预定阈值,其中,在每预定数目的时钟周期的最后时钟周期期间,所接收的至少一个数据采样被写入所述特定存储器槽;以及在达到预定阈值之后,减小所述特定存储器槽的地址,直到与当前码块对应的数据采样被写入,其中,所接收的至少一个数据采样在每预定数目的时钟周期的最后时钟周期期间被写入到所述特定存储器槽。
16.如权利要求14至15中任一项所述的设备,其中所述处理器进一步被配置为当预定的一个或多个存储器槽的至少一个第二部分为空时,以具有与预定阈值对应的地址的存储器槽为起始从至少一个存储器槽读取所写入的数据采样;以及降低所读取的存储器槽的地址,直到与当前码块对应的数据采样被读取。
17.如权利要求14至16中任一项所述的设备,其中所述处理器进一步被配置为 接收与另一码块相关的至少一个数据采样;以及执行对所述码块的写入和读取操作,从而从具有与上一码块中预定阈值对应的并增加 1的地址的存储器槽开始写入。
18.如权利要求14至17中任一项所述的设备,其中所述处理器进一步被配置为 向用于与当前码块对应的数据采样的地址中具有第二最低地址的存储器槽的第一部分写入最先接收的至少一个数据采样;以及所述接口进一步被配置为接收与当前码块对应的至少一个尾部数据采样;以及该处理器进一步被配置为 向用于当前码块的地址中具有最低地址的存储器槽的第二部分写入所接收的至少一个尾部数据采样。
19.如权利要求13至18中任一项所述的设备,其中所述至少一个数据采样包括以下内容的至少一个至少一个系统位和至少一个奇偶位。
20.如权利要求13至19中任一项所述的设备,其中所述第一部分是存储器槽的最低有效的那一半,以及第二部分是存储器槽的最高有效的那一半。
21.如权利要求13至20中任一项所述的设备,其中所述处理器进一步被配置为 向临时寄存器存储在预定数目减1的时钟周期上接收的至少一个数据采样。
22.如权利要求13至21中任一项所述的设备,其中所述处理器进一步被配置为 经由单个端口访问存储器以便输入或输出数据。
23.如权利要求13至22中任一项所述的设备,其中所述处理器进一步被配置为在具有最高地址的存储器槽被写入之后,通过从具有最低地址的存储器槽开始来重用存储器。
24.如权利要求13至23中任一项所述的设备,其中所述处理器进一步被配置为 对写入操作和读取操作的数目进行计数;获取码块大小的信息;确定是否发生以下内容的至少一个存在要读取的满存储器槽,存储器为满,以及存储器为空;以及执行以下内容的至少一个如果有则控制对满存储器槽的读取,如果存储器为满则限制接收所述至少一个数据采样,以及控制对空存储器的通知。
25.一种设备,包括接口部件,用于在预定数目的时钟周期上接收至少一个数据采样; 处理部件,用于在每预定数目的时钟周期的最后时钟周期期间,向包括一个或多个存储器槽的存储器写入所接收的至少一个数据采样,从而按地址的升序填充预定的一个或多个存储器槽的第一部分,以及在所述预定的一个或多个存储器槽就第一部分被填充之后, 按地址的降序填充所述预定的一个或多个存储器槽的第二部分,其中存储器槽的一部分存储在预定数目的时钟周期上接收的所述至少一个数据采样;处理部件,用于一旦至少一个存储器槽的第一部分和第二部分被写入,按地址的降序从预定的一个或多个存储器槽读取所写入的数据采样,其中所述读取发生在没有向存储器写入数据的时钟周期期间;以及接口部件,用于从所述预定的一个或多个存储器槽转发所读取的数据采样。
26. 一种计算机程序产品,在计算机可读的分布式介质上并包括程序代码指令,当被加载到设备中时,执行权利要求1至11中任一项所述的方法。
全文摘要
提供了一种用于对到接收器的解码器的数据进行重排的方案。该方案包括接收数据,首先按地址的升序然后按地址的降序,分部分地向一个或多个存储器槽写入数据。该方案还包括按地址的降序读取满存储器槽,并向解码器转发所读取的数据。
文档编号G06F12/02GK102414991SQ200980158889
公开日2012年4月11日 申请日期2009年4月24日 优先权日2009年4月24日
发明者P·欧伊科诺马科斯 申请人:诺基亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1