1.传统的乘法器

两个数相乘,无论是同号相乘还是异号相乘,其实最后结果的数值与符号无关,只取两个数的绝对值相乘,最后结果的符号为被乘数与乘数的符号异或即可。

然后乘法可以看成累加操作累加次数为乘数的数值大小累加值为被乘数。每累加一次,乘数减一,直到乘数减到0,则相乘结束。

该乘法器的大致操作如下:
(一)在初始化之际,取乘数和被乘数的正负关系,然后取被乘数和乘数的正值。
(二)每一次累加操作,递减一次乘数。直到乘数的值为零,表示操作结束。
(三)输出结果根据正负关系取得。

实现代码如下:

module multiplier_module(input CLK,input RSTn,input Start_Sig,input [7:0]Multiplicand,input [7:0]Multiplier,output Done_Sig,output [15:0]Product
);/*************************/reg [1:0]i;
reg [7:0]Mcand;
reg [7:0]Mer;
reg [15:0]Temp;
reg isNeg;
reg isDone;always @ ( posedge CLK or negedge RSTn )
if( !RSTn )
begini <= 2'd0;Mcand <= 8'd0; // Register for MultiplicandMer <= 8'd0; // Register ofr MultipierTemp <= 8'd0; // Sum of pratocal productisNeg <= 1'b0;isDone <= 1'b0;
end
else if( Start_Sig )case( i )0:beginisNeg <= Multiplicand[7] ^ Multiplier[7];Mcand <= Multiplicand[7] ? ( ~Multiplicand + 1'b1 ) : Multiplicand;Mer <= Multiplier[7] ? ( ~Multiplier + 1'b1 ) : Multiplier;Temp <= 16'd0;i <= i + 1'b1;end1: // Multiplingif( Mer == 0 ) i <= i + 1'b1;else begin Temp <= Temp + Mcand; Mer <= Mer - 1'b1; end2:begin isDone <= 1'b1; i <= i + 1'b1; end3:begin isDone <= 1'b0; i <= 2'd0; endendcase/*************************/assign Done_Sig = isDone;
assign Product = isNeg ? ( ~Temp + 1'b1 ) : Temp;/*************************/
endmodule

但是这种方法的缺点也是显而易见的,当乘数很大时(绝对值很大时),需要累加的次数也随之增大

booth乘法器

这篇文章写的挺好的booth乘法器
但这篇并没有说到booth算法的原理

下面这篇文章说到了
booth算法原理

当相乘乘数中有连续个1时,可以减少部分积的数量

基于查找表的乘法器

就是提前吧结果存在存储器中,乘法的结果以查表的方式取得。是典型的用空间换时间的方法。

乘法器verilog相关推荐

  1. Wallace树形乘法器(Verilog),自动生成器(C/C++版)

    学过<数字逻辑>课程的同学,对于Wallace树形乘法器应该不陌生(手拙,灵魂画师--建议读者参考网上的图片). 总的来说,就是一个无符号数乘法器.特点是速度快,使用逻辑电路完成乘法,但是 ...

  2. 8位移位相加乘法器-Verilog

    Verilog 前言 一.移位相加乘法器如何实现? 二.使用步骤 前言 用verilog编写8位乘法器,采用移位相加的办法,最后输出16位结果 写的时候去掉了注释,现在自己也看不懂了,哈哈哈 一.移位 ...

  3. 横向进位阵列乘法器与 流水线横向进位阵列乘法器 Verilog

    文章目录 横向进位阵列乘法器 流水线横向进位阵列乘法器 TB 总结 本文的知识来源于华中科技大学,谭志虎教授的计算机硬件系统设计,向他致敬 https://www.icourse163.org/cou ...

  4. 乘法器专题研究(内含所有类型乘法器)

    乘法器的verilog HDL设计汇总 1.移位相加乘法器的设计: 其大致原理如下: 从被乘数的最低位开始判断,若为1,则乘数左移i(i=0,1...(WIDTH-1))位后,与上一次和相加:若为0, ...

  5. 乘法器的实现(阵列、Booth、Wallace)

    文章目录 1 乘法器 2 部分积的产生 2.1 波兹(Booth)编码 2.2 改进的波兹编码 3 部分积的累加 3.1 阵列乘法器 3.2 进位保留乘法器 3.3 Wallace 树形乘法器 4 V ...

  6. fpga中例化乘法器_FPGA:乘法器(一)

    乘法器(一) 乘法运算在数字信号处理中也是比较常用,如常系数FIR中需要输入数据与FIR系数进行乘法运算.在FPGA实现乘法时可选择采用逻辑实现,也可使用硬资源,如Xilinx FPGA中的DSP48 ...

  7. 基于dsp乘法器设计c语言,DSP in FPGA : 乘法器(一)

    专题三:乘法器(一) 乘法运算在数字信号处理中也是比较常用,如常系数FIR中需要输入数据与FIR系数进行乘法运算.在FPGA实现乘法时可选择采用逻辑实现,也可使用硬资源,如Xilinx FPGA中的D ...

  8. FPGA学习之路—应用程序—原码二位乘法器及Verilog代码分析

    FPGA学习之路--原码二位乘法器及Verilog代码分析 原理 原码乘法可以分为原码一位乘和原码二位乘,两者在实现规则上大同小异.原码一位乘每次判断乘数的最低位,对被乘数和部分积进行相应操作.而原码 ...

  9. Verilog编程之乘法器的实现

    知识储备 首先来回顾一下乘法是如何在计算机中实现的. 假设现在有两个32位带符号定点整数x和y,我们现在要让x和y相乘,然后把乘积存放在z中,大家知道,两个32位数相乘,结果不会超过64位,因此z的长 ...

最新文章

  1. 2019学习Python的10个原因
  2. 苹果新功能惹众怒,4000 多家组织和个人签署公开信,敦促苹果放弃“儿童安全”功能...
  3. word python 域 操作_python实现在windows下操作word的方法
  4. ue4 截图_UE4中创建赛博朋克中国城市
  5. 聊聊JVM(一)相对全面的GC总结
  6. 第一季7:海思制作的rootfs包含哪些内容?
  7. 听着三只松鼠上市的钟声,罗永浩流下了悔恨的泪水
  8. 最不适合做数据分析的6种性格,看看你占了几个?
  9. 深度学习2.0-3.tensorflow的基础操作之索引与切片
  10. bzoj1088: [SCOI2005]扫雷Mine
  11. 使用Duilib做的程序封装成DLL的显示加载与卸载问题
  12. 北斗卫星广播星历计算卫星位置
  13. matlab 矩阵左右乘除
  14. gitbook踩坑指南-无法转pdf、epub等;pdf调字体大小
  15. 使用OneDNS完美实现Chorme自动同步书签和插件
  16. 切披萨n块需要几刀原理c语言,LeetCode 1444. 切披萨的方案数(DP)
  17. 【Windows Server 2019】DNS服务器的配置与管理——DNS正向解析
  18. 互动直播之WebRTC服务器Kurento实战
  19. 如何培养对编程开发的兴趣
  20. label标签中for的使用

热门文章

  1. MATLAB函数图形绘制
  2. HC32F4A0 以太网调试问题(测试发现各种逻辑问题)
  3. C# SqlSugar框架的学习使用(一)--SqlSugar简介及创建
  4. 音频频谱动画的原理与实现(一)
  5. 没关系,是爱情啊 经典台词
  6. 62、视频监控画面花屏、卡顿、网络延迟如何解决?
  7. oracle clob表怎么查询,oracle clob类型字段查询方法
  8. 尝试梳理下ARM处理器的发展历史
  9. 15款免费又好用的安全软件
  10. cad模型轻量化_保持外观的CAD模型轻量化技术