CN109981117B - 一种四模前向纠错码处理器 - Google Patents
一种四模前向纠错码处理器 Download PDFInfo
- Publication number
- CN109981117B CN109981117B CN201910205241.2A CN201910205241A CN109981117B CN 109981117 B CN109981117 B CN 109981117B CN 201910205241 A CN201910205241 A CN 201910205241A CN 109981117 B CN109981117 B CN 109981117B
- Authority
- CN
- China
- Prior art keywords
- decoding
- memory
- codes
- backward
- module
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
- H03M13/6505—Memory efficient implementations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6511—Support of multiple decoding rules, e.g. combined MAP and Viterbi decoding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例提供一种四模前向纠错码处理器,涵盖了Polar码、LDPC码、Turbo码和卷积码四种重要的前向纠错码解码功能,各个解码模式均实现了解码流程的全可编程,并通过算数逻辑模块提供了对算法变种的支持,大大提高了前向纠错码处理器的功能范围和解码灵活度。该处理器通过运算执行单元阵列对解码运算进行并行处理,前向迭代运算可与后向迭代运算同时进行,提高了解码运算的效率。同时,由于各个模式可以共用内存阵列进行并行无冲突存取,处理器的面积效率得到了有效的提升。
Description
技术领域
本发明实施例涉及通信技术领域,更具体地,涉及一种四模前向纠错码处理器。
背景技术
在当前多标准未被统一的移动通信领域,十余个主流移动通信标准,如GSM(Global System For Mobile Communications,全球移动通信系统),EDGE(Enhanced DataRate for GSM Evolution,增强型数据速率GSM演变技术)/GPRS(General Packet RadioService,通用分组无线服务),UMTS(Universal Mobile Telecommunications System,通用移动通信系统),HSPDA(High Speed Downlink Packet Access,高速下行分组接入协议),Bluetooth,GPS(Global Positioning System,全球定位系统),DVB-T/H(DigitalVideo Broadcasting-Terrestrial/Handheld,地面数字电视广播/手持地面无线),3GPP-LTE(3rd Generation Partnership Project-Long Term Evolution,第三代合作伙伴计划-长期演进),5G,WiMAX和WLAN等,这些通信标准需要被手机或者其它移动设备所兼容。在这些标准中,Polar码、LDPC码、Turbo码以及卷积码等多种前向纠错码的编解码方案并存,且参数和细节各异,甚至同一个标准中都会包含多个编解码模式,这给多模式前向纠错码处理器的设计带来了挑战。于此同时,移动通信标准还在不断更新,在芯片流片时,具体的需求和算法可能并不完全已知。在较为高端的工艺下,基带芯片一次流片所需的不可返还工程投资可达数亿元人民币。如果不能有效提升解码器的灵活性和兼容性,不确定的更新和需求将导致芯片的重新设计和流片,严重影响芯片的生存期和适用范围。通用处理器可以提供很高的灵活性。然而前向纠错码的运算复杂度较高,在某些较为先进的高速标准中(如3GPP-LTE-A)已经突破了100Gops,且有继续增大的趋势。基带芯片对解码速率的较高要求和对面积、功耗开销的严格限制使通用处理器无法满足性能指标的需求。在这种情况下,基带芯片需要采用针对编解码的算法特点设计的专用指令集处理器(ApplicationSpecific Instruction-set Processors,ASIP)来兼顾解码效率和灵活性。
目前国际上已知的基于ASIP的多模前向纠错码处理器方案有FlexiTreP/FlexiChaP、IMEC、TU Dresden、TASIP等若干方案。
FlexiTreP是一款可以兼容卷积码和二进制Turbo码的可重配置ASIP解码器,具有一定的可编程能力。在原先的FlexiTreP基础上加入了独立的高并行度LDPC(Low-densityParity-check,低密度奇偶校验)高速解码数据通路后的设计被命名为FlexChaP。由于该处理器的Turbo模式采用了单处理单元,因此解码速率较低,仅有十数Mbps,无法达到高速商用标准的性能需求。另外,这款处理器的指令为宏指令码,变成性较弱,数据通路特殊化程度较高,对解码变种和算法变更的兼容性很低,基本可以认为只能兼容已有的协议标准下的少量参数变更。
现有技术中提出了采用多核专用处理器实现并行LDPC/Turbo解码的设计。方案采用多个单指令多数据流的处理器核心,实现了C可编程。在编译过程中,编译器会将C代码映射到一个六核结构上。其中一个核专门用于循环指令的计算和控制,是一个标量处理器。剩下5个核都为矢量处理器,其中两个核用于计算核心内部存储器的地址并进行读写操作,一个核用于背景内存的读写操作,另外两个96slot的矢量处理核进行解码算法的计算。为了达到足够的效率,系统设计了大量的专用指令。这些指令可以看作是单时钟的宏指令,无法对解码细节和算法变更进行修改,但可以对解码流程和内存读写逻辑进行一定程度的编程。此设计也有一定效率上的不足。比如在800MHz时钟下仅获得了541Mbit/s的Turbo单迭代速率,换算6次迭代相当于90Mbps,仍无法满足3GPP-LTE系统的大于150MHz的吞吐率的需要。
现有技术中还提出了一款LDPC/Turbo/Viterbi三模解码器。该处理器采用六核结构,六个核与24个内存片之间通过专用互连线和桶形移位器相连。每个内存片可以支持8个LLR(Log likelihood Ratio,对数似然比)信息的数据存取。这六个核可以组合起来完成一个解码,也可以分开来并行执行多个解码任务,用以支持多用户时的快速解码切换。每个核由四个处理单元共享一个指令单元,采用超长指令字结构。每个处理单元可并行执行Turbo码8个状态的计算,或LDPC码中8个节点的计算,又或16步Viterbi算法的计算。然而该处理器设计方案对面积开销的节省分析较多,但对灵活度的分析极少,其编程能力和兼容未知协议的能力没有谈及,硬件上也没有相应的配置。
TASIP是由北京理工大学和瑞典林雪平大学提出的基于单指令多数据流架构的LDPC/Turbo/卷积码三模前向纠错码专用处理器,可以实现对802.11n LDPC、802.16eLDPC、3GPP LTE/HSPA/WCDMA Turbo和通用卷积码的高效率译码。此处理器采用了可并行执行的三模融合前后向迭代算法核心,实现了对Trellis结构可译码型的高并行度译码。其指令集具有时钟级精确描述前后向迭代执行流程和地址更新控制的能力,有较高的兼容性和可重配置能力。TASIP仍然是弱可编程的,对算法变种的支持能力和未知协议的支持能力仍待提升。该课题小组在后续研究中将通用数字逻辑模块融入数据通路之中,使该处理器的可编程性和对算法变种的兼容能力大大提升。
2016年,Polar码被3GPP组织选为5G标准中增强移动宽带业务场景的控制信道编码方案。然而,直到目前,还未发现同时支持四种重要前向纠错码(Polar码、LDPC码、Turbo码、卷积码)的前向纠错码处理器。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的一种四模前向纠错码处理器。
本发明实施例提供一种四模前向纠错码处理器,包括控制子系统、运算执行单元阵列和全局内存子系统;
控制子系统,用于控制所述运算执行单元阵列进行解码运算,控制所述全局内存子系统进行数据存取;
运算执行单元阵列包括多个LDPC/Turbo/CC三模融合运算执行单元和多个Polar运算执行单元;所述LDPC/Turbo/CC三模融合运算执行单元用于执行LDPC码、Turbo码和卷积码的解码运算,所述Polar运算执行单元用于执行Polar码的解码运算;
全局内存子系统,用于对Polar码、LDPC码、Turbo码和卷积码的运算数据进行并行存取。
作为优选的,所述运算执行单元阵列包括P1个LDPC/Turbo/CC三模融合运算执行单元和P2个Polar运算执行单元;其中,P1为正整数,P2为2的非负整数次幂。
作为优选的,每个所述LDPC/Turbo/CC三模融合运算执行单元包括高速前后向并行双迭代数据通路、通用算数逻辑模块、第一查找表;所述第一查找表连接所述通用算数逻辑模块,所述通用算出逻辑模块连接所述高速前后向并行双迭代数据通路;
所述第一查找表,用于储存高速前后向并行双迭代数据通路和通用算数逻辑模块之间进行数据交换时所需的数据重排序信息
所述通用算数逻辑模块,用于根据编程短接高速数据通路模块中的对应电路,实现运算算法变换;
所述高速前后向并行双迭代数据通路,用于执行LDPC码、Turbo码和卷积码的解码运算;所述高速前后向并行双迭代数据通路包括前/后向分支度量值计算模块、前/后向迭代中间结果计算模块和LLR更新模块。
作为优选的,每个所述LDPC/Turbo/CC三模融合运算执行单元还包括输入缓存区、前向缓存区、后向缓存区和内部缓存区;所述输入缓存区、前向缓存区、后向缓存区和内部缓存区连接所述高速前后向并行双迭代数据通路;
所述输入缓存区,用于存取LDPC/Turbo/CC三模融合运算执行单元的输入数据;
所述前向缓存区,用于存取和传递前向迭代运算结果;
所述后向缓存区,用于存取和传递后向迭代运算结果;
所述内部缓存区,用于存取LDPC码解码所需的外部信息,以及卷积码的回溯信息。
作为优选的,每个所述Polar运算执行单元包括f函数运算模块、判决模块、算数逻辑模块和饱和模块;
所述f函数运算模块,用于执行f函数运算;
所述判决模块,用于计算解码运算的最终结果;
所述算数逻辑模块,串接在所述f函数运算模块和所述判决模块之间,用于完成解码运算所需要的其他逻辑运算,所述其他逻辑运算包括加、位移、比较、选择、取负;
所述饱和模块,用于将最终结果恢复至存储位宽。
作为优选的,所述全局内存子系统包括:
线性地址运算单元,用于计算滑动窗号及滑动窗地址,以基于所述计算滑动窗号及滑动窗地址计算出迭代步的线性地址,以及Polar码的解码运算下的置换网络控制信号;
Polar地址运算单元,用于计算Polar码的解码运算下的内存读写地址;
第二查找表,用于存放Turbo码和LDPC码的解码运算下的内存读写地址和置换网络控制信号;
地址转换单元,用于在Turbo码和LDPC码的解码运算下,根据线性地址从第二查找表读出内存读写地址和置换网络控制信号,同时生成对应的片选信号和数据选择信号,实现内存的无冲突并行存取。
作为优选的,所述全局内存子系统还包括:
内存阵列,用于存储解码输入和解码运算结果,所述解码运算结果包括解码中间结果和解码最终结果;
读置换网络,连接内存阵列的输出端与运算执行单元阵列的输入端,用于将内存阵列的输出数据重排列为解码运算所需的顺序;
写置换网络,连接运算执行单元阵列的输出端和内存阵列的输入端,用于将解码运算结果重排列为无冲突并行写回所需的顺序,同时将重排序的结果返回到读置换网络的输入端。
作为优选的,所述内存阵列包括P组内存,每组内存包括k块内存片;k为不小于8的2的正整数次幂,P=max(P1,P2),P1为LDPC/Turbo/CC三模融合运算执行单元个数,P2为Polar运算执行单元个数,且P1为正整数,P2为2的非负整数次幂。
作为优选的,所述读置换网络和所述写置换网络均为三维置换网络,包括:
组内置换网络,用于内存数据的组内重排序;
跨组置换网络,用于内存数据的跨组重排序;
循环移位置换网络,用于将多组内存数据按顺序首尾拼接后进行循环位移。
作为优选的,所述控制子系统包括程序内存、状态机、程序指针、指令解码器、直接存储器访问接口和参数寄存器组;
所述参数寄存器组,用于存储前向纠错码的参数及硬件配置参数;所述硬件配置参数包括并行窗长度、滑动窗长度、回溯长度、迭代次数;
所述直接存储器访问接口,用于片上片下数据交换;
所述程序内存,用于存取二进制指令;
所述指令解码器,用于将从程序内存中读取的二进制指令解码为控制指令;
所述状态机,用于顺序读取所述控制指令,以完成所述控制指令的顺序执行、跳转、循环;
所述程序指针,连接所述程序内存,用于指向程序内存中下一条应读取的二进制指令的地址。
本发明实施例提出了一种四模前向纠错码处理器,涵盖了Polar码、LDPC码、Turbo码和卷积码四种重要的前向纠错码解码功能,各个解码模式均实现了解码流程的全可编程,并通过算数逻辑模块提供了对算法变种的支持,大大提高了前向纠错码处理器的功能范围和解码灵活度。该处理器通过运算执行单元阵列对解码运算进行并行处理,前向迭代运算可与后向迭代运算同时进行,提高了解码运算的效率。同时,由于各个模式可以共用内存阵列进行并行无冲突存取,处理器的面积效率得到了有效的提升。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例的四模前向纠错码处理器基本框图;
图2为根据本发明实施例的Polar码、LDPC码、Turbo码和卷积码的基本运算单元分割方式示意图;
图3为根据本发明实施例的单指令多流水线架构示意图;
图4为根据本发明实施例的四模前向纠错码处理器顶层架构细部框图;
图5为根据本发明实施例的Polar码内存安排和存取方式示意图;
图6为根据本发明实施例的LDPC码内存安排和存取方式示意图;
图7为根据本发明实施例的Turbo码以及卷积码内存安排和存取方式示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于直到目前,还未发现同时支持四种重要前向纠错码(Polar码、LDPC码、Turbo码、卷积码)的前向纠错码处理器,因此本发明各实施例涵盖了Polar码、LDPC码、Turbo码和卷积码四种重要的前向纠错码解码功能,各个解码模式均实现了解码流程的全可编程,并通过算数逻辑模块提供了对算法变种的支持,大大提高了前向纠错码处理器的功能范围和解码灵活度。以下将通过多个实施例进行展开说明和介绍。
图1为本发明实施例提供的一种四模前向纠错码处理器,包括控制子系统101、运算执行单元阵列102和全局内存子系统103;
控制子系统101,用于控制所述运算执行单元阵列102进行解码运算,控制所述全局内存子系统103进行数据存取;
运算执行单元阵列102包括多个LDPC/Turbo/CC三模融合运算执行单元4210和多个Polar运算执行单元4220;所述LDPC/Turbo/CC三模融合运算执行单元4210用于执行LDPC码、Turbo码和卷积码的解码运算,所述Polar运算执行单元4220用于执行Polar码的解码运算;
全局内存子系统103,用于对Polar码、LDPC码、Turbo码和卷积码的运算数据进行并行存取。
在本实施例中,处理器由控制子系统101、运算执行单元阵列102以及四模共用的全局内存子系统103构成,处理器采用了单指令多数据流架构,利用并行窗和滑动窗对解码运算基本单元进行分割和并行处理;支持多种码长码率的Polar码、LDPC码、Turbo码和卷积码解码,并具有全可编程能力和任意算法变种的处理能力。
具体的,控制子系统101用来实现处理器的可编程性,并控制其他各个组成部分完成译码过程;运算执行单元阵列102用于执行Polar码、LDPC码、Turbo码和卷积码的解码运算;全局内存子系统103用来实现Polar码、LDPC码、Turbo码和卷积码运算数据的无冲突并行存取。
在上述各实施例的基础上,处理器的运算执行单元阵列102由以下微架构构成:
所述运算执行单元阵列102包括P1个LDPC/Turbo/CC三模融合运算执行单元4210和P2个Polar运算执行单元4220;其中,P1为正整数,P2为2的非负整数次幂。
在上述实施例的基础上,处理器采用了单指令多数据流架构,利用并行窗和滑动窗对解码运算基本单元进行分割和并行处理。如图2中所示,为各个解码模式的基本运算单元划分方式。
图2(1)中展示了Polar码的基本运算单元划分方法的一个实例,图2(1)中,PW为图中的实线框,即并行窗,个数为P2;SW为图中的虚线框,表示滑动窗,滑动窗长度为LS1,个数为n。该处理器的Polar解码模式采用了置信传播算法。该算法的解码流程可在一个因子图上实现。码长为N1的Polar码可以用一个n阶的因子图来表示(n=log2N1),该因子图的每一阶均有N1/2个基本运算单元,且同一阶的基本运算单元无数据关联性,可并行执行。该处理器采用P2个并行窗纵向分割因子图。并行窗内,每一阶又都划分为一个滑动窗,每个滑动窗中有N1/2P2个基本运算单元。设一个Polar运算执行单元4220可以在一个时钟周期内并行执行i个基本运算单元,那么每个滑动窗地址均对应i个基本运算单元,滑动窗长度可计算为LS1=N1/2iP2。
图2(2)中展示了LDPC码的基本运算单元划分方法的一个实施例,图中LDPCCW为总码长,长度为N2;PW为并行窗,长度为LP2,个数为P1;R为矩阵总层数;Sr为第r层非零子矩阵个数。该处理器的LDPC解码模式采用了层级解码算法,校验矩阵H被按照扩展因子Z的大小划分为由若干Z×Z大小的子矩阵组成的矩阵HB。根据目标标准的规定(802.11n、802.16e),HB中的元素皆为零矩阵或单位矩阵的旋转矩阵。在解码过程中,仅有非零矩阵需要进行运算,因此我们将HB中各层的非零子矩阵抽取出来作为并行划分的对象。HB中,共有R层存在非零子矩阵,第r层的非零子矩阵个数记为Sr。解码时逐层对非零子矩阵进行处理,每个时钟周期处理一个子矩阵。每个子矩阵均有Z行Z列,P1个并行窗按行数对子矩阵进行划分,每个并行窗可并行处理LP2行数据。
图2(3)中展示了Turbo码的基本运算单元划分方法的一个实施例,图中,CW为总码长,长度为N3;PW为并行窗,长度为LP3,个数为P1;SW为滑动窗,长度为LS3,个数为W3。该处理器的Turbo解码模式采用了MAP解码算法,该算法的基本运算单元划分方法相对简单,直接利用并行窗和滑动窗按码长进行分割即可。滑动窗长度对解码性能存在影响,滑动窗过小会使译码精度下降,滑动窗过长则会影响解码速度,需要根据实际应用设置最佳的滑动窗长度。
图2(4)中展示了卷积码的基本运算单元划分方法的一个实施例,图中,CW为总码长,长度为N4;VITPW为并行窗的未重叠部分,长度为LP4;VITSW为滑动窗的未重叠部分,长度为LS4;TBLEN为回溯长度,长度为LTB;PW为并行窗,长度为LP4+LTB,个数为P1;SW为滑动窗,长度为LS4+LTB,个数为W4。该处理器的卷积码解码模式采用了Viterbi解码算法。该算法也是按照码长直接划分并行窗和滑动窗,但是相邻的滑动窗和并行窗之间存在重叠部分。重叠部分称为回溯长度,过短的回溯长度会影响译码精度,需要根据实际应用设置合适的回溯长度。
在上述各实施例的基础上,本实施例中的处理器的部分指令采用了单指令多数据,多流水线架构,前向迭代运算和后向迭代运算可同时进行,其流水线结构一个实施例如图3所示。ID(Instruction Decode,指令译码)阶,二进制指令被取出并解码为控制信号。AG(Address Generation,地址形成)阶,该迭代步的线性地址被计算出来,并于AT(AddressTransformation,地址转换)阶转化为内存读写地址。之后流水线分为两路,分别为前向迭代分支和后向迭代分支,两条支路可以同时执行。前向迭代分支从在RDM(Read Memory,读存储器)阶读取内存数据开始,在PMU(Permutation)阶完成数据重排序,在经过j阶EXEA(Execution A)进行前向迭代运算后,在WRBA(Write back A)阶将前向迭代的中间结果存入前向缓存区中。后向迭代分支开头空出一个NOP(No operation)阶,在RDB(Read B)阶读取后向缓存区中的数据,在m阶EXEB(Execution B)中完成后向迭代运算,再经历l阶EXEL(Execution L)完成对该迭代步最终结果的更新,在WRBB/WPMU(Write back B/WritePermutation)阶将后向迭代中间结果写入后向缓存区中并完成对最终结果的重排序,最终在WBM(Write back Memory)阶中将最终结果写回内存。各条指令对各流水阶的需求数目不同,有些指令会跳过某些执行阶、重排序阶或地址转换阶。
在上述各实施例的基础上,如图4所示,处理器的控制子系统101由以下混合可编程可重构微架构构成:
1)程序内存4110:存取二进制指令;
2)状态机4120:控制指令的读取顺序,以完成顺序执行、跳转、循环等操作;
3)程序指针4130:指向下一条应读取的指令的地址;
4)指令解码器4140:将读取的二进制指令解码为控制信号,用于控制其它各个模块;
5)直接存储器访问接口4150:用于片上片下数据交换,即处理器与外部存储器之间的数据交换;
6)参数寄存器组4160:存储前向纠错码的参数(如码长、码率、阶数、拓展因子大小等)以及硬件配置参数(如并行窗长度、滑动窗长度、回溯长度、迭代次数等),其存储的参数可通过编程进行修改。其储存的参数被用于地址运算、置换网络控制以及解码运算等很多模块。
在上述各实施例的基础上,如图4所示,每个所述LDPC/Turbo/CC三模融合运算执行单元4210(即图4中的三模融合运算执行单元)包括高速前后向并行双迭代数据通路4211、通用算数逻辑模块4212、第一查找表4213;所述第一查找表4213连接所述通用算数逻辑模块4212,所述通用算出逻辑模块连接所述高速前后向并行双迭代数据通路4211;
所述第一查找表4213,用于储存高速前后向并行双迭代数据通路4211和通用算数逻辑模块4212之间进行数据交换时所需的数据重排序信息
所述通用算数逻辑模块4212,用于根据编程短接高速数据通路模块中的对应电路,实现运算算法变换;
所述高速前后向并行双迭代数据通路4211,用于执行LDPC码、Turbo码和卷积码的解码运算;所述高速前后向并行双迭代数据通路4211包括前/后向分支度量值计算模块、前/后向迭代中间结果计算模块和LLR更新模块。
在本实施例中,高速前后向并行双迭代数据通路4211固化了LDPC码的Scaled-min-sum近似的层级解码算法、Turbo的max-loog-MAP解码算法以及卷积码的Viterbi解码算法,内部包含前/后向分支度量值计算模块、前/后向迭代中间结果计算模块和LLR更新模块等运算模块;
通用算数逻辑模块4212:其内部为8路并行的3输入单输出运算单元,包含若干加、减、乘、与、或、非、异或、同或、左移、右移、带符号左移、带符号右移、循环移位、判断、选择max、选择min、取绝对值、取负等算数逻辑功能,可根据编程短接高速数据通路中的部分电路,实现对多种算法变种的支持;
第一查找表4213:用于储存高速前后向并行双迭代数据通路4211和通用算数逻辑模块4212之间进行数据交换时所需的数据重排序信息。
在上述各实施例的基础上,如图4所示,每个所述LDPC/Turbo/CC三模融合运算执行单元4210(即图4中的三模融合运算执行单元)还包括输入缓存区、前向缓存区、后向缓存区和内部缓存区;所述输入缓存区、前向缓存区、后向缓存区和内部缓存区连接所述高速前后向并行双迭代数据通路4211;
输入缓存区4214,用于存取LDPC/Turbo/CC三模融合运算执行单元4210的输入数据;
前向缓存区4215,用于存取和传递前向迭代运算结果;
后向缓存区4216,用于存取和传递后向迭代运算结果;
内部缓存区4217,用于存取LDPC码解码所需的外部信息,以及卷积码的回溯信息。
在上述各实施例的基础上,如图4所示,每个所述Polar运算执行单元4220包括f函数运算模块4221、判决模块、算数逻辑模块和饱和模块;
所述f函数运算模块4221,用于执行f函数运算,f函数为:f(x,y)=0.9375×sign(x)sign(y)min(|x|,|y|);
所述判决模块4222,用于计算解码运算的最终结果;
所述算数逻辑模块4223,串接在所述f函数运算模块4221和所述判决模块4222之间,用于完成解码运算所需要的其他逻辑运算,所述其他逻辑运算包括加、位移、比较、选择、取负;
所述饱和模块4224,用于将最终结果恢复至存储位宽。
在上述各实施例的基础上,如图4所示,所述全局内存子系统103包括:
线性地址运算单元4310,用于计算滑动窗号及滑动窗地址,以基于所述计算滑动窗号及滑动窗地址计算出迭代步的线性地址,以及Polar码的解码运算下的置换网络控制信号;
Polar地址运算单元4320,用于计算Polar码的解码运算下的内存读写地址;
第二查找表4340,用于存放Turbo码和LDPC码的解码运算下的内存读写地址和置换网络控制信号;
地址转换单元4330,用于在Turbo码和LDPC码的解码运算下,根据线性地址从第二查找表4340读出内存读写地址和置换网络控制信号,同时生成对应的片选信号和数据选择信号,实现内存的无冲突并行存取。
在上述各实施例的基础上,如图4所示,所述全局内存子系统103还包括:
内存阵列4350,用于存储解码输入和解码运算结果,所述解码运算结果包括解码中间结果和解码最终结果;
读置换网络4360,连接内存阵列4350的输出端与运算执行单元阵列102的输入端,用于将内存阵列4350的输出数据重排列为解码运算所需的顺序;
写置换网络4370,连接运算执行单元阵列102的输出端和内存阵列4350的输入端,用于将解码运算结果重排列为无冲突并行写回所需的顺序,同时将重排序的结果返回到读置换网络4360的输入端,利用数据前送避免Polar模式下内存写后读所引起的数据冲突风险。
在上述各实施例的基础上,如图4所示,所述内存阵列4350包括P组内存4351,每组内存4351包括k块内存片4352,共由Pk块内存片4352构成;k为不小于8的2的正整数次幂,P=max(P1,P2),P1为LDPC/Turbo/CC三模融合运算执行单元4210个数,P2为Polar运算执行单元4220个数,且P1为正整数,P2为2的非负整数次幂。
在上述各实施例的基础上,如图4所示,所述读置换网络4360和所述写置换网络4370均为三维置换网络,包括:
组内置换网络43671,用于内存数据的组内重排序;
跨组置换网络43672,用于内存数据的跨组重排序;
循环移位置换网络43673,用于将多组内存数据按顺序首尾拼接后进行循环位移。
基于上述各实施例中的处理器,在本实施例中,通过以下几种实方式来说明四模复用的全局内存子系统103的方式,采用以下硬件参数:P1=12、P2=16、P=16、k=8、i=32、LP2=8、LP3=LP4=512,单个内存片宽度为128比特、深度为32,单个数据宽度为8比特(Polar码、Turbo码和卷积码)或5比特(LDPC码)。在此硬件参数下,所述内存复用方式可以节省65.2%的内存片数量、48.9%的内存容量、29.7%的内存面积以及9.2%的内存带宽。
图5给出了码长为4096比特的Polar码的内存数据安排和读写方式的一个实例,图中,w表示滑窗编号,t表示滑窗地址,填充部分相同的内存数据会在对应滑窗地址时会被同时读取。该模式下,各个并行窗内数据安排的规律完全相同,因此此处仅以并行窗0中的情形为例进行说明。
码长为4096比特的Polar码的因子图中共有13列数据点,每列有4096个点,所有的点都必须储存在内存中。每列数据都被16个并行窗均匀划分,因此并行窗0中存有每列的前256个点。由于相邻两列的点可能会被同时读取,背了避免内存冲突,相邻两列的点被安排在了不同的内存片中。在图5中,会被同时读取的两列之间以双箭头直线相连,线上标注了被同时读取时对应的滑动窗号。每一列内部的数据排列规律也相同,图5以列12为例,给出了每列内部数据排列的方法。前一般数据按顺序安排即可,后一半数据却需要进行移位来避免内存冲突。每个并行窗每个时钟周期需要1024个操作数,也就是要同时读取所有的内存片。当某列数据被作为基本运算单元的左列读取时,如图5所示,被相同图案填充的数据会被同时读取。当某列数据被作为基本运算单元的右列读取时,处于各内存片同一深度的数据会被同时读取。
图6给出了码长为2304比特的LDPC码的数据安排和读写方式的一个实例。该模式下,各个并行窗内数据安排的规律完全相同,因此此处仅以并行窗0中的情形为例进行说明。
LDPC码单个数据宽度为5比特,一个运算执行单元每个时钟周期可执行8个子层的运算,因此每个并行窗每个时钟周期需提供40比特的操作数。内存片宽度为128比特,因此存储操作数需要补88比特数据。在此实例中,40比特数据补了88位0。LDPC模式每个时钟周期只用读写一片内存片,片选信号由地址转换单元4330给出。在读取时,需要把补的零去掉再送入置换网络和执行单元,在写入时需要给40比特计算结果补零再写入。
Turbo码和卷积码对内存利用的方式相同,皆如图7所示。此两种模式各个并行窗和内存片内的数据安排规律均相同,因此此处仅以某个内存片中的情形为例进行说明。
在并行窗长度为512时,Turbo码和卷积码模式下的每一片内存片都需要存储512个8比特数据,但每片每个时钟仅需要提供一个8比特操作数。由于每片内存的宽度是128比特,内存中的一个位置需要存储16个8比特数据。在内存读取的时候,需要先读出128比特数据,再根据数据选择信号选出其中8比特,数据选择信号由地址转换单元4330提供。在数据写入时需要提前一个时钟周期将写入地址对应的128比特读取出来,根据数据选择信号将其中8比特数据替换为8比特计算结果,然后再写入内存。
综上所述,本发明实施例提供的一种四模前向纠错码处理器,涵盖了Polar码、LDPC码、Turbo码和卷积码四种重要的前向纠错码解码功能,各个解码模式均实现了解码流程的全可编程,并通过算数逻辑模块提供了对算法变种的支持,大大提高了前向纠错码处理器的功能范围和解码灵活度。该处理器通过运算执行单元阵列对解码运算进行并行处理,前向迭代运算可与后向迭代运算同时进行,提高了解码运算的效率。同时,由于各个模式可以共用内存阵列进行并行无冲突存取,处理器的面积效率得到了有效的提升。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种四模前向纠错码处理器,其特征在于,包括控制子系统、运算执行单元阵列和全局内存子系统;
控制子系统,用于控制所述运算执行单元阵列进行解码运算,控制所述全局内存子系统进行数据存取;
运算执行单元阵列包括多个LDPC/Turbo/CC三模融合运算执行单元和多个Polar运算执行单元;所述LDPC/Turbo/CC三模融合运算执行单元用于执行LDPC码、Turbo码和卷积码的解码运算,所述Polar运算执行单元用于执行Polar码的解码运算;
全局内存子系统,用于对Polar码、LDPC码、Turbo码和卷积码的运算数据进行并行存取;
其中,所述四模前向纠错码处理器采用单指令多数据流架构,利用并行窗和滑动窗对解码运算基本单元进行分割和并行处理;
其中,所述全局内存子系统还包括:
内存阵列,用于存储解码输入和解码运算结果,所述解码运算结果包括解码中间结果和解码最终结果;
读置换网络,连接内存阵列的输出端与运算执行单元阵列的输入端,用于将内存阵列的输出数据重排列为解码运算所需的顺序;
写置换网络,连接运算执行单元阵列的输出端和内存阵列的输入端,用于将解码运算结果重排列为无冲突并行写回所需的顺序,同时将重排序的结果返回到读置换网络的输入端;
其中,所述读置换网络和所述写置换网络均为三维置换网络,包括:
组内置换网络,用于内存数据的组内重排序;
跨组置换网络,用于内存数据的跨组重排序;
循环移位置换网络,用于将多组内存数据按顺序首尾拼接后进行循环位移。
2.根据权利要求1所述的四模前向纠错码处理器,其特征在于,所述运算执行单元阵列包括P1个LDPC/Turbo/CC三模融合运算执行单元和P2个Polar运算执行单元;其中,P1为正整数,P2为2的非负整数次幂。
3.根据权利要求1所述的四模前向纠错码处理器,其特征在于,每个所述LDPC/Turbo/CC三模融合运算执行单元包括高速前后向并行双迭代数据通路、通用算数逻辑模块、第一查找表;所述第一查找表连接所述通用算数逻辑模块,所述通用算数逻辑模块连接所述高速前后向并行双迭代数据通路;
所述第一查找表,用于储存高速前后向并行双迭代数据通路和通用算数逻辑模块之间进行数据交换时所需的数据重排序信息
所述通用算数逻辑模块,用于根据编程短接高速数据通路模块中的对应电路,实现运算算法变换;
所述高速前后向并行双迭代数据通路,用于执行LDPC码、Turbo码和卷积码的解码运算;所述高速前后向并行双迭代数据通路包括前/后向分支度量值计算模块、前/后向迭代中间结果计算模块和LLR更新模块;所述前/后向分支度量值计算模块用于前/后向分支度量值计算,所述前/后向迭代中间结果计算模块用于前/后向迭代中间结果计算,所述LLR更新模块用于LLR更新计算。
4.根据权利要求3所述的四模前向纠错码处理器,其特征在于,每个所述LDPC/Turbo/CC三模融合运算执行单元还包括输入缓存区、前向缓存区、后向缓存区和内部缓存区;所述输入缓存区、前向缓存区、后向缓存区和内部缓存区连接所述高速前后向并行双迭代数据通路;
所述输入缓存区,用于存取LDPC/Turbo/CC三模融合运算执行单元的输入数据;
所述前向缓存区,用于存取和传递前向迭代运算结果;
所述后向缓存区,用于存取和传递后向迭代运算结果;
所述内部缓存区,用于存取LDPC码解码所需的外部信息,以及卷积码的回溯信息。
5.根据权利要求1所述的四模前向纠错码处理器,其特征在于,每个所述Polar运算执行单元包括f函数运算模块、判决模块、算数逻辑模块和饱和模块;
所述f函数运算模块,用于执行f函数运算;
所述判决模块,用于计算解码运算的最终结果;
所述算数逻辑模块,串接在所述f函数运算模块和所述判决模块之间,用于完成解码运算所需要的其他逻辑运算,所述其他逻辑运算包括加、位移、比较、选择、取负;
所述饱和模块,用于将最终结果恢复至存储位宽。
6.根据权利要求1所述的四模前向纠错码处理器,其特征在于,所述全局内存子系统包括:
线性地址运算单元,用于计算滑动窗号及滑动窗地址,以基于所述计算滑动窗号及滑动窗地址计算出迭代步的线性地址,以及Polar码的解码运算下的置换网络控制信号;
Polar地址运算单元,用于计算Polar码的解码运算下的内存读写地址;
第二查找表,用于存放Turbo码和LDPC码的解码运算下的内存读写地址和置换网络控制信号;
地址转换单元,用于在Turbo码和LDPC码的解码运算下,根据线性地址从第二查找表读出内存读写地址和置换网络控制信号,同时生成对应的片选信号和数据选择信号,实现内存的无冲突并行存取。
7.根据权利要求1所述的四模前向纠错码处理器,其特征在于,所述内存阵列包括P组内存,每组内存包括k块内存片;k为不小于8的2的正整数次幂,P=max(P1,P2),P1为LDPC/Turbo/CC三模融合运算执行单元个数,P2为Polar运算执行单元个数,且P1为正整数,P2为2的非负整数次幂。
8.根据权利要求1所述的四模前向纠错码处理器,其特征在于,所述控制子系统包括程序内存、状态机、程序指针、指令解码器、直接存储器访问接口和参数寄存器组;
所述参数寄存器组,用于存储前向纠错码的参数及硬件配置参数;所述硬件配置参数包括并行窗长度、滑动窗长度、回溯长度、迭代次数;
所述直接存储器访问接口,用于片上片下数据交换;
所述程序内存,用于存取二进制指令;
所述指令解码器,用于将从程序内存中读取的二进制指令解码为控制指令;
所述状态机,用于顺序读取所述控制指令,以完成所述控制指令的顺序执行、跳转、循环;
所述程序指针,连接所述程序内存,用于指向程序内存中下一条应读取的二进制指令的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910205241.2A CN109981117B (zh) | 2019-03-18 | 2019-03-18 | 一种四模前向纠错码处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910205241.2A CN109981117B (zh) | 2019-03-18 | 2019-03-18 | 一种四模前向纠错码处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109981117A CN109981117A (zh) | 2019-07-05 |
CN109981117B true CN109981117B (zh) | 2023-07-04 |
Family
ID=67079382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910205241.2A Active CN109981117B (zh) | 2019-03-18 | 2019-03-18 | 一种四模前向纠错码处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109981117B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4169167A1 (en) * | 2020-06-23 | 2023-04-26 | Telefonaktiebolaget LM ERICSSON (PUBL) | Network node and method performed therein for handling received signal |
CN113055025B (zh) * | 2021-03-12 | 2022-11-22 | 上海大学 | 可重构的极化码与低密度奇偶校验码译码器 |
CN114550806B (zh) * | 2022-04-26 | 2022-08-05 | 杭州阿姆科技有限公司 | 一种应用于ssd上的双层纠错方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101604975A (zh) * | 2009-07-08 | 2009-12-16 | 复旦大学 | 一种低功耗多模qc-ldpc码解码器及其工作方法 |
CN101964664A (zh) * | 2010-09-16 | 2011-02-02 | 复旦大学 | 一种适用于CMMB的多模式Reed-Solomon译码器结构 |
CN102687445A (zh) * | 2011-12-30 | 2012-09-19 | 华为技术有限公司 | 前向纠错编、解码方法、装置及系统 |
CN103581097A (zh) * | 2013-07-15 | 2014-02-12 | 上海数字电视国家工程研究中心有限公司 | 数字信号发射系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096401B2 (en) * | 2004-11-15 | 2006-08-22 | Motorola, Inc. | Multi-mode hybrid ARQ scheme |
US8438449B2 (en) * | 2009-11-02 | 2013-05-07 | Lg Electronics Inc. | Method and apparatus for transmitting broadcast signal in transmitter |
CN103905067B (zh) * | 2012-12-27 | 2018-05-11 | 中兴通讯股份有限公司 | 多模译码器实现方法及装置 |
US9705531B2 (en) * | 2015-02-18 | 2017-07-11 | eTopus Technology Inc. | Multi mode viterbi decoder |
CN105187156B (zh) * | 2015-06-12 | 2018-06-08 | 北京理工大学 | 一种前向纠错码处理器 |
US10361717B2 (en) * | 2016-06-17 | 2019-07-23 | Huawei Technologies Co., Ltd. | Apparatus and methods for error detection coding |
US20180159556A1 (en) * | 2016-12-01 | 2018-06-07 | Western Digital Technologies, Inc. | Ecc decoder with multiple decoding modes |
-
2019
- 2019-03-18 CN CN201910205241.2A patent/CN109981117B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101604975A (zh) * | 2009-07-08 | 2009-12-16 | 复旦大学 | 一种低功耗多模qc-ldpc码解码器及其工作方法 |
CN101964664A (zh) * | 2010-09-16 | 2011-02-02 | 复旦大学 | 一种适用于CMMB的多模式Reed-Solomon译码器结构 |
CN102687445A (zh) * | 2011-12-30 | 2012-09-19 | 华为技术有限公司 | 前向纠错编、解码方法、装置及系统 |
CN103581097A (zh) * | 2013-07-15 | 2014-02-12 | 上海数字电视国家工程研究中心有限公司 | 数字信号发射系统 |
Non-Patent Citations (1)
Title |
---|
LDPC/Turbo双模译码器技术发展与前景综述;王秀敏等;《中国计量学院学报》;第27卷(第1期);63-67 * |
Also Published As
Publication number | Publication date |
---|---|
CN109981117A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109981117B (zh) | 一种四模前向纠错码处理器 | |
JP4907802B2 (ja) | 通信の復号化の際に用いられるバタフライプロセッサ装置 | |
US7984368B2 (en) | Method and system for increasing decoder throughput | |
Wu et al. | Implementation of a 3GPP LTE turbo decoder accelerator on GPU | |
US20150236723A1 (en) | Parallel VLSI architectures for constrained turbo block convolutional decoding | |
US9250996B2 (en) | Multicore type error correction processing system and error correction processing apparatus | |
Muller et al. | ASIP-based multiprocessor SoC design for simple and double binary turbo decoding | |
JP2002152057A (ja) | トレリス処理装置の適切なパスメトリックアドレスを計算する装置と方法。 | |
Le Gal et al. | Low-latency and high-throughput software turbo decoders on multi-core architectures | |
Lee et al. | Design space exploration of the turbo decoding algorithm on GPUs | |
US7278088B2 (en) | Configurable architecture and its implementation of viterbi decorder | |
Qiao et al. | QFEC ASIP: A flexible quad-mode FEC ASIP for polar, LDPC, turbo, and convolutional code decoding | |
JP2008514158A (ja) | ビタビトレースバックのための分散リング制御回路 | |
US20070104296A1 (en) | Viterbi decoding apparatus | |
Vogt et al. | A reconfigurable applcation specific instruction set processor for viterbi and log-map decoding | |
CN105187156B (zh) | 一种前向纠错码处理器 | |
Yue et al. | A unified forward error correction accelerator for multi-mode Turbo, LDPC, and polar decoding | |
CN106452461A (zh) | 一种通过矢量处理器实现viterbi解码的方法 | |
US7661059B2 (en) | High performance turbo and Viterbi channel decoding in digital signal processors | |
Kunze et al. | A” multi-user” approach towards a channel decoder for convolutional, turbo and LDPC codes | |
US20090172504A1 (en) | Memory architecture for viterbi decoder and operating method therefor | |
Niktash et al. | A multi-standard Viterbi decoder for mobile applications using a reconfigurable architecture | |
Chen et al. | BER guaranteed optimization and implementation of parallel turbo decoding on GPU | |
Lapotre et al. | A reconfigurable multi-standard ASIP-based turbo decoder for an efficient dynamic reconfiguration in a multi-ASIP context | |
Lapotre et al. | Optimizations for an efficient reconfiguration of an ASIP-based turbo decoder |
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 |