解码器和解码方法与流程

文档序号:33507436发布日期:2023-03-18 05:01阅读:396来源:国知局
解码器和解码方法与流程
解码器和解码方法
1.相关申请交叉引用
2.本技术要求于2020年7月6日提交的申请号为16/921,282、发明名称为“解码器和解码方法”的美国非临时专利申请的优先权。
技术领域
3.本发明大体上涉及通信网络,尤其涉及解码器和解码方法(例如,用于极化码)。


背景技术:

4.5g标准采用极化码作为增强移动宽带(enhanced mobile broadband,embb)控制信道的信道编码。
5.为了使用极化码对信息进行编码,极化编码器采用传统极化码构造过程来生成极化码字长度为n个比特的极化码字,其中,n是整数。多达k个信息比特放置在极化码字中最可靠的比特位置上,而极化码字中的其余(n

k)个比特具有零值。这些零值比特(也称为“冻结(frozen)”比特)有(n

k)个。这种极化码字的码率r定义为r=k/n。冻结比特相对于信息比特在n个比特的极化码字中的位置限定了极化码构造方法。一个极化码字的这些各种特征可以由“码字类型”表示,“码字类型”是极化码字的特征,取决于极化码字长度、信息比特的数量k和极化码构造方法。
6.在生成极化码字之后,使用n
×
n极化码矩阵对极化码字进行编码,其中,n是极化码字中的比特数。然后,以这种方式生成的编码极化码字通过通信网络发送。
7.当极化解码器接收到编码极化码字时,极化解码器使用n
×
n极化码矩阵(等同于极化编码器原来使用的矩阵)来恢复极化码字。极化解码器还需要码率r和原来用于对极化码字进行编码的极化码构造方法的指示。
8.为了在现代通信网络中使用极化码,极化解码器需要快速对信息进行解码且需要适用于各种应用。极化解码器还需要快速适应不同的码字类型。
9.本领域已知的展开深度流水线极化解码器(unrolled deeply-pipelined polar decoder,udppd)可以处理单一码字类型的码字。udppd在硅片上实现之后就无法修改来处理不同的码字类型。为了对各种码字类型的码字进行解码,需要在硅片中实现传统极化解码器中的互不相同的单独单元。虽然udppd可以实现高吞吐量,但由于它们的硬件很复杂、缺乏灵活性,因此无法在实际通信系统使用。其它目前现有的极化解码器架构也未能克服这些缺点。


技术实现要素:

