微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于booth2乘法器设计的一些看法!

关于booth2乘法器设计的一些看法!

时间:10-02 整理:3721RD 点击:
我们都知道booth2算法是要讨论相邻高位,本位,相邻低位的,其中得到的情况结果有0、B、2B、-B、-2B,像-B的实现就是取反加一,即~B+1;-2B的实现方法是(~(B<<1)) + 1的,最近看了一个例子,怎么也看不懂,例子部分代码如下:

  1. always @ (y or x)  begin
  2.                symb5=1'b0;
  3.             case(y[9:7])
  4.                 3'b000:    tpp5=17'b0;
  5.                 3'b001,
  6.                 3'b010:    tpp5={x[15],x};
  7.                 3'b011:    tpp5={x,1'b0};
  8.                 3'b100:    begin
  9.                              tpp5=~{x,1'b0};
  10.                              symb5=1'b1;
  11.                            end
  12.                 3'b101,   
  13.                 3'b110:    begin
  14.                               tpp5=~{x[15],x};
  15.                               symb5=1'b1;
  16.                            end
  17.                 3'b111:    tpp5={1'b0,16'b0};
  18.         endcase                                       
  19.         end

复制代码


根据作者写的代码,其中100、101、110这三种情况为什么都没有加 1 呢,而最后他总的代码仿真结果又是正确的,想了好久,不出其解,请坛友支支招,在此谢谢了!

其实是加1了,加的1放在symb5上了,整个程序的设计应该是把所有需要加的1放入symb5中,将symb5当做一个部分积参与到后面的快速求和中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top