CN110868225B - Ldpc码译码器 - Google Patents
Ldpc码译码器 Download PDFInfo
- Publication number
- CN110868225B CN110868225B CN201911202748.9A CN201911202748A CN110868225B CN 110868225 B CN110868225 B CN 110868225B CN 201911202748 A CN201911202748 A CN 201911202748A CN 110868225 B CN110868225 B CN 110868225B
- Authority
- CN
- China
- Prior art keywords
- module
- llr
- variable node
- control
- information
- 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—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
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
公开了一种LDPC码译码器,包括:变量节点模块、校验节点模块、顶层模块、控制模块、桶形移位模块和第一存储模块;其中,所述顶层模块配置有折叠因子、例化并行数和对数似然比LLR信息的输入位宽,所述变量节点模块、校验节点模块和第一存储模块的例化个数等于所述例化并行数,所述控制模块配置为根据所述顶层模块提供的来自外部的译码控制参数控制所述变量节点模块、校验节点模块、第一存储模块和所述桶形移位模块并行完成LDPC码译码。本申请实施例的LDPC码译码器采用参数化的并行度灵活可配置的并行译码架构,可以适合于FPGA实现,并可以支持全部DVB S2标准模式。
Description
技术领域
本发明涉及信号与信息处理技术领域,尤其涉及一种LDPC码译码器。
背景技术
低密度奇偶校验(Low-Density Parity Check,LDPC)码是Gallager提出的一种纠错码,可以达到接近香农极限的性能,超过Turbo码的性能。编码方案在19世纪60年代初被提出,一些最近的标准包括了强制的LDPC编码方法和可选的LDPC编码方法、以及第二代数字视频广播卫星应用(DVB-S2)。该应用没有低延迟的限制要求,因此采用64800码长。尽管标准设计时考虑到了硬件的复杂度,但庞大的码长还是让其成为计算量最重的LDPC码字。
鉴于DVB-S2标准LDPC码的长度较长,因此译码在现场可编程门阵列(FPGA)或专用集成电路(ASIC)中实现时需要耗费较多的逻辑资源,并且实现的速率难以达到很高的速率。目前,LDPC译码器有全并行、部分并行、串行等几种架构,这几种架构的主要区别在于速度和硬件资源的折中取舍。全并行架构,速度最快,资源消耗最大。串行架构资源消耗最少,速度最慢。部分并行架构是折中,但部分并行架构结构最复杂,实现难度最大,其中的一大难点在于架构设计和并行度的选择。
发明内容
为解决上述技术问题,期望提供一种新的LDPC码译码器,其并行架构可通过例化并行数Foderfactor来配置,实现了参数化的并行度灵活可配置的并行译码架构,适合于FPGA实现,并支持全部DVB S2标准模式。
根据本申请的一个方面,提供了一种LDPC码译码器,包括:
变量节点模块;
校验节点模块;
顶层模块;
控制模块;
桶形移位模块;
第一存储模块;
其中,所述顶层模块配置有折叠因子、例化并行数和对数似然比LLR信息的输入位宽,所述变量节点模块、校验节点模块和第一存储模块的例化个数等于所述例化并行数,所述控制模块配置为根据所述顶层模块提供的来自外部的译码控制参数控制所述变量节点模块、校验节点模块、第一存储模块和所述桶形移位模块并行完成LDPC码译码。
根据本申请实施例的LDPC码译码器,采用参数化的并行度灵活可配置的并行译码架构,适合于FPGA实现,并支持全部DVB S2标准模式。
附图说明
图1为本申请实施例LDPC码译码器的结构示意图。
图2a至图2e为本申请实施例LDPC码译码器的示例性电路示意图,其中图2b至图2e分别为为图2a中A、B、C、D部分的放大图。
图3为本申请实施例LDPC码译码器的DVB-S2模式表。
图4为为本申请实施例LDPC码译码器的FPGA实现时序关系图。
实施方式
下文将结合附图对本申请实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的各个实施例及其中的各特征可以相互任意组合。
如前文所述,目前的LDPC译码器有全并行、部分并行、串行等几种架构,部分并行架构的LDPC码译码器的结构复杂度高,实现难度大,而且其并行度一旦设定,将不可更改、不可重配置,这无法适应实际应用需求,也造成LDPC码译码器设计成本较高。
对于上述技术问题,本申请实施例提供了一种新的LDPC码译码器,该译码器中的顶层模块具有可灵活配置的折叠因子、例化并行数和对数似然比LLR信息的输入位宽,通过这些参数可以灵活调整译码器中变量节点模块、校验节点模块的例化个数,换言之,上述LDPC码译码器的并行度可灵活配置、可灵活更改。
图1示出了本申请实施例中LDPC码译码器的示例性结构,图2a-2d示出了本申请实施例中LDPC码译码器的示例性电路结构。如图1所示,本申请实施例中LDPC码译码器可以包括:顶层模块11、控制模块12、桶形移位模块13、第一存储模块14、变量节点模块15、校验节点模块16。这些模块可以通过多位位宽总线、1位位宽总线连接。图2a中的A为顶层模块11的示例性电路结构,B为控制模块12(ldpc_iocontrol)和下文的第二存储模块17(ldpc_edgetable)的示例性电路结构,C为桶形移位模块13的示例性电路结构,D为第一存储模块14(ldpc_ram_behav#360)、变量节点模块15(ldpc_cn#360)、校验节点模块16(ldpc_vnduster#360)的示例性电路结构。
本申请实施例中,顶层模块11可以配置参数,这些参数包括但不限于折叠因子(FOLDFACTOR)、例化并行数(NUMINSTANCES)和对数似然比(LLR)信息的输入位宽(LLRWIDTH),变量节点模块15、校验节点模块16、第一存储模块14的例化个数等于该例化并行数。其他模块,例如顶层模块11、控制模块12、桶形移位模块13以及下文的第二存储模块17可以例化为1个。
一些示例中,上述例化并行数可以等于360除以折叠因子得到的商,并且折叠因子的取值包括如下之一或多项:1、2、3、4。换言之,例化并行数NUMINSTANCES的可取为360、180、120、90,也即本并行架构的并行度可以灵活可配置为360、180、120、90。折叠因子FOLDFACTOR默认可以为1,其取值可以灵活配置为1、2、3或4。并且,输入位宽(LLRWIDTH)也可以灵活可配置,默认可以为6。
本申请实施例中,顶层模块11可以配置为将外部输入的访问控制信号、由所述折叠因子决定的外部输入的LLR地址信号、外部输入的输入控制信号、按照所述例化并行数和对数似然比LLR信息的输入位宽将来自外部的LLR输入信号分路提供给每个所述变量节点模块和每个所述校验节点模块。
本申请实施例中,顶层模块11还可以配置为向所述控制模块提供译码控制参数,所述译码控制参数包括模式字、开始信号、迭代次数上限和处理完成标志。
本申请实施例中,顶层模块11的输入信号可以包括时钟信号clk、复位信号rst、来自外部的访问控制信号llr_access、由所述折叠因子决定的外部输入的LLR地址信号llr_addr、外部输入的输入控制信号llr_din_we、来自外部的开始信号start、迭代次数上限iter_limit、LDPC码的模式字mode,顶层模块11的输出信号可以包括向外部输出的LLR输出信号llr_dout和译码完成标志done。
一些示例中,对于模式字mode来说,本申请实施例中的LDPC码译码器可以通过5位输入控制字mode选择工作模式,支持DVB-S2标准的全部21种码率模式。图3示出了DVB-S2标准的全部21种码率模式。
一些示例中,可以通过6位输入iter_limit设置最大迭代次数限制,默认最大次数为64,实际使用可以进行配置和扩展。
其中,开始信号用于控制译码的开始,译码完成标志done在译码完成后输出以便指示译码结束。换言之,数据写到译码器之后,消息传递算法可以开始,这可以由上述的开始信号 start来控制,并加载参数(包括模式和迭代次数)、开始译码进程。
一些示例中,顶层模块11的输入时钟信号clk最高可以支持300MHz以上,其复位信号rst则在高电平有效。顶层模块11的LLR地址信号可以是input[7+FOLDFACTOR-1:0]、LLR输入信号可以是input[NUMINSTANCES*LLRWIDTH-1:0] 、LLR输出信号可以是output[NUMINSTANCES*LLRWIDTH-1:0],模式字(mode)可以是input[4:0],迭代次数上限可以是input[5:0] 。
本申请实施例中,控制模块12可以配置为根据顶层模块11提供的来自外部的译码控制参数控制所述变量节点模块、校验节点模块、第一存储模块和所述桶形移位模块并行完成LDPC码译码。
一些示例中,控制模块12,可以配置为通过控制所有变量节点模块15、校验节点模块16的读写地址以及桶形移位模块13的移位值来完成变量节点模块和所述校验节点模块之间的信息交换。
如图1所示,LDPC码译码器还可以包括:第二存储模块17,该第二存储模块17可以配置为存储有所有变量节点模块15与所述校验节点模块16的Tanner图中的边的信息。
本申请实施例中,控制模块12可以配置为从第二存储模块17中读取所述边的信息,产生校验节点的地址信号、变量节点的地址信号、写操作控制信号和读操作控制信号,变量节点模块15可以配置为根据读操作控制信号将收集到的LLR信息沿着Tanner图中的边传送给其相连的校验节点,按照预先配置的译码算法更新公式和变量节点模块15自身的结构对校验节点模块16传回的LLR信息进行更新;校验节点模块16可以配置为根据所述写操作控制信号,按照预先配置的译码算法更新公式和校验节点模块16自身的结构进行校验节点的更新,并将更新后的LLR信息沿着所述Tanner图中的边传回给所述变量节点模块15;控制模块12,还可以配置为在当前迭代次数达到所述迭代次数上限时,计算所有变量节点模块中的硬判决信息,进行硬判决,并将所述硬判决的判决结果存入所述第二存储模块17。具体而言,当达到译码成功条件或最大迭代次数时,完成译码,否则控制模块12控制各个模块重复上述的消息更新过程。
本申请实施例中,桶形移位模块13可以具有两个端口:第一端口和第二端口,变量节点模块15可以具有第一端口,校验节点模块16可以具有第二端口,桶形移位模块13可以通过第一端口与变量节点模块15通信、通过第二端口与校验节点模块16通信。具体来说,桶形移位模块13可以配置为在控制模块12产生的前半部分控制(first_half)信号的控制下,在每次迭代的前半部分使用第一端口收集来自变量节点模块15的LLR信息并存入移位寄存器中,在每次迭代的后半部分使用第二端口收集来自校验节点模块16的LLR信息并存入所述移位寄存器中,并且允许在三个周期内的任何旋转移位。其中,前半部分控制信号,用于控制shuffle桶形移位器的输入,每次迭代的前一半(为高)则使用vn_concat,每次迭代的后一半(为低)则使用cn_concat。
本申请实施例中,控制模块12还可以配置为在顶层模块11的译码完成标志的指示下,将所有变量节点模块15的LLR信息按照上述例化并行数和输入带宽生成LLR输出信号并输出。
本申请实施例中,变量节点模块15还可配置为通过一组寄存器串行接收所述LLR输入信号以完成上述LLR信息的收集。并且,变量节点模块15在在收到经过顶层模块11传递的访问控制信号时停止接收,该访问控制信号可以指示所述LLR信息传输完成。并且,变量节点模块15连接这组寄存器,可以由顶层模块11提供的输入控制信号来控制寄存器组和变量节点模块15之间数据的交换。例如,如果LLR地址信号llr_addr的值为0,并且输入控制信号llr_din_we为高,这组寄存器的值就会根据llr_addr的值写入到地址0中,在0地址中的每个RAM存储的值也会被传送到寄存器组中,这就完成变量节点模块15和寄存器组之间的信息交换处理。按照此过程,变量节点模块15的读写操作可同时完成。
本申请实施例的LDPC码译码器通过参数化和模块化的设计,实现了并行度灵活可配置。实际应用中,本申请实施例中的LDPC码译码器,可以基于FPGA或ASIC实现,可以使用Verilog、VHDL、System C,System Generator/DSP builder等实现。图4示出了本申请实施例LDPC码译码器的FPGA实现的示例性时序关系图。
以上,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (4)
1.一种LDPC码译码器,其特征在于,包括:
变量节点模块;
校验节点模块;
顶层模块;
控制模块;
桶形移位模块;
第一存储模块;
其中,所述顶层模块配置有折叠因子、例化并行数和对数似然比LLR信息的输入位宽,所述变量节点模块、校验节点模块和第一存储模块的例化个数等于所述例化并行数;所述例化并行数等于360除以所述折叠因子得到的商,所述折叠因子的取值至少包括如下之一或多项:1、2、3、4;输入位宽为6;
所述控制模块配置为根据所述顶层模块提供的来自外部的译码控制参数控制所述变量节点模块、校验节点模块、第一存储模块和所述桶形移位模块并行完成LDPC码译码;
所述顶层模块配置为将外部输入的访问控制信号、由所述折叠因子决定的外部输入的LLR地址信号、外部输入的输入控制信号、按照所述例化并行数和对数似然比LLR信息的输入位宽将来自外部的LLR输入信号分路提供给每个所述变量节点模块和每个所述校验节点模块;所述控制模块,是配置为通过控制所述变量节点模块和所述校验节点模块的读写地址以及所述桶形移位模块的移位值来完成所述变量节点模块和所述校验节点模块之间的信息交换;
还包括:第二存储模块,所述第二存储模块存储有所述变量节点模块与所述校验节点模块的Tanner图中的边的信息;
所述控制模块,是配置为从所述第二存储模块中读取所述边的信息,产生校验节点的地址信号、变量节点的地址信号、写操作控制信号和读操作控制信号;
所述变量节点模块,配置为根据所述读操作控制信号将收集到的LLR信息沿着Tanner图中的边传送给其相连的校验节点,按照预先配置的译码算法更新公式和所述变量节点模块的结构对所述校验节点模块传回的LLR信息进行更新;
所述校验节点模块,配置为根据所述写操作控制信号,按照预先配置的译码算法更新公式和所述校验节点模块的结构进行校验节点的更新,并将更新后的LLR信息沿着所述Tanner图中的边传回给所述变量节点模块;
所述控制模块,还配置为在当前迭代次数达到迭代次数上限时,计算所有变量节点模块中的硬判决信息,进行硬判决,并将所述硬判决的判决结果存入所述第二存储模块;
所述桶形移位模块,配置为所述控制模块产生的前半部分控制信号的控制下,在每次迭代的前半部分使用第一端口收集来自变量节点模块的LLR信息并存入移位寄存器中,在每次迭代的后半部分使用第二端口收集来自所述校验节点模块的LLR信息并存入所述移位寄存器中,并且允许在三个周期内的任何旋转移位。
2.如权利要求1所述的LDPC码译码器,其特征在于,所述顶层模块还配置为向所述控制模块提供译码控制参数,所述译码控制参数包括模式字、开始信号、迭代次数上限和处理完成标志。
3.如权利要求1所述的LDPC码译码器,其特征在于,所述控制模块,还配置为在所述顶层模块的译码完成标志的指示下,将所有变量节点模块的LLR信息按照所述例化并行数和输入带宽生成LLR输出信号并输出。
4.如权利要求1所述的LDPC码译码器,其特征在于,变量节点模块还可配置为通过一组寄存器串行接收所述LLR输入信号以完成其LLR信息的收集,在收到经过所述顶层模块传递的访问控制信号时停止接收所述LLR输入信号,并且在所述顶层模块提供的输入控制信号为高时与所述寄存器交换数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911202748.9A CN110868225B (zh) | 2019-11-29 | 2019-11-29 | Ldpc码译码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911202748.9A CN110868225B (zh) | 2019-11-29 | 2019-11-29 | Ldpc码译码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110868225A CN110868225A (zh) | 2020-03-06 |
CN110868225B true CN110868225B (zh) | 2023-06-06 |
Family
ID=69657818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911202748.9A Active CN110868225B (zh) | 2019-11-29 | 2019-11-29 | Ldpc码译码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110868225B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112152637B (zh) * | 2020-09-10 | 2024-04-30 | 南京中科晶上通信技术有限公司 | Dvb-s2 ldpc译码变量节点更新模块及其实现方法 |
CN112187285B (zh) * | 2020-09-18 | 2024-02-27 | 南京中科晶上通信技术有限公司 | 基于dvb-s2译码器的桶形移位器处理方法及桶形移位器 |
CN112636767B (zh) * | 2020-12-03 | 2023-04-07 | 重庆邮电大学 | 一种具有单置换网络的分层半并行ldpc译码器系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105680879A (zh) * | 2016-01-07 | 2016-06-15 | 西安电子科技大学 | 兼容dvb-s2x标准的ldpc译码器设计方法 |
CN109495115A (zh) * | 2018-11-01 | 2019-03-19 | 哈尔滨工业大学 | 一种基于fpga的ldpc译码器及译码方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060085720A1 (en) * | 2004-10-04 | 2006-04-20 | Hau Thien Tran | Message passing memory and barrel shifter arrangement in LDPC (Low Density Parity Check) decoder supporting multiple LDPC codes |
CN106330203B (zh) * | 2016-08-26 | 2019-12-31 | 晶晨半导体(上海)股份有限公司 | 一种ldpc的解码方法 |
US10218384B2 (en) * | 2016-12-01 | 2019-02-26 | Sandisk Technologies Llc | ECC decoder with multiple decoding modes |
-
2019
- 2019-11-29 CN CN201911202748.9A patent/CN110868225B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105680879A (zh) * | 2016-01-07 | 2016-06-15 | 西安电子科技大学 | 兼容dvb-s2x标准的ldpc译码器设计方法 |
CN109495115A (zh) * | 2018-11-01 | 2019-03-19 | 哈尔滨工业大学 | 一种基于fpga的ldpc译码器及译码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110868225A (zh) | 2020-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11368168B2 (en) | Low density parity check decoder | |
CN110868225B (zh) | Ldpc码译码器 | |
KR101504101B1 (ko) | 적어도 두 개의 디코딩 매소드를 디코딩하기 위한 asip 아키텍처 | |
US10374633B2 (en) | Method and system for LDPC decoding | |
WO2006128164A2 (en) | Method and apparatus for extending decoding time in an iterative decoder using input codeword pipelining | |
US10484012B1 (en) | Systems and methods for decoding quasi-cyclic (QC) low-density parity-check (LDPC) codes | |
CN103220003A (zh) | 提高节点处理并行度的qc-ldpc译码器的实现方法 | |
US10833704B1 (en) | Low-density parity check decoder using encoded no-operation instructions | |
CN103501210A (zh) | 一种高性能多标准fec译码器 | |
Studer et al. | Configurable high-throughput decoder architecture for quasi-cyclic LDPC codes | |
US8234536B1 (en) | Iterative decoder using input data pipelining and time-interleaved processing | |
Rovini et al. | A scalable decoder architecture for IEEE 802.11 n LDPC codes | |
CN102064835B (zh) | 适用于准循环ldpc译码的译码器 | |
CN102201817B (zh) | 基于存储器折叠架构优化的低功耗ldpc译码器 | |
CN110971242B (zh) | 通用化的ldpc译码桶形移位器 | |
US11075650B1 (en) | Sub-matrix reduction for quasi-cyclic LDPC codes | |
Chen et al. | FPGA-based low-complexity high-throughput tri-mode decoder for quasi-cyclic LDPC codes | |
Usman et al. | A multi-Gbps fully pipelined layered decoder for IEEE 802.11 n/ac/ax LDPC codes | |
Chen et al. | Partly parallel overlapped sum-product decoder architectures for quasi-cyclic LDPC codes | |
Kakde et al. | FPGA implementation of decoder architectures for high throughput irregular LDPC codes | |
Luan et al. | A fast convergence and area-efficient decoder for quasi-cyclic low-density parity-check codes | |
Tavares et al. | A dual-core programmable decoder for LDPC convolutional codes | |
Ren et al. | A High-Performance and Low-Complexity 5G LDPC Decoder: Algorithm and Implementation | |
Thi et al. | ONE-MINIUM-ONLY BASIC-SET TRELLIS MIN-MAX DECODER ARCHITECTURE FOR NONBINARY LDPC CODE | |
Ivkovic et al. | Designing LDPC codes without small trapping sets by using Tanner graph covers |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 211100 floor 1-3, auxiliary building, building 6, artificial intelligence Industrial Park, Nanjing, Jiangsu Province Applicant after: Zhongke Nanjing mobile communication and computing Innovation Research Institute Address before: 211100 floor 1-3, auxiliary building, building 6, artificial intelligence Industrial Park, Nanjing, Jiangsu Province Applicant before: INSTITUTE OF COMPUTING TECHNOLOGY, CHINESE ACADEMY OF SCIENCES, NANJING INSTITUTE OF MOBILE COMMUNICATIONS AND COMPUTING INNOVATION |
|
GR01 | Patent grant | ||
GR01 | Patent grant |