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

文档序号:8257890阅读:来源:国知局
0032]需要说明的是,当乘数和被乘数均为符号数时,部分积产生器101还用于对获得的η项部分积数据中第1、2.....η-1项部分积数据的第η位进行取反操作,同时对第η项部分积数据的第1、2.....η-1位进行取反操作;累加器102还用于对所述获得的求和数据和一个常数项做累加处理。具体为,在获得求和数据之后,当乘数和被乘数包括的数据位数相等时,即m=n时,累加器102还用于对该求和数据中的第m位、第2*m_l位分别和I做累加处理;当乘数和被乘数包括的数据位数不相等时,累加器102还用于对获得的求和数据中的第η-1位、第m-Ι位和第2*m-l位分别和I做累加处理。参见图2,在乘数A[0]、
A [I].....A [3]和被乘数B [O]、B [I].....B [3]均为符号数时,通过LUTAND对A [3]与B [O]
相与之后得到的第一项部分积数据的最高位P(l[3]取反之后输入到相应的LUT4CA中,同样通过LUT4CA对A[3]与B[l]相与之后得到的第二项部分积数据的最高位P1 [3]取反之后输入到相应的LUT4CA中,通过LUT4CA对A [3]与B [2]相与之后得到的第三项部分积数据的最高位P2 [3]取反之后输入到相应的LUT4CA中;同时通过1^^'扣4对4[2]与B[3]相与之后得到的第四项部分积数据的第3位?3[2]取反之后输出,通过LUT4CA对A[l]与B[3]相与之后得到的第四项部分积数据的第2位?3[1]取反之后输出,通过LUT4CA对A[0]与B[3]相与之后得到的第四项部分积数据的第I位?3[0]取反之后输出;在获得求和数据之后,因为m=n=4,所以需要对求和数据的第4位p[3]和第7位p[6]分别和I做累加处理。
[0033]优选地,累加器102还包括第三查找表,用于实现对所述η项部分积数据的累加处理后的进位处理。具体地,如图2所示,在第二查找表LUT4CA对乘数的最高位Α[3]与被乘数除第一位之外的其他位B[l]、Β[2]和Β[3]相与之后,通过第三查找表LUT4C0实现向高位的进位。举例为,参见图3所示的用查找表实现进位处理的示意图,图中,在第二查找表LUT4CA对乘数的最高位Α[3]与被乘数的最高位Β[3]相与之后,向高位的进位co输入到X0R2中,第三查找表LUT4C0输出恒为0,将第三查找表的输出和向高位的进位co进行异或处理之后,即可输出向高位的进位CO。
[0034]图4为本发明实施例二提供的基于FPGA芯片的乘法器,如图4所示,该基于FPGA芯片的乘法器40包括部分积产生器401和累加器402。部分积产生器401,由第一查找表实现,用于对乘数和被乘数中每一位分别进行与操作,获得η项部分积数据,所述乘数包括m位数据,所述被乘数包括η位数据,所述η项部分积数据中各项均包括m位数据,其中,所述第一查找表根据乘数和被乘数中每一位分别进行与操作时,和所述被乘数相与的数据的位置而选定,使前述对乘数和被乘数中每一位分别进行与操作的所述第一查找表彼此相对移位,使得η项部分积数据彼此实现移位。
[0035]需要说明的是,此处m>=n,当m〈n的时候,需要将乘数与被乘数进行交换,这样才能保证部分积的数量尽量少,从而累加的次数尽量少,运行的效率才会高。
[0036]累加器402,由第二查找表和第四查找表实现,用于实现对所述η项部分积数据的累加处理,获得求和数据,所述求和数据包括m+n位数据。
[0037]第四查找表LUT4C实现对输入的两个数据的异或操作。优选地,用最优二叉树来构建实现对所述η项部分积数据的累加处理的累加器402。图5为用最优二叉树构建的累加器实现4*4无符号数累加处理的示意图,图5中,乘数包括4位数据,表示为Α[0]、
A [I].....A [3],被乘数包括4位数据,表示为B [O]、B [I].....B [3],将乘数和被乘数的每一位分别进行与操作,获得4项部分积数据,在对4项部分积数据做累加处理时,给定该4项部分积数据4个权值,举例为,该权值可以为1,根据给定的4个权值,将该4项部分积数据作为4个叶子节点构建最优二叉树,根据构建的最优二叉树,并且根据和被乘数相与的数据的位置而选定相应的4列查找表,该4列查找表既包括第一查找表LUTAND又包括第二查找表LUT4CA ;将上述4项部分积数据通过选定的查找表实现两两累加运算,得到两个累加和,最后通过第四查找表LUT4C对得到的两个累加和进行累加。
[0038]需要说明的是,当乘数和被乘数均为符号数时,部分积产生器401还用于对获得的η项部分积数据中第1、2.....η-1项部分积数据的第η位进行取反操作,同时对第η项部分积数据的第1、2.....η-1位进行取反操作;累加器102还用于对所述获得的求和数据和一个常数项做累加处理。具体为,在获得求和数据之后,当乘数和被乘数包括的数据位数相等时,即m=n时,累加器102还用于对该求和数据中的第m位、第2*m_l位分别和I做累加处理;当乘数和被乘数包括的数据位数不相等时,累加器102还用于对获得的求和数据中的第η-1位、第m-Ι位和第2*m-l位分别和I做累加处理。参见图5,在乘数A[0]、A [I].....A [3]和被乘数B[0]、B[1].....B [3]均为符号数时,通过LUTAND对A [3]与B [O]
相与之后得到的第一项部分积数据的最高位P(l[3]取反之后输入到相应的LUT4CA中,同样通过LUT4CA对A[3]与B[l]相与之后得到的第二项部分积数据的最高位P1 [3]取反之后输入到相应的LUT4C中,通过LUTAND对A [3]与B [2]相与之后得到的第三项部分积数据的最高位P2 [3]取反之后输入到相应的LUT4CA中;同时通过1^^'扣4对4[2]与B [3]相与之后得到的第四项部分积数据的第3位p3 [2]取反之后再执行与其他数据的异或操作,通过LUT4CA对A[l]与B[3]相与之后得到的第四项部分积数据的第2位p3[l]取反之后再执行与其他数据的异或操作,通过LUT4CA对A[O]与B[3]相与之后得到的第四项部分积数据的第1位&[0]取反之后再执行与其他数据的异或操作;在获得求和数据之后,因为m=n=4,所以需要对求和数据的第4位P [3]和第7位P [6]分别和I做累加处理。
[0039]优选地,累加器402还包括第三查找表,用于实现对所述η项部分积数据的累加处理后的进位处理。具体地,如图5所示,图中的累加运算只需要用到两个第三查找表,在第二查找表匕爪扣八对乘数的最高位八^]与被乘数的最高位Β[3]相与之后,以及在第二查找表1^爪扣4对乘数的最高位4[3]与被乘数的第2位B[l]相与之后,通过第三查找表LUT4C0实现向高位的进位。
[0040]为了便于理解累加器如何通过查找表实现累加运算,以下将对第一查找表、第二查找表和第三查找表实现数据运算的过程进行详细说明。
[0041]第一查找表对乘数的第i位和被乘数的第j位进行与操作而获得一项部分积数据中的一位,所述第二查找表输入乘数的第I位和被乘数的第J位以及所述一项部分积数据中的一位,对乘数的第I位和被乘数的第J位执行与操作而获得另一项部分积数据中的一位,对所述一项部分积数据中的一位和所述另一项部分积数据中的一位执行异或运算,将运算结果输入到多路选择器和逻辑电路中,由所述多路选择器向高位数据进位,由所述逻辑电路输出所述两项部分积数据中两位的第一累加和,其中,i,j,I和J均为自然数,i,I Sm,j, J ^ n0举例为,参见图6所示的用查找表实现累加操作示意图之一,如图6所示,乘数包括4位数据,表示为A [O]、A [ I].....A [3],被乘数包括4位数据,表示为B [O]、
B [I].....B [3],第一查找表LUTAND对乘数的第2位A [I]和被乘数的第I位B [O]进行与操作而获得第I项部分积数据中的第2位,第二查找表LUT4CA输入乘数的第I位A [O]和被乘数的第2位B [I]以及上述求得的第I项部分积数据中的第2位,第二查找表LUT4CA首先对乘数的第I位A[0]和被乘数的第2位B[l]执行与操作而获得第2项部分积数据中的第I位,然后对第I项部分积数据中的第2位和第2项部分积数据中的第I位执行异或运算,将运算结果输入到多路选择器和两输入的异或门中,多路选择器中同时输入低位向该位的进位ci,并且输入乘数的第I位A[0],经处理之后输出该位向高位的进位co;上述两输入的异或门中同时也输入低位向该位的进位ci,两输入的异或门对ci和第二查找表输出的结果进行异或运算后输出第I项部分积数据中的第2位和第2项部分积数据中的第I位的第一累加和。
[0042]第二查找表输入乘数的第t位和被乘数的第T位以及两项部分积数据中两位的第一累加和,对乘数的第t位和被乘数的第T位进行与操作而获得另一项部分积数据中的一位,对所述两项部分积数据中两位的第一累加和和所述另
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1