<span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;">在<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E5%BE%AE%E5%A4%84%E7%90%86%E5%99%A8&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">微处理器</a>芯片中,<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E4%B9%98%E6%B3%95%E5%99%A8&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">乘法器</a>是进行<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E6%95%B0%E5%AD%97%E4%BF%A1%E5%8F%B7%E5%A4%84%E7%90%86&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">数字信号处理</a>的核心,同时也是<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E5%BE%AE%E5%A4%84%E7%90%86%E5%99%A8&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">微处理器</a>中进行<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">数据处理</a>的<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E5%85%B3%E9%94%AE%E9%83%A8%E4%BB%B6&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">关键部件</a>。<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E4%B9%98%E6%B3%95%E5%99%A8&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">乘法器</a>完成一次操作的周期基本上决定了<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E5%BE%AE%E5%A4%84%E7%90%86%E5%99%A8&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">微处理器</a>的主频。<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E4%B9%98%E6%B3%95%E5%99%A8&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">乘法器</a>的速度和面积优化对于整个CPU的性能来说是非常重要的。为了加快乘<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E6%B3%95%E5%99%A8&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">法器</a>的执行速度,减少乘<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E6%B3%95%E5%99%A8&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">法器</a>的面积,有必要对乘<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E6%B3%95%E5%99%A8&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">法器</a>的算法、结构及电路的具体实现做深入的研究。<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=Booth%E7%AE%97%E6%B3%95&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">Booth算法</a>与乘法器的一般结构
乘法器工作的基本原理是首先生成部分积,再将这些部分积相加得到乘积。在目前的乘法器设计中,基4<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=Booth%E7%AE%97%E6%B3%95&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">Booth算法</a>是部分积生成过程中普遍采用的算法。对于N位<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E6%9C%89%E7%AC%A6%E5%8F%B7%E6%95%B0&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">有符号数</a>乘法A×B来说,常规的乘法运算会产生N个部分积。如果对<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E4%B9%98%E6%95%B0&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">乘数</a>B进行基4Booth编码,每次需考虑3位:相邻高位、本位和相邻<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E4%BD%8E%E4%BD%8D&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">低位</a>,编码后产生部分积的个数可以减少到[(N+1)/2]?? ([X]取值为不大于X的整数),确定运算量0、±1A、±2A。对于2A的实现,只需要将A左移一位。因此,对于符号数乘法而言,基4 <a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=Booth%E7%AE%97%E6%B3%95&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">Booth算法</a>既方便又快捷。而对于<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B0&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">无符号数</a>来说,只需对其高位作0扩展,而其他处理方法相同。虽然扩展后可能导致部分积的个数比<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E6%9C%89%E7%AC%A6%E5%8F%B7%E6%95%B0&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">有符号数</a>乘法多1,但是这种算法很好地保证了硬件上的一致性,有利于实现。对于32位乘法来说,结合<a target=_blank target="_blank" class="inner-link decor-none" href="http://www.baidu.com/s?wd=%E6%8C%87%E4%BB%A4%E9%9B%86&hl_tag=textlink&tn=SE_hldp01350_v6v6zkg6" rel="nofollow" style="color: rgb(255, 153, 0); text-decoration: none;">指令集</a>的设计,通常情况下需要相加的部分积不超过18个</span></span>
<span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;">
</span></span>
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;">booth乘法器是一种位操作乘法器,与传统乘法器不同的是直接操作位。传统乘法器依靠加法,不断累加,在这里就不说了。</span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;">------------------------------------------------------------------------------------------------------------------------------------------------------------</span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;">booth乘法器有个重要的加码运算。来看一下</span></span></p><div><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;"><img alt="BOOTH乘法器——看到别人讲解的booth乘法器,可以作为booth,借鉴下 - 成 - 学海泛舟" src="http://img1.ph.126.net/4paL3QnpuDdOq7JQ7_sKag==/6597251186075252001.jpg" style="border: 0px; max-width: 100%; margin: 0px 10px 0px 0px;" /></span></span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;"> B[-1]就是B的零位右边的位,是假想的位。如0010  0  B[-1]就是0。</span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;">  做booth乘法器又引入了p空间。</span></span></p><div><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;"><img alt="BOOTH乘法器——看到别人讲解的booth乘法器,可以作为booth,借鉴下 - 成 - 学海泛舟" src="http://img3.ph.126.net/qhmWQ3NA67vvEd5GEY5YJw==/6597405117703006393.jpg" style="border: 0px; max-width: 100%; margin: 0px 10px 0px 0px;" /></span></span></div><div><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;">上图的左移一位或者右移一位指的是p空间。什么是p空间呢?我们以7(0111)和2(0010)相乘为例。他们位数n均为4位。所以p空间大小为n*2+1=9。</span></span></div><div><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;">p空间是如何做乘法运算的呢?</span></span></div><div><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;"><img alt="BOOTH乘法器——看到别人讲解的booth乘法器,可以作为booth,借鉴下 - 成 - 学海泛舟" src="http://img7.ph.126.net/1jqwZflmqKmoekar9hnXWA==/6597141234912478097.jpg" style="border: 0px; max-width: 100%; margin: 0px 10px 0px 0px;" /></span></span></div><div><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;"><img alt="BOOTH乘法器——看到别人讲解的booth乘法器,可以作为booth,借鉴下 - 成 - 学海泛舟" src="http://img5.ph.126.net/zkHO0lrD4UOQ7eS0ZSqwuA==/1079175060726428765.jpg" style="border: 0px; max-width: 100%; margin: 0px 10px 0px 0px;" /></span></span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;"> </span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51);"><span style="font-size: 18px;">代码如下:</span></span></p><pre class="prettyprint" name="code" style="white-space: pre-wrap; word-wrap: break-word; position: relative; overflow-y: hidden; overflow-x: auto; padding: 2px; border: 1px solid rgb(136, 136, 136);"><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;"><span class="pln"> </span><span class="kwd">module</span><span class="pln"> product</span>
<span class="pun">(</span>
<span class="pln">input CLK</span><span class="pun">,</span>
<span class="pln">input </span><span class="typ">RSTn</span><span class="pun">,</span></span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;"><span class="pln">input </span><span class="typ">Start_Sig</span><span class="pun">,</span>
<span class="pln">input </span><span class="pun">[</span><span class="lit">7</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln">A</span><span class="pun">,</span>
<span class="pln">input </span><span class="pun">[</span><span class="lit">7</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln">B</span><span class="pun">,</span></span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;"><span class="pln">output </span><span class="typ">Done_Sig</span><span class="pun">,</span>
<span class="pln">output </span><span class="pun">[</span><span class="lit">15</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="typ">Product</span><span class="pun">,</span></span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;"><span class="pln">output </span><span class="pun">[</span><span class="lit">7</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln">SQ_a</span><span class="pun">,</span>
<span class="pln">output </span><span class="pun">[</span><span class="lit">7</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln">SQ_s</span><span class="pun">,</span>
<span class="pln">output </span><span class="pun">[</span><span class="lit">16</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln">SQ_p</span>
<span class="pun">);</span></span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span class="com"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;">/*************************/</span></span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;"><span class="pln">reg </span><span class="pun">[</span><span class="lit">3</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln">i</span><span class="pun">;</span>
<span class="pln">reg </span><span class="pun">[</span><span class="lit">7</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln">a</span><span class="pun">;</span><span class="pln"> </span><span class="com">// a的寄存器</span>
<span class="pln">reg </span><span class="pun">[</span><span class="lit">7</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln">s</span><span class="pun">;</span><span class="pln"> </span><span class="com">// a的补码加1 a非</span>
<span class="pln">reg </span><span class="pun">[</span><span class="lit">16</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln">p</span><span class="pun">;</span><span class="pln"> </span><span class="com">// p空间存储器</span>
<span class="pln">reg </span><span class="pun">[</span><span class="lit">3</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln">X</span><span class="pun">;</span><span class="pln">   </span><span class="com">//操作次数</span>
<span class="pln">reg isDone</span><span class="pun">;</span></span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;"><span class="pln">always </span><span class="pun">@</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> posedge CLK </span><span class="kwd">or</span><span class="pln"> negedge </span><span class="typ">RSTn</span><span class="pln"> </span><span class="pun">)</span>
<span class="pln"> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln"> </span><span class="pun">!</span><span class="typ">RSTn</span><span class="pln"> </span><span class="pun">)</span>
<span class="pln">  </span><span class="kwd">begin</span>
<span class="pln">   </span>
<span class="pln">   i </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">4</span><span class="str">'d0;</span>
<span class="str">   a <= 8'</span><span class="pln">d0</span><span class="pun">;</span>
<span class="pln">   s </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">8</span><span class="str">'d0;</span>
<span class="str">   p <= 17'</span><span class="pln">d0</span><span class="pun">;</span>
<span class="pln">   X </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">4</span><span class="str">'d0;</span>
<span class="str">   isDone <= 1'</span><span class="pln">b0</span><span class="pun">;</span>
<span class="pln">  </span><span class="kwd">end</span>
<span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln"> </span><span class="typ">Start_Sig</span><span class="pln"> </span><span class="pun">)</span>
<span class="pln">  </span><span class="kwd">case</span><span class="pun">(</span><span class="pln"> i </span><span class="pun">)</span>
<span class="pln">   </span>
<span class="pln">   </span><span class="lit">0</span><span class="pun">:</span>
<span class="pln">    </span><span class="kwd">begin</span><span class="pln"> a </span><span class="pun"><=</span><span class="pln"> A</span><span class="pun">;</span><span class="pln"> s </span><span class="pun"><=</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> </span><span class="pun">~</span><span class="pln">A </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="str">'b1 ); p <= { 8'</span><span class="pln">d0 </span><span class="pun">,</span><span class="pln"> B </span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="str">'b0 }; i <= i + 1'</span><span class="pln">b1</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">end</span>
<span class="pln">   </span>
<span class="pln">   </span><span class="lit">1</span><span class="pun">:</span>
<span class="pln">    </span><span class="kwd">if</span><span class="pun">(</span><span class="pln"> X </span><span class="pun">==</span><span class="pln"> </span><span class="lit">8</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="kwd">begin</span><span class="pln"> X </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">4</span><span class="str">'d0; i <= i + 4'</span><span class="pln">d2</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">end</span>
<span class="pln">    </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln"> p</span><span class="pun">[</span><span class="lit">1</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">2</span><span class="str">'b01 ) begin p <= { p[16:9] + a , p[8:0] }; i <= i + 1'</span><span class="pln">b1</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">end</span>
<span class="pln">    </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln"> p</span><span class="pun">[</span><span class="lit">1</span><span class="pun">:</span><span class="lit">0</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">2</span><span class="str">'b10 ) begin p <= { p[16:9] + s , p[8:0] }; i <= i + 1'</span><span class="pln">b1</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">end</span>
<span class="pln">    </span><span class="kwd">else</span><span class="pln"> i </span><span class="pun"><=</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="str">'b1;</span>
<span class="str">   </span>
<span class="str">   2:</span>
<span class="str">    begin p <= { p[16] , p[16:1] }; X <= X + 1'</span><span class="pln">b1</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><=</span><span class="pln"> i </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="str">'b1; end</span>
<span class="str">   </span>
<span class="str">   3:</span>
<span class="str">    begin isDone <= 1'</span><span class="pln">b1</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><=</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="str">'b1; end</span>
<span class="str">   </span>
<span class="str">   4:</span>
<span class="str">    begin isDone <= 1'</span><span class="pln">b0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">4</span><span class="str">'d0; end</span>
<span class="str">   </span>
<span class="str">  endcase</span></span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span class="str"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;">/*************************/</span></span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;"><span class="str">assign Done_Sig = isDone;</span>
<span class="str">assign Product = p[16:1];</span></span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span class="str"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;">/*************************/</span></span></span></p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span style="font-family: FangSong_GB2312; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"><span style="font-size: 18px;"><span class="str">assign SQ_a = a;</span>
<span class="str">assign SQ_s = s;</span>
<span class="str">assign SQ_p = p;</span>
<span class="str">/**************************/</span>
<span class="str">endmodule</span></span></span></p>

Booth乘法器和wallace树乘法器的理解相关推荐

  1. 乘法器——基于Wallace树的4位乘法器实现

    博主最近在学习加法器乘法等等相关知识,在学习乘法器booth编码加Wallace树压缩时,发现在压缩部分积的时候用到了进位保留加法器(Carry Save Adder),博主对这种加法器不是很理解,而 ...

  2. Wallace树乘法器

    当前乘法器的设计主要有两种方式,Wallace树乘法器和booth编码乘法器.本篇主要讲述的是Wallace树乘法器. 1.算法讲解 以4×4位乘法器为例,如表1-1所示,列出了各个部分的积 表1-1 ...

  3. verilog乘法器——基于Booth算法和Wallace树

    加法器 半加器 半加器实现两个二进制数相加的功能,不考虑低位进位. 半加器真值表 半加器逻辑表达式 S = A ^ B Cout = AB 半加器逻辑图 全加器 全加器实现两个二进制数和一个进位信号相 ...

  4. Wallace 树乘法器

    设计原理 运算原理如下图所示,其中FA为全加器,HA为半加器.基本原理是加法从数据最密集的地方开始,不断反复使用全加器.半加器来覆盖"树",这一级全加器是一个3输入2输出的器件,因 ...

  5. 原码一位乘法器设计_数字IC校招基础知识点复习(七)——超前进位加法器、Wallace树、Booth乘法器...

    1.超前进位加法器 看了一些面经,提到会让你用基础的门搭加法器,因此首先得熟悉半加器,全加器等最基础的加法器才能理解之后的超前进位加法器,树型加法器等复杂的加法器. 半加器的输入为a,b,输出为结果s ...

  6. 乘法器——Wallace树型乘法器

    文章转自https://www.cnblogs.com/wangkai2019/p/11153887.html,在此保存一下 博主最近在看乘法器相关的知识,发现现在用的比较多的是booth编码的乘法器 ...

  7. Wallace树专题研究

    Wallace树乘法器专题研究 绪论:在乘法器的设计中采用树形乘法器,可以减少关键路径和所需的加法器单元数目,Wallace树乘法器就是其中的一种.下面以一个4*4位乘法器为例介绍Wallace树乘法 ...

  8. 【HDL系列】乘法器(4)——图解Wallace树

    目录 一.Wallace树 二.Verilog设计 一.Wallace树 1963年,C.S.Wallace提出的一种高效快速的加法树结构,被后人称为Wallace树.其基本思想如下在其文章中描述如下 ...

  9. 八位“Booth二位乘算法”乘法器

    文章目录 八位"Booth二位乘算法"乘法器 原理 补码乘法器 Booth一位乘 Booth二位乘 设计思路 减法变加法 vivado特性 设计文件 综合电路 测试文件 仿真波形 ...

最新文章

  1. chrome插件下载
  2. 聊一聊.NET Core结合Nacos实现配置加解密
  3. python游走代码_介绍一个全局最优化的方法:随机游走算法(Random Walk)
  4. python selenium ---键盘事件
  5. RTMP播放器开发填坑之道
  6. Qt|设计模式工作笔记-对单例模式进一步的理解(静态加单例实现专门收发UDP对象)
  7. 1001.A+B Format (20) 解题
  8. redis logfile 只读_docker 配置redis主从,哨兵sentinel
  9. solidworks 2018 SP2.0中文版
  10. 74系列相关芯片说明
  11. 魔兽争霸III背景渊源
  12. Python之通过API获取数据库数据及图片
  13. 飞秋官方下载 找了很久的
  14. 【java】数组的定义以及初级运用精讲(起点闭关计划)
  15. 如何更换戴尔 燃7000 Dell Inspiron 7460的电池
  16. C语言函数:toupper
  17. Python入门之——pexpect模块
  18. java parse json string
  19. Java程序员非技术性面试题目
  20. 怎么禁用计算机上的自动播放,关闭自动播放,教您Win7怎么关闭自动播放功能

热门文章

  1. 计算机自动维护有用吗,电脑如何关闭自动维护功能?
  2. 深入JVM内核(七)——性能监控工具
  3. 测试听力 html,听力测试,看看你的耳朵听力受损了没
  4. 获取地址eth,usdt 余额及最早一次交易记录
  5. ESP32-C3入门教程 问题篇⑬——IOS手机蓝牙连接容易断开问题,BT_HCI: DiscCmpl evt: hdl=1, rsn=0x8
  6. 谷歌小恐龙无限跑只需要一行代码
  7. 用C语言实现介于两个数字中间的数之和
  8. 809*??=800*??+9*??
  9. 普及共享出行理念 嘀嗒出行倡导出行信用建设
  10. 2020大众点评数据统计分析 大众点评数据下载