关于booth2乘法器设计的一些看法!
时间:10-02
整理:3721RD
点击:
我们都知道booth2算法是要讨论相邻高位,本位,相邻低位的,其中得到的情况结果有0、B、2B、-B、-2B,像-B的实现就是取反加一,即~B+1;-2B的实现方法是(~(B<<1)) + 1的,最近看了一个例子,怎么也看不懂,例子部分代码如下:
根据作者写的代码,其中100、101、110这三种情况为什么都没有加 1 呢,而最后他总的代码仿真结果又是正确的,想了好久,不出其解,请坛友支支招,在此谢谢了!
- always @ (y or x) begin
- symb5=1'b0;
- case(y[9:7])
- 3'b000: tpp5=17'b0;
- 3'b001,
- 3'b010: tpp5={x[15],x};
- 3'b011: tpp5={x,1'b0};
- 3'b100: begin
- tpp5=~{x,1'b0};
- symb5=1'b1;
- end
- 3'b101,
- 3'b110: begin
- tpp5=~{x[15],x};
- symb5=1'b1;
- end
- 3'b111: tpp5={1'b0,16'b0};
- endcase
- end
根据作者写的代码,其中100、101、110这三种情况为什么都没有加 1 呢,而最后他总的代码仿真结果又是正确的,想了好久,不出其解,请坛友支支招,在此谢谢了!
其实是加1了,加的1放在symb5上了,整个程序的设计应该是把所有需要加的1放入symb5中,将symb5当做一个部分积参与到后面的快速求和中。
