基于fpga芯片的乘法器的制造方法

文档序号:8257890阅读:390来源:国知局
基于fpga芯片的乘法器的制造方法
【技术领域】
[0001]本发明涉及一种乘法器,尤其涉及一种基于FPGA芯片的乘法器。
【背景技术】
[0002]在FPGA设计中,经常要用到乘法操作。而在FPGA的芯片架构中,通常会拥有大量的进位链用于实现加法操作。
[0003]现有技术中,在FPGA芯片中利用加法进位链实现乘法功能的研究目前还处于空白状态,而利用其他方法实现乘法的功能时,由于最终乘积的串行加法运算的次数往往过大,从而造成整个FPGA芯片运行效率低。

【发明内容】

[0004]本发明的目的是针对现有技术的缺陷,提供了一种基于FPGA芯片的乘法器,该乘法器可以利用FPGA芯片中的加法进位链来实现乘法的功能。
[0005]为实现上述目的,本发明提供了一种基于FPGA芯片的乘法器,该乘法器包括:
[0006]部分积产生器,由第一查找表实现,用于对乘数和被乘数中每一位分别进行与操作,获得η项部分积数据,所述乘数包括m位数据,所述被乘数包括η位数据,所述η项部分积数据中各项均包括m位数据,其中,所述第一查找表根据乘数和被乘数中每一位分别进行与操作时,和所述被乘数相与的数据的位置而选定,使前述对乘数和被乘数中每一位分别进行与操作的所述第一查找表彼此相对移位,使得η项部分积数据彼此实现移位;
[0007]累加器,由第二查找表实现,用于实现对所述η项部分积数据的累加处理,获得求和数据,所述求和数据包括m+n位数据。
[0008]在一种可能的实现方式,当所述乘法器处理的乘数和被乘数具有符号位时,所述部分积产生器还用于对所述获得的η项部分积数据中第1、2.....η-1项部分积数据的第η
位进行取反操作,同时对第η项部分积数据的第1、2.....η-1位进行取反操作。
[0009]在一种可能的实现方式中,所述累加器包括第三查找表,用于实现对所述η项部分积数据的累加处理后的进位处理。
[0010]在一种可能的实现方式中,用最优二叉树来构建实现对所述η项部分积数据的累加处理的累加器。
[0011]在一种可能的实现方式中,所述第一查找表对乘数的第i位和被乘数的第j位进行与操作而获得一项部分积数据中的一位,所述第二查找表输入乘数的第I位和被乘数的第J位以及所述一项部分积数据中的一位,对乘数的第I位和被乘数的第J位执行与操作而获得另一项部分积数据中的一位,对所述一项部分积数据中的一位和所述另一项部分积数据中的一位执行异或运算,将运算结果输入到多路选择器和逻辑电路中,由所述多路选择器向高位数据进位,由所述逻辑电路输出所述两项部分积数据中两位的第一累加和,其中,i,j,I和J均为自然数,i,I彡m,j,J彡η。
[0012]在一种可能的实现方式中,所述第二查找表输入乘数的第t位和被乘数的第T位以及两项部分积数据中两位的第一累加和,对乘数的第t位和被乘数的第T位进行与操作而获得另一项部分积数据中的一位,对所述第一累加和和所述另一项部分积数据中的一位执行异或运算,将运算结果输入到多路选择器和逻辑电路中,由所述多路选择器向高位数据进位,由所述逻辑电路输出所述三项部分积数据中三位的第二累加和,其中,t和T均为自然数,t彡m, T彡η。
[0013]在一种可能的实现方式中,所述累加器还包括第四查找表;所述第四查找表输入两项部分积数据中两位的第三累加和和另两项部分积数据中两位的第四累加和,对所述第三累加和和所述第四累加和执行异或运算,将运算结果输入到多路选择器和逻辑电路中,由所述多路选择器向高位数据进位,由所述逻辑电路输出所述四项部分积数据中四位的第五累加和。
[0014]在一种可能的实现方式中,所述部分积产生器中的所述第一查找表和所述累加器中的所述第二查找表部分合并为同一个查找表。
[0015]在一种可能的实现方式中,所述累加器还用于:对所述获得的求和数据和一个常数项做累加处理。
[0016]本发明的基于FPGA芯片的乘法器,在对乘数和被乘数进行乘法运算时,其中,乘数包括m位,被乘数包括η位,且m>=n,通过由查找表实现的部分积产生器产生η项部分积数据,通过基于最优二叉树构建的累加器实现该η项部分积数据的累加,从而保证了 η项部分积数据的串行加法次数不超过log2n次,提高了整个FPGA芯片的运行效率。
【附图说明】
[0017]图1为本发明实施例一提供的基于FPGA芯片的乘法器;
[0018]图2为用查找表实现4*4无符号数累加处理示意图;
[0019]图3为用查找表实现进位处理的不意图;
[0020]图4为本发明实施例二提供的基于FPGA芯片的乘法器;
[0021]图5为用最优二叉树构建的累加器实现4*4无符号数累加处理的示意图;
[0022]图6为用查找表实现累加操作示意图之一;
[0023]图7为用查找表实现累加操作示意图之二 ;
[0024]图8为用查找表实现累加操作示意图之三;
[0025]图9为本发明利用最优二叉树构建累加器的逻辑示意图。
【具体实施方式】
[0026]下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
[0027]图1为本发明实施例一提供的基于FPGA芯片的乘法器,如图1所示,该基于FPGA芯片的乘法器10包括部分积产生器101和累加器102。
[0028]部分积产生器101,由第一查找表实现,用于对乘数和被乘数中每一位分别进行与操作,获得η项部分积数据,所述乘数包括m位数据,所述被乘数包括η位数据,所述η项部分积数据中各项均包括m位数据,其中,所述第一查找表根据乘数和被乘数中每一位分别进行与操作时,和所述被乘数相与的数据的位置而选定,使前述对乘数和被乘数中每一位分别进行与操作的所述第一查找表彼此相对移位,使得η项部分积数据彼此实现移位。
[0029]具体地,假如乘数包括m位数据,表示为A[0]、A[1].....A[m_l],被乘数包括η位数据,表示为B [O]、Β[1].....B [η-1],将乘数和被乘数的每一位分别进行与操作,获得η项部分积数据;需要说明的是,此处m>=n,当m〈n的时候,需要将乘数与被乘数进行交换,这样才能保证部分积的数量尽量少,从而累加的次数尽量少,运行的效率才会高。将乘数和被乘数的每一位分别进行与操作具体实现为首先将A[0]、A[1].....A[m-1]分别与B[0]进行与操作,获得第一项部分积数据Ρο[0]、Ρ(ι[1].....Ptl[m-1],该第一项部分积数据总共包括m
位,然后将A[0]、A[1].....A [m-1]分别与B [I]进行与操作,获得第二项部分积数据Pl [O]、
P1 [I].....P1 [m-1],该第二项部分积数据总也包括m位,以此类推,直至将A[O]、A[I].....A [m-1]分别与B [η-1]进行与操作,获得第η项部分积数据Plri [O]、Plri [I].....Pn^1 [m-1]。
需要说明的是,在上述过程中,乘数的第i位A[1-1]和被乘数的第j位B[j-1]的与操作通过第一查找表实现,其中,i, j均为自然数,且i < m,j < n,该第一查找表只实现两位数据相与的操作;在将乘数的第i位A[1-1]和被乘数的第j位B[j-1]进行相与的操作时,根据j去选定相应的第一查找表,从而使前述对乘数和被乘数中每一位分别进行与操作的第一查找表彼此相对移位,使得η项部分积数据彼此实现移位。
[0030]累加器102,由第二查找表实现,用于实现对所述η项部分积数据的累加处理,获得求和数据,所述求和数据包括m+n位数据。
[0031]为了提高运算效率,即在实现与操作的同时进行异或操作,将部分积产生器101中的第一查找表和累加器102中的第二查找表部分合并为同一个查找表。优选地,由第二查找表同时实现对输入的数据进行与操作和异或操作。图2为用查找表实现4*4无符号数累加处理示意图,图中,乘数包括4位数据,表示为A [O]、A [I].....A [3],被乘数包括4位数据,表示为B[0]、B[1].....B[3],第一列是乘数的各位与被乘数的第一位B[0]进行与操作,即从第一行开始依次选定四个第一查找表LUTAND即可,第二列是乘数的各位与被乘数的第二位B[l]进行与操作,由于是与被乘数的第二位进行与操作,且同时可与第一列的结果数据进行异或操作,所以从第二行开始依次选定四个第二查找表LUT4CA即可,依次类推,直至选定第四列的四个第二查找表LUT4CA。从图2中可以看出,上述选定的4列查找表彼此相对移位,使得四项部分积数据彼此实现移位;对该四项部分积数据做累加处理之后,即可获得求和数据P [O]、P [I].....P [7],该求和数据包括4+4=8位数据。
[
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1