CN112787658B - 基于斐波那契进制的逻辑运算电路 - Google Patents
基于斐波那契进制的逻辑运算电路 Download PDFInfo
- Publication number
- CN112787658B CN112787658B CN202011640617.1A CN202011640617A CN112787658B CN 112787658 B CN112787658 B CN 112787658B CN 202011640617 A CN202011640617 A CN 202011640617A CN 112787658 B CN112787658 B CN 112787658B
- Authority
- CN
- China
- Prior art keywords
- data
- value
- bit
- module
- fibonacci
- 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
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/185—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using dielectric elements with variable dielectric constant, e.g. ferro-electric capacitors
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Power Engineering (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种基于斐波那契进制的逻辑运算电路,当该逻辑运算电路为加法器电路时,包括:求和模块对多个斐波那契进制数进行按位求和,并将得到的求和结果确认为当前待变换数据;加法变换模块对当前待变换数据中位置相邻的两个目标高位数进行稀疏化处理,并对得到的稀疏化数据中的目标高位数进行分解,得到分解数据;加法变换模块在分解数据的高位部分存在目标高位数的情况下,将分解数据确认为用于下一轮变换的待变换数据,以及在分解数据的高位部分中不存在目标高位数的情况下,将分解数据确认为初始输出数据;和值尾数处理模块分解初始输出数据中的低位部分,输出目标和值,从而可对多个斐波那契进制数进行求和,输出斐波那契进制的目标和值。
Description
技术领域
本发明涉及数字电路技术领域,特别是涉及一种基于斐波那契进制的逻辑运算电路。
背景技术
斐波那契进制是指以斐波那契数为基数的记数系统。与二进制类似,斐波那契进制同样可以采用两个不同的符号0和1来表示,并可用于表示包括整数和小数在内的所有实数。由于斐波那契进制表示具有不唯一性和混淆性,因此其可被广泛应用在各种领域,如加密传输和信息校验等,以提高信息的安全性并降低冗余度。
然而,在具体实现中,由于传统技术缺少针对于斐波那契进制数的逻辑运算电路,使得基于斐波那契进制的应用电路(如加解密电路和编译码电路等)均难以实现。
发明内容
基于此,有必要提供一种能够实现斐波那契进制数基本运算的逻辑运算电路,该逻辑运算电路可为加法器电路、减法器电路、乘法器电路和/或除法器电路,以实现多个斐波那契进制数之间的加法运算、减法运算、乘法运算和/或除法运算。
为实现上述目的,第一方面,本申请实施例提供了一种加法器电路,包括求和模块、加法变换模块以及和值尾数处理模块;
求和模块对接收到的多个斐波那契进制数进行按位求和,得到求和结果,并将求和结果确认为当前待变换数据;
加法变换模块对当前待变换数据中位置相邻的两个目标高位数进行稀疏化处理,得到稀疏化数据,并对稀疏化数据中的目标高位数进行分解,得到分解数据;其中,目标高位数为大于进位阈值的数;
加法变换模块在分解数据的高位部分存在目标高位数的情况下,将分解数据确认为用于下一轮变换的待变换数据;加法变换模块在分解数据的高位部分中不存在目标高位数的情况下,将分解数据确认为初始输出数据;
和值尾数处理模块分解初始输出数据中的低位部分,输出目标和值。
在其中一个实施例中,加法变换模块遍历当前待变换数据,将获取到的位置相邻的两个目标高位数确认为目标序列,并将目标序列分解至位置高于目标序列的数上,得到稀疏化数据。
在其中一个实施例中,加法变换模块将目标序列中高位数的值减将目标序列中低位数的值减以及将高于目标序列一位处的值加1,并得到稀疏化数据。
在其中一个实施例中,加法变换模块遍历稀疏化数据,并在当前位为目标高位数的情况下,将当前位的值分解至当前位的相邻位处,得到分解数据。
在其中一个实施例中,加法变换模块在当前位为目标高位数的情况下,将当前位的值减2、将当前位的高一位处的值加以及将当前位的低两位处的值加1,得到分解数据。
在其中一个实施例中,初始输出数据中的低位部分为初始输出数据的第一位和第二位;
和值尾数处理模块在第二位的值大于进位阈值的情况下,将第二位的值分解至初始输出数据的第三位上,得到更新数据,并在更新数据的第三位的值小于或等于进位阈值的情况下,将更新数据确认为目标和值;
加法变换模块在更新数据的第三位的值大于进位阈值的情况下,将更新数据确认为用于下一轮变换的待变换数据。
在其中一个实施例中,和值尾数处理模块在第一位的值大于进位阈值的情况下,将第一位的值置0;并在第二位的值大于进位阈值的情况下,将第二位的值减1,以及将初始输出数据的第三位的值加1,得到更新数据。
在其中一个实施例中,加法器电路还包括标志寄存器;标志寄存器用于表示求和结果中各位数的值是否大于进位阈值。
在其中一个实施例中,加法器电路还包括加法复位模块和/或加法使能模块;
加法复位模块在接收到复位信号时,初始化本电路;
和/或
加法使能模块在接收到使能信号时,并使能本电路。
上述加法器电路中,求和模块对接收到的多个斐波那契进制数进行按位求和,得到求和结果,并将求和结果确认为当前待变换数据;加法变换模块对当前待变换数据中位置相邻的两个目标高位数进行稀疏化处理,得到稀疏化数据,并对稀疏化数据中的目标高位数进行分解,得到分解数据;其中,目标高位数为大于进位阈值的数;加法变换模块在分解数据的高位部分存在目标高位数的情况下,将分解数据确认为用于下一轮变换的待变换数据;加法变换模块在分解数据的高位部分中不存在目标高位数的情况下,将分解数据确认为初始输出数据;和值尾数处理模块分解初始输出数据中的低位部分,输出目标和值,从而可对多个斐波那契进制数进行求和,并输出斐波那契进制的目标和值。
第二方面,本申请实施例提供了一种减法器电路,包括求差模块、减法变换模块和差值尾数处理模块;
求差模块对接收到的斐波那契进制数进行按位作差,得到作差结果,并将作差结果确认为当前待变换数据;
减法变换模块将当前待变换数据中的负数转换为非负数,得到初始非负数据,并将初始非负数据确认为当前待分解数据;
减法变换模块对当前待分解数据中的目标高位数进行分解,得到分解数据,并对分解数据中位置相邻的两个目标高位数进行稀疏化处理,得到稀疏化数据;减法变换模块在稀疏化数据的高位部分存在目标高位数的情况下,将稀疏化数据确认为用于下一轮分解的待分解数据;其中,目标高位数为大于进位阈值的数;
减法变换模块在稀疏化数据的高位部分不存在目标高位数的情况下,若稀疏化数据存在负数,则将稀疏化数据确认为用于下一轮负数转换的待变换数据,若稀疏化数据不存在负数,则将稀疏化数据确认为初始输出数据;
差值尾数处理模块分解初始输出数据中的低位部分,输出目标差值。
在其中一个实施例中,减法变换模块在当前位为负数的情况下,将当前位的值分解至高位数处,得到初始非负数据。
在其中一个实施例中,减法变换模块在当前位为负数的情况下,将当前位的值加将当前位的高一位处的值加以及将当前位的高两位处的值减1,得到初始非负数据。
在其中一个实施例中,减法变换模块遍历待分解数据,并在当前位为目标高位数的情况下,将当前位的值分解至当前位的相邻位处,得到分解数据。
在其中一个实施例中,减法变换模块在当前位为目标高位数的情况下,将当前位的值减2、将当前位的高一位处的值加以及将当前位的低两位处的值加1,得到分解数据。
在其中一个实施例中,减法变换模块遍历分解数据,将获取到的位置相邻的两个目标高位数确认为目标序列,并将目标序列分解至位置高于目标序列的值上,得到稀疏化数据。
在其中一个实施例中,减法变换模块将目标序列中高位数的值减将目标序列中低位数的值减以及将比目标序列高一位处的值加1,得到稀疏化数据。
在其中一个实施例中,初始输出数据中的低位部分为初始输出数据的第一位和第二位;
差值尾数处理模块在第二位的值大于进位阈值的情况下,将第二位的值分解至初始输出数据的第三位上,得到更新数据,并在更新数据的第三位的值小于或等于进位阈值的情况下,将更新数据确认为目标差值。
在其中一个实施例中,差值尾数处理模块在第一位的值大于进位阈值的情况下,将第一位的值置0;并在第二位的值大于进位阈值的情况下,将第二位的值减1,以及将初始输出数据的第三位的值加1,得到更新数据。
在其中一个实施例中,差值尾数处理模块在更新数据的第三位的值大于进位阈值的情况下,将更新数据确认为用于下一轮分解的待分解数据。
在其中一个实施例中,减法器电路还包括标志寄存器;标志寄存器用于表示作差结果中各位数的值是否大于进位阈值,以及作差结果中各位数的值是否为负数。
在其中一个实施例中,减法器电路还包括减法复位模块,和/或减法使能模块;
减法复位模块在接收到复位信号时,初始化本电路;
减法使能模块在接收到使能信号时,并使能本电路。
上述减法器电路中,求差模块对接收到的斐波那契进制数进行按位作差,得到作差结果,并将作差结果确认为当前待变换数据;减法变换模块将当前待变换数据中的负数转换为非负数,得到初始非负数据,并将初始非负数据确认为当前待分解数据;减法变换模块对当前待分解数据中的目标高位数进行分解,得到分解数据,并对分解数据中位置相邻的两个目标高位数进行稀疏化处理,得到稀疏化数据;减法变换模块在稀疏化数据的高位部分存在目标高位数的情况下,将稀疏化数据确认为用于下一轮分解的待分解数据;其中,目标高位数为大于进位阈值的数;减法变换模块在稀疏化数据的高位部分不存在目标高位数的情况下,若稀疏化数据存在负数,则将稀疏化数据确认为用于下一轮负数转换的待变换数据,若稀疏化数据不存在负数,则将稀疏化数据确认为初始输出数据;差值尾数处理模块分解初始输出数据中的低位部分,输出目标差值,从而可对输入的斐波那契进制数作差,并输出斐波那契进制的目标差值。
第三方面,本申请实施例提供了一种乘法器电路,包括乘数接收模块、单项式生成模块和上述的加法器电路;
乘数接收模块接收第一斐波那契进制数和第二斐波那契进制数,并将第一斐波那契进制数和第二斐波那契进制数确认为当前待处理数据;
单项式生成模块对当前待处理数据进行分解,生成多个单项式;
加法器电路对各单项式进行相加,并将相加得到的和值确认为目标乘积,输出目标乘积。
在其中一个实施例中,单项式生成模块在任一单项式为两个斐波那契进制数的乘积的情况下,将两个斐波那契进制数确认为用于下一轮单项式生成的待处理数据。
在其中一个实施例中,当前待处理数据分别为Fa和Fb;其中,Fa为斐波那契序列中第a个斐波那契进制数;Fb为斐波那契序列中第b个斐波那契进制数;
单项式生成模块在a的值为0或b的值为0的情况下,生成值为0的单项式;单项式生成模块在a的值为1或2,b的值不为0的情况下,生成值为Fb的单项式;单项式生成模块在b的值为1或2,a的值不为0的情况下,生成值为Fa的单项式。
在其中一个实施例中,当前待处理数据分别为Fa和Fb;其中,Fa为斐波那契序列中第a个斐波那契进制数;Fb为斐波那契序列中第b个斐波那契进制数;
单项式生成模块在a的值和b的值均大于2的情况下,根据a的值和b的值分别确定第一截止下标值和第二截止下标值,并基于以下公式对当前待处理数据进行分解:
FaFb=Fa+b-2+Fa+b-6+Fa+b-10+…+Fa+b-M+Fa-NFb-N;
其中,M为第一截止下标值;N为第二截止下标值;FaFb为Fa与Fb的乘积。
在其中一个实施例中,单项式生成模块根据以下公式分别确定第一截止下标值和第二截止下标值:
M=4n+2
N=2n+2
其中,n为下标初始值;max{}为取最大值运算;min{}为取最小值运算;M为第一截止下标值;N为第二截止下标值。
在其中一个实施例中,单项式生成模块分解当前待处理数据,并依次得到各单项式;
加法器电路获取当前和值和当前单项式,并对当前和值和当前单项式进行相加,得到更新后的和值;加法器电路在存在下一单项式的情况下,将下一单项式确认为用于下一轮相加的单项式,并更新后的和值确认为用于下轮相加的和值;加法器电路在不存在下一单项式的情况下,将更新后的和值确认为目标乘积。
在其中一个实施例中,乘法器电路还包括进制转换模块;
进制转换模块将各单项式转换为对应的斐波那契进制数;加法器电路对各单项式对应的斐波那契进制数进行相加,得到目标乘积。
在其中一个实施例中,乘法器电路还包括乘法复位模块,和/或乘法使能模块;
乘法复位模块在接收到复位信号时,初始化本电路;
乘法使能模块在接收到使能信号时,使能本电路。
上述乘法器电路中,乘数接收模块接收第一斐波那契进制数和第二斐波那契进制数,并将第一斐波那契进制数和第二斐波那契进制数确认为当前待处理数据;单项式生成模块对当前待处理数据进行分解,生成多个单项式;加法器电路对各单项式进行相加,并将相加得到的和值确认为目标乘积,输出目标乘积。本申请通过将两个斐波那契进制数的乘积分解为多个单项式之和,并通过调用加法器电路对多个单项式进行相加,从而可输出斐波那契进制的目标乘积。
第四方面,本申请实施例提供了一种除法器电路,包括有效位转换模块、商值确定模块和上述的减法器电路;
有效位转换模块对第一斐波那契进制数或第二斐波那契进制数进行转换,以使第一斐波那契进制数的第一最高有效位的位置与第二斐波那契进制数的第二最高有效位的位置相同;
商值确定模块根据第一最高有效位的值与第二最高有效位的值确定初始商值,并根据初始商值、第一斐波那契进制数和第二斐波那契进制数,确定目标商值,并输出目标商值;
减法器电路根据目标商值、第一斐波那契进制数和第二斐波那契进制数确定余数,并输出余数。
在其中一个实施例中,除法器电路还包括译码器;
译码器将第一斐波那契进制数转换为第一二进制数,并将第二斐波那契进制数转换为第二二进制数;
商值确定模块获取第二二进制数与初始商值的乘积,并比较第一二进制数和乘积,且在第一二进制数小于乘积的情况下,调整初始商值,并进行下一轮的比较;商值确定模块在第一二进制大于或等于乘积的情况下,将初始商值确认为目标商值。
在其中一个实施例中,商值确定模块在第一二进制数小于乘积的情况下,将初始商值减1,并进行下一轮的比较。
在其中一个实施例中,除法器电路还还包括编码器;
编码器将乘积转换为第三斐波那契进制数;减法器电路获取第一斐波那契进制数与第三斐波那契进制数之间的差值,并将差值确认为余数。
在其中一个实施例中,有效位转换模块在第一最高有效位高于第二最高有效位的情况下,将第一斐波那契进制数进行前移,直至第一最高有效位的位置与第二最高有效位的位置相同。
在其中一个实施例中,有效位转换模块在将第一斐波那契进制数前移1位时,将第一最高有效位的值减1,将第一最高有效位低一位处的值加1,以及将第一最高有效位低两位处的值加1。
在其中一个实施例中,商值确定模块将第一最高有效位的值确认为初始商值;
或者
商值确定模块将第一最高有效位的值与第二最高有效位的值之比确认为初始商值。
在其中一个实施例中,商值确定模块在第一斐波那契进制数为0的情况下,将目标商值确认为0。
在其中一个实施例中,除法器电路还包括除法复位模块,和/或除法使能模块;
除法复位模块在接收到复位信号时,初始化本电路;
除法使能模块在接收到使能信号时,使能本电路。
上述除法器电路中,有效位转换模块对第一斐波那契进制数或第二斐波那契进制数进行转换,以使第一斐波那契进制数的第一最高有效位的位置与第二斐波那契进制数的第二最高有效位的位置相同;商值确定模块根据第一最高有效位的值与第二最高有效位的值确定初始商值,并根据初始商值、第一斐波那契进制数和第二斐波那契进制数,确定目标商值,并输出目标商值;减法器电路根据目标商值、第一斐波那契进制数和第二斐波那契进制数确定余数,并输出余数,从而可对两个斐波那契进制数进行除法运算,并输出斐波那契进制的目标商值和余数。
第五方面,本申请实施例提供了一种FPGA,用于实现如上述的加法器电路,上述的减法器电路,上述的乘法器电路,和/或上述的除法器电路。
附图说明
为了更清楚地说明本申请实施例或传统技术中的技术方案,下面将对实施例或传统技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一实施例中的加法器电路的示意性结构框图;
图2为一个实施例中加法器电路的输入输出引脚示意图;
图3为一个实施例中加法器电路的状态转换图;
图4为一实施例中的减法器电路的示意性结构框图;
图5为一个实施例中减法器电路的输入输出引脚示意图;
图6为一个实施例中减法器电路的状态转换图;
图7为一个实施例中乘法器电路的状态转换图;
图8为一个实施例中乘法器电路的输入输出引脚示意图;
图9为一个实施例中乘法器电路的模块结构图;
图10为一个实施例中乘法器电路的状态转换图;
图11为一个实施例中除法器电路的状态转换图;
图12为一个实施例中除法器电路的输入输出引脚示意图;
图13为一个实施例中除法器电路的模块结构图;
图14为一个实施例中除法器电路的状态转换图。
具体实施方式
为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的实施例。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使本申请的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个特征与另一个特征区分。举例来说,在不脱离本申请的范围的情况下,可以将第一斐波那契进制数称为第二斐波那契进制数,且类似地,可将第二斐波那契进制数称为第一斐波那契进制数。
在此使用时,单数形式的“一”、“一个”和“所述/该”也可以包括复数形式,除非上下文清楚指出另外的方式。还应当理解的是,术语“包括/包含”或“具有”等指定所陈述的特征、整体、步骤、操作、组件、部分或它们的组合的存在,但是不排除存在或添加一个或更多个其他特征、整体、步骤、操作、组件、部分或它们的组合的可能性。同时,在本说明书中使用的术语“和/或”包括相关所列项目的任何及所有组合。
下述各实施例中,输入至逻辑运算电路中的的斐波那契进制数均以斐波那契数为基数,并采用0和1来表示,即各运算电路的输入数据可仅由0和1组成。例如,斐波那契进制数010101,换算为十进制等于F0+F2+F4=0+1+3=4。为便于说明,本申请中最低位为第一位,即数据最右一位,最高位为数据最左一位。可以理解,最高位、最低位以及数据位数的确定均可采用其他方式来完成,位置的确定并不影响下述各实施例中运算电路的实现,其应当也在本申请的保护范围之内。
在一个实施例中,如图1所示,提供了一种用于实现加法运算的逻辑运算电路,即加法器电路,该加法器电路包括求和模块、加法变换模块以及和值尾数处理模块;
求和模块对接收到的多个斐波那契进制数进行按位求和,得到求和结果,并将求和结果确认为当前待变换数据;
加法变换模块对当前待变换数据中位置相邻的两个目标高位数进行稀疏化处理,得到稀疏化数据,并对稀疏化数据中的目标高位数进行分解,得到分解数据;其中,目标高位数为大于进位阈值的数;
加法变换模块在分解数据的高位部分存在目标高位数的情况下,将分解数据确认为用于下一轮变换的待变换数据;加法变换模块在分解数据的高位部分中不存在目标高位数的情况下,将分解数据确认为初始输出数据;
和值尾数处理模块分解初始输出数据中的低位部分,输出目标和值。
具体地,加法器电路可以基于硬件描述语言,在FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)上实现,进一步地,可通过Quartus和Modelsim软件工具,并运用Verilog HDL来实现斐波那契进制的加法器电路。本申请中,可以通过一个FPGA来实现求和模块、加法变换模块以及和值尾数处理模块,也可采用不同的FPGA来分别实现求和模块、加法变换模块以及和值尾数处理模块,本申请对此不作具体限制,只需加法器电路能完成上述功能即可。
具体而言,加法器电路中还可包括加数接收模块,加数接收模块分别接收多个斐波那契进制数。求和模块对接收到的多个斐波那契进制数进行按位求和,将各斐波那契进制数的第一位相加后得到求和结果的第一位,将各斐波那契进制数的第二位相加后得到求和结果的第二位,如此类推,直至得到多个斐波那契进制数各位数之和,并得到求和结果。求和模块在执行求和运算时遵从十进制规则,即满足0+0=0,1+0=1,0+1=1,1+1=2,2+1=3,……。以接收到两个斐波那契进制数为例,第一斐波那契进制数为011101,第二斐波那契进制数为101111,则按位求和后得到的求和结果为112212。
在得到求和结果后,可将求和结果确认为当前待变换数据,并对求和结果进行变换。若当前待变换数据中相邻位的值均大于进位阈值,则可确认当前待变换数据中存在位置相邻的两个目标高位数,加法变换模块对位置相邻的两个目标高位数进行稀疏化处理,以避免出现连续两个大于进位阈值的数,稀疏化处理可利用斐波那契进制的进位规则,将相邻的任一目标高位数的值分解到低位数的值中,或者将两个目标高位数的值分解到更高位数的值中。其中,进位阈值可根据斐波那契进制数的输入规则、输出规则、表示规则、通信规则、加密规则、传输规则等情况进行确定,例如,当斐波那契进制数仅由0和1表示时,进位阈值可以为1,当斐波那契进制数由0、1和2表示时,进位阈值可以为2。
示例性地,进位阈值可以为1,当对前述示例的求和结果进行变换,由于求和结果为112212,第3位和第4位的值均大于1,即当前待变换数据中连续两位的值大于进位阈值,则对第3位的值和第4位的值进行稀疏化处理,使得第3位和第4位中至少一位的值小于或等于进位阈值,则稀疏化处理后第3位和第4位的值可以但不局限于以下情况:11、12、21、00、02、20、01、10。
加法变换模块在得到稀疏化数据后,对稀疏化数据中的目标高位数进行分解,即分解稀疏化数据中大于进位阈值的数,将目标高位数的值分解至更高位的值和/或低位数的值上,并得到分解数据。如此,可降低稀疏化数据中目标高位数的数量,令数据满足相应的规则。进一步地,分解目标高位数可采用现有技术中各种方式来实现,本申请对此不做具体限制,只需其能降低当前位的值即可。
加法变换模块在本轮的分解数据的高位部分存在至少一位大于进位阈值的数的情况下,将本轮的分解数据确认为待变换数据,并在下一轮对待变换数据进行变换,依次进行稀疏化处理和分解处理,并得到下一轮的分解数据。若下一轮的分解数据的高位部分仍旧存在至少一位大于进位阈值的数,加法变换模块将下一轮的分解数据确认为待变换数据,并在下两轮对待变换数据进行变换。如此循环,直至分解数据的高位部分中不存在目标高位数,即分解数据中高位部分各位数的值均小于或等于进位阈值。其中,高位部分为分解数据中从最高位至预设位的序列,预设位可以根据实际情况以及变换方式等因素来确定。
加法器变换模块在分解数据的高位部分不存在目标高位数时,将分解数据确认为初始输出数据。和值尾数处理模块对初始输出数据中的低位部分进行分解,使得初始输出数据中各位数的值均小于或等于进位阈值,得到目标和值并输出。
上述加法器电路中,求和模块对接收到的多个斐波那契进制数进行按位求和,得到求和结果,加法变换模块通过一次或多次的变换,根据求和结果得到对应的初始输出数据,和值尾数处理模块分解初始输出数据中的低位部分,输出目标和值,从而可对多个斐波那契进制数进行求和,并输出斐波那契进制的目标和值,完成斐波那契进制加法器数字电路的设计。
在一个实施例中,加法变换模块遍历当前待变换数据,将获取到的位置相邻的两个目标高位数确认为目标序列,并将目标序列分解至位置高于目标序列的数上,得到稀疏化数据。
具体地,针对每一轮的当前待变换数据,加法变换模块可按照一定的方向对当前待变换数据进行遍历,在一个示例中,加法变换模块可从当前待变换数据的最低位遍历至当前待变换数据的最高位。加法变换模块在当前位及当前位的相邻位(如当前位的高一位或者当前位的低一位)均为目标高位数的情况下,将当前位和当前位的相邻位确认为目标序列,并将目标序列中任一位的值或两位的值分解至高于目标序列的数上,即分解至位置一个或多个高于目标序列较高位的数上,如较高位的高一位、较高位高两位上等,从而可得到稀疏化数据。
示例性地,在前述示例中,求和结果为112212,在进行第一轮变换时,目标序列为第3位和第4位,即目标序列为22,此时目标序列中的较高位为第4位。加法变换模块可将第3位的值和/或第4位的值,分解至第5位的值、第6位的值和/或第7位上。
上述加法器电路中,加法变换模块遍历当前待变换数据,并将获取到的目标序列分解至高于目标序列的数上,令目标序列分解至未遍历的数上,并尽量避免影响已遍历的数,从而可在一次遍历中尽可能地消除当前待变换数据中的全部目标序列,进而可减少数据处理的轮次和时间,提高加法器电路的处理效率。
在一个实施例中,目标序列的高位数为k1,低位数为k2,x为k1的高一位,即k1的左侧一位。加法变换模块在对目标序列进行分解时,将目标序列中两位数的值均减去1,并进行进位,即从x,k1,k2变换为x+1,k1-1,k2-1。加法变换模块可采用本实施例中所述方式对当前待变换数据中的各目标序列进行稀疏化处理,并得到稀疏化数据。如此,可令目标序列中两位数的值均小于或等于进位阈值,且无需更改低于目标序列的数的值,避免影响已遍历的数,从而可减少数据处理的轮次和时间,提高加法器电路的处理效率。
需要说明的是,在本实施例中,加法变换模块对k1的值、k2的值和x的值进行相应增减时,并无必然的处理顺序,换言之,加法变换模块可以同时处理x、k1和k2,也可先后处理x、k1和k2,本申请对此不做具体限制,只需x、k1和k2的值按照本实施例所述方式进行增减即可。
在一个实施例中,加法变换模块在得到稀疏化数据后,可按照一定的方向遍历稀疏化数据,并分别确定稀疏化数据各位数是否为目标高位数,进一步地,加法变换模块可从稀疏化数据的最低位遍历至稀疏化数据的最高位,并确定稀疏化数据的高位部分的各位数是否为目标高位数。加法变换模块在对稀疏化数据进行遍历时,若遍历到的当前位的值大于进位阈值,即当前位为目标高位数的情况下,将当前位的值分解至当前位的相邻位处。加法变换模块按照遍历方向对稀疏化数据的各目标高位数进行分解后,可得到分解数据。其中,当前位的相邻位可以为与当前位间隔一定位数内的位置,如与当前位间隔2位内、3为位内或5位内的位置。
加法变换模块可将当前位的值分解至任意数量的相邻位处,例如当相邻位为与当前位间隔2位内的数时,则当前位包括4位相邻位,分别是当前位高一位、当前位高两位、当前位低一位和当前位低两位,加法变换模块可将当前位的值分别至上述4位中任两位、任三位上。
上述加法器电路中,加法变换模块遍历稀疏化数据,并在当前位为目标高位数的情况下,将当前位的值分解至当前位的相邻位处,得到分解数据,从而可尽可能地减少稀疏化数据中目标高位数的数量,进而可减少处理轮次并提高处理效率,满足应用要求。
在一个实施例中,当前位为k,y为k的低一位,z为k的低两位,即y和z分别为k的右侧一位和右侧两位。x为k的高一位,即x为k的左侧一位,若k为最高位,则在最高位的高一位处添0,并将新增的0确认为x。加法变换模块在对稀疏化数据的目标高位数进行分解时,若k为目标高位数,则从x,k,y,z变换为x+1,k-2,y,z+1。加法变换模块可采用本实施例中所述方式对稀疏化数据中的各个目标高位数进行分解,并得到分解数据。如此,可尽可能地减少稀疏化数据中目标高位数的数量,进而可减少处理轮次并提高处理效率,满足应用要求。
需要说明的是,在本实施例中,加法变换模块对x的值、k的值和z的值进行相应增减时,并无必然的处理顺序,换言之,加法变换模块可以同时处理x、k和z,也可先后处理x、k和z,本申请对此不做具体限制,只需x、k和z的值按照本实施例所述方式进行增减即可。
在一个实施例中,初始输出数据的低位部分为初始输出数据的第1位和第2位,即初始输出数据的最低两位。进一步地,分解数据的高位部分可以为分解数据的最高位至第3位,加法变换模块在分解数据的最高位至第3位的值均小于或等于进位阈值时,将分解数据确认为初始输出数据。
和值尾数处理模块对初始输出数据中的低位部分进行分解,在初始输出数据的第2位大于进位阈值的情况下,将第2位的值分解至第3位上,并得到更新数据,若更新数据的第3位的值小于或等于进位阈值,则将更新数据确认为目标和值,并进行输出。和值尾数处理模块在更新数据的第3位的值大于进位阈值的情况下,将更新数据确认为用于下一轮变换的待变换数据。加法变换模块在对更新数据依次进行稀疏化处理和分解处理,直至分解得到的分解数据的高位部分不存在目标高位数,并将高位部分不存在目标高位数的分解数据重新确认为初始输出数据。和值尾数处理模块按照上述分解方式对重新确定的初始输出数据的低位部分进行分解。如此循环,直至得到目标和值。本申请依次通过和值尾数处理模块和加法变换模块处理,直至得到各位数均小于或等于进位阈值的目标和值,从而可令输出的目标和值满足应用要求。
在一个实施例中,由于F0=0,F1=F2=1,和值尾数处理模块在第1位的值大于进位阈值的情况下,将第1位的值置0,若k为第1位,x为第2位,则将x,k转换为x,0。和值尾数处理模块在第2位的值大于进位阈值的情况下,将第2位的值减1,以及将初始输出数据的第3位的值加1,得到更新数据。若k为第2位,y为第1位,x为第3位,则将x,k,y转换为x+1,k-1,y。和值尾数处理模块在分别处理初始输出数据的第1位和第2位后,得到更新数据。如此,可令更新数据中的低位部分均小于或等于进位阈值,从而满足应用要求。
在一个实施例中,加法器电路还包括标志寄存器,标志寄存器用于表示求和结果中各位数的值是否大于进位阈值。进一步地,标志寄存器的数量可以根据各位数的值确定,在一个示例中,若进位阈值为1,则加法器电路可采用2个标志寄存器,其中一个标志寄存器用于表示初始输出数据、分解数据、稀疏化数据和/或待变换数据中各位数的值是否为2,另一个标志寄存器用于表示初始输出数据、分解数据、稀疏化数据和/或待变换数据中各位数的值是否为3。
在一个实施例中,加法器电路还包括加法复位模块和/或加法使能模块;加法复位模块接收到复位信号时,初始化本电路;和/或加法使能模块,用于在接收到使能信号时,并使能本电路。
为便于说明本申请的加法器电路,下面通过一个具体的示例进行说明。请参阅图2和图3,图2为加法器电路的输入输出引脚示意图,图3为加法器电路的状态转换图。如图2所示,加法器电路的输入端口包括时钟信号输入端口clk,复位信号输入端口rst(可为低电平有效),第一斐波那契进制数输入端口input_i,第二斐波那契进制数输入端口input_j和使能脉冲信号输入端口en_sum。加法器电路的输出端口包括目标和值输出端口out_sum,结束脉冲标志信号输出端口sum_done。其中,input_i、input_j、out_sum均为32位总线,即第一斐波那契进制数和第二斐波那契进制数最高为32位。
加法器电路的状态转换图可参阅图3,状态转换可在复位信号rst下降沿和时钟信号clk上升沿触发。其中,done和sum_done用于标记当前状态是否完成,mark_sum[31:0]为标志2寄存器,用于表示各位数的值是否为2,mark_sum_sum[31:0]为标志3寄存器,用于表示各位数的值是否为3。加法器电路利用状态机完成斐波那契进制数的加法运算,共包括5个状态,分别为IDLE、SUM、SPARSITY、CHANGE和TAIL。以下为每个状态向下一状态转换的过程,每个状态内转换描述顺序代表优先级,即描述在前的执行优先级高。
在任何状态,当rst为0时都会进入IDLE状态;
在IDLE状态,当done=1时进入SUM状态;
在SUM状态,当done=1时进入SPARSITY状态;
在SPARSITY状态,当done=1时进入CHANGE状态;
在CHANGE状态,当done=1且mark_sum≤3时进入TAIL状态,当done=1且mark_sum>3时进入SPARSITY状态;
在TAIL状态,当mark_sum>3时进入CHANGE状态,当sum_one=1时进入IDLE状态。
其中,由于mark_sum为32位寄存器,当mark_sum=3时,mark_sum寄存器中低两位的值为1,其余位的值为0,即在mark_sum=3时,只有最低两位的值大于1,其余位的值均为0或1。
在IDLE状态时,加法器电路初始化本电路的参数,包括本电路中的各寄存器、计数器等,并在识别到使能脉冲信号时令done=1,进入SUM状态。在SUM状态时,加法器电路将输入的两位斐波那契进制数逐位相加,在相加完成后令done=1,并进入SPARSITY状态。在SPARSITY状态时,加法器电路从低位到高位遍历,对逐位相加的求和结果中连续两个大于1的数进行处理,在依次遍历结束后得到稀疏化数据,令done=1并进入CHANGE状态。具体来说,在SPARSITY状态中,加法器电路对连续两个大于1的数进行稀疏化,令连续两个大于1的数均减去1并进一位。在CHANGE状态中,加法器电路由低位到高位遍历稀疏化数据,并对单独大于1的数进行分解,在遍历结束后令done=1,根据mark_sum的值确定进入SPARSITY状态或是TAIL状态。在TAIL状态时,加法器电路对最后两位尾数(即最低两位)进行处理,并判断是否继续,若处理后的数据只包含0和1,则结束并令sum_done=1,若处理后的数据除低两位外出现大于1的数,则令done=1,并进入CHANGE状态。
如此,可完成多个斐波那契进制数进行求和,并输出斐波那契进制的目标和值,实现斐波那契进制加法数字电路的设计。
在一个实施例中,如图4所示,提供了一种用于实现减法运算的逻辑运算电路,即减法器电路,该减法器电路包括求差模块、减法变换模块和差值尾数处理模块;
求差模块对接收到的斐波那契进制数进行按位作差,得到作差结果,并将作差结果确认为当前待变换数据;
减法变换模块将当前待变换数据中的负数转换为非负数,得到初始非负数据,并将初始非负数据确认为当前待分解数据;
减法变换模块对当前待分解数据中的目标高位数进行分解,得到分解数据,并对分解数据中位置相邻的两个目标高位数进行稀疏化处理,得到稀疏化数据;减法变换模块在稀疏化数据的高位部分存在目标高位数的情况下,将稀疏化数据确认为用于下一轮分解的待分解数据;其中,目标高位数为大于进位阈值的数;
减法变换模块在稀疏化数据的高位部分不存在目标高位数的情况下,若稀疏化数据存在负数,则将稀疏化数据确认为用于下一轮负数转换的待变换数据,若稀疏化数据不存在负数,则将稀疏化数据确认为初始输出数据;
差值尾数处理模块分解初始输出数据中的低位部分,输出目标差值。
具体地,减法器电路可以基于硬件描述语言在FPGA上实现,进一步地,可通过Quartus和Modelsim软件工具,并运用Verilog HDL来实现斐波那契进制的减法器电路。本申请中,可以通过一个FPGA来实现求差模块、减法变换模块和差值尾数处理模块,也可采用不同的FPGA来分别实现求差模块、减法变换模块和差值尾数处理模块,本申请对此不作具体限制,只需减法器电路能完成上述功能即可。
具体而言,减法器电路还可包括减数接收模块,减数接收模块分别接收斐波那契进制的被减数和斐波那契进制的减数,进一步地,被减数大于减数。求差模块对接收到的被减数和减数进行按位作差,将被减数的第一位与减数的第一位之差确认为作差结果的第一位,将被减数的第二位与减数的第二位之差确认为作差结果的第二位,如此类推,直至得到被减数与减数各位数之差,并得到作差结果。求差模块在执行作差运算时遵从十进制规则,即满足0-1=-1,1-0=1,0-0=0,1-1=0,……。以被减数为斐波那契进制的101111,减数为斐波那契进制的011101,则按位作差后得到的作差结果为1,-1,0,0,1,0。
在得到作差结果后,将作差结果确认为当前待分解数据,并对作差结果进行变换。减法变换模块可将当前待变换数据中的负数转换为非负数,即将负数的值分解至其余位的值上,例如可分解至高于当前位的值上,或者分解至低于当前位的值上,并得到初始非负数据,将初始非负数据确认为当前待分解数据。需要说明的是,初始非负数据中可存在负数,即初始非负数据中可以存在一位或多位的值小于0。减法变换模块可将当前待变换数据中的全部负数转换为非负数后,得到初始非负数据;减法变换模块也可在进行负数转换的过程中,若需要跳出负数转换并执行其他步骤,则将跳出负数转换过程时的数据确认为初始非负数据。
减法变换模块对当前待分解数据中大于进位阈值的数进行分解,将目标高位数的值分解至更高位的值和/或低位数的值上,并得到分解数据。进一步地,分解目标高位数可采用现有技术中各种方式来实现,本申请对此不做具体限制,只需其能降低当前位的值即可。如此,可尽可能地减少分解数据中目标高位数的数量,使得数据满足相应的规则。其中,进位阈值可根据斐波那契进制数的输入规则、输出规则、表示规则、通信规则、加密规则、传输规则等情况进行确定,例如,当斐波那契进制数仅由0和1表示时,进位阈值可以为1,当斐波那契进制数由0、1和2表示时,进位阈值可以为2。
在得到分解数据后,若分解数据中相邻位的值均大于进位阈值,则可确认当前待变换数据中存在位置相邻的两个目标高位数,减法变换模块对位置相邻的两个目标高位数进行稀疏化处理,以避免出现连续两个大于进位阈值的数,并得到稀疏化数据。稀疏化处理可利用斐波那契进制的进位规则,将相邻的任一目标高位数的值分解到低位数的值中,或者将两个目标高位数的值分解到更高位数的值中。例如,在对112212进行稀疏化处理时,需要对第3位的值和第4位的值进行稀疏化处理,使得第3位和第4位中至少一位的值小于或等于进位阈值。
减法变换模块在本轮的稀疏化数据的高位部分存在至少一位大于进位阈值的数的情况下,将本轮的稀疏化数据确认为待分解数据,并在下一轮中对待分解数据依次进行分解处理和稀疏化处理,得到下一轮的稀疏化数据。若下一轮的稀疏化数据中仍旧存在目标高尾数,则在下两轮中对下一轮的稀疏化数据依次进行分解处理和稀疏化处理。如此循环,直至稀疏化数据的高位部分不存在大于进位阈值的数。其中,高位部分可以为稀疏化数据中从最高位至预设位的序列,预设位可以根据实际情况以及变换方式等因素来确定,本申请对此不作具体限制。
减法变换模块在稀疏化数据的高位部分不存在目标高位数的情况下,判断稀疏化数据中各位数的值(包括高位部分和低位部分)是否为负数。若稀疏化数据中存在至少一位的值小于0,则将稀疏化数据确认为待变换数据,并在下一轮中对待变换数据依次进行负数转换处理、分解处理和稀疏化处理。其中,减法变换模块进行分解处理和稀疏化处理的过程可如上所述,并得到高位部分不包括目标高位数的稀疏化数据,完成一轮的变换。若下一轮得到的高位部分不包括目标高位数的稀疏化数据中,仍旧存在负数,则减法变换模块将下一轮得到的稀疏化数据确认为待变换数据,并在下两轮对待变换数据进行变换。如此循环,直至得到的稀疏化数据中既不包括负数,其高位部分也不包含目标高位数,并将此时的稀疏化数据确认为初始输出数据。
差值尾数处理模块分解初始输出数据中的低位部分,使得分解后的初始输出数据中各位数的值均大于或等于0,且小于或等于进位阈值,得到目标差值并输出。
上述减法器电路中,求差模块对接收到的多个斐波那契进制数进行按位作差,得到作差结果,减法变换模块通过一次或多次的变换,根据作差结果得到对应的初始输出数据,差值尾数处理模块分解初始输出数据中的低位部分,输出目标差值,从而可对输入的斐波那契进制数作差,并输出斐波那契进制的目标差值,完成斐波那契进制减法器数字电路的设计。
在一个实施例中,减法变换模块在当前位为负数的情况下,将当前位的值分解至高位数处,得到初始非负数据。减法变换模块可依次确认当前待变换数据中各位数的值是否小于0,进一步地,可通过按照一定方向遍历当前待变换数据,例如,减法变换模块可从当前待变换数据的最低位遍历至当前待变换数据的最高位。减法器变换模块在确认当前位的值小于0,将当前位的值分解至一位或多个高于当前位的数上,例如当前位的高一位、高两位和/或高三位上。如此,可令当前待变换数据中各位数的值均不为负数,且无需更改低于目标序列的数的值,避免影响已遍历的数,从而可减少数据处理的轮次和时间,提高加法器电路的处理效率。
在一个实施例中,当前位为k,当前位高一位为x,当前位高两位为w,若k的值为负数,减法变换模块从w,x,k转换为w-1,x+1,k+1,并得到初始非负数据。如此,可将当前待变换数据中的负数进行分解,使各位数的值均大于或等于0,满足应用要求。
在一个实施例中,减法变换模块在得到待分解数据后,可按照一定的方向遍历待分解数据,并分别确定待分解数据中的各位数是否为目标高位数,进一步地,减法变换模块可从待分解数据的最低位遍历至待分解数据的最高位。减法变换模块在遍历至当前位时,若确认当前位的值大于进位阈值,则将当前位的值分解至当前位的相邻位处。减法变换模块按照遍历方向分解待分解数据中的各目标高位数后,得到分解数据。
具体而言,当前位的相邻位可以为与当前位间隔一定位数内的位置,如与当前位间隔2位内、3为位内或5位内的位置。减法变换模块可将当前位的值分解至任意数量的相邻位处,例如当相邻位为与当前位间隔2位内的数时,则当前位包括4位相邻位,分别是当前位高一位、当前位高两位、当前位低一位和当前位低两位,减法变换模块可将当前位的值分别至上述4位中任两位、任三位上。
上述减法器电路中,减法变换模块遍历待分解数据,并在当前位为目标高位数的情况下,将当前位的值分解至当前位的相邻位处,得到分解数据,从而可尽可能地减少数据中目标高位数的数量,进而可减少处理轮次并提高处理效率,满足应用要求。
在一个实施例中,当前位为k,y为k的低一位,z为k的低两位,即y和z分别为k的右侧一位和右侧两位。x为k的高一位,即x为k的左侧一位,若k为最高位,则在最高位的高一位处添0,并将新增的0确认为x。减法变换模块在对待分解数据的目标高位数进行分解时,若k为目标高位数,则从x,k,y,z变换为x+1,k-2,y,z+1。减法变换模块可采用本实施例中所述方式对待分解数据中的各个目标高位数进行分解,并得到分解数据。如此,可尽可能地减少数据中目标高位数的数量,进而可减少处理轮次并提高处理效率,满足应用要求。
需要说明的是,在本实施例中,减法变换模块对x的值、k的值和z的值进行相应增减时,并无必然的处理顺序,换言之,减法变换模块可以同时处理x、k和z,也可先后处理x、k和z,本申请对此不做具体限制,只需x、k和z的值按照本实施例所述方式进行增减即可。
在一个实施例中,减法变换模块遍历分解数据,将获取到的位置相邻的两个目标高位数确认为目标序列,并将目标序列分解至位置高于目标序列的值上,得到稀疏化数据。
具体地,在每一轮分解中,减法变换模块可按照一定的方向对分解数据进行遍历,在一个示例中,减法变换模块可从分解数据的最低位遍历至分解数据的最高位。减法变换模块在当前位及当前位的相邻位(如当前位的高一位或者当前位的低一位)均为目标高位数的情况下,将当前位和当前位的相邻位确认为目标序列,并将目标序列中任一位的值或两位的值分解至高于目标序列的数上,即分解至位置一个或多个高于目标序列较高位的数上,如较高位的高一位、较高位高两位上等,从而可得到稀疏化数据。
在一个示例中,分解数据为112212,在进行第一轮变换时,目标序列为第3位和第4位,即目标序列为22,此时目标序列中的较高位为第4位。减法变换模块可将第3位的值和/或第4位的值,分解至第5位的值、第6位的值和/或第7位上。
上述减法器电路中,减法变换模块遍历分解数据,并将获取到的目标序列分解至高于目标序列的数上,令目标序列分解至未遍历的数上,并尽量避免影响已遍历的数,从而可在一次遍历中尽可能地消除分解数据中的全部目标序列,进而可减少数据处理的轮次和时间,提高减法器电路的处理效率。
在一个实施例中,目标序列的高位数为k1,低位数为k2,x为k1的高一位,即k1的左侧一位。减法变换模块在对目标序列进行分解时,将目标序列中两位数的值均减去1,并进行进位,即从x,k1,k2变换为x+1,k1-1,k2-1。减法变换模块可采用本实施例中所述方式对分解数据中的各目标序列进行稀疏化处理,并得到稀疏化数据。如此,可令目标序列中两位数的值均小于或等于进位阈值,且无需更改低于目标序列的数的值,避免影响已遍历的数,从而可减少数据处理的轮次和时间,提高减法器电路的处理效率。
需要说明的是,在本实施例中,减法变换模块对k1的值、k2的值和x的值进行相应增减时,并无必然的处理顺序,换言之,减法变换模块可以同时处理x、k1和k2,也可先后处理x、k1和k2,本申请对此不做具体限制,只需x、k1和k2的值按照本实施例所述方式进行增减即可。
在一个实施例中,初始输出数据的低位部分为初始输出数据的第1位和第2位,即初始输出数据的最低两位。进一步地,稀疏化数据的高位部分可以为稀疏化数据的最高位至第3位,减法变换模块在稀疏化数据的最高位至第3位的值均小于或等于进位阈值时,将稀疏化数据确认为初始输出数据。
差值尾数处理模块对初始输出数据中的低位部分进行分解,在初始输出数据的第2位大于进位阈值的情况下,将第2位的值分解至第3位上,并得到更新数据,若更新数据的第3位的值小于或等于进位阈值,则将更新数据确认为目标差值,并进行输出。
在一个实施例中,差值尾数处理模块在更新数据的第3位的值大于进位阈值的情况下,将更新数据确认为用于下一轮分解的待分解数据。减法变换模块对待分解数据进行分解处理和稀疏化处理,直至得到的稀疏化数据的高位部分或分解数据的高位部分不存在目标高位数,并将高位部分不存在目标高位数的数据重新确认为初始输出数据。差值尾数处理模块,按照上述分解方式对重新确定的初始输出数据的低位部分进行分解。如此循环,直至得到目标差值。本申请可依次通过差值尾数处理模块和减法变换模块对数据进行处理,直至得到各位数均小于或等于进位阈值且大于或等于0的目标差值,从而可令输出的目标差值满足应用要求。
在一个实施例中,由于F0=0,F1=F2=1,差值尾数处理模块在第1位的值大于进位阈值的情况下,将第1位的值置0,若k为第1位,x为第2位,则将x,k转换为x,0。差值尾数处理模块在第2位的值大于进位阈值的情况下,将第2位的值减1,以及将初始输出数据的第3位的值加1,得到更新数据。若k为第2位,y为第1位,x为第3位,则将x,k,y转换为x+1,k-1,y。差值尾数处理模块在分别处理初始输出数据的第1位和第2位后,得到更新数据。如此,可令更新数据中的低位部分均小于或等于进位阈值,从而满足应用要求。
在一个实施例中,减法器电路还包括标志寄存器;标志寄存器用于表示作差结果中各位数的值是否大于进位阈值,以及作差结果中各位数的值是否为负数。进一步地,标志寄存器的数量可以根据各位数的值确定,在一个示例中,若进位阈值为1,则减法器电路可采用3个标志寄存器,第一个标志寄存器用于表示初始输出数据、分解数据、稀疏化数据和/或待变换数据中各位数的值是否为2,第二个标志寄存器用于标志初始输出数据、分解数据、稀疏化数据和/或待变换数据中各位数的值是否为-1,第三个标志寄存器用于表示初始输出数据、分解数据、稀疏化数据和/或待变换数据中各位数的值是否为-2。
在一个实施例中,减法器电路还包括减法复位模块,和/或减法使能模块。其中,减法复位模块在接收到复位信号时,初始化本电路;减法使能模块在接收到使能信号时,并使能本电路。
为便于说明本申请的减法器电路,下面通过一个具体的示例进行说明。如图5和图6所示,图5为减法器电路的输入输出引脚示意图,图6为减法器电路的状态转换图。请参阅图5,减法器电路的输入端口包括时钟信号输入端口clk,复位信号输入端口rst(可为低电平有效),斐波那契进制被减数输入端口input_i,斐波那契进制减数输入端口input_j和使能脉冲信号输入端口en_sub。减法器电路的输出端口包括目标差值输出端口out_sub,结束脉冲标志信号输出端口sub_done。其中,input_i、input_j、out_sub均为32位总线,即斐波那契被减数、斐波那契减数和目标差值最高为32位。
减法器电路的状态转换图可参阅图6,状态转换可在复位信号rst下降沿和时钟信号clk上升沿触发。其中,done和sub_done用于标记当前状态是否完成,mark_sub[31:0]为标志2寄存器,用于表示各位数的值是否为2,mark_neg[31:0]为标志-1寄存器,用于表示各位数的值是否为-1,mark_neg_neg[31:0]为标志-2寄存器,用于表示各位数的值是否为-2,cnt[9:0]为计数器。减法器电路利用状态机完成斐波那契进制的减法运算,共包括6个状态,分别为IDLE、SUB、NEGATIVE、SPARSITY、CHANGE、TAIL。以下为每个状态向下一状态转换的过程,每个状态内转换描述顺序代表优先级,即描述在前的执行优先级高。
在任何状态,当rst为0时都会进入IDLE状态;
在IDLE状态,当done=1时进入SUB状态;
在SUB状态,当done=1时进入NEGATIVE状态;
在NEGATIVE状态,当done=1时进入CHANGE状态;
在CHANGE状态,当满足a条件,即done=1、cnt=2、mark_sum≤3、mark_neg不为0且mark_neg_neg不为0时进入到NEGATIVE状态;当满足b条件,即done=1、cnt=0且mark_sum>3时进入SPARSITY状态;当满足c条件,即done=1、cnt=2、mark_sum≤3、mark_neg=0且mark_neg_neg=0时进入TAIL状态。
在SPARSITY状态,当done=1时进入CHANGE状态;
在TAIL状态,当sub_done=1时进入IDLE状态;当mark_sum>3时进入SPARSITY状态。
其中,mark_sum、mark_neg和mark_neg_neg均为32位寄存器,当mark_sum=3时,mark_sum寄存器中低两位的值为1,其余位的值为0,即在mark_sum=3时,只有最低两位的值大于1,其余位的值均为0或1。当mark_neg=0时,mark_neg寄存器中各位数的值均为0,即数据中不存在值为-1的位。当mark_neg_neg=0时,mark_neg_neg寄存器中各位数的值均为0,即数据中不存在值为-2的位。当mark_neg=0且mark_neg_neg=0时,可以确定数据中不存在负数。
在IDLE状态,减法器电路初始化本电路的参数,包括本电路中的各寄存器、计数器等,并在识别到使能脉冲信号时令done=1,进入SUB状态。在SUB状态中,减法器电路将输入的斐波那契进制被减数和斐波那契进制减数逐位相减,并在相减完成后令done=1。在NEGATIVE状态中,减法器电路对各位小于0的值进行去负数操作,一次处理完成后令done=1,其中,一次处理完成后为检测到当前位大于1时。在SPARSITY状态时,减法器电路从低位到高位进行遍历,对连续两个大于1的数进行处理,并在遍历完成后令done=1。在CHANGE状态,减法器电路从低位到高位进行遍历,并对单独大于1的数进行变换,在一次完成后令done=1。在TAIL状态,减法器电路对后两位数进行处理并判断是否继续,若处理后的数据中各位数的值均为0或1,则结束并令sub_done=1,若处理后的数据中存在至少一位数的值不为0或1,则令done=1,并进入SPARSITY状态。
通过上述示例的减法器电路,本申请可对输入的斐波那契进制数作差,并输出斐波那契进制的目标差值,完成斐波那契进制减法器数字电路的设计。
在一个实施例中,如图7所示,提供了一种用于实现乘法运算的逻辑运算电路,即乘法器电路,该乘法器电路包括乘数接收模块、单项式生成模块和上述任一实施例中的加法器电路;
乘数接收模块接收第一斐波那契进制数和第二斐波那契进制数,并将第一斐波那契进制数和第二斐波那契进制数确认为当前待处理数据;
单项式生成模块对当前待处理数据进行分解,生成多个单项式;
加法器电路对各单项式进行相加,并将相加得到的和值确认为目标乘积,输出目标乘积。
具体地,乘法器电路可以基于硬件描述语言在FPGA上实现,进一步地,可通过Quartus和Modelsim软件工具,并运用Verilog HDL来实现斐波那契进制的乘法器电路。本申请中,可以通过一个FPGA来实现乘数接收模块、单项式生成模块和加法器电路,也可采用不同的FPGA来分别实现乘数接收模块、单项式生成模块和加法器电路,本申请对此不作具体限制,只需乘法器电路能完成上述功能即可。
乘数接收模块可接收进行相乘操作的第一斐波那契进制数和第二斐波那契进制数,并将第一斐波那契进制数和第二斐波那契进制数均确认为当前待处理数据。需要说明的是,当前待处理数据包括的斐波那契进制数的数量可以为两个或两个以上,本申请对此不作具体限制,当前待处理数据还包括除第一斐波那契进制数和第二斐波那契进制数以外的其余数据。在得到当前待处理数据后,单项式生成模块对当前待处理数据进行分解,从而可将第一斐波那契进制数与第二斐波那契进制数的乘积展开为多个单项式之和或者一个单项式。
在得到多个单项式后,可调用加法器电路对单项式进行求和,得到多个单项式的和值,也即第一斐波那契进制数与第二斐波那契进制数的乘积,并输出。其中,加法器电路的数量可以为一个或者多个,每个加法器电路在一次相加中可对多个单项式进行求和,例如2个单项式、3个单项式、5个单项式等。单项式生成模块可根据加法器电路的数量、各加法器电路的输入数据数量,调整其每次输出的单项式数量。
上述乘法器电路中,乘数接收模块接收第一斐波那契进制数和第二斐波那契进制数,并将第一斐波那契进制数和第二斐波那契进制数确认为当前待处理数据;单项式生成模块对当前待处理数据进行分解,生成多个单项式;加法器电路对各单项式进行相加,并将相加得到的和值确认为目标乘积,输出目标乘积。本申请通过将两个斐波那契进制数的乘积分解为多个单项式之和,并通过调用加法器电路对多个单项式进行相加,从而可输出斐波那契进制的目标乘积。
在一个实施例中,单项式生成模块在任一单项式为两个斐波那契进制数的乘积的情况下,将两个斐波那契进制数确认为用于下一轮单项式生成的待处理数据。
具体地,单项式生成模块用于分解当前待处理数据,并将当前待处理数据中多个数据的乘积分解为一项或多项单项式。单项式生成模块在进行一轮分解后得到的多个单项式中,可能存在至少一个单项式为两个斐波那契进制数的乘积,如对当前待处理数据Fa和Fb的乘积进行分解后,生成的其中一项单项式为FcFd。为获取单项式FcFd的值,可将FcFd确认为待处理数据,单项式生成模块在下一轮中对FcFd进行分解,并得到FcFd对应的多个单项式。若FcFd对应的多个单项式中,每一个单项式均为斐波那契序列中的斐波那契数,则可采用加法器电路对分解FaFb和FcFd得到的各单项式进行相加,得到目标乘积。若FcFd对应的多个单项式中,仍旧存在至少一个单项式为两个斐波那契进制数的乘积,如FeFf,则将FeFf确认为待变换数据,单项式生成模块在下两轮中分解FeFf,并得到FeFf对应的多个单项式。如此循环,直至分解当前待变换数据得到的各单项式均为斐波那契序列中的数。
如此,单项式生成模块可将第一斐波那契进制数和第二斐波那契进制数的乘积分解为多个单项式,且每一单项式均为斐波那契序列中的数,如F0,F1,F2等,从而可将两个斐波那契进制数的乘积分解为斐波那契序列中多个斐波那契数之和,进而可通过调用加法器电路即可获取两个斐波那契进制数的乘积。
在一个实施例中,当前待处理数据分别为Fa和Fb,其中Fa为斐波那契序列中第a个斐波那契进制数;Fb为斐波那契序列中第b个斐波那契进制数。可以理解,a和b均为斐波那契进制数的下标值,以Fa为例,当a为0时,Fa为F0,即斐波那契序列的第0个数,也即是十进制的0,当a为1时,Fa为F1,即十进制的1,当a为3时,Fa为F3,即十进制的2。Fb同理。
由于F0=0,当a的值为0或b的值为0时,Fa与Fb的乘积等于0,单项式生成模块生成值为0的单项式。类似地,由于F1=F2=1,当Fa为F1或F2,且Fb不为F0时,Fa与Fb的乘积等于Fb,则单项式生成模块生成值为Fb的单项式。当Fb为F1或F2,且Fa不为F0时,Fa与Fb的乘积等于Fa,则单项式生成模块生成值为Fa的单项式。
上述乘法器电路中,单项式生成模块可根据a的值和b的值生成对应的单项式,当a的值为0或b的值为0时,生成值为0的单项式;当a的值和b的值均不为0时,若a的值为1或2,则生成Fb单项式,若b的值为1或2,则生成Fa单项式。如此,可减少单项式的生成时间,并提高乘法器电路的处理效率。
在一个实施例中,当前待处理数据分别为Fa和Fb,Fa为斐波那契序列中第a个斐波那契进制数,Fb为斐波那契序列中第b个斐波那契进制数,针对Fa和Fb的说明可参阅上述实施例,此处不再赘述。
若a的值和b的值均大于2,即Fa即不为F0、F1或F2,Fb即不为F0、F1或F2,此时,FaFb=Fa+b-1-Fa-1Fb-1,而Fa-1Fb-1=F(a-1)+(b-1)-1-Fa-2Fb-2,Fa-2Fb-2也可上式进行拆分,即FaFb可按照下式进行分解:
FaFb=Fa+b-1-Fa-1Fb-1
=Fa+b-1-(Fa+b-3-Fa-2Fb-2)
=Fa+b-2+Fa-2Fb-2
=Fa+b-2+Fa+b-6+Fa-4Fb-4
=Fa+b-2+Fa+b-6+Fa+b-10+Fa-6Fb-6
=Fa+b-2+Fa+b-6+Fa+b-10+Fa+b-14+…
值得注意的是,生成的每一单项式的下标值都需要大于或等于0。对于上式的某一中间步骤:FaFb=Fa+b-2+…+Fa+b-M+Fa-NFb-N,M和N满足以下规律:
n | M=4n+2 | N=2n+2 |
0 | 2 | 2 |
1 | 6 | 4 |
2 | 10 | 6 |
3 | 14 | 8 |
4 | 18 | 10 |
…… | …… | …… |
其中,a-N≥0,b-N≥0,a+b-M≥0。
根据a的值和b的值分别确定第一截止下标值M和第二截止下标值N,从而可确定分解得到的各单项式。
在一个实施例中,单项式生成模块根据以下公式分别确定第一截止下标值和第二截止下标值:
M=4n+2
N=2n+2
其中,n为下标初始值;max{}为取最大值运算;min{}为取最小值运算;M为第一截止下标值;N为第二截止下标值。
具体地,a≥2n+2,b≥2n+2,a+b≥4n+2,即且单项式生成模块可确定符合以及要求的最大n,并根据n确定此时的M和N。在确定M和N后,单项式生成模块可生成展开式FaFb=Fa+b-2+…+Fa+b-M+Fa-NFb-N,对于Fa- NFb-N,单项式生成模块可将Fa-N和Fb-N确认为待处理数据,并在下一轮中对Fa-N和Fb-N的乘积进行分解,根据a-N的值和b-N的值生成Fa-NFb-N对应的各单项式。
上述乘法器电路中,单项式生成模块可按照上述公式,通过循环处理将第一斐波那契进制数和第二斐波那契进制数的乘积展开为多个斐波那契数之和,从而通过调用加法器电路即可获取目标乘积。
在一个实施例中,单项式生成模块在分解当前待处理数据的过程中,每生成一项单项式则通过加法器电路进行一次求和,求和后单项式生成模块再生成下一项单项式,并通过加法器电路进行下一次的求和。如此循环,直至分解完毕。具体而言,在单项式生成模块生成当前单项式时,加法器电路可将当前单项式与当前和值进行相加,得到更新后的和值。其中当前和值可以为下标值大于当前单项式的各单项式之和,例如当前单项式为Fa+b-10,则当前和值可以为Fa+b-2与Fa+b-6之和。若当前单项式并非展开式中最后一个单项式,则单项式生成模块会生成下一单项式,加法器电路在下一轮中,将下一单项式确认为当前单项式,并将本轮得到的更新后的和值确认为当前和值,获取下一轮的更新后的和值。如此循环,直至加法器电路将全部单项式进行求和,并得到目标乘积。加法器电路在不存在下一单项式的情况下,将更新后的和值确认为目标乘积。
如此,减少乘法器电路可通过调用数量较少的加法器电路来实现,从而可减小电路体积和成本。通过,乘法器电路中通过每生成一项单项式则进行一次相加,从而可减少寄存器的使用数量,进一步降低减小电路体积和成本。
在一个实施例中,乘法器电路还包括进制转换模块;进制转换模块将各单项式转换为对应的斐波那契进制数;加法器电路对各单项式对应的斐波那契进制数进行相加,得到目标乘积。具体而言,单项式生成模块可生成单项式F10,则进制转换模块可将F10转换为F10对应的斐波那契进制表达,便于加法器电路对斐波那契进制数进行相加。
需要说明的是,进制转换模块可与单项式生成模块分离设置,也可设置在单项式生成模块内。当进制转换模块设置在单项式生成模块内时,单项式生成模块输出的数据可为斐波那契进制的单项式。
在一个实施例中,乘法器电路还包括乘法复位模块,和/或乘法使能模块;其中,乘法复位模块在接收到复位信号时,初始化本电路;乘法使能模块在接收到使能信号时,并使能本电路。
为便于说明本申请的乘法器电路,下面通过一个具体的示例进行说明。请参阅8、图9和图10,其中图8为乘法器电路的输入输出引脚示意图,图9为乘法器电路的模块结构图,图10为乘法器电路的状态转换图。请参阅图8,乘法器电路的输入端口包括时钟信号输入端口clk,复位信号输入端口rst(可为低电平有效),第一斐波那契进制数输入端口input_i,第二斐波那契进制数输入端口input_j和开始标志脉冲信号输入端口en_mul。乘法器电路的输出端口包括目标乘积输出端口out_mul,结束脉冲标志信号输出端口mul_done。其中,input_i、input_j和out_mul均为32位总线,即第一斐波那契进制数、第二斐波那契进制数和目标乘积最高为32位。
请参阅图9,乘法器电路可通过状态机并调用加法器电路来实现,其状态转换图可参阅图10。状态转换可在复位信号rst下降沿和时钟信号clk上升沿触发。其中,done信号用于标记当前状态是否完成,mul_done用于标记当前模块是否结束,即乘法器电路是否完成相乘。乘法器电路利用状态机完成斐波那契进制的乘法运算,共包括4个状态,分别为IDLE、REDUCTION、TRANSFORM和SUM。以下为每个状态向下一状态转换的过程,每个状态内转换描述顺序代表优先级,即描述在前的执行优先级高。
在任何状态,当rst为0时都会进入IDLE状态;
在IDLE状态,当done=1时进入REDUCTION状态;
在REDUCTION状态,当mul_done=1时进入到IDLE状态;当done=1时进入TRANSFORM状态;
在TRANSFORM状态,当done=1时进入到SUM状态;
在SUM状态,当done=1时进入到REDUCTION状态。
在IDLE状态,乘法器电路初始化本电路的参数,包括本电路中的各寄存器、计数器等,并在识别到使能脉冲信号时令done=1,进入REDUCTION状态。在REDUCTION状态,乘法器电路从低位到高位对两个输入数据进行遍历,并将输入分解为多个单项式,每次分解一个单项式则灵done=1,并判断结束条件(结束条件可用于确认分解完成),若结束则令mul_done=1。在TRANSFORM状态,乘法器电路,将单项式转换为斐波那契进制形式并在转换完成后令don=1。在SUM状态,乘法器电路调用加法器电路对所有斐波那契进制表示的单项式全部进行求和,每相加一个单项式即令done=1。
通过上述示例的乘法器电路,本申请可将两个斐波那契进制数的乘积分解为多个单项式之和,并通过调用加法器电路对多个单项式进行相加,从而可输出斐波那契进制的目标乘积。
在一个实施例中,如图11所示,提供了一种用于实现除法运算的逻辑运算电路,即除法器电路,该除法器电路包括有效位转换模块、商值确定模块和上述任一实施例中的减法器电路;
有效位转换模块对第一斐波那契进制数或第二斐波那契进制数进行转换,以使第一斐波那契进制数的第一最高有效位的位置与第二斐波那契进制数的第二最高有效位的位置相同;
商值确定模块根据第一最高有效位的值与第二最高有效位的值确定初始商值,并根据初始商值、第一斐波那契进制数和第二斐波那契进制数,确定目标商值,并输出目标商值;
减法器电路根据目标商值、第一斐波那契进制数和第二斐波那契进制数确定余数,并输出余数。
具体地,除法器电路可以基于硬件描述语言在FPGA上实现,进一步地,可通过Quartus和Modelsim软件工具,并运用Verilog HDL来实现斐波那契进制的乘法器电路。本申请中,可以通过一个FPGA来实现有效位转换模块、商值确定模块和减法器电路,也可采用不同的FPGA来分别实现有效位转换模块、商值确定模块和减法器电路,本申请对此不作具体限制,只需乘法器电路能完成上述功能即可。
具体而言,除法器电路还可包括除数接收模块,除数接收模块分别接收斐波那契进制的被除数和斐波那契进制的除数,也即第一斐波那契进制数和第二斐波那契进制数。有效位转换模块对第一斐波那契进制数和第二斐波那契进制数进行转换,以使两个斐波那契进制数的最高有效位位置相同。进一步地,有效位转换模块可将两个输入数据中,最高有效位较低的数据进行转换,以使被处理数据的最高有效位向左移动;或者有效位转换模块可将两个输入数据中,最高有效位较高的数据进行转换,以使被处理数据的最高有效位向右移动;又或者有效位转换模块可对两个输入数据进行转换,令两个输入数据的最高有效位分别向左移动和向右移动,使得转换后两个输入数据的最高有效位相同。
例如,需要对十进制数655和十进制数308进行除法运算,十进制数655的其中一种斐波那契进制表示为101100111001010’F(即第一斐波那契进制数),十进制数308的其中一种斐波那契进制表示为001101110101001’F(即第二斐波那契进制数)。可见,第一斐波那契进制数的最高有效位为第15位,第二斐波那契进制数的最高有效位为第13位,则有效位转换模块可将第一斐波那契进制数的最高有效位转换至第13位,或将第二斐波那契进制数的最高有效位转换至第15位,或将第一斐波那契进制数的最高有效位和第二斐波那契进制数的最高有效位均转换至第14位。
进一步地,有效位转换模块在第一最高有效位高于第二最高有效位的情况下,将第一斐波那契进制数进行前移,直至第一最高有效位的位置与第二最高有效位的位置相同。其中,第一斐波那契进制数每前移一位,第一最高有效位降低一位。如此,可减少商值确定模块和减法器电路的处理位数,提高除法器电路的处理效率。具体而言,有效位转换模块在将第一斐波那契进制数前移1位时,将第一最高有效位的值减1,将第一最高有效位低一位处的值加1,以及将第一最高有效位低两位处的值加1。
在上述十进制数655和十进制数308的例子中,第一斐波那契进制数的最高有效位与第二斐波那契进制数的最高有效位相差两位,则可按照斐波那契序列的进位规则对第一斐波那契进制数进行前移,101100111001010’F前移1位后可得到012100111001010’F,前移2位后可得到003200111001010’F。
商值确定模块根据可基于第一最高有效位的值和第二最高有效位的值确定初始商值。进一步地,由于输入至除法器电路的第一斐波那契进制数和第二斐波那契进制数可由0和1组成,在第一最高有效位的位置与第二最高有效位的位置相同的情况下,第二最高位的值为1,商值确定模块可将第一最高有效位的值确认为初始商值,如此,可减少处理步骤,提高除法器电路的处理效率。同时,商值确定模块还可在第一最高有效位的位置与第二最高有效位的位置相同的情况下,将第一最高有效位的值和第二最高有效位的值的比值,确认为初始商值,如此,即使第二斐波那契进制数中包括除0和1以外的值,也可准确得到对应的初始商值,并可减少除法器电路的循环处理次数,提高了除法器电路的处理效率。
商值确定模块可根据初始商值、第一斐波那契进制数和第二斐波那契进制数,确定目标商值并输出,减法器电路根据目标商值、第一斐波那契进制数和第二斐波那契进制数确定余数并输出,其中余数小于第二斐波那契进制数。
上述除法器电路中,有效位转换模块对第一斐波那契进制数或第二斐波那契进制数进行转换,以使第一斐波那契进制数的第一最高有效位的位置与第二斐波那契进制数的第二最高有效位的位置相同;商值确定模块根据第一最高有效位的值与第二最高有效位的值确定初始商值,并根据初始商值、第一斐波那契进制数和第二斐波那契进制数,确定目标商值,并输出目标商值;减法器电路根据目标商值、第一斐波那契进制数和第二斐波那契进制数确定余数,并输出余数,从而可对两个斐波那契进制数进行除法运算,并输出斐波那契进制的目标商值和余数。
在一个实施例中,除法器电路还包括译码器,译码器将斐波那契进制数转换成对应的二进制数。具体而言,译码器将第一斐波那契进制数转换为第一二进制数,并将第二斐波那契进制数转换为第二二进制数。商值确定模块可获取第二二进制数与初始商值的乘积,并将乘积与第一二进制数进行比较,若乘积小于或等于第一斐波那契进制数,则可将初始商值确认为目标商值,若乘积大于第一斐波那契进制数,则调整初始商值,例如可下调初始商值,进一步地,商值确定模块在第一二进制数小于乘积的情况下,可将初始商值减1。商值确定模块可在下一轮中获取下调后的初始商值与第二斐波那契进制数的乘积,且比较乘积与第一斐波那契进制数,直至得到目标商值。
在上述十进制数655和十进制数308的例子中,第一斐波那契数前移2位后可得到003200111001010’F,第二斐波那契进制数为001101110101001’F,转换后第一斐波那契数的最高有效位的值为3,则初始商值可为3,第二斐波那契进制数各位的值均乘上3,则可得到001101110101001’F→003303330303003’F。商值确定模块可进行比较,确定003200111001010’F小于003303330303003’F,即除数与初始商值的乘积大于被除数,则对初始商值减1,此时初始商值为2。将第二斐波那契进制数的各位数均乘2,得到003200111001010’F大于002202220202002’F,则可将2确认为目标商值。
在得到目标商值后,可铜鼓哦减法器电路作差得到余数,减法器电路可计算003200111001010’F-002202220202002’F=10000100000’F,即余数为10000100000’F,转为十进制为39。
在一个实施例中,除法器电路还包括编码器,编码器将乘积转换为第三斐波那契进制数;减法器电路获取第一斐波那契进制数与第三斐波那契进制数之间的差值,并将差值确认为余数。如此,可将斐波那契进制数转换为二进制数以完成目标商值的确定,从而可提高除法器电路的处理效率。
在一个实施例中,商值确定模块在第一斐波那契进制数为0的情况下,将目标商值确认为0,如此可减少处理步骤,提高除法器电路的输出效率。
在一个实施例中,除法器电路还包括除法复位模块,和/或除法使能模块;除法复位模块在接收到复位信号时,初始化本电路;除法使能模块在接收到使能信号时,使能本电路。
为便于理解本申请的除法器电路,下面通过一个具体的示例进行说明。请参阅图12、图13和图14,其中图12为除法器电路的输入输出引脚示意图,图13为除法器电路的模块结构图,图13为除法器电路的状态转换图。请参阅图12,除法器电路的输入端口包括时钟信号输入端口clk,复位信号输入端口rst(可为低电平有效),第一斐波那契进制数输入端口input_i,第二斐波那契进制数输入端口input_j和开始标志脉冲信号输入端口en_div。乘法器电路的输出端口包括目标商值输出端口out_div,余数输出端口out_remainder,结束脉冲标志信号输出端口div_done。其中,input_i、input_j、out_div和out_remainder均为32位总线,即第一斐波那契进制数、第二斐波那契进制数、目标商值为余数均最高为32位数据。
请参阅图13,除法器电路可调用译码器、编码器和减法器电路三个模块,其状态转换图可参阅图14。done信号用于标记当前状态是否完成,div_done用于标记当前模块是否结束,即除法器电路是否完成计算并输出目标商值和余数。除法器电路共包括6个状态,分别为IDLE、FORWARD、FORWARD_1、MATCH、COMPARE和SUB。以下为每个状态向下一状态转换的过程,每个状态内转换描述顺序代表优先级,即描述在前的执行优先级高。
在任何状态,当rst为0时都会进入IDLE状态;
在IDLE状态,当done=1时进入FORWARD状态;
在FORWARD状态,当div_done=1时进入到IDLE状态;当done=1时进入到FORWARD_1状态;
在FORWARD_1状态,当div_done=1时进入到IDLE状态;当done=1时进入到MATCH状态;
在MATCH状态,当done=1时进入到COMPARE状态;
在COMPARE状态,当div_done=1时进入到IDLE状态;当done=1时进入到SUB状态;
在SUB状态,当done=1时进入到IDLE状态。
在IDLE状态,除法器电路初始化本电路的参数,包括本电路中的各寄存器、计数器等,并在识别到使能脉冲信号时令done=1,进入FORWARD状态。在FORWARD状态,除法器电路在除数(即第二斐波那契进制数)为0的情况下令div_done=1,并在除数不为0的情况下分别确定被除数(即第一斐波那契进制数)的最高有效位和除数的最高有效位,确定后令done=1,并进入FORWARD_1状态。在FORWARD_1状态,除法器电路在除数为0的情况下令div_done=1,并在除数不为0的情况下通过前移使得被除数和除数最高有效位相同,并确定初始商值,在最高有效位相同后令done=1,进入MATCH状态。在MATCH状态,除法器电路调用译码器将被除数和除数转化为二进制,并在转化完成后令done=1进入COMPARE状态。在COMPARE状态,除法器电路比较初始商值和除数的乘积,与被除数之间的大小,调整初始商值,在调整完成后,若初始商值为0或1,则同时令div_done=1,若初始商值为除0和1以外的值,则使能标准编码器,标准编码完成后令done=1,进入SUB状态;在SUB状态,除法器电路调用减法器电路将被除数和减法器输出相减得到余数,并在相减完成后令div_done=1。
如此,可对两个斐波那契进制数进行除法运算,并输出斐波那契进制的目标商值和余数。
在一个实施例中,提供了一种FPGA,用于实现上述任一实施例中的加法器电路,上述任一实施例中的减法器电路,上述任一实施例中的乘法器电路,和/或上述任一实施例中的除法器电路。
在本说明书的描述中,参考术语“有些实施例”、“其他实施例”、“理想实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特征包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性描述不一定指的是相同的实施例或示例。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (7)
1.一种加法器电路,其特征在于,包括求和模块、加法变换模块以及和值尾数处理模块;
所述求和模块对接收到的多个斐波那契进制数进行按位求和,得到求和结果,并将所述求和结果确认为当前待变换数据;
所述加法变换模块遍历所述当前待变换数据,将获取到的位置相邻的两个目标高位数确认为目标序列,并将所述目标序列中高位数的值减1、将所述目标序列中低位数的值减1、以及将高于所述目标序列一位处的值加1,并得到稀疏化数据;
所述加法变换模块遍历所述稀疏化数据,并在当前位为目标高位数的情况下,将所述当前位的值减2、将所述当前位的高一位处的值加1、以及将所述当前位的低两位处的值加1,得到分解数据;其中,所述目标高位数为大于进位阈值的数;
所述加法变换模块在所述分解数据的高位部分存在目标高位数的情况下,将所述分解数据确认为用于下一轮变换的待变换数据;所述加法变换模块在所述分解数据的高位部分中不存在目标高位数的情况下,将所述分解数据确认为初始输出数据;其中,高位部分为所述分解数据中从最高位至预设位的序列;
所述和值尾数处理模块在所述初始输出数据中的第一位的值大于所述进位阈值的情况下,将所述第一位的值置0;并在所述初始输出数据中的第二位的值大于所述进位阈值的情况下,将所述第二位的值减1,以及将所述初始输出数据的第三位的值加1,得到更新数据;
所述和值尾数处理模块在所述更新数据的第三位的值小于或等于所述进位阈值的情况下,将所述更新数据确认为目标和值,并输出所述目标和值。
2.根据权利要求1所述的加法器电路,其特征在于,所述加法变换模块在所述更新数据的第三位的值大于所述进位阈值的情况下,将所述更新数据确认为用于下一轮变换的待变换数据。
3.根据权利要求1所述的加法器电路,其特征在于,所述加法器电路还包括标志寄存器;所述标志寄存器用于表示所述求和结果中各位数的值是否大于所述进位阈值。
4.根据权利要求1所述的加法器电路,其特征在于,所述加法器电路还包括加法复位模块;
加法复位模块在接收到复位信号时,初始化本电路。
5.根据权利要求1所述的加法器电路,其特征在于,所述加法器电路还包括加法使能模块;
加法使能模块在接收到使能信号时,并使能本电路。
6.根据权利要求1所述的加法器电路,其特征在于,所述加法器电路还包括加法复位模块和加法使能模块;
加法复位模块在接收到复位信号时,初始化本电路;
加法使能模块在接收到使能信号时,并使能本电路。
7.一种FPGA,其特征在于,用于实现如权利要求1至6任一项所述的加法器电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011640617.1A CN112787658B (zh) | 2020-12-31 | 2020-12-31 | 基于斐波那契进制的逻辑运算电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011640617.1A CN112787658B (zh) | 2020-12-31 | 2020-12-31 | 基于斐波那契进制的逻辑运算电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112787658A CN112787658A (zh) | 2021-05-11 |
CN112787658B true CN112787658B (zh) | 2022-12-13 |
Family
ID=75755129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011640617.1A Active CN112787658B (zh) | 2020-12-31 | 2020-12-31 | 基于斐波那契进制的逻辑运算电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112787658B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SU732864A1 (ru) * | 1976-12-22 | 1980-05-05 | Таганрогский радиотехнический институт им.В.Д.Калмыкова | Сумматор кодов фибоначчи |
SU840891A1 (ru) * | 1978-05-15 | 1981-06-23 | Винницкийполитехнический Институт | Параллельный сумматор кодов фибоначчи |
SU1649535A1 (ru) * | 1989-06-23 | 1991-05-15 | Специальное Конструкторско-Технологическое Бюро "Модуль" Винницкого Политехнического Института | Устройство дл суммировани Фибоначчи-дес тичных кодов |
CN111464189A (zh) * | 2020-03-31 | 2020-07-28 | 卓尔智联(武汉)研究院有限公司 | 一种斐波那契进制译码装置、方法 |
-
2020
- 2020-12-31 CN CN202011640617.1A patent/CN112787658B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112787658A (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107305485B (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
EP0613082B1 (en) | 4:2 adder and multiplier circuit employing the same | |
Licciardo et al. | Weighted partitioning for fast multiplierless multiple-constant convolution circuit | |
Patil et al. | Design of speed and power efficient multipliers using vedic mathematics with VLSI implementation | |
Juang et al. | Improved area-efficient weighted modulo $2^{n}+ 1$ adder design with simple correction schemes | |
Esposito et al. | Approximate adder with output correction for error tolerant applications and Gaussian distributed inputs | |
US7552165B2 (en) | Method and system to implement an improved floating point adder with integrated adding and rounding | |
CN112787658B (zh) | 基于斐波那契进制的逻辑运算电路 | |
WO2009110560A1 (ja) | Cordic演算回路及び方法 | |
JP2001222410A (ja) | 除算器 | |
Yao et al. | Hardware simplification to the delta path in a MASH 111 delta–sigma modulator | |
Baba et al. | Design and implementation of advanced modified booth encoding multiplier | |
Lou et al. | New approach to the reduction of sign-extension overhead for efficient implementation of multiple constant multiplications | |
Neelima et al. | FIR Filter design using Urdhva Triyagbhyam based on Truncated Wallace and Dadda Multiplier as Basic Multiplication Unit | |
Fathi et al. | Low latency, glitch-free booth encoder-decoder for high speed multipliers | |
Armand et al. | Low power design of binary signed digit residue number system adder | |
Thamizharasan et al. | An efficient VLSI architecture for FIR filter using computation sharing multiplier | |
CN112783470A (zh) | 一种用于执行浮点对数运算的装置和方法 | |
Bose et al. | Conditional differential coefficients method for the realization of powers-of-two FIR filter | |
EP1710689A1 (en) | Combining circuitry for multipliers | |
Vikasini et al. | 16-bit Modified Vedic Paravartya Divider with quotient in fractions | |
Patronik et al. | Design of residue generators with CLA/compressor trees and multi-bit EAC | |
Saleh et al. | Novel serial–parallel multipliers | |
Gao et al. | Efficient realization of large size two’s complement multipliers using embedded blocks in FPGAs | |
Abraham et al. | An ASIC design of an optimized multiplication using twin precision |
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 |