一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

面向PUF的BCH纠错码硬件电路实现方法及BCH译码器与流程

2022-02-21 11:38:46 来源:中国专利 TAG:

面向puf的bch纠错码硬件电路实现方法及bch译码器
技术领域
1.本发明涉及bch译码器,属于专用集成电路设计技术领域。


背景技术:

2.puf(physically unclonable function)即物理不可克隆函数技术,可以提供id认证的二进制安全信息,其随机性、不可预测性、不可克隆性使得提供的id信息在设备认证过程中更加安全。puf技术是由能够产生输出的电路、组件、过程或其他实体来实现的。sram puf就是借助sram的随机特性实现puf的激励响应关系。但sram存在不稳定的特性,可能会因为电路中的噪声产生跳变,其输出的数值发生变化,因此需要纠错码来解决这一问题,保证数据的稳定。
3.纠错码(error correcting code)是在接收端能自动地纠正数据传输中所发生差错的编码方式。bch码是编码理论尤其是纠错码中常用的编码方法之一,名字来源于bose、ray-chaudhuri和hocquenghem三个数学家的缩写。bch码可以用于sram puf的纠错,保证其输出的稳定。为了保证信息的安全性,bch码通常采用硬件电路实现的方式,即通过定制化的逻辑门和电路实现bch算法。bch码的实现在实际应用中可以包括编码和译码两个部分,其中译码的部分也可以称之为bch译码器。bch译码器主要包括伴随式生成模块(syndrome module),错误位置方程生成模块(bma module),求解错误位置模块(chein module),其中常用的计算错误位置方程使用的算法叫做bma,常用的错误位置求解的算法叫做钱搜索。
4.对于纠错码而言,根据编码的情况不同,纠错能力也存在一定差异,常用(n,k,t)结构来表述纠错码的三大基本参数,其中n为码长,k为信息位,t为纠错能力。例如(127,15,27)的意思是,信道中传递的二进制信息为127bit,而只有15bit为真正需要传递的信息,剩下112bit的信息都是冗余位,但这些信息可以让127bit数据中出现任意≤27bit的错误全部纠正回来,保证15bit的信息不发生变化。
5.bch算法过程中涉及到有限域的乘法、并行单元的计算、求逆计算等。对于asic芯片的实现而言,码长越长,bch码的纠错能力越高,则耗费的有限域乘法器越多且占用的芯片面积越大,其增长量和码长、纠错能力呈接近于指数的关系。而随芯片面积增大带来的芯片成本增加、功耗增大等问题也随之而来。另一方面,在数学证明中,bch码需要对特定的序列进行求逆计算,而硬件电路对于求逆的实现也需要耗费大量的运算资源,增大芯片面积。


技术实现要素:

6.本发明针对上述使用场景中的问题,面向puf的bch码算法的硬件电路实现,提出在原有算法的流程上增加对数表/反对数表模块的方案,并针对此方案进行一系列的具体优化,有效规避了有限域乘法器和求逆计算占用面积过大的弊端。
7.为了实现上述发明目的,本发明采用如下技术方案:
8.本发明首先提供一种面向puf的bch纠错码硬件电路实现方法,其特征在于利用二进制bch纠错码的对数表和反对数表,将采用有限域乘法器实现的有限域乘法功能转换到
实数域实现,具体方法是:当需要进行有限域乘法计算时,首先利用二进制bch纠错码的对数表对各乘数进行转换,得到各乘数的幂指数,然后对各乘数的幂指数求和,再将各乘数的幂指数求和结果对本源bch码字的长度进行求余,最后再利用二进制bch纠错码的反对数表对求余结果进行转换,得到有限域乘法的最终结果。
9.本发明还提供一种面向puf的bch译码器,包括伴随式生成模块、错误位置方程生成模块和求解错误位置模块,其特征在于还包括对数表/反对数表模块,当所述伴随式生成模块、错误位置方程生成模块、求解错误位置模块需要进行有限域乘法计算时,将乘数输入对数表/反对数表模块进行编译,对数表/反对数表模块返回各乘数的幂指数,所述伴随式生成模块、错误位置方程生成模块、求解错误位置模块对返回的各乘数的幂指数求和,再将各乘数的幂指数求和结果对本源bch码字的长度进行求余,最后对数表/反对数表模块对求余结果进行反编译,得到有限域乘法的最终结果。
10.优选地,所述对数表/反对数表模块将幂指数
“-
1”映射为其补码。
11.优选地,所述伴随式生成模块、错误位置方程模块、求解错误位置模块分别包含一个求和模块和一个求余模块,所述求和模块用于对各乘数的幂指数求和,所述求余模块用于对各乘数的幂指数求和结果进行求余。
12.优选地,所述求余模块利用移位器和加法器对需要求余的数值a进行如下求余操作:
13.amodn=a-{[(a>>2x) (a>>x)]<<x}>>x-{[(a>>2x) (a>>x)]<<x},其中x表示本源bch码的有限域级数,n表示本源bch码字的长度。
[0014]
优选地,所述对数表/反对数表模块采用寄存器阵列或组合逻辑电路实现对有限域元素进行取指数及其逆操作。
[0015]
本发明有益效果:
[0016]
1.对数表/反对数表模块的引入在一定程度上解决了硬件电路实现有限域乘法和求逆计算占用资源过多的缺点,尤其是当bch码字较长、纠错能力较强的时候,这种方案在集成电路面积和功耗上有比较大的优势。
[0017]
2.对数表/反对数表模块的引入产生了实数域的计算,在映射到有限域上时需要进行求余处理,本发明创新性的提出了专用组合逻辑求余模块,有效解决了普通求余电路占用面积大、占用时钟周期长的缺点。
[0018]
3.对数表/反对数表模块在实际使用的过程中,需要实现唯一的负数
“-
1”,本发明借助硬件电路实际工作原理,采取补码的方式实现反对数表中对负数的映射,使得对数表/反对数表得以补全,在一定程度上也降低了非补全表因逻辑判断导致集成电路面积较大的缺点。
[0019]
4、bch译码器的本质是对数学算法公式的硬件电路实现,本发明主要采用对数表/反对数表的方案,在满足算法要求的基础上尽可能减小芯片面积。对数表主要借助组合逻辑电路实现,不需要占用flash等结构的存储(使用存储的方案也可以实现),另外通过对求余和负数的处理,进一步达到了减小芯片面积和功耗的目的。
附图说明
[0020]
图1为本发明bch译码器硬件算法流程图;
[0021]
图2为有限域元素与二进制数映射表;
[0022]
图3是采用寄存器阵列实现对数表/反对数表模块示例;
[0023]
图4是采用组合逻辑电路实现对数表/反对数表模块示例;
[0024]
图5为伴随式生成模块电路流程图;
[0025]
图6为错误位置方程生成模块状态流程图;
[0026]
图7为错误位置方程生成模块的算法流程图;
[0027]
图8为求解错误位置模块电路流程图。
具体实施方式
[0028]
以下结合附图,对本发明的技术方案进行详细说明。
[0029]
本发明提供一种面向puf尤其是面向sram puf的bch译码器硬件电路实现方案,该bch译码器是一种在相同纠错能力和串并行方案情况下,逻辑门数量更少、芯片面积更小的低功耗bch译码器。
[0030]
如图1所示,bch译码器主要包括伴随式生成模块(syndrome module),错误位置方程生成模块(bma module),求解错误位置模块(chein module)和对数表/反对数表模块构成,其中syndrome、bma、chein module模块又分别包含一个求余(mod)模块和一个求和模块。有限域元素与二进制数映射表如图2所示,其中左侧表示有限域中的元素,右侧表示该元素对应的二进制序列。由于所有的数学算法都基于二进制序列的计算,bch码硬件电路中αm不能参与其中,只能通过对应的二进制序列值进行计算,该二进制序列的乘法运算必须满足有限域的特性,故而产生了有限域乘法器的结构,以区别于普通乘法器。
[0031]
对数表/反对数表模块的原理是采用组合逻辑电路定义了下述的计算公式:
[0032]
index[alpha[i]]=i
……………………………………………………
(1)
[0033]
其中alpha[i]表示αi,index表示求αi的幂指数i。这种做法可以实现对αi的取指数操作,从而使涉及到有限域乘法的计算转换为幂指数的加法计算,而硬件电路中的有限位数的加法器相比有限域乘法器大幅度缩减了逻辑门的数量。
[0034]
具体实现时,需要对该式的值进行定义(现场定义或初始值定义),在电路中体现为一种映射关系,故此模块称之为对数表/反对数表模块。以下示例出对数表/反对数表模块的两种实现方式,但对数表/反对数表模块并不仅限于以下两种实现方式。
[0035]
(1)如图3所示,对于(n,k,t)=(127,15,27)的码字,其对数表/反对数表模块的i和alpha[i]均为7bit;寄存器阵列共127个地址,每个地址提供7bit的数据,即阵列的大小为7
×
127;寄存器阵列前置有逻辑门构成的7-127译码器。当7bit长度的i或alpha[i]输入后,对数表/反对数表模块会并行地输出alpha[i]或i的7bit数值。另外,寄存器阵列中各个寄存器的初始值在系统上电reset时会进行赋值,其输入端固定接高电平或低电平,输出端由地址信号控制进行输出。
[0036]
(2)除借助寄存器实现公式(1)以外,还可以只借助逻辑门电路实现。同样地,对于(n,k,t)=(127,15,27)的码字,其对数表/反对数表模块实现形式如图4所示。该电路以输入i的数值为不同逻辑门电路单元,这些单元共享相同的输入路径,当i的数值与电路的设定数值相同时,输出设定的对数表值,反之输出0。例如,对于i=8,其输出为固定的alpha[i]=6,而其他i值对应的逻辑门电路输出会与该值的电路输出做“或”逻辑,以保证各单元
之间输出不互相影响。
[0037]
为了满足有限域的特性,在转换为加法器后还需要进行求余的操作。在实际操作过程中,求余电路消耗的面积依然很大,如使用多个单元并行求余方案可能会使得上述创新点失去原有的优势。根据bch译码算法本身求余的特点,二进制序列需要对码字的长度n进行求余计算,而本源bch码满足:
[0038]
n=2
x-1
……………………………………………………
(2)
[0039]
其中n为本源bch码字的长度,x为该本源bch码的有限域的级数。例如,本源bch码的码字长度为63bit、127bit、255bit等。由欧几里得除法可知对于正整数b,对任意正整数a》b均有
[0040]
a=qb r,0≤r<b
……………………………………………………
(3)
[0041]
而在计算机实际计算时,对于公式(3)中的a,余数会因为数据类型的原因溢出不被保留:
[0042]
q=a/b,q为int型
……………………………………………………
(4)
[0043]
可以得到:
[0044][0045]
易得下式:
[0046][0047]
而对于二进制硬件电路而言,对整数a进行2的整数次幂乘除计算等同于对a的二进制形式进行移位操作,则式公式(6)也可以表示为:
[0048][0049]
其中a<<x表示对a的二进制序列向左移动x位。当x>3时,的数值已经接近于1,当x=7时,其中d表示十进制,b表示二进制。借助这个特点,本发明引入定制化的mod模块,以x=7为例,其基本原理如下式所示:
[0050][0051]
由此,求余计算可以转化为位运算和有进制的加减法运算,利用常规的移位器和加法器实现。
[0052]
为实现上述目的,本发明提供如下方案:
[0053]
当syndrome、bma、chein模块工作的时候,如遇到有限域乘法(如αmxα
m1
=α
p
,x表示有限域乘法),α表示有限域元素,m、m1、p为整数),则把乘数αm、α
m1
发送到对数表/反对数表模块中进行编译,其后返回可以在实数域中计算的数值(m、m1),将返回的数值进行求和计算(m m1),再将计算后的数值送入mod模块求余数p=(m m1)mod n,n表示本源bch码字的长
度,最后将返回值(result=p)重新输入对数表/反对数表模块进行反编译,重新得到与乘数αm、α
m1
相同格式的最终结果α
p

