CN103023519B - 一种费马数变换的方法和装置 - Google Patents
一种费马数变换的方法和装置 Download PDFInfo
- Publication number
- CN103023519B CN103023519B CN201210418654.7A CN201210418654A CN103023519B CN 103023519 B CN103023519 B CN 103023519B CN 201210418654 A CN201210418654 A CN 201210418654A CN 103023519 B CN103023519 B CN 103023519B
- Authority
- CN
- China
- Prior art keywords
- data
- level butterfly
- pth level
- calculates
- group
- 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.)
- Expired - Fee Related
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本发明实施例提供了一种费马数变换的方法和装置,用以解决现有FNT硬件只能采用流水加减法操作,从而限制FNT的计算速度的问题。该方法包括:从第p级蝶形计算输入数据的M组的各组中分别读取一个数据;并行计算得到第p级蝶形计算输出的M个数据并分别存储在M个组中;其中,p为0到S‑1之间的正整数,S=log2N,S为正整数,N分别为第p级蝶形计算输入数据和第p级蝶形计算输出数据中的数据个数。
Description
技术领域
本发明涉及数据通信领域,尤其涉及一种费马数变换的方法和装置。
背景技术
在现代编解码算法中,有限域多项式乘法是差错控制的重要模块,运算效率在实时通讯系统中起着重要的作用。多项式有限域快速乘法常常采用快速卷积来实现,这就涉及到具有循环卷积特性的快速傅里叶变换及其逆变换。但快速傅里叶变换的计算建立在复数域中,需要用到小数的乘、加法操作,这些操作会造成编解码输出数据的误差。而采用类似于离散傅里叶变换的FNT(Fermat Number Transform,费马数变换)能够有效实现整系数多项式的乘法。FNT建立在有限域上,没有舍入误差、无需存储旋转因子,并且在蝶形计算中没有乘法操作,适合于硬件逻辑电路的实现。现有的FNT的硬件采用固定结构算法配合外部存储器、控制单元等完成FNT计算。
目前现有的固定结构的FNT硬件中N点序列x(n)的FNT变换定义如下:
其中,Ft是第t个费马数,Ft=4t+1;N为2的幂次方;n,k=0,1,...,N-1;α满足
和
1≤m<N;<nk>表示nk对N取模。
与离散傅里叶变换算法相比,FNT算法具有相似的乘累加和结构,因此可以采用离散傅里叶变换来加快FNT的计算速度。根据固定结构的离散傅里叶变换算法可以得到固定结构FNT快速算法如下描述:
其中,
m=0,1,...,(N/2)-1,p=0,1,...,S-1,S=log2(N)。
公式2表示在固定结构下,第p级FNT的迭代计算。当p=S–1时,xp+1(k)=xS(k),k=0,1,...,N-1即为FNT计算输出结果X(k)。
针对实际中的FNT硬件,公式2中的α通常选取为2,这样蝶形计算中与旋转因子的相乘可以简化为移位操作。又因为采用固定结构设计,每一级的蝶形计算结构完全一致,因此当N=16时,即采用16点时,公式2的信号流图如图1所示。从图1中可以看出,传统FNT算法中,蝶形计算过程中与旋转因子相乘的操作可以采用移位器来实现,这就保证了整个FNT的计算复杂度仅仅局限于加减法操作。由于FNT计算中,第p级蝶形计算输入数据xp(k)(k=0,1,...,N-1)是全部存储在空间为N的第一存储单元中的,第p级蝶形计算输出数据xp+1(k)(k=0,1,...,N-1)是全部存储在空间为N的第二存储单元中的,因此在执行公式2中的加减法操作时只能通过依次读取第一存储单元中的xp(0)、xp(1)、…xp(N-1)并计算得到xp+1(0)、xp+1(1)、…xp+1(N-1),这种流水加减法操作限制了FNT的计算速度。
综上所述,由于目前FNT计算中,由于第p级蝶形计算输入数据xp(k)(k=0,1,...,N-1)全部存储在第一存储单元中,第p级蝶形计算输出数据xp+1(k)(k=0,1,...,N-1)全部存储在第二存储单元中,导致FNT硬件只能采用流水加减法操作,从而限制了FNT的计算速度。
发明内容
本发明实施例提供了一种费马数变换的方法和装置,用以解决现有FNT硬件只能采用流水加减法操作,从而限制FNT的计算速度的问题。
基于上述问题,本发明实施例提供的一种费马数变换的方法,包括:
从第p级蝶形计算输入数据的M组的各组中分别读取一个数据;
并行计算得到第p级蝶形计算输出的M个数据并分别存储在M个组中;
其中,p为0到S-1之间的正整数,S=log2N,S为正整数,N分别为第p级蝶形计算输入数据和第p级蝶形计算输出数据中的数据个数。
本发明实施例提供的一种费马数变换的装置,包括:
读取模块,用于从第p级蝶形计算输入数据的M组的各组中分别读取一个数据;
处理模块,用于将读取单元读取的M个数据并行计算得到第p级蝶形计算输出的M个数据并分别存储在M个组中;
其中,p为0到S-1之间的正整数,S=log2N,S为正整数,N分别为第p级蝶形计算输入数据和第p级蝶形计算输出数据中的数据个数。
本发明实施例的有益效果包括:
本发明实施例提供的一种费马数变换的方法和装置,通过从第p级蝶形计算输入数据的M组的各组中分别读取一个数据,并行计算得到第p级蝶形计算输出的M个数据并分别存储在M个组中从而有效地缩短了存储器访问、加减法计算、以及计算结果存储等过程的时间,进而提高了FNT的计算速度。
附图说明
图1为现有技术中在固定结构的FNT中采用公式2计算时的信号流图;
图2为本发明实施例提供的费马数变换的方法的流程图;
图3为本发明实施例提供的第p级蝶形计算输入和输出数据中的各组的对应关系图;
图4为本发明实施例提供的费马数变换的方法在具体应用中的流程图;
图5为采用本发明实施例提供的费马数变换方法和传统方法进行卷积计算时不同点数与计算时间的对应关系图;
图6为本发明实施例提供的费马数变换的装置的结构图。
具体实施方式
本发明实施例提供的一种费马数变换的方法和装置,通过并行读取数据、并行进行加减法计算以及并行存储计算的结果,从而提高了FNT的计算速度。
下面结合说明书附图,对本发明实施例提供的一种费马数变换的方法和装置的具体实施方式进行说明。
本发明实施例提供的一种费马数变换的方法,如图2所示,具体包括以下步骤:
S201、从第p级蝶形计算输入数据的M组的各组中分别读取一个数据;
S202、将读取的M个数并行计算得到第p级蝶形计算输出数据的M个数据
S203、将并行计算得到的M个数据分别存储在M个组中;
其中,p为0到S-1之间的正整数,S=log2N,S为正整数,N分别为第p级蝶形计算输入数据和第p级蝶形计算输出数据中的数据个数。
上述的费马数变换的方法主要应用于通信链路中差错控制过程中的编码和解码运算中以及用于提高信息传输安全性的加密和解密运算中。因此,当p=0时,第p级蝶形计算输入数据为数据通信链路中需要进行编码或解码的信号中的数据;当p=S-1时,第p级蝶形计算输出数据为数据通信链路中进行编码或解码之后的信号中的数据。或者,当p=0时,第p级蝶形计算输入数据为数据通信链路中需要进行加密或解密的信号中的数据;当p=S-1时,第p级蝶形计算输出数据为数据通信链路中进行加密或解密之后的信号中的数据。
另外,上述的费马数变换的方法还可以应用于一些使用快速傅里叶变换的场景中,例如,使用在整数域中计算的快速傅里叶变换的场景。
第p级蝶形计算输入数据中包括N个数时,这N个数分别存储在M组中,每组中包含N/M个数,N/M为正整数;以N=16,M=4为例,可以同时从四个组中分别取出数据xp(0)、xp(1)、xp(8)、xp(9),或者同时从四个组中取出数据xp(2)、xp(3)、xp(10)、xp(11),或者同时从四个组中取出数据xp(4)、xp(5)、xp(12)、xp(13),或者同时从四个组中分别取出数据xp(6)、xp(7)、xp(14)、xp(15),对取出的数据并行计算,即对xp(2n)和xp(2n+1)(n=0,1,2,3)进行加减法计算,同时对xp(2n+1)和xp(2n+N/2)(n=0,1,2,3)进行加减法计算,然后将计算得到的四个结果分别存在四个不同组中。
进一步地,若p=0,从第p级蝶形计算输入数据的M组的各组中分别读取数据之前,还包括:
将第p级蝶形计算输入数据中的N个数据中相邻位置的数据分到两个不同组中,并将两个不同组中的每组的数据按数据的排列顺序均分为M/2个组。
以M=4,N=16为例进行说明,将x0(2n)(n=0,1,2,3)分为一组,x0(2n+1)(n=0,1,2,3)分为一组,x0(2n+N/2)(n=0,1,2,3)分为一组,xp(2n+N/2+1)(n=0,1,2,3)分为一组。而进行后续的第p≠0级的蝶形计算时只需在四个组中分别读取一个数据并行进行计算再分别存储在四个不同的组中即可。
进一步地,将第p级蝶形计算输出的M个数据分别存储在M个组中之前还包括:
确定第p级蝶形计算输入数据中需要一起进行蝶形计算得出第p级蝶形计算输出数据的两个组为一个集合,
若M=4,将第p级蝶形计算输出的M个数据分别存储在M个组中,包括:
相邻两次取同一集合中的数据计算得到的第p级蝶形计算输出数据中的数据分别存储在第p级蝶形计算输出数据的不同组中。
以N=16为例进行说明,将取出xp(2n)(n=0,1,2,3)和xp(2n+1)(n=0,1,2,3)的两个组作为一个集合,将取出x0(2n+N/2)(n=0,1,2,3)和xp(2n+N/2+1)(n=0,1,2,3)的两个组作为一个集合,同一个集合中的两个组中取出的数进行加减法计算。对于取出xp(2n)(n=0,1,2,3)和xp(2n+1)(n=0,1,2,3)的两个组的集合,假如当前次计算取n=0的两个数进行加减法计算得到两个数存在四个组中的两个不同组中,在下一次计算取n=1的两个数进行加减法计算得到两个数要存在四个组中的另外两个不同组中。
进一步地,若M>4,将第p级蝶形计算输出的M个数据分别存储在M个组中,包括:
相邻两次取同一集合中的数据计算得到的第p级蝶形计算输出数据中的数据分别存储在第p级蝶形计算输出数据的不同组中;
相邻三次取同一集合中的数据计算时,第一次计算得到的第p级蝶形计算输出数据中的数据和第三次计算得到的第p级蝶形计算输出数据中的数据存储在第p级蝶形计算输出数据的相同组中。
以M=8,N=32为例进行说明,图3给出了第p级蝶形计算输入数据中的数据的各组与第p级蝶形计算输出数据中的数据的各组的读取和存储的对应关系。对于取出xp(2n)(n=0,1,2,3)和xp(2n+1)(n=0,1,2,3)的两个组的集合,假如当前次计算取n=0的两个数进行加减法计算得到两个数存在八个组中的两个不同组中,在下一次计算取n=1的两个数进行加减法计算得到两个数要存在八个组中的另外两个不同组中,而在下下一次计算取n=2的两个数进行加减法计算得到两个数要存储在存储取n=0时计算得到两个数的两个组中。
从图3中可以看出,1组和2组作为一个集合,3组和4组作为一个集合,5组和6组作为一个集合,7组和8组作为一个集合。同一个集合中的两个组中取出的数进行加减法计算。以第p级蝶形计算输入数据中的1组和2组的数据为例,例如,xp(0)和xp(1)进行加减法计算得到xp+1(0)和xp+1(16)存在第p级蝶形计算输出数据的1组和5组;xp(2)和xp(3)进行加减法计算得到xp+1(1)和xp+1(17)存在第p级蝶形计算输出数据的2组和6组;xp(4)和xp(5)进行加减法计算得到xp+1(2)和xp+1(18)存在第p级蝶形计算输出数据的1组和5组;xp(6)和xp(7)进行加减法计算得到xp+1(3)和xp+1(19)存在第p级蝶形计算输出数据的2组和6组。因此,第p级蝶形计算输入数据中的1组和2组进行加减法计算得到的数据总是存在第p级蝶形计算输出数据中的1组和5组或者2组和6组。
进一步地,若M=4,可以按照下列规则将第p级蝶形计算输出的M个数据分别存储在M个组中:
其中,n=0,1,…,N/M-1,x(nmod2,p+1)(n)是指第p级蝶形计算输出数据中的第n个数据位于第p级蝶形计算输出数据的nmod2组中,x((nmod2)+2,p+1)(n+N/2)是指第p级蝶形计算输出数据中第n+N/2个数据位于第p级蝶形计算输出数据的nmod2+2组中,x((N/4-1-n)mod2,p+1)(n+N/4)是指第p级蝶形计算输出数据中第n+N/4个数据位于第p级蝶形计算输出数据的(N/4-1-n)mod2组中,x(((N/4-1-n)mod2)+2,p+1)(n+3N/4)是指第p级蝶形计算输出数据中第n+3N/4个数据位于第p级蝶形计算输出数据的((N/4-1-n)mod2)+2组中。
以N=16为例,根据上述公式可知,xp+1(0)、xp+1(2)、xp+1(5)、xp+1(7)位于第0组中,xp+1(1)、xp+1(3)、xp+1(4)、xp+1(6)位于第1组中,xp+1(8)、xp+1(10)、xp+1(13)、xp+1(15)位于第2组中,xp+1(9)、xp+1(11)、xp+1(12)、xp+1(14)位于第3组中。
若M=4,还可以按照下列规则将第p级蝶形计算输出的M个数据分别存储在M个组中:
其中,n=0,1,…,N/M-1,x(nmod2,p+1)(n)是指第p级蝶形计算输出数据中的第n个数据位于第p级蝶形计算输出数据的nmod2组中,x((nmod2)+1,p+1)(n+N/2)是指第p级蝶形计算输出数据中第n+N/2个数据位于第p级蝶形计算输出数据的nmod2+1组中,x((N/4-1-n)mod2,p+1)(n+N/4)是指第p级蝶形计算输出数据中第n+N/4个数据位于第p级蝶形计算输出数据的(N/4-1-n)mod2组中,x(((N/4-1-n)mod2)+1,p+1)(n+3N/4)是指第p级蝶形计算输出数据中第n+3N/4个数据位于第p级蝶形计算输出数据的((N/4-1-n)mod2)+1组中。
以N=16为例,根据上述公式可知,xp+1(0)、xp+1(2)、xp+1(5)、xp+1(7)位于第0组中,xp+1(1)、xp+1(3)、xp+1(4)、xp+1(6)位于第2组中,xp+1(8)、xp+1(10)、xp+1(13)、xp+1(15)位于第1组中,xp+1(9)、xp+1(11)、xp+1(12)、xp+1(14)位于第3组中。
为了更好地说明本发明实施例提供的一种费马数变换的方法,下面以N=16,M=4为例进行说明。如图4所示,采用本发明实施例提供的一种费马数变换的方法计算得到xS(k)的过程包括下列步骤:
S401、对第0级蝶形计算输入数据的16个数据进行分组。可以将x0(0)、x0(2)、x0(5)、x0(7)作为一组,将x0(1)、x0(3)、x0(4)、x0(6)作为一组,将x0(8)、x0(10)、x0(13)、x0(15)作为一组,将x0(9)、x0(11)、x0(12)、x0(14)作为一组。
S402、同时从四个组中分别取出数据xp(0)、xp(1)、xp(8)、xp(9),或者同时从四个组中取出数据xp(2)、xp(3)、xp(10)、xp(11),或者同时从四个组中取出数据xp(4)、xp(5)、xp(12)、xp(13),或者同时从四个组中分别取出数据xp(6)、xp(7)、xp(14)、xp(15),对取出的数据并行计算,即对xp(2n)和xp(2n+1)(n=0,1,2,3)进行加减法计算,同时对xp(2n+1)和xp(2n+N/2)(n=0,1,2,3)进行加减法计算。
S403、将计算得到的四个数据分别存在相应的四个组中。
S404、重复执行S402和S403,一共执行S次,得到xS(k)。
每一次迭代计算的具体过程为:xp(0)和xp(1)进行加减法运算得到xp+1(0)和xp+1(8),xp(8)和xp(9)进行加减法运算得到xp+1(4)和xp+1(12)将xp+1(0)、xp+1(8)、xp+1(4)和xp+1(12)分别存到第0级蝶形计算输出数据的四个组的不同组中;
xp(2)和xp(3)进行加减法运算得到xp+1(1)和xp+1(9),将xp+1(1)与xp+1(4)存到相同组中,将xp+1(9)和xp+1(12)存到相同组中;xp(10)和xp(11)进行加减法运算得到xp+1(5)和x1(13),将x1(5)和xp+1(0)存到相同组中,将xp+1(13)和xp+1(8)存到相同组中;
xp(4)和xp(5)进行加减法运算得到xp+1(2)和xp+1(10),将xp+1(2)和xp+1(0)存到相同组中,将xp+1(10)和xp+1(8)存到相同组中;xp(12)和xp(13)进行加减法运算得到xp+1(6)和xp+1(14),将xp+1(6)与xp+1(4)存到相同组中,将xp+1(14)和xp+1(12)存到相同组中;
xp(6)和xp(7)进行加减法运算得到xp+1(3)和xp+1(11),将xp+1(3)与xp+1(4)存到相同组中,将xp+1(11)和xp+1(12)存到相同组中;xp(14)和xp(15)进行加减法运算得到xp+1(7)和xp+1(15),将xp+1(7)和xp+1(0)存到相同组中,将xp+1(15)和xp+1(8)存到相同组中;其中p=0,1,…,S-1。
在实际计算时,进行卷积计算的数据的个数可能不是2m,其中m为正整数,此时需要通过补零操作增加卷积的数据的个数。
采用传统方法进行N点循环卷积的计算时间为:
Tc(N)=N2TM+N(N-1)TA, 公式3
其中,TM表示一次乘法计算占用时间,TA表示一次加(减)法计算占用时间。当乘法器计算时间和加法器相差无几,且二者都能够并行流水计算时,整个计算时间为乘法和加法之中的最大时间项,公式3可以写为:
Tc(N)=N2TA。 公式4
采用本发明实施例提供一种费马数变换的方法进行N点循环卷积的计算时间为:
TF(N)=TAN((log2N)/2+1)。 公式5
图5为不同点数与计算卷积的时间的对应图,给出了不同的计算点数时,点实线代表采用传统方法计算卷积的计算时间与计算点数的曲线;虚线代表采用本发明实施例提供的费马数变换的方法计算卷积的计算时间与计算点数的曲线。从图中可以看出,当计算点数小于7时,采用传统方法计算卷记的计算时间要小于采用本发明实施例提供的费马数变换的方法计算卷积的计算时间,而当计算点数大于7小于等于16时,基于本发明实施例提供的费马数变换的方法的16点FNT的计算卷积的计算时间小于采用传统方法计算卷积的计算时间及基于本发明实施例提供的费马数变换的方法的其它点数FNT的计算卷积的计算时间,其中其它点数是指大于16的点数;而当计算点数大于等于17且小于等于32时,基于本发明实施例提供的费马数变换的方法的32点FNT的计算卷积的计算时间小于采用传统方法计算卷积的计算时间及基于本发明实施例提供的费马数变换的方法的其它点数FNT的计算卷积的计算时间,其中,其它点数是指大于32的点数;而当计算点数大于等于33且小于等于64时,基于本发明实施例提供的费马数变换的方法的64点FNT的计算卷积的计算时间小于采用传统方法计算卷积的计算时间及基于本发明实施例提供的费马数变换的方法的其它点数FNT的计算卷积的计算时间,其中,其它点数是指大于64的点数;而当计算点数大于等于65且小于等于128时,基于本发明实施例提供的费马数变换的方法的128点FNT的计算卷积的计算时间小于采用传统方法计算卷积的计算时间及基于本发明实施例提供的费马数变换的方法的其它点数FNT的计算卷积的计算时间,其中,其它点数是指大于128的点数。
因此,在计算卷积时,当点数小于7时,采用传统方法计算卷积;当点数大于等于7且小于等于16时,采用基于本发明实施例提供的费马数变换的方法的16点FNT的算法计算卷积;当点数大于等于17且小于等于32时,采用基于本发明实施例提供的费马数变换的方法的32点FNT的算法计算卷积;当点数大于等于33且小于等于64时,采用基于本发明实施例提供的费马数变换的方法的64点FNT的算法计算卷积;当点数大于等于65且小于等于128时,采用基于本发明实施例提供的费马数变换的方法的128点FNT的算法计算卷积。图5中的实线代表在不同点数下进行卷积计算速度最快的方案。
基于同一发明构思,本发明实施例还提供了一种费马数变换的装置,由于这些装置所解决问题的原理与前述费马数变换的方法相似,因此该装置的实施可以参见前述方法的实施,重复之处不再赘述。
本发明实施例提供的一种费马数变换的装置,如图6所示,包括:
读取模块61,用于从第p级蝶形计算输入数据的M组的各组中分别读取一个数据;
处理模块62,用于将读取模块读取的M个数据并行计算得到第p级蝶形计算输出的M个数据并分别存储在M个组中;
其中,p为0到S-1之间的正整数,S=log2N,S为正整数,N分别为第p级蝶形计算输入数据和第p级蝶形计算输出数据中的数据个数。
图6所示的装置主要用于对数据通信链路中需要编码或解码时以及加密或解密的信号进行处理。其中,读取模块61用于,若p=0,读取的第p级蝶形计算输入数据为数据通信链路中需要进行编码或解码的信号中的数据;处理模块62用于,若p=S-1,计算得到的第p级蝶形计算输出数据为数据通信链路中进行编码或解码之后的信号中的数据。或者,读取模块61用于,若p=0,读取的第p级蝶形计算输入数据为数据通信链路中需要进行加密或解密的信号中的数据;处理模块62用于,若p=S-1,计算得到的第p级蝶形计算输出数据为数据通信链路中进行加密或解密之后的信号中的数据。
另外,图6所示的装置还可用于一些需要使用快速傅里叶变换的场景中,例如,需要使用在整数域中计算的快速傅里叶变换的场景。
进一步地,若p=0,读取模块61还用于,从第p级蝶形计算输入数据的M组的各组中分别读取数据之前,将第p级蝶形计算输入数据中的N个数据中相邻位置的数据分到两个不同组中,并将两个不同组中的每组的数据按数据的排列顺序均分为M/2个组。
处理模块62还用于,将第p级蝶形计算输出的M个数据分别存储在M个组中之前,确定第p级蝶形计算输入数据中需要一起进行蝶形计算得出第p级蝶形计算输出数据的两个组为一个集合;
若M=4,相邻两次取同一集合中的数据计算得到的第p级蝶形计算输出的数据中的数据分别存储在第p级蝶形计算输出数据的不同组中。
进一步地,处理模块62还用于,若M>4,将相邻两次取同一集合中的数据计算得到的第p级蝶形计算输出数据中的数据分别存储在第p级蝶形计算输出数据的不同组中;
相邻三次取同一集合中的数据计算时,第一次计算得到的第p级蝶形计算输出数据中的数据和第三次计算得到的第p级蝶形计算输出数据中的数据存储在第p级蝶形计算输出数据的相同组中。
较佳地,处理模块62还用于,若M=4,按照下列规则将第p级蝶形计算输出的M个数据分别存储在M个组中:
其中,n=0,1,…,N/M-1,x(nmod2,p+1)(n)是指第p级蝶形计算输出数据中的第n个数据位于第p级蝶形计算输出数据的nmod2组中,x((nmod2)+2,p+1)(n+N/2)是指第p级蝶形计算输出数据中第n+N/2个数据位于第p级蝶形计算输出数据的nmod2+2组中,x((N/4-1-n)mod2,p+1)(n+N/4)是指第p级蝶形计算输出数据中第n+N/4个数据位于第p级蝶形计算输出数据的(N/4-1-n)mod2组中,x(((N/4-1-n)mod2)+2,p+1)(n+3N/4)是指第p级蝶形计算输出数据中第n+3N/4个数据位于第p级蝶形计算输出数据的((N/4-1-n)mod2)+2组中。
或者,M=4时,按照下列规则将第p级蝶形计算输出的M个数据分别存储在M个组中:
其中,n=0,1,…,N/M-1,x(nmod2,p+1)(n)是指第p级蝶形计算输出数据中的第n个数据位于第p级蝶形计算输出数据的nmod2组中,x((nmod2)+1,p+1)(n+N/2)是指第p级蝶形计算输出数据中第n+N/2个数据位于第p级蝶形计算输出数据的nmod2+1组中,x((N/4-1-n)mod2,p+1)(n+N/4)是指第p级蝶形计算输出数据中第n+N/4个数据位于第p级蝶形计算输出数据的(N/4-1-n)mod2组中,x(((N/4-1-n)mod2)+1,p+1)(n+3N/4)是指第p级蝶形计算输出数据中第n+3N/4个数据位于第p级蝶形计算输出数据的((N/4-1-n)mod2)+1组中。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种费马数变换的方法,其特征在于,包括:
可编程逻辑器件FPGA从第p级蝶形计算输入数据的M组的各组中分别读取一个数据;
所述FPGA并行计算得到第p级蝶形计算输出的M个数据并分别存储在M个组中;
其中,M≥4,p为小于S-1的自然数,S=log2N,S为正整数,N分别为第p级蝶形计算输入数据和第p级蝶形计算输出数据的数据个数;
所述FPGA将第p级蝶形计算输出的M个数据分别存储在M个组中之前还包括:
所述FPGA确定第p级蝶形计算输入的数据中需要一起进行蝶形计算得出第p级蝶形计算输出数据的两个组为一个集合,
若M=4,所述FPGA将第p级蝶形计算输出的M个数据分别存储在M个组中,包括:
所述FPGA将相邻两次取同一集合中的数据计算得到的第p级蝶形计算输出数据中的数据分别存储在第p级蝶形计算输出数据的不同组中;
若M>4,所述FPGA将第p级蝶形计算输出的M个数据分别存储在M个组中,包括:
所述FPGA将相邻三次取同一集合中的数据计算时,第一次计算得到的第p级蝶形计算输出数据中的数据和第三次计算得到的第p级蝶形计算输出数据中的数据存储在第p级蝶形计算输出数据的相同组中。
2.如权利要求1所述的方法,其特征在于,若p=0,所述第p级蝶形计算输入数据为数据通信链路中需要编码或解码的信号中的数据;若p=S-1,所述第p级蝶形计算输出数据为数据通信链路中编码或解码之后的信号中的数据。
3.如权利要求1所述的方法,其特征在于,若p=0,所述第p级蝶形计算输入数据为数据通信链路中需要加密或解密的信号中的数据;若p=S-1,所述第p级蝶形计算输出数据为数据通信链路中加密或解密之后的信号中的数据。
4.如权利要求1所述的方法,其特征在于,若p=0,所述FPGA从第p级蝶形计算输入数据的M组的各组中分别读取数据之前,还包括:
所述FPGA将第p级蝶形计算输入数据中相邻位置的数据分到两个不同组中,并将两个不同组中的每组的数据按数据的排列顺序均分为M/2个组。
5.如权利要求1所述的方法,其特征在于,若M>4,所述FPGA将第p级蝶形计算输出的M个数据分别存储在M个组中,包括:
所述FPGA将相邻两次取同一集合中的数据计算得到的第p级蝶形计算输出数据中的数据分别存储在第p级蝶形计算输出数据的不同组中。
6.如权利要求1所述的方法,其特征在于,若M=4,所述FPGA按照下列规则将第p级蝶形计算输出的M个数据分别存储在M个组中:
其中,n=0,1,…,N/M-1,x(nmod2,p+1)(n)是指第p级蝶形计算输出数据中的第n个数据位于第p级蝶形计算输出数据的nmod2组中,x((nmod2)+2,p+1)(n+N/2)是指第p级蝶形计算输出数据中第n+N/2个数据位于第p级蝶形计算输出数据的nmod2+2组中,x((N/4-1-n)mod2,p+1)(n+N/4)是指第p级蝶形计算输出数据中第n+N/4个数据位于第p级蝶形计算输出数据的(N/4-1-n)mod2组中,x(((N/4-1-n)mod2)+2,p+1)(n+3N/4)是指第p级蝶形计算输出数据中第n+3N/4个数据位于第p级蝶形计算输出数据的((N/4-1-n)mod2)+2组中。
7.如权利要求1所述的方法,其特征在于,若M=4,所述FPGA按照下列规则将第p级蝶形计算输出的M个数据分别存储在M个组中:
其中,n=0,1,…,N/M-1,x(nmod2,p+1)(n)是指第p级蝶形计算输出的数据中的第n个数据位于第p级蝶形计算输出数据的nmod2组中,x((nmod2)+1, p+1)(n+N/2)是指第p级蝶形计算输出数据中第n+N/2个数据位于第p级蝶形计算输出数据的nmod2+1组中,x((N/4-1-n)mod2,p+1)(n+N/4)是指第p级蝶形计算输出数据中第n+N/4个数据位于第p级蝶形计算输出数据的(N/4-1-n)mod2组中,x(((N/4-1-n)mod2)+1,p+1)(n+3N/4)是指第p级蝶形计算输出数据中第n+3N/4个数据位于第p级蝶形计算输出数据的((N/4-1-n)mod2)+1组中。
8.一种费马数变换的装置,其特征在于,包括:
读取模块,用于从第p级蝶形计算输入数据的M组的各组中分别读取一个数据;
处理模块,用于将读取模块读取的M个数据并行计算得到第p级蝶形计算输出的M个数据并分别存储在M个组中;
其中,M≥4,p为小于S-1的自然数,S=log2N,S为正整数,N分别为第p级蝶形计算输入数据和第p级蝶形计算输出数据中的数据个数;
其中,所述处理模块还用于,将第p级蝶形计算输出的M个数据分别存储在M个组中之前,确定第p级蝶形计算输入数据中需要一起进行蝶形计算得出第p级蝶形计算输出数据的两个组为一个集合;若M=4,将相邻两次取同一集合中的数据计算得到的第p级蝶形计算输出数据中的数据分别存储在第p级蝶形计算输出数据的不同组中;若M>4,相邻三次取同一集合中的数据计算时,第一次计算得到的第p级蝶形计算输出数据中的数据和第三次计算得到的第p级蝶形计算输出数据中的数据存储在第p级蝶形计算输出数据的相同组中。
9.如权利要求8所述的装置,其特征在于,所述读取模块用于:
若p=0,读取的第p级蝶形计算输入数据为数据通信链路中需要编码或解码的信号中的数据;
所述处理模块用于:
若p=S-1,计算得到的第p级蝶形计算输出数据为数据通信链路中编码或解码之后的信号中的数据。
10.如权利要求8所述的装置,其特征在于,所述读取模块用于:
若p=0,读取的第p级蝶形计算输入数据为数据通信链路中需要加密或解密的信号中的数据;
所述处理模块用于:
若p=S-1,计算得到的第p级蝶形计算输出数据为数据通信链路中加密或解密之后的信号中的数据。
11.如权利要求8所述的装置,其特征在于,所述读取模块还用于;
若p=0,从第p级蝶形计算输入数据的M组的各组中分别读取数据之前,将第p级蝶形计算输入数据中的N个数据中相邻位置的数据分到两个不同组中,并将两个不同组中的每组的数据按数据的排列顺序均分为M/2个组。
12.如权利要求8所述的装置,其特征在于,所述处理模块还用于;
若M>4,将相邻两次取同一集合中的数据计算得到的第p级蝶形计算输出数据中的数据分别存储在第p级蝶形计算输出数据的不同组中。
13.如权利要求8所述的装置,其特征在于,所述处理模块还用于;
若M=4,按照下列规则将第p级蝶形计算输出的M个数据分别存储在M个组中:
其中,n=0,1,…,N/M-1,x(nmod2,p+1)(n)是指第p级蝶形计算输出数据中的第n个数据位于第p级蝶形计算输出数据的nmod2组中,x((nmod2)+2,p+1)(n+N/2)是指第p级蝶形计算输出数据中第n+N/2个数据位于第p级蝶形计算输出数据的nmod2+2组中,x((N/4-1-n)mod2,p+1)(n+N/4)是指第p级蝶形计算输出数据中第n+N/4个数据位于第p级蝶形计算输出数据的(N/4-1-n)mod2组中,x(((N/4-1-n) mod2)+2,p+1)(n+3N/4)是指第p级蝶形计算输出数据中第n+3N/4个数据位于第p级蝶形计算输出数据的((N/4-1-n)mod2)+2组中。
14.如权利要求8所述的装置,其特征在于,所述处理模块还用于;
若M=4,按照下列规则将第p级蝶形计算输出的M个数据分别存储在M个组中:
其中,n=0,1,…,N/M-1,x(nmod2,p+1)(n)是指第p级蝶形计算输出数据中的第n个数据位于第p级蝶形计算输出数据的nmod2组中,x((nmod2)+1,p+1)(n+N/2)是指第p级蝶形计算输出数据中第n+N/2个数据位于第p级蝶形计算输出数据的nmod2+1组中,x((N/4-1-n)mod2,p+1)(n+N/4)是指第p级蝶形计算输出数据中第n+N/4个数据位于第p级蝶形计算输出数据的(N/4-1-n)mod2组中,x(((N/4-1-n) mod2)+1,p+1)(n+3N/4)是指第p级蝶形计算输出数据中第n+3N/4个数据位于第p级蝶形计算输出数据的((N/4-1-n)mod2)+1组中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210418654.7A CN103023519B (zh) | 2012-10-26 | 2012-10-26 | 一种费马数变换的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210418654.7A CN103023519B (zh) | 2012-10-26 | 2012-10-26 | 一种费马数变换的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103023519A CN103023519A (zh) | 2013-04-03 |
CN103023519B true CN103023519B (zh) | 2016-12-21 |
Family
ID=47971697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210418654.7A Expired - Fee Related CN103023519B (zh) | 2012-10-26 | 2012-10-26 | 一种费马数变换的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103023519B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870438B (zh) * | 2014-02-25 | 2016-08-17 | 复旦大学 | 一种利用数论变换计算循环卷积的电路结构 |
CN114185514B (zh) * | 2021-12-13 | 2024-03-08 | 合肥工业大学 | 一种基于费马模数的多项式乘法器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495721A (zh) * | 2011-12-02 | 2012-06-13 | 南京大学 | 一种支持fft加速的simd向量处理器 |
CN102682232A (zh) * | 2011-12-26 | 2012-09-19 | 丁丹 | 一种高性能超标量椭圆曲线密码处理器芯片 |
-
2012
- 2012-10-26 CN CN201210418654.7A patent/CN103023519B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495721A (zh) * | 2011-12-02 | 2012-06-13 | 南京大学 | 一种支持fft加速的simd向量处理器 |
CN102682232A (zh) * | 2011-12-26 | 2012-09-19 | 丁丹 | 一种高性能超标量椭圆曲线密码处理器芯片 |
Non-Patent Citations (2)
Title |
---|
《A Matrix-Vector Based Approach to FFT Implementations》;Yuheng He,et al;《IEEE》;20091231;第490页至第494页 * |
《一种高性能单精度浮点基-3蝶形运算单元的设计与实现》;禹霁阳等;《仪器仪表学报》;20101231;第31卷(第12期);第2675页至2681页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103023519A (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Golomb | Shift register sequences: secure and limited-access code generators, efficiency code generators, prescribed property generators, mathematical models | |
Gong et al. | Fast discrete Fourier spectra attacks on stream ciphers | |
CN109582284B (zh) | 一种芯片中的标量乘实现方法及装置、计算机可读存储介质 | |
CN105322973B (zh) | 一种rs码编码器及编码方法 | |
Kisacanin | Mathematical problems and proofs: combinatorics, number theory, and geometry | |
WO2020148771A1 (en) | Methods for protecting computer hardware from cyber threats | |
CN103942028A (zh) | 应用在密码技术中的大整数乘法运算方法及装置 | |
CN102684709A (zh) | 一种译码方法及其译码装置 | |
CN103023519B (zh) | 一种费马数变换的方法和装置 | |
CN105099467B (zh) | Qc-ldpc码的编码方法及编码装置 | |
CN107992283A (zh) | 一种基于降维实现有限域乘法的方法和装置 | |
Kalimoldayev et al. | Polynomials Multiplier under Irreducible Polynomial Module for High-Performance Cryptographic Hardware Tools. | |
CN108347250A (zh) | 适用于少量冗余里德-所罗门码的快速编码方法及设备 | |
CN109150506B (zh) | 一种彩虹签名的侧信道分析方法及装置 | |
CN110275693B (zh) | 用于随机计算的多加数加法电路 | |
CN102999085B (zh) | 一种对数正态杂波的实现方法及装置 | |
CN202906879U (zh) | 基于fpga的并行循环冗余校验运算电路 | |
CN109710212B (zh) | 一种基于心动模型的复合有限域求逆装置 | |
CN100459487C (zh) | 一种有限精度下的混沌密码产生方法 | |
Martin et al. | Pseudo-random sequences generated by cellular automata | |
CN100432922C (zh) | 在有限域中实现平方运算的方法和装置 | |
Moayedi et al. | Design and evaluation of novel effective Montgomery modular multiplication architecture | |
CN116738494B (zh) | 基于秘密分享的多方安全计算的模型训练方法和装置 | |
RU2716357C1 (ru) | Способ и устройство генерации последовательностей случайных чисел | |
CN208766637U (zh) | 一种有限域求逆器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161221 Termination date: 20171026 |
|
CF01 | Termination of patent right due to non-payment of annual fee |