10.本发明的目的是提供一种解码器和一种解码方法(例如,用于极化码),以克服目前现有极化解码器的缺点。本发明的目的包括提供可适用于各种码字类型的极化解码器。本文中描述的极化解码器相比于传统的展开极化解码器(例如udppd),解码速度更快且能耗更少。
11.根据这一目的,本发明的一方面提供了一种解码器(例如,极化码解码器)。所述解码器包括:码字节点解码流水线,包括三个逻辑单元并且用于:对于每个编码码字节点,接收与编码码字节点对应的一组对数似然比(logarithmic likelihood ratio,llr);接收基于所述编码码字节点的码字节点长度和码字节点类型的值的命令;根据所述命令,调整所述三个逻辑单元以适应所述编码码字节点的解码;对所述一组llr进行解码,以生成与所述编码码字节点对应的解码比特;输出存储器,用于:存储与解码码字中的每个编码码字节点对应的所述解码比特;根据所述解码比特生成所述解码码字。
12.在至少一个实施例中,所述码字节点解码流水线中的所述三个逻辑单元包括:f-g处理单元,用于选择性地将f算术运算或g算术运算应用于所述一组llr,以生成中间llr结果,其中,所述f算术运算和所述g算术运算是根据所述编码码字节点的比特索引选择的;专用解码单元,与所述f-g处理单元连接并且用于:从所述f-g处理单元接收所述中间llr结果;根据所述码字节点类型对所述中间llr结果执行解码逻辑;生成所述编码码字节点对应的所述解码比特;部分和(partial sum,psum)单元,连接到所述专用解码单元并且用于:从所述专用解码单元接收所述编码码字节点对应的所述解码比特;生成psum值。
13.在任一实施例中,所述psum单元还可以用于将所述解码码字节点的所述psum值发送给所述f-g处理单元。
14.在任一实施例中,所述码字节点解码流水线可以是包括其它码字节点解码流水线的一组码字节点解码流水线中的一个码字节点解码流水线,所述解码器还可以包括:高层f-g处理单元,用于:接收其它组llr;从所述psum单元接收用于执行所述g算术运算的一组psum值;对所述其它组llr执行高层f-g树操作;生成中间llr结果;将所述中间llr结果发送给所述其它码字节点解码流水线。
15.在任一实施例中,所述码字节点解码流水线接收到的所述命令还可以基于每个编码码字节点的比特索引。所述解码器还可以包括:程序存储器,用于接收和存储用于生成命令的指令序列。
16.在任一实施例中,所述解码器还可以包括:调度器,用于接收指令序列;通过将命令发送给所述码字节点解码流水线,根据每个编码码字节点的码字节点长度和码字节点类型控制所述码字节点解码流水线的调整。所述调度器还可以用于根据所述码字节点的比特索引控制所述码字节点解码流水线的调整。所述调度器还可以包括:计数器,用于确定所述编码码字中的当前处理的编码码字节点的比特索引。
17.在任一实施例中,所述解码器还可以包括:输入存储器,用于:接收并存储与所述接收到的编码码字对应的多组llr;将所述多组llr中的一组llr发送给所述码字节点解码流水线。所述输入存储器可以用于在每个时钟周期内发送与每个编码码字节点对应的所述一组llr。
18.在至少一个实施例中,所述解码器可以是形成垂直阵列解码器中的极化解码器阵列的多个解码器中的一个解码器,所述一组llr是多组llr中的一组,所述多组llr对应于多个码字中的一个码字,所述垂直阵列解码器还可以包括:解复用器,用于:接收与所述多个码字对应的多组llr;将所述多组llr中的一组llr发送给所述多个解码器中的每个解码器;复用器,用于从所述多个解码器中的每个解码器接收一个解码码字;按顺序生成多个解码码字。
19.根据本发明的另一方面,提供了一种用于极化码解码的方法。所述方法包括:接收与编码码字对应的多组对数似然比(logarithmic likelihood ratio,llr),其中,所述编码码字包括至少一个编码码字节点;对于所述编码码字中的每个编码码字节点,接收与所述编码码字节点对应的一组llr;根据命令调整码字节点解码流水线以适应所述编码码字节点,其中,所述命令基于所述编码码字节点的码字节点长度和码字节点类型的值;所述码字节点解码流水线对与所述编码码字节点对应的所述一组llr进行解码,以生成与所述编码码字节点对应的解码比特;根据从所述码字节点解码流水线接收到的所述解码比特,为所述编码码字中的每个编码码字节点生成解码码字。
20.在至少一个实施例中,所述调整码字节点解码流水线以适应所述编码码字节点还包括:设置在将f运算或g运算应用于所述一组llr时要使用的f-g处理元件和f-g处理层的数量。所述调整码字节点解码流水线以适应所述编码码字节点可以包括:设置在所述码字节点解码流水线中的专用解码单元处要执行的解码逻辑。
21.在至少一个实施例中,所述对所述一组llr进行解码还包括:通过选择性地将f算术运算或g算术运算应用于所述一组llr,确定所述码字节点解码流水线中的f-g处理单元处的中间llr结果。所述对所述一组llr进行解码可以包括:通过将组合逻辑应用于所述中间llr结果,确定所述编码码字节点对应的解码比特。所述对一组所述llr进行解码可以包括:确定所述解码比特的部分和(partial sum,psum)值,并且将所述psum值发送给所述f-g处理单元。
22.在任一实施例中,所述方法还可以包括:在生成所述解码码字之前,存储所述psum值和每个编码码字节点对应的所述解码比特。在至少一个实施例中,所述命令与每个编码码字节点的比特索引有关。
23.本发明的实现方式均包括上述目的和/或方面中的至少一个,但未必包括所有这些目的和/或方面。应当理解,本发明的一些方面是为了试图达到上述目的,但可能并不满足该目的,也可能满足本文未具体阐述的其它目的。
24.通过以下描述、附图和所附权利要求书,可以明显看出本发明实现方式的其它和/或替代性特征、方面和优点。
附图说明
25.结合附图,通过以下具体实施方式,本发明的其它特征和优点将变得显而易见,在附图中:
26.图1(现有技术)示出了编码极化码字的编码;
27.图2是本发明各种实施例提供的圆形流水线极化码解码器(polar code decoder,pcd)的框图;
28.图3是图2中的pcd对一个码字对应的信道对数似然比(logarithmic likelihood ratio,llr)进行处理的时序图;
29.图4示出了本发明各种实施例提供的资源共享解码器(resource sharing decoder,rsd);
30.图5是图4中的rsd对几个码字进行解码的时序图;
31.图6示出了本发明各种实施例提供的垂直阵列解码器(vertical array decoder,
vad);
32.图7是图6中的vad进行操作的时序图;
33.图8是本发明各种实施例提供的对极化码进行解码的方法的流程图。
34.应当理解,在所有附图和对应的描述中,相同的特征由相同的附图标记标识。此外,还应理解,附图和随后的描述仅用于说明目的,并且此类公开内容并不限制权利要求书的范围。
具体实施方式
35.本发明旨在解决当前极化解码器的至少一些缺陷。具体地,本发明描述了一种解码器和一种用于码解码的方法,其中,极化码解码器(本文也称为“极化解码器”)是一个示例,极化码解码是一个示例,从而可以对各种码字速率和码字长度的码字进行解码。解码器(极化码解码器)和本文所述方法的一些实施例可以用于每个硅区域的吞吐量都高的应用。
36.在整个本发明中,术语“码字节点”是指包括几个连续比特的码字的一部分。码字节点中的比特数(称为“码字节点长度”)可以变化。各种码字节点类型可以根据码字节点中的冻结比特数以及冻结比特相对于信息比特在码字节点中的位置来限定。
37.本文中使用的术语“对数似然比”或“llr”是指与码字中的每个比特相关联的多比特数。llr也可以称为极化解码器的“α值”。
38.llr表示比特为“0”或“1”的概率。llr的绝对值大表示传输比特被接收为“1”或“0”的可能性大。llr的符号表示比特极性(解码为“1”或“0”)。当llr的绝对值为“0”时,这表示对应比特的估计值不可靠。当llr的绝对值为无限大时,这表示对应比特的估计值高度可靠。
39.如上所述,术语“码字类型”是指码字的一组特征。这些特征可以包括,例如,由码字中的比特数n限定的码字长度、码字中的信息比特数k和已用于对码字进行编码的极化码构造方法。极化码构造方法由k个信息比特在n个码字比特中的位置决定。
40.本文中描述的极化码解码器可以对各种码字类型的编码码字进行解码。也就是说,本文中描述的极化解码器可以对各种长度、码率和极化码构造方法的编码码字进行解码。
41.由于存在提供给码字节点解码流水线(本文中也称为“流水线”)的指令序列,因此本文中描述的极化码解码器可以适应各种编码码字的解码。该流水线包括三个循环运行的硬件逻辑单元。该流水线中的逻辑单元可以按顺序适应编码码字节点的参数,该流水线中的相同逻辑单元可以按顺序对一个编码码字中的所有码字节点进行解码。
42.提供给流水线的指令序列基于当前正在解码的码字节点的参数,例如,编码码字的码字节点长度和码字节点类型。根据接收到的指令序列,流水线中的逻辑单元可以适应正在解码的每个码字节点。由于三个逻辑单元设置在循环中,因此该流水线可以对编码码字中的任意数量的码字节点进行解码。因此,该流水线可以对各种长度的编码码字进行解码。在一些实施例中,调度器控制该流水线,并且根据指令序列将命令发送给流水线。
43.除了灵活地处理任意码字类型之外,本文中描述的极化解码器还是节能的。与传统的展开极化解码器(例如上述udppd)相比,流水线中循环运行的几个逻辑单元重复用于对不同编码码字节点进行解码,每个解码比特需要的能量少。
44.通过级联本文中描述的极化解码器,如果极化解码器的数量等同于码字解码延迟,则总的组合解码吞吐量等于1个解码码字每时钟周期(cw/cc)。例如,如果一种码字类型的一个码字在64个时钟周期(clock cycle,cc)内进行解码,则包括64个极化解码器的组合系统的吞吐量可以等同于1cw/cc。
45.图1示出了编码极化码字100(本文中也称为“码字100”)的编码。码字100由极化编码器根据信息比特105生成。一组初始信息比特105包括k个比特。极化码字100包括n个比特,其中存在(n

k)个冻结比特120。
46.需要说明的是,n和k是整数。n可以是2的幂,也可以是任何其它整数的幂。其它整数可以等于用于生成大小为n
×
n的极化矩阵的极化核的大小。例如,当n是2的幂时,n=2n,其中,n是整数。例如,n可以是256、512、1024等。
47.使用不同的极化码构造方法将一组初始信息比特105和冻结比特120聚合为极化码字115,如图1所示。然后,使用极化码矩阵对极化码字115进行编码,以生成编码极化码字100。
48.码字100中的每个比特可以使用码字信道llr表示。码字100可以使用码字信道llr序列210表示。
49.编码极化码字100包括码字节点130。每个码字节点从具体的比特索引开始。
50.图2是本发明各种实施例提供的圆形流水线极化码解码器(polar code decoder,pcd)200的框图。
51.pcd 200用于在pcd输入212处接收编码码字100的信道llr 210,并且在pcd输出216处生成解码码字比特214。
52.图2所示的pcd 200包括调度器220和码字节点解码流水线222(本文中也称为“流水线222”)。pcd 200还包括程序存储器224、输入存储器226(本文中也称为“输入存储单元226”)和输出存储器228(本文中也称为“输出存储单元228”)。程序存储器224、输入存储器226和输出存储器228都是用于存储数据的存储元件。输入存储器226和输出存储器228可以是用于临时存储数据的数据缓冲器。
53.上述存储元件可以是,例如,存储器、触发器、锁存器等。程序存储器224可以用于与外部控制器(未示出)进行通信。该外部控制器可以在程序存储器224中添加、删除或替换解码程序232。
54.在处理编码码字之前,将解码程序232加载到程序存储器224中。解码程序232包括指令的一个或多个序列(本文中也称为“指令序列”)。每个指令序列基于正在解码的编码码字中的编码码字节点。具体地,上述指令序列基于编码码字节点的码字节点长度和码字节点类型。
55.在一些实施例中,与一个码字节点对应的每个指令序列可以包括编码码字节点的码字节点长度和码字节点类型。在一些实施例中,上述指令序列可以包括附加信息,例如,码字中码字节点的第一比特的比特索引。换句话说,上述指令序列与码字中每个编码码字节点的比特索引有关。程序存储器224用于存储一个或多个指令序列。
56.还参考图1,每个码字节点130可以包括任意数量的比特。例如,一个码字节点可以包括1个比特或数百个比特。当一个码字节点包括一个以上比特时,该码字节点中的比特会同时进行解码。对一个码字节点中的比特执行的解码类型对应于码字节点类型和码字节点
长度。
57.只要解码程序232中使用的码字长度n等于或小于pcd 200的硬件实现方式支持的最大码字长度,解码程序232就可以适用于任意类型的码字。
58.pcd 200可以用于一次执行一个解码程序232。一个解码程序232对应于码字长度n、码率r和极化码构造方法的特定组合。这种码字长度、码率和极化码构造方法的组合可以有无数种。具体的解码程序232可以用于对长度为n1、码率为r1和码构造方法为c1的第一码字类型的码字进行解码。在一些实施例中,为了对第二长度为n2和第二码率为r2的第二码字类型的码字进行解码,解码程序232可以替换为第二解码程序(未示出)。
59.在一些实施例中,外部存储器(未示出)可以存储各种解码程序232。这种外部存储器可以是,例如,只读存储器(read-only memory,rom)。该外部存储器可以位于pcd 200中。可选地,该外部存储器可以与pcd 200分开,并且可以操作地连接到pcd 200。该外部存储器可以将其中一个解码程序232传送给pcd 200。在pcd 200可以开始对码字进行解码之前,pcd 200可以访问解码程序232或访问关于如何生成解码程序232的数据。
60.在至少一个实施例中,可以在pcd 200对第一码字类型的码字进行解码时为第二码字类型的码字生成新解码程序232。解码程序232可以在软件中(例如,在c码中)生成,并且使用接口传送给专用集成电路(application-specific integrated circuit,asic)。然后,解码程序232可以加载到pcd 200中。应当理解,新解码程序232可以在前一解码程序232还在pcd200处执行时加载。然后,新解码程序232可以替换前一解码程序232。
61.在一些实施例中,解码程序232可以由位于pcd 200外部的专用硬件逻辑在硬件中生成。在这种实现方式中,解码程序232占用程序存储器224的内存和解码程序232提供的指令数量可能受限于程序存储器224的硬件参数。
62.在一些实施例中,pcd 200可以在没有程序存储器224的情况下运行,而且解码程序232的各个指令可以直接从外部存储器(未示出)加载。在这种实施例中,解码程序232的长度可以是无限的。
63.再次参考图2,pcd 200在pcd输入212处接收编码码字对应的信道llr 210。在无线系统中,llr 210可以从解调器模块(未示出)接收。在至少一个实施例中,输入存储器226用于接收并存储信道llr 210。
64.输入存储器226包括一个或多个存储元件,这些存储元件在解码之前存储编码码字对应的信道llr 210。输入存储器226可以包括,例如,寄存器元件。当pcd 200处理不再需要当前llr且可以接收新llr时,输入存储器226可以将“解码器就绪”状态的指示发送给上游模块。这种上游模块可以是,例如,解调器模块。因此,输入存储器226可以请求与新的编码码字100对应的新信道llr序列210。然后,输入存储器226存储编码码字对应的新信道llr 210。
65.llr 210还可以存储在外部存储器中,并且在pcd 200能够接收另一个码字时调度到pcd 200。应当理解,pcd 200之前和之后的数据流可以根据一个或多个应用和系统规格确定。
66.在完成当前编码码字100的解码之后,解码码字比特214由pcd 200生成并从pcd 200发送出去。在一些实施例中,输入存储器226的状态可以设置回“解码器就绪”,而且在完成当前编码码字的解码之后,另一个码字对应的llr 210可以加载到输入存储器226中。
67.在其它实施例中,输入存储器226可以接收新的编码码字对应的llr,并且在当前编码码字100的解码结束之前替换当前码字对应的llr。pcd 200可以在当前编码码字还在进行解码时请求新的编码码字对应的llr。根据比特索引和码字长度,pcd确定存储在输入存储器226中的当前信道llr可以安全地替换为另一个码字对应的llr。
68.流水线222对码字中的码字节点130进行解码。流水线222包括三个硬件逻辑单元242、244、246,分别是f-g处理单元242、专用解码单元244和部分和(partial sum,psum)单元246。硬件逻辑单元242、244、246分别执行流水线222的解码过程中的一个阶段。三阶段流水线222可以由调度器220控制。
69.调度器220是用于读取解码程序232的指令序列并根据该指令序列控制解码流水线222的处理器。调度器220可以包括计数器221。计数器221可以帮助确定编码码字中的即将在当前处理的码字100中处理的码字节点的比特索引。
70.计数器221还可以帮助确定当前码字中的最后一个比特何时完成解码以及何时对下一个码字进行解码。例如,计数器221可以接收pcd 200何时接收到与一个码字100对应的llr210的指示,或者任何其它指示。计数器221可以有助于使流水线222对llr进行解码与将指令序列发送给流水线222同步进行。
71.根据码字中的码字节点的比特索引,调度器220读取指令,并且可以确定如何控制流水线222中的逻辑单元242、244、246。例如,调度器220可以识别每层f-g处理单元242对应的f运算或g运算。调度器220还可以激活专用解码单元244,并且选择其中一种解码方法或指定下文描述的码字节点类型。调度器还可以通过指示计算和存储一组具体的psum值来控制psum单元。
72.上述指令序列可以包括每个码字节点的码字节点长度和码字节点类型。因此,通过使用码字节点的比特索引,调度器220可以通过将命令发送给逻辑单元242、244、246,控制流水线222中的逻辑单元242、244、246适应每个编码码字节点。
73.在一些实施例中,码字节点的比特索引可以由位于流水线222中的一个或多个计数器和/或单元(未示出)确定。如上所述,pcd 200可以使用从程序存储器224或其它地方接收到的指令序列在没有调度器220的情况下运行。在又一个可选实施例中,命令在传送给流水线222时可以包括比特索引。
74.在一些实施例中,码字节点类型标识符可以与llr一起由流水线222接收。然后,码字节点类型标识符可以发送给调度器220,以便指示调度器220从程序存储器224中获取对应指令。
75.在一些实施例中,pcd 200可以在没有程序存储器224的情况下运行,而且调度器220可以生成“即时”命令以根据码字类型和长度对码字节点进行解码。这种实现方式可能需要额外的逻辑元件来识别码字节点类型,并且可能消耗更多能量。
76.流水线222是灵活的,并且可以在每个码字节点的解码过程中通过指令序列进行动态控制。对于每个码字节点,流水线222接收基于码字节点的码字节点长度和码字节点类型的命令。为每个码字节点接收到的命令基于整个码字的指令序列。
77.根据为码字节点接收到的命令和码字节点的比特索引,流水线222适应该码字节点的解码。由流水线222中的逻辑单元242、244、246执行的解码基于码字节点类型、码字节点长度和当前码字中的码字节点的比特索引。
78.流水线222中的逻辑单元242、244、246都可以用于在一个时钟周期内处理数据。流水线222中的每个逻辑单元242、244、246的最大延迟可以是一个时钟周期。对于高吞吐量应用,逻辑单元242、244、246可以在相同的时钟周期内运行。当一些码字节点的解码很快时,这是可能的。例如,可以对包括冻结比特序列的码字节点进行解码以生成全零输出,这样穿过流水线222中的三个逻辑单元242、244、246可能只需要一个时钟周期。
79.f-g处理单元242包括多个f-g处理元件(也称为“f-g处理元件”)。f-g处理单元242运行f-g计算树。
80.f-g计算树包括几个f-g树层(本文中也称为“f-g处理层”)。在对编码码字进行解码时使用的f-g树层的数量取决于编码码字中的比特数。例如,包括16个比特的码字可以对应于pcd 200接收到的16个信道llr。例如,为了对16个信道llr进行解码,可以使用四个f-g树层:f-g树层#3、f-g树层#2、f-g树层#1和f-g树层#0。又如,为了对包括1024个比特的码字进行解码,当接收到1024个信道llr时,可以存在10个f-g树层。从输入存储器226接收llr的f-g树层在本文中称为“最高f-g树层”,而生成中间llr结果的f-g树层在本文中称为“最低f-g树层”。
81.每个f-g树层都包括f-g处理元件。在每个f-g树层中使用的f-g处理元件的数量取决于f-g树层索引。例如,长度为n=1024的码字对应的完整f-g树需要1023个f-g处理元件,其中,最高f-g树层(层#9)上有512个f-g处理元件,最低f-g树层(层#0)上有1个码字处理元件。在每个f-g树层中,如下所述的f运算或g运算由f-g处理元件执行。每个f-g处理元件根据两个llr(或中间llr)、部分和值(仅用于g运算)执行一个f运算或g运算,并且生成一个结果。
82.根据接收到的指令,f-g处理单元242执行f运算或g运算。换句话说,f-g处理单元242根据接收到的指令选择性地执行f算术运算或g算术运算,如下所述。
83.在操作中,f-g处理单元242中的最高f-g树层从输入存储器226同时接收两个信道llr236。其它f-g树层接收中间llr值。例如,f-g处理单元242对应的一个f-g树码字节点可以接收llr#1和llr#2。
84.当在f-g树码字节点处执行f运算时,f-g处理单元242组合两个输入llr,例如llr#1和llr#2。f-g处理单元242生成f运算的llr结果,如下所示:
85.sign(llr#1)*sign(llr#2)*min(|llr#1|,|llr#2|)。(1)
86.f-g处理单元242还从输出存储器228接收部分和(partial sum,psum)值248,如下所述。图2中示出的psum值248可以在f-g处理单元242执行g运算时使用。psum值248可以包括1比特数据。当对新码字中的第一码字节点(即比特索引i=0的码字节点)进行解码时,psum值248设置为“0”。第一码字节点可以根据f运算确定。然后,在第一码字节点的解码之后更新psum值248。
87.当在f-g处理元件处执行g运算时,f-g处理单元242根据从输出存储器228接收到的psum值248组合两个输入llr,例如llr#1和llr#2。g运算的llr结果如下:
88.如果psum比特值=1'b0,llr#2+llr#1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
89.如果psum比特值=1'b1,llr#2

llr#1。
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
90.在至少一个实施例中,pcd 200还包括中间llr存储器(未示出),其用于接收并存储一个或多个f-g树层的中间llr结果。中间llr存储器可以临时存储一个或多个f-g树层的
结果。这样用于一个或多个f-g树层的中间llr存储器可能需要额外的硬件,并且可能增加解码延迟。中间llr存储器可以包括,例如,触发器。
91.专用解码单元244用于根据码字节点类型执行解码逻辑。专用解码单元244执行3阶段流水线222的第二阶段,即“解码阶段”。
92.专用解码单元244执行的解码逻辑包括组合逻辑,并且使用来自f-g树的层#x的中间llr结果,其中,x是:x=log2(码字节点长度)。换句话说,专用解码单元244将组合逻辑应用于从f-g处理单元242接收到的中间llr结果。
93.专用解码单元244可以用于使用本领域已知的简化串行消除(successive cancellation)(即快速ssc)方法进行解码。快速ssc解码码字节点可以是,例如,速率0(r0)、速率1(r1)、重复(rep)、双重复(b-rep)和单比特奇偶校验(single-bit parity check,spc)解码码字节点。
94.在一些实施例中,与快速ssc解码码字节点对应的码字节点类型如下。速率0(r0)对应于冻结比特序列。速率1(r1)对应于信息比特序列。重复(rep)对应于冻结比特后面加上一个信息比特的序列。双重复(b-rep)对应于冻结比特后面加上两个信息比特的序列。单比特奇偶校验(single-bit parity check,spc)对应于一个冻结比特后面加上信息比特的序列。
95.为了进一步降低解码延迟,pcd 200还可以实现自定义解码码字节点逻辑。
96.流水线222接收到的用于专用解码单元244的指令指示需要使用哪一个快速ssc解码码字节点对当前编码码字节点进行解码。专用解码单元244生成解码比特并将它们发送给psum单元246。
97.在流水线222的第三阶段中,psum单元246将n
×
n极化码矩阵应用于从专门解码单元244接收到的解码比特(换句话说,“解码比特估计值”)。psum单元246将先前解码的比特与模2和组合起来并生成psum值248。psum单元246还在本地存储累积的psum结果。如上所述,当执行g运算时,f-g处理单元242可以则使用psum值248。
98.输出存储器228从流水线222接收并存储码字中的码字节点对应的解码比特250。解码比特250累积在输出存储器228中。
99.对于码字长度为n个比特的码字,可以存在n

1个不同的psum值。在这些n

1个不同的psum值之中,n/2个psum值可以用于最高层f-g树中,n/4个psum值可以用于下一层中,依此类推。最低层f-g树可以使用1个psum值执行。
100.在一些实施例中,在码字中的所有码字节点完成解码之后,可以根据psum值248生成解码比特250。可选地,psum值248和解码比特250都可以存储在输出存储器228中。输出存储器228可以包括存储f-g处理单元242的g个算术单元中的每个算术单元对应的psum值248的寄存器。
101.在一些实施例中,输出存储器228可以存储码字中的一组比特对应的psum值248。解码比特250可以为这样一组比特生成,然后也存储在输出存储器228中。
102.在传统的极化解码器(例如udppd)中,udppd流水线的每个阶段都包括处理特定码字节点的专用解码逻辑。一旦udppd的流水线满载,udppd就可以在每个时钟周期内接收、解码和发送一个码字。与码字相关联的数据在每个时钟周期内在udppd流水线内转发。
103.在udppd流水线中转发的数据包括llr、中间结果、psum和先前解码的比特。在
udppd流水线中移动数据可能需要数千个存储元件。此外,在udppd流水线中移动数据会在硬件逻辑中生成导线切换(wire toggling)并增加udppd的功耗。
104.在本文中公开的pcd 200中,llr和psum不需要通过许多逻辑硬件元件。分配的输入存储器226和输出存储器228存储llr、psum和中间结果。这降低了pcd 200的功耗。与传统的极化解码器相比,pcd 200高效地使用和重用流水线222中的相同三个逻辑单元:f-g处理单元242、专用解码单元244和psum单元246。
105.在pcd 200中,流水线222中的解码逻辑单元242、244、246在循环中一遍又一遍地重复对一个码字中的不同码字节点进行解码。提供给流水线222的指令序列使得流水线222及其三个逻辑单元242、244、246适应任意类型的码字节点。在一些实施例中,调度器220可以通过将命令提供给解码逻辑单元242、244、246,根据编码码字中的每个码字节点的长度和类型控制流水线222中的每个逻辑单元。
106.与流水线222处理的一组llr对应的码字节点可以具有不同的码字节点长度和码字节点类型。本文中描述的f-g处理单元242、专用解码单元244和psum单元246适用于每个码字节点的码字节点类型和码字节点长度。也就是说,pcd 200可以使用一个f-g处理单元242、一个专用解码单元244和一个psum单元246来处理码字中的所有各种码字节点。流水线222可以根据pcd 200接收到的码字对应的指令序列适用于码字的任何长度n和任何码字速率r。然后,流水线222根据流水线222针对每个码字节点接收的命令适用于每个码字节点。
107.图3是本发明至少一个非限制性实施例提供的pcd 200处理第一码字对应的信道llr的时序图300。在解码延迟302内对第一码字“cw#0”对应的llr进行解码。在描述图3时,还参考图2。
108.在第一时钟周期311内,pcd 200在其输入212处接收第一码字对应的第一组llr 321,在图3中示为“cw#0llr”。如上所述,调度器220可以接收指定第一编码码字中的码字节点的数量和对应码字节点类型的指令。例如,这些指令可以指示第一编码码字包括x个码字节点:码字节点a、码字节点b
……
码字节点x。
109.通过使用计数器221,调度器220可以确定当前处理的比特的比特索引,并且确定当前处理的码字节点。根据当前处理的码字节点的码字节点类型和码字节点长度,调度器220可以将指令发送给解码流水线222。
110.在第二时钟周期312内,f-g处理单元242对与第一码字cw#0中的码字节点a对应的llr执行f运算或g运算。然后,f-g处理单元242将编码码字节点a的中间llr结果发送给专用解码单元244。
111.在第三时钟周期313内,专用解码单元244根据第一码字cw#0中的码字节点a的类型执行解码码字节点逻辑。然后,专用解码单元244将码字节点a对应的解码比特发送给psum单元246。
112.在第四时钟周期314内,psum单元246为码字节点a生成psum值248。然后,将码字节点a对应的psum值248和解码比特250发送给输出存储器228。输出存储器228接收并存储码字节点a对应的psum值248和解码比特250。输出存储器228还将psum值248发回f-g处理单元242,如上所述。
113.在第五时钟周期315内,f-g处理单元242对与第一码字中的码字节点b对应的第二组llr执行f运算或g运算。在第六时钟周期316内,专用解码单元244处理码字节点b的中间
llr结果。在第七时钟周期317内,psum单元246确定码字节点b的psum值248。
114.第一码字cw#0中的所有码字节点的处理在f-g处理单元224、专用解码单元244和psum单元246形成的循环中按顺序继续进行。每个码字节点的psum值可以存储在输出存储器228中。在处理每个码字节点之后,psum单元246将为先前处理的码字节点确定的psum值248发送给f-g处理单元224。
115.cw#0中的码字节点x是第一个码字中的最后一个码字节点。在时钟周期319内,当f-g处理单元242正在处理cw#0中的码字节点x时,与第二码字cw#1对应的其它组llr可以在pcd输入212处加载到pcd 200中。应当理解,码字可以包括任意数量的码字节点。
116.在一些实施例中,一旦第一编码码字cw#0中的最后一个比特进行解码,就可以加载与第二码字cw#1对应的一组新llr。当与第一编码码字cw#0中的最后一个码字节点(码字节点x)对应的llr正在由专用解码单元244处理时,第二编码码字cw#1的解码可以开始。因此,在时钟周期320和几个后续时钟周期内,pcd 200可以同时处理两个码字cw#0和cw#1。
117.在一些实施例中,在接收第二码字cw#1对应的llr之前,pcd 200可能需要在等待时间350内等待,同时除了编码码字cw#0中的最后一个码字节点x之外的所有码字节点都完成处理。
118.再次参考图2,如上所述,f-g处理单元242执行pcd 200中的f-g计算树的逻辑,因此包括几个f-g树层。当pcd 200处理128比特片段的一个码字时,每128个比特对每个码字应用较高f-g树层(例如,f-g树层#9、f-g树层#8和f-g树层#7,未在图2中示出)。然而,f-g处理单元242包括许多f-g处理元件,它们在较高f-g树层处执行f运算或g运算。例如,f-g树层#9、f-g树层#8和f-g树层#7分别包括512个、256个和128个处理元件。
119.较高f-g树层的共享资源对于使用一个极化解码器处理一个以上码字可能是有用的,如下所述。
120.图4示出了本发明至少一个非限制性实施例提供的资源共享解码器(resource sharing decoder,rsd)400。rsd 400包括上文论述的程序存储器224。
121.rsd 400还包括rsd模块404a、404b、404c、404d。每个rsd模块404a、404b、404c、404d包括资源共享调度器420和资源共享流水线422。rsd 400还包括一组输入存储单元226a、226b、226c、226d和一组输出存储单元228a、228b、228c、228d。在一些实施例中,每个rsd模块404a、404b、404c、404d可以分别包括一个输入存储单元226a、226b、226c、226d和一个输出存储单元228a、228b、228c、228d。
122.每个资源共享流水线422包括三个硬件逻辑单元:低层f-g处理单元442、专用解码单元244和psum单元246。专用解码单元244和psum单元246已经在上文描述。rsd 400还包括高层f-g处理单元443。
123.高层f-g处理单元443和低层f-g处理单元442类似于上述用于pcd 200的f-g处理单元242。高层f-g处理单元443和低层f-g处理单元442包括用于执行几个f-g树层的处理元件。每个f-g树层中的处理元件用于对传入的llr执行f运算或g运算。在高层f-g处理单元443中,较高f-g树层可以在rsd模块404a、404b、404c、404d之间共享以执行f运算或g运算。
124.低层f-g处理单元442位于每个rsd模块404a、404b、404c、404d中。高层f-g处理单元443用于执行高层f-g树操作。低层f-g处理单元442用于执行低层f-g树操作。
125.高层f-g处理单元443用于从输入存储单元226a、226b、226c、226d接收信道llr。将
高层f-g处理单元443生成的中间llr结果发送给位于其中一个rsd模块404a、404b、404c、404d中的其中一个低层f-g处理单元442。
126.应当理解,包括在高层f-g处理单元443中且共享的f-g树层的数量可以变化。在一些实施例中,高层f-g处理单元443可以包括f-g树层#9、f-g树层#8和f-g树层#7。在其它实施例中,高层f-g处理单元443还可以包括f-g树层#6。在另外其它实施例中,在rsd模块404a、404b、404c、404d之间共享的较高f-g树层可以只包括f-g树层#9和f-g树层#8。解码中需要使用的f-g树层的数量也可能取决于码字节点长度。例如,高层f-g处理单元443可以包括f-g树层#7和f-g树层#6。
127.psum单元246从资源共享流水线422接收psum值并存储在每个rsd模块404a、404b、404c、404d中。解码比特250由输出存储单元228a、228b、228c、228d接收并存储在其中。
128.rsd 400并行处理的码字的数量由rsd模块404a、404b、404c、404d的数量限定。例如,由于在四个rsd模块404a、404b、404c、404d之间共享高层f-g处理单元443,因此资源共享解码器400可以同时解码四个码字,但不会增加解码延迟。
129.例如,由16个rsd 400组成的组装部件可以在每个rsd 400与该组装部件中的其它rsd400并行解码4个码字时以及在码字长度为n=1k的一个码字的解码需要64个时钟周期时,在每个时钟周期内接收和发送一个码字。
130.图5是本发明至少一个非限制性实施例提供的rsd 400如何并行解码四个码字的时序图。
131.与四个码字对应的四组llr(在图5中示为“cw#0llr”、“cw#1llr”、“cw#2llr”、“cw#3llr”)加载到rsd 400中。码字由资源共享流水线422并行处理。在每个时钟周期内,低层f-g处理单元442处理每个码字中的一个码字节点a。一旦码字中的最后一个比特完成解码,码字对应的解码比特就会发送出去。
132.应当理解,rsd 400中可以包括任意数量的rsd模块404a、404b、404c、404d。在一些实施例中,rsd 400最佳可以包括四个rsd模块404a、404b、404c、404d,以共享高层f-g计算树。
133.图6示出了本发明至少一个非限制性实施例提供的垂直阵列解码器(vertical array decoder,vad)600。
134.vad 600包括x个解码器604a、604b
……
604x的解码器集合602。x是集合602中解码器的数量。解码器604a、604b
……
604x分别连接到解复用器606和复用器608。换句话说,解码器604a、604b
……
604x并联。解码器604a、604b
……
604x包括的硬件元件可以与图2中pcd 200的硬件元件相同。换句话说,两个或两个以上pcd 200可以形成极化解码器阵列。可选地,解码器604a、604b
……
604x包括的硬件元件可以与rsd 400的硬件元件相同。换句话说,两个或两个以上rsd 400可以形成极化解码器阵列。
135.解复用器606接收与一个或多个码字对应的信道llr 610。然后,解复用器606将与一个编码码字对应的llr调度到其中一个解码器模块604a、604b
……
604x。因此,解码器模块604a接收并处理与一个编码码字对应的多组llr 612a。解码器模块604b接收并处理对应于另一个编码码字的多组llr 612b,以此类推。
136.换句话说,解复用器606用于接收与一个以上码字对应的多组(或多个)llr,并且将一组(或多个)llr发送给每个pcd 200或rsd 400或vad 600。
137.然后,将对应的解码码字614a、614b
……
614x发送给复用器608。复用器608在接收到解码码字614a、614b
……
614x之后按顺序生成解码码字616。
138.换句话说,复用器608用于从每个pcd 200或rsd 400或vad 600接收一个解码码字,并且按顺序生成解码码字。
139.vad 600可以包括许多解码器模块604a、604b
……
604x。vad 600的吞吐量由vad 600每秒可以处理的码字数量限定。通过改变解码器集合602中的解码器模块604a、604b
……
604x的数量,vad 600的吞吐量可以变得适用于具体应用。每个解码器模块604a、604b
……
604x的吞吐量可以保持不变。添加额外的解码器模块可以线性地提高整体吞吐量。
140.当vad 600接收到码字时,码字在时间上以恒定的时间间隔分开。许多码字可以由vad600并行处理。如果两个相同类型的顺序码字的到达延迟是1个时钟周期,并且两个解码器模块准备开始解码,则生成这两个码字对应的解码比特估计值的延迟可能是1个时钟周期。如果系统的吞吐量小于输入码字吞吐量,则停止输入码字。
141.图7是本发明至少一个非限制性实施例提供的包括16个解码器模块的vad 600进行操作的时序图700。在这个非限制性实施例中,解码器模块604a、604b
……
604p被实现为资源共享解码器400。在描述图6时,会参考图4和图6。
142.假设码字类型对应的解码延迟602是64个时钟周期,则vad 600在这64个时钟周期内接收与64个编码码字对应的64个llr子集。vad 600在每个时钟周期611、612等内在解复用器606的输入处接收与一个编码码字对应的一个llr子集。
143.第一解码器模块604a处理前四个码字cw#0、cw#1、cw#2、cw#3对应的第一llr子集。第二解码器模块604b处理接下来四个码字cw#4、cw#5、cw#6、cw#7对应的llr。最后,第十六解码器模块604p处理与最后四个码字cw#60、cw#61、cw#62、cw#63对应的llr。
144.图8是本发明至少一个非限制性实施例提供的用于对使用极化码进行编码的码字进行解码的方法800的流程图。在描述图8时,也会参考图1至图7。
145.在步骤810中,pcd 200接收编码码字对应的指令序列。
146.在步骤812中,pcd 200接收与编码码字对应的多个llr。
147.然后,码字节点解码流水线222接收与当前编码码字节点对应的一组中间llr结果。同时,例如,计数器221确定当前处理的编码码字对应的当前比特索引。
148.在步骤814中,调度器220可以读取指令序列并将命令发送给码字节点解码流水线222,以便适应与码字节点对应的一组llr的解码。提供给码字节点解码流水线222的命令基于编码码字节点的码字节点长度和码字节点类型的值。
149.在一些实施例中,与一个码字节点对应的命令可以包括需要解码的编码码字节点的码字节点长度和码字节点类型。在一些实施例中,这些命令可以包括附加信息,例如,需要解码的码字节点中的第一比特的比特索引。
150.码字节点解码流水线222根据指令序列接收具体命令。这些命令取决于码字节点长度、码字节点类型和当前编码码字节点的比特索引的值。pcd 200接收到的指令序列基于码字中的所有码字节点的码字节点长度和码字节点类型。
151.f-g处理单元242可以接收指定在对一组llr执行f运算或g运算时在f-g处理单元中要使用的f-g处理元件和f-g处理层的数量。
152.专用解码单元244可以接收指定需要执行哪个解码逻辑以根据中间llr结果生成解码比特的命令。
153.psum单元246可以接收请求计算一组具体部分和值并存储该组部分和值的命令。
154.码字节点解码流水线222中的逻辑单元242、244、246根据在步骤816中接收到的命令适应码字。换句话说,三个逻辑单元根据pcd 200先前接收到的指令序列适应编码码字节点的解码。
155.在方法800的步骤818中,流水线222对编码码字节点进行解码。解码比特由码字节点解码流水线222生成并存储。生成psum值并将其发送给码字节点解码流水线222中的f-g处理单元。
156.在步骤820中,方法800确定编码码字中的所有编码码字节点是否完成解码。例如,如果码字中的所有码字节点都完成解码,则可以接收指示。
157.如果编码码字还没有完全解码,则调度器220读取下一个码字节点对应的新指令序列。然后,调度器220将新命令发送给码字节点解码流水线222,以便调整流水线222以适应下一个码字节点。同时,将与下一个码字节点对应的一组新llr发送给码字节点解码流水线222。
158.在步骤822中,在接收到与编码码字中的每个编码码字节点对应的解码比特之后,pcd200生成解码码字。
159.尽管已经参考本发明的特定特征和实施例描述了本发明,但是明显可以在不脱离本发明的情况下制定本发明的各种修改和组合。因此,说明书和附图仅被视为所附权利要求书限定的对本发明的说明,并且预期覆盖在本发明的范围内的任何和所有修改、变化、组合或等同物。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1