[0054]
另一方面,在数学上的对数表/反对数表中“power”一项中含有数字0,但在实际处理时应当按照0=α-1
进行处理,本发明利用bch码计算过程中的特点,利用补码对-1进行处理(如gf(27)域中-1=’b111_1111),在保证寄存器数量不变的情况下补全了对数表/反对数表,尽最大可能保证了芯片面积不额外增加。
[0055]
从流程上来看,bch译码器的工作主要分为图1所示的三个流程:syndrome、bma和chein模块。syndrome模块的计算公式如下:
[0056][0057]
其中si表示伴随式,r表示输入数据,α表示生成多项式的根(即gf的元素),n表示码字的长度。常规硬件电路计算时需要对该式进行处理,这个过程称之为homer迭代:
[0058]
si=(k(((r
n-1
(αi) r
n-2
)αi r
n-3
)αi l r1)αi r0……………………
(10)
[0059]
在这种方案中,每一次与αi的乘法都需要专用的有限域乘法器进行计算,消耗大量的硬件电路,这时采用本发明对数表/反对数表的方案,消耗少量电路完成对数表的取址和求余,即可通过加减法和移位的方式完成计算。这种方式表现出来的公式如下:
[0060][0061]
由于r的数值为0或1,上式中的r后第一个
“×”
在实际电路中为逻辑判断,r=0时表示此项的乘积不参与求和。该式对应的电路流程图如图5所示,在实际电路中si采用串行的方式生成。首先在mod-1模块中完成i
×
j%n的计算,经过对数表运算后将结果输入选择器,该选择器由r的数值决定输出,这个输出值会在reg(寄存器)模块中进行迭代,最终把迭代的结果输入到反对数表中转换,得到对应的si,并输出给下一个模块。
[0062]
如图7所示,为bch译码器的第二个模块bma的算法流程图,其主要作用是根据伴随式生成模块计算出的伴随式的值进行计算,最后输出错误位置多项式。在实际电路中采用状态机的方案进行处理,状态机连接关系图如图6所示,其中各个状态的执行内容如下:
[0063]
s0:对dj、σ、l赋相应的初始值,等待伴随式完成信号,然后进入s1状态;
[0064]
其中,dj:在求解σ(x)时需要用到关键方程s(x)σ(x)=ω(x)(modx
2t 1
),在迭代求解过程中出现不满足该方程的情况,此时对于j 1步迭代和j步迭代之间定义一个差值dj使得上式成立,即s(x)σ
(j)
(x)=ω
(j)
(x) djx
j 1
(modx
2t 1
)
[0065]
σ:指错误位置多项式的系数,右下角标表示系数的位置,右上角标代表迭代的次数,如果不加右上角标,代表已经迭代完成了,是最终使用的值;σ(x)表示错误位置多项式。
[0066]
l:错误位置多项式的次数。l(j)指第j 1次迭代过程得到的σ(i)(x)中,最低次数的σ(i)(x)的次数。
[0067]
t:纠错码的最大纠错能力。
[0068]
s1:判断循环次数以及错误个数,如果循环次数小于2t-1并且错误个数小于等于t,进入状态s2,否则,进入状态s3;
[0069]
s2:判断dj是否为0,如果为0,进入状态s4,否则,进入状态s5;
[0070]
s3:利用对数表/反对数表模块对错误位置多项式进行处理后进入状态s12;
[0071]
s4:计算σ
(j 1)
(x)=σ
(j)
(x),l(j 1)=l(j),进入s6;
[0072]
s5:选j之前的某一i行,如果di不等于0则判断i的值,如果i大于0,进入状态s7,反之,进入状态s9;如果di等于0,则继续向前寻找满足要求的i;
[0073]
s6:判断此时循环次数,如果小于2t-1则将伴随式的反对数值赋给di,然后进入状态s8,否则,进入状态s1;
[0074]
s7:找到使得i-l(i)有最大值并且di不等于0对应的i值,进入状态s9;
[0075]
s8:计算dj的值后进入状态s1;
[0076]
s9:将l(i)与j-i l(i)中的较大值赋值给l(j 1),进入状态s10;
[0077]
s10:计算d
jdi-1
x
j-i
σ(i)(x)的值,进入状态s11;
[0078]
s11:完成错误位置多项式的计算,进入状态s6;
[0079]
s12:存储错误位置多项式,进入状态s13;
[0080]
s13:进行钱搜索,完成后进入状态s1,等待下一次的纠错。
[0081]
其中计算公式主要包括以下两个:
[0082][0083]
σ
(j 1)
(x)=σ
(j)
(x)-d
jdi-1
x
j-i
σ(i)(x)
………………………………
(13)
[0084]
在公式(12)中,dj称为修正项,用于对后续逻辑顺序进行判断,σ(i)(x)称为错误位置多项式,(i)表示迭代的次数。由式(11)可知,s的值是由α及其更高次幂表示的(例如s=α3),类比对于式(9)的处理,同样可以使用对数表/反对数表模块和求余电路实现:
[0085][0086]
上式中表示位运算中的亦或运算,(i)表示迭代的次数。
[0087]
对于式(13),d
i-1
表示对di求逆(例如d
2-1
=α-5
),这在常规的硬件求逆电路中并不方便实现,而通过对数表/反对数表的index的运算规则,可以使幂指数直接参与加减法的运算。另外由于是以x为变量的多项式,在硬件电路中以寄存器或者数组的编号体现:
[0088][0089]
其中0≤q<l(j),σ右下角标q表示寄存器的编号,也即x的幂指数,l(j)表示第j次迭代中x的最高级数。在式(15)中,有可能会出现的index(dj)-index(di) index(σ
(j)
[q])<0情况,即三者最终的结果可能为α-1
,对应图2中的“power”一栏数值为0。由于α及其幂指数的二进制序列值本身是固定长度的二级制序列,且α的最高次幂不会覆盖所有的二进制序列组合,可以使用补码的方式表示对数表中的-1,例如在gf(23)中index(0)=-1(d)=111(b),其中(d)表示该数为十进制,(b)表示该数为二进制。
[0090]
bch译码器的最后一个流程钱搜索,其电路流程图如图8所示。其本质是校验错误位置多项式的根是否为α及其高次幂,root=0时即校验成功,如果校验成功,则该位置(n

i位)为错误位置,需要纠错。由于二进制序列只有0、1两种数值,所以此错误位置直接进行数值反转即可完成纠错。
[0091]
[0092]
该式同样可以使用对数表/反对数表模块进行处理:
[0093][0094]
如图8,对于root的计算主要包含对数表处理(对数表/反对数表进行编译)、求和、求余(mod-3)、反对数表处理(对数表/反对数表进行反编译)、迭代(∑)模块,最终得到root的值。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献