CN104821863A - 一种无速率Spinal码的前向堆栈译码方法 - Google Patents
一种无速率Spinal码的前向堆栈译码方法 Download PDFInfo
- Publication number
- CN104821863A CN104821863A CN201510233300.9A CN201510233300A CN104821863A CN 104821863 A CN104821863 A CN 104821863A CN 201510233300 A CN201510233300 A CN 201510233300A CN 104821863 A CN104821863 A CN 104821863A
- Authority
- CN
- China
- Prior art keywords
- stack
- storehouse
- node
- search
- reliability
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0054—Maximum-likelihood or sequential decoding, e.g. Viterbi, Fano, ZJ algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种无速率Spinal码的前向堆栈译码方法,包括步骤:一、设置参数;二、初始状态压入B_stack;三、iD<n/k时i加1转四;iD≥n/k时转九;四、清空C_stack,将B_stack节点压入C_stack;五、扩展C_stack栈顶节点压入C_stack;C_stack大小等于Clim时转八;六、C_stack节点由栈顶向下降序排,栈顶节点层数小于iD时转五;栈顶节点层数等于iD时转七;七、遍历C_stack至将B-1个节点压入B_stack;节点数小于B-1时转三;八、遍历C_stack至将B个节点压入B_stack后转三;节点数大于0小于B时转三,层数iD的节点不存在时转十;九、译码结果输出;十、终止译码。本发明计算量小。
Description
技术领域
本发明属于通信技术领域,具体涉及一种无速率Spinal码的前向堆栈译码方法。
背景技术
无线网络通信的主要问题就是在时变信道的噪声、干扰和衰落的影响下找到一种高吞吐量的传输协议。一种理想的解决方法就是使用无速率编码,不限制发送端发送信息数量,而是根据信道状况进行调整。Spinal码是一种在时变信道无线网络中适用的无速率编码。Spinal码的核心是对输入消息比特连续使用伪随机哈希函数结合星座映射函数来产生传输符号消息。Spinal码是一种逼近香农容量限适于无线通信系统的好码。
现有的Spinal码译码方法为Bubble译码,该算法基于树搜索的最大似然译码方案。最大似然译码器从编码器初始hash状态所代表的根节点开始扩展译码树,遍历每个节点的所有输入,获得该节点的所有子节点,在搜索到树的所有叶子节点之后,能够得到最优路径。Bubble译码方法不搜索树的所有节点,在每一层搜索结束后,只保留最优的B个节点作为下一层搜索的母节点,因此,Bubble译码方案只搜索部分节点,扩展的树也只是部分树。但是,Spinal码的每一个节点的子节点数目较大,而Bubble译码方案中,每一层需要保留固定长度的节点,因此,该译码方案的计算复杂度很大,是一个随着信息位长度和信息分段长度增加而急剧增大的常数。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种无速率Spinal码的前向堆栈译码方法,其进行无速率Spinal码的译码的计算量小,性能良好,应用范围广,实用性强,便于推广使用。
为解决上述技术问题,本发明采用的技术方案是:一种无速率Spinal码的前向堆栈译码方法,其特征在于该方法包括以下步骤:
一种无速率Spinal码的前向堆栈译码方法,其特征在于该方法包括以下步骤:
步骤一、设置译码器参数:设置码树的总层数M、搜索单元大小D、每单元搜索完成后所得到的最大路径数目B、在一个搜索单元中搜索时的最大扩展路径数Clim和搜索层指数i,其中,M=n/k,n为无速率Spinal码的信息序列的长度,k为将无速率Spinal码的信息位分段后每段的信息序列的长度,D为能整除M的正整数,i的初始值为0;
步骤二、初始化搜索堆栈C_stack和保留路径堆栈B_stack,令译码器的初始hash状态与编码器的hash状态相同,将译码器的初始hash状态作为初始扩展节点压入保留路径堆栈B_stack,并将初始路径可靠度置为0,将初始扩展节点的层数置为0;
步骤三、比较iD与n/k的大小,当iD<n/k时,将i增加1,执行步骤四;当iD≥n/k时,执行步骤九;
步骤四、清空搜索堆栈C_stack,并将保留路径堆栈B_stack中的节点按可靠度大小顺序压入搜索堆栈C_stack,使得搜索堆栈C_stack中的节点按可靠度大小由栈顶向下降序排列,之后清空保留路径堆栈B_stack;
步骤五、扩展搜索堆栈C_stack的栈顶节点,遍历所有的可能输入,由子节点的路径编码序列和已有的信道观测值计算子节点的可靠度;删除被扩展过的栈顶节点,并将所有获得的子节点压入搜索堆栈C_stack;在扩展搜索堆栈C_stack的栈顶节点的过程中,当搜索堆栈C_stack的大小等于在一个搜索单元中搜索时的最大扩展路径数Clim时,终止扩展过程,执行步骤八;
步骤六、对搜索堆栈C_stack中的节点按照可靠度大小由栈顶向下降序排序,当搜索堆栈C_stack的栈顶节点的层数小于iD时,返回步骤五继续扩展搜索堆栈C_stack的栈顶节点;当搜索堆栈C_stack的栈顶节点的层数等于iD时,执行步骤七;
步骤七、将搜索堆栈C_stack的栈顶节点压入保留路径堆栈B_stack,同时遍历搜索堆栈C_stack至将除栈顶节点以外的可靠度依次从大到小排列的前B-1个层数为iD的节点,按可靠度从大到小的顺序依次压入保留路径堆栈B_stack后停止,之后返回步骤三;当除栈顶节点以外的层数为iD的节点数目小于B-1时,遍历搜索堆栈C_stack,将所有层数为iD的节点压入保留路径堆栈B_stack之后停止,之后返回步骤三;
步骤八、遍历搜索堆栈C_stack至将搜索堆栈C_stack中可靠度依次从大到小排列的前B个层数为iD的节点,按可靠度大小顺序依次压入保留路径堆栈B_stack后停止,之后返回步骤三;当层数为iD的节点数目大于0且小于B时,遍历搜索堆栈C_stack,将所有层数为iD的节点压入保留路径堆栈B_stack之后停止,之后返回步骤三;当层数为iD的节点不存在时,执行步骤十;
步骤九、将保留路径堆栈B_stack中可靠度最大的节点的信息比特输入作为译码结果输出;
步骤十、终止译码过程、输出译码错误,等待新的接收信息。
上述的一种无速率Spinal码的前向堆栈译码方法,其特征在于:步骤五中由子节点的路径编码序列和已有的信道观测值计算子节点的可靠度依据的计算公式为L(Zt)=L(Z0)+logP(yt|xt(Zt)),其中,Z0为可靠度为L(Z0)的母节点,Zt为母节点Z0的一个子节点,L(Zt)为子节点Zt的可靠度,xt(Zt)为由母节点Z0转移至子节点Zt的路径编码序列,yt为已有的信道观测值,P(yt|xt(Zt))为当信道输入为xt(Zt)、输出为yt时的信道转移概率。
本发明与现有技术相比具有以下优点:
1、本发明针对现有无速率Spinal码的译码方法复杂度过高的不足而提出,在不改变无速率Spinal码的速率性能的前提下,极大地减小了译码算法的计算量。
2、本发明设计了一种近似最大似然译码算法,根据无速率Spinal码的编码有序性、随机性,遍历最小的可能码树找到最优路径,译码方法核心是进行分段的树搜索,基于堆栈译码,找到最优路径,性能良好。
3、本发明不仅适用于长度较短的码字,对较长码字仍然适用,适用于不同信道条件下的无速率Spinal码的译码,可用于无线网络通信中对抗复杂时变信道,实用性强,便于推广使用。
综上所述,本发明进行无速率Spinal码的译码的计算量小,性能良好,应用范围广,实用性强,便于推广使用。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明的方法流程框图。
具体实施方式
如图1所示,本发明包的无速率Spinal码的前向堆栈译码方法,包括以下步骤:
步骤一、设置译码器参数:设置码树的总层数M、搜索单元大小D、每单元搜索完成后所得到的最大路径数目B、在一个搜索单元中搜索时的最大扩展路径数Clim和搜索层指数i,其中,M=n/k,n为无速率Spinal码的信息序列的长度,k为将无速率Spinal码的信息位分段后每段的信息序列的长度,D为能整除M的正整数,i的初始值为0;
步骤二、初始化搜索堆栈C_stack和保留路径堆栈B_stack,令译码器的初始hash状态与编码器的hash状态相同,将译码器的初始hash状态作为初始扩展节点压入保留路径堆栈B_stack,并将初始路径可靠度置为0,将初始扩展节点的层数置为0;
步骤三、比较iD与n/k的大小,当iD<n/k时,将i增加1,执行步骤四;当iD≥n/k时,执行步骤九;
步骤四、清空搜索堆栈C_stack,并将保留路径堆栈B_stack中的节点按可靠度大小顺序压入搜索堆栈C_stack,使得搜索堆栈C_stack中的节点按可靠度大小由栈顶向下降序排列,之后清空保留路径堆栈B_stack;
步骤五、扩展搜索堆栈C_stack的栈顶节点,遍历所有的可能输入,由子节点的路径编码序列和已有的信道观测值计算子节点的可靠度;删除被扩展过的栈顶节点,并将所有获得的子节点压入搜索堆栈C_stack;在扩展搜索堆栈C_stack的栈顶节点的过程中,当搜索堆栈C_stack的大小等于在一个搜索单元中搜索时的最大扩展路径数Clim时,终止扩展过程,执行步骤八;
本实施例中,步骤五中由子节点的路径编码序列和已有的信道观测值计算子节点的可靠度依据的计算公式为L(Zt)=L(Z0)+logP(yt|xt(Zt)),其中,Z0为可靠度为L(Z0)的母节点,Zt为母节点Z0的一个子节点,L(Zt)为子节点Zt的可靠度,xt(Zt)为由母节点Z0转移至子节点Zt的路径编码序列,yt为已有的信道观测值,P(yt|xt(Zt))为当信道输入为xt(Zt)、输出为yt时的信道转移概率。
步骤六、对搜索堆栈C_stack中的节点按照可靠度大小由栈顶向下降序排序,当搜索堆栈C_stack的栈顶节点的层数小于iD时,返回步骤五继续扩展搜索堆栈C_stack的栈顶节点;当搜索堆栈C_stack的栈顶节点的层数等于iD时,执行步骤七;
步骤七、将搜索堆栈C_stack的栈顶节点压入保留路径堆栈B_stack,同时遍历搜索堆栈C_stack至将除栈顶节点以外的可靠度依次从大到小排列的前B-1个层数为iD的节点,按可靠度从大到小的顺序依次压入保留路径堆栈B_stack后停止,之后返回步骤三;当除栈顶节点以外的层数为iD的节点数目小于B-1时,遍历搜索堆栈C_stack,将所有层数为iD的节点压入保留路径堆栈B_stack之后停止,之后返回步骤三;
步骤八、遍历搜索堆栈C_stack至将搜索堆栈C_stack中可靠度依次从大到小排列的前B个层数为iD的节点,按可靠度大小顺序依次压入保留路径堆栈B_stack后停止,之后返回步骤三;当层数为iD的节点数目大于0且小于B时,遍历搜索堆栈C_stack,将所有层数为iD的节点压入保留路径堆栈B_stack之后停止,之后返回步骤三;当层数为iD的节点不存在时,执行步骤十;
步骤九、将保留路径堆栈B_stack中可靠度最大的节点的信息比特输入作为译码结果输出;
步骤十、终止译码过程、输出译码错误,等待新的接收信息。
将发明的无速率Spinal码的前向堆栈译码方法应用于具体的通信系统中厚,具体的通信过程为:
步骤Ⅰ、发送端编码器将信源消息进行无速率编码(Spinal码),编码成无限长的随机码字,经由信道发出;
步骤Ⅱ、接收端译码器获得足够信道观测后,进行译码,并将译码获得的信息进行校验;
步骤Ⅲ、当译码获得的信息不满足校验时继续接收信号,将新获得的信道观测和已有的信道观测一起送入译码器进行译码,直至满足校验关系;
步骤Ⅳ、当译码获得的信息满足校验关系之后,译码器发送译码成功的反馈信号给发送端,并将消息传递给信宿,完成了一次通信。
综上所述,本发明是一种基于最大似然译码的序列译码方案,能够解决现有无速率Spinal码的译码计算量大且固定的问题,并且逼近香农容量限,性能良好,同时本发明不仅适用于长度较短的码字,对较长码字仍然适用;本发明适用于不同信道条件下的无速率Spinal码的译码。
以上所述,仅是本发明的较佳实施例,并非对本发明作任何限制,凡是根据本发明技术实质对以上实施例所作的任何简单修改、变更以及等效结构变化,均仍属于本发明技术方案的保护范围内。
Claims (2)
1.一种无速率Spinal码的前向堆栈译码方法,其特征在于该方法包括以下步骤:
步骤一、设置译码器参数:设置码树的总层数M、搜索单元大小D、每单元搜索完成后所得到的最大路径数目B、在一个搜索单元中搜索时的最大扩展路径数Clim和搜索层指数i,其中,M=n/k,n为无速率Spinal码的信息序列的长度,k为将无速率Spinal码的信息位分段后每段的信息序列的长度,D为能整除M的正整数,i的初始值为0;
步骤二、初始化搜索堆栈C_stack和保留路径堆栈B_stack,令译码器的初始hash状态与编码器的hash状态相同,将译码器的初始hash状态作为初始扩展节点压入保留路径堆栈B_stack,并将初始路径可靠度置为0,将初始扩展节点的层数置为0;
步骤三、比较iD与n/k的大小,当iD<n/k时,将i增加1,执行步骤四;当iD≥n/k时,执行步骤九;
步骤四、清空搜索堆栈C_stack,并将保留路径堆栈B_stack中的节点按可靠度大小顺序压入搜索堆栈C_stack,使得搜索堆栈C_stack中的节点按可靠度大小由栈顶向下降序排列,之后清空保留路径堆栈B_stack;
步骤五、扩展搜索堆栈C_stack的栈顶节点,遍历所有的可能输入,由子节点的路径编码序列和已有的信道观测值计算子节点的可靠度;删除被扩展过的栈顶节点,并将所有获得的子节点压入搜索堆栈C_stack;在扩展搜索堆栈C_stack的栈顶节点的过程中,当搜索堆栈C_stack的大小等于在一个搜索单元中搜索时的最大扩展路径数Clim时,终止扩展过程,执行步骤八;
步骤六、对搜索堆栈C_stack中的节点按照可靠度大小由栈顶向下降序排序,当搜索堆栈C_stack的栈顶节点的层数小于iD时,返回步骤五继续扩展搜索堆栈C_stack的栈顶节点;当搜索堆栈C_stack的栈顶节点的层数等于iD时,执行步骤七;
步骤七、将搜索堆栈C_stack的栈顶节点压入保留路径堆栈B_stack,同时遍历搜索堆栈C_stack至将除栈顶节点以外的可靠度依次从大到小排列的前B-1个层数为iD的节点,按可靠度从大到小的顺序依次压入保留路径堆栈B_stack后停止,之后返回步骤三;当除栈顶节点以外的层数为iD的节点数目小于B-1时,遍历搜索堆栈C_stack,将所有层数为iD的节点压入保留路径堆栈B_stack之后停止,之后返回步骤三;
步骤八、遍历搜索堆栈C_stack至将搜索堆栈C_stack中可靠度依次从大到小排列的前B个层数为iD的节点,按可靠度大小顺序依次压入保留路径堆栈B_stack后停止,之后返回步骤三;当层数为iD的节点数目大于0且小于B时,遍历搜索堆栈C_stack,将所有层数为iD的节点压入保留路径堆栈B_stack之后停止,之后返回步骤三;当层数为iD的节点不存在时,执行步骤十;
步骤九、将保留路径堆栈B_stack中可靠度最大的节点的信息比特输入作为译码结果输出;
步骤十、终止译码过程、输出译码错误,等待新的接收信息。
2.按照权利要求1所述的一种无速率Spinal码的前向堆栈译码方法,其特征在于:步骤五中由子节点的路径编码序列和已有的信道观测值计算子节点的可靠度依据的计算公式为L(Zt)=L(Z0)+logP(yt|xt(Zt)),其中,Z0为可靠度为L(Z0)的母节点,Zt为母节点Z0的一个子节点,L(Zt)为子节点Zt的可靠度,xt(Zt)为由母节点Z0转移至子节点Zt的路径编码序列,yt为已有的信道观测值,P(yt|xt(Zt))为当信道输入为xt(Zt)、输出为yt时的信道转移概率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510233300.9A CN104821863B (zh) | 2015-05-09 | 2015-05-09 | 一种无速率Spinal码的前向堆栈译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510233300.9A CN104821863B (zh) | 2015-05-09 | 2015-05-09 | 一种无速率Spinal码的前向堆栈译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104821863A true CN104821863A (zh) | 2015-08-05 |
CN104821863B CN104821863B (zh) | 2018-03-13 |
Family
ID=53732046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510233300.9A Active CN104821863B (zh) | 2015-05-09 | 2015-05-09 | 一种无速率Spinal码的前向堆栈译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104821863B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105356891A (zh) * | 2015-11-26 | 2016-02-24 | 中国地质大学(武汉) | 一种高资源利用率的极性译码批处理方法 |
CN106254030A (zh) * | 2016-07-29 | 2016-12-21 | 西安电子科技大学 | 无速率Spinal码的双向编译码方法 |
CN107070525A (zh) * | 2015-11-20 | 2017-08-18 | 法国矿业电信学校联盟 | 参数化顺序解码 |
CN112333127A (zh) * | 2020-10-30 | 2021-02-05 | 中北大学 | 一种基于Spinal码的无比率安全编码方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110035032A1 (en) * | 2009-08-07 | 2011-02-10 | Hon Hai Precision Industry Co., Ltd. | Audio signal processing device |
CN103986932A (zh) * | 2014-04-25 | 2014-08-13 | 广州市香港科大霍英东研究院 | 一种视频数据流的信源信道联合编解码方法 |
CN103987083A (zh) * | 2014-04-25 | 2014-08-13 | 广州市香港科大霍英东研究院 | 一种视频流的无比率编码解码方法及装置 |
-
2015
- 2015-05-09 CN CN201510233300.9A patent/CN104821863B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110035032A1 (en) * | 2009-08-07 | 2011-02-10 | Hon Hai Precision Industry Co., Ltd. | Audio signal processing device |
CN103986932A (zh) * | 2014-04-25 | 2014-08-13 | 广州市香港科大霍英东研究院 | 一种视频数据流的信源信道联合编解码方法 |
CN103987083A (zh) * | 2014-04-25 | 2014-08-13 | 广州市香港科大霍英东研究院 | 一种视频流的无比率编码解码方法及装置 |
Non-Patent Citations (2)
Title |
---|
E. LOPEZ-LARRAZ ET AL: "Continuous decoding of motor attempt and motor imagery from EEG activity in spinal cord injury patients", 《 ENGINEERING IN MEDICINE AND BIOLOGY SOCIETY (EMBC), 2012 ANNUAL INTERNATIONAL CONFERENCE OF THE IEEE》 * |
汪雪琴等: "Spinal码在深空通信中的应用研究", 《高技术通讯》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107070525A (zh) * | 2015-11-20 | 2017-08-18 | 法国矿业电信学校联盟 | 参数化顺序解码 |
CN107070525B (zh) * | 2015-11-20 | 2021-06-11 | 法国矿业电信学校联盟 | 参数化顺序解码 |
CN105356891A (zh) * | 2015-11-26 | 2016-02-24 | 中国地质大学(武汉) | 一种高资源利用率的极性译码批处理方法 |
CN105356891B (zh) * | 2015-11-26 | 2018-11-27 | 中国地质大学(武汉) | 一种高资源利用率的极性译码批处理方法 |
CN106254030A (zh) * | 2016-07-29 | 2016-12-21 | 西安电子科技大学 | 无速率Spinal码的双向编译码方法 |
CN106254030B (zh) * | 2016-07-29 | 2019-04-23 | 西安电子科技大学 | 无速率Spinal码的双向编译码方法 |
CN112333127A (zh) * | 2020-10-30 | 2021-02-05 | 中北大学 | 一种基于Spinal码的无比率安全编码方法 |
CN112333127B (zh) * | 2020-10-30 | 2023-09-08 | 中北大学 | 一种基于Spinal码的无比率安全编码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104821863B (zh) | 2018-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105227189B (zh) | 分段crc辅助的极化码编译码方法 | |
CN102164026B (zh) | 基于深空通信环境下的喷泉码编译方法 | |
US10348331B2 (en) | Decoding method and apparatus of polar code | |
CN111447160B (zh) | 基于神经网络的大规模mimo无源随机接入的信号检测方法 | |
CN103414540A (zh) | 一种基于Polar码的退化窃听信道速率兼容方法 | |
CN104821863A (zh) | 一种无速率Spinal码的前向堆栈译码方法 | |
CN108847850A (zh) | 一种基于crc-sscl的分段极化码编译码方法 | |
CN1695307A (zh) | 基于格子结构的接收器 | |
CN109921904B (zh) | 基于经典-量子极化信道的高效量子密钥分发方法 | |
CN107896137A (zh) | 一种适用于极化码译码路径分裂的排序方法 | |
CN104081701A (zh) | 光网络系统的通信方法、系统及装置 | |
CN106254030B (zh) | 无速率Spinal码的双向编译码方法 | |
CN105119834A (zh) | 一种基于复合trie树结构的源地址目的地址联合查找方法 | |
CN103312458A (zh) | 混合编码方法 | |
CN104065457A (zh) | 一种合并译码的方法及装置 | |
CN108833052A (zh) | 信道极化译码路径度量值排序方法 | |
CN103944689A (zh) | 一种适合物理层无速率编码传输的流水线传输方法 | |
CN107959650A (zh) | 一种面向低码率bch码的盲帧同步方法 | |
US9160399B2 (en) | System and apparatus for decoding tree-based messages | |
CN102916780B (zh) | 一种用于消除短环的喷泉码编译码方法 | |
CN108199804B (zh) | 一种同时具有纠错与加密功能的串口数据发送方法 | |
CN106130692B (zh) | 一种基于在线喷泉码的不等差保护方法 | |
CN108352924A (zh) | 一种数据处理方法及装置 | |
CN109639290A (zh) | 一种半随机分组叠加编码及译码方法 | |
CN104821881A (zh) | 一种基于压缩和纠错编码的物联网感知层数据安全融合方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |