乘法器的设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
www.ultrawise.com.cn Copyright © 2009
// level 2 output buf01 <= buf0 + buf1; buf23 <= buf2 + buf3; buf45 <= buf4 + buf5; buf67 <= buf6 + buf7; // level 3 output buf02 <= buf01 + buf23; buf46 <= buf45 + buf67; // level 4 output dout <= buf02 + buf46;
内容组成
实验介绍 设计原理 注意事项
Leabharlann Baidu
www.ultrawise.com.cn Copyright © 2009
注意事项
本设计需要注意以下事项: 两种方法的乘法器设计中,使用的中间(变量) 寄存器(如r_dout,buf等)的位宽定义要满足 要求,否则结果有误。 参考答案给出的串行乘法器使用的是状态机, 用户需注意对输入赋值的时间,其结果可在仿 真上看出。
加法树法
加法树法采用多级流水线结构,是一种并
行的方式,将相邻的两个部分的结果再加 到最终的输出乘积上,即排列成一个二叉 树形式的结构
流水线乘法器处理速度比串行加法器快很多
以8-bit输入为例,只需要4个时钟周期即可输出结 果
其缺点是消耗的资源较多
www.ultrawise.com.cn Copyright © 2009
其他方法
查表法 采用的是建立一个表,里面存放了所有的乘法 结果,乘数和被乘数用来作为地址去查找里面 的乘积。
可以大大提高乘法的速率,但是当乘法位数很大时 会要求产生很大的表格 适合位数较小的乘法,特别适合有一个乘数为固定 的乘法
混合法 根据多种方式设计出来的乘法器。
www.ultrawise.com.cn Copyright © 2009
移位相加法
移位相加的原理 从被乘数的最低位开始判断,若为1,则乘数左 移i(i=0,1...(WIDTH-1))位后,与上一次和相 加;若为0,则乘数左移i位后,以0相加。直至 被乘数的最高位。 乘法最终就是由加法和移位运算构成的,由此 可以用高速度的加法和移位实现乘法操作。
www.ultrawise.com.cn Copyright © 2009
内容组成
实验介绍 设计原理 注意事项
www.ultrawise.com.cn Copyright © 2009
设计原理
电路设计中常采用移位相加的方式实
现乘法的功能
移位相加法和加法树(二叉树)法都属于此类 当然如查表法等另辟蹊径,在某些条件下可能 更有效
www.ultrawise.com.cn Copyright © 2009
加法树法
加法树法的设计原理本质上依然是移位相
加,不同的是采用了流水线的方法
将组合逻辑分割成一个一个小的组合逻辑,中 间加上触发器用来锁存数据,这样可以大大提 高效率
www.ultrawise.com.cn Copyright © 2009
加法树法
加法树法关键代码实现 对被乘数各个位并行判断
版本管理
修改记录
版本号. V01 作者 陈和炯 描述 创建 修改日期 2012-12-07
审核记录
版本号. 职务 签名 修改日期
www.ultrawise.com.cn Copyright © 2009
内容组成
实验介绍 设计原理 注意事项
www.ultrawise.com.cn Copyright © 2009
移位相加法
移位相加关键代码实现
i <= 0; r_dout <= 0; … … if(i<WIDTH) begin r_dout <= r_dout + ((din_a[i]==1) ? (din_b<<i) : 0); i <= i + 1; end
www.ultrawise.com.cn Copyright © 2009
begin : piple_line // level 1 output buf0 <= din_a[0] ? (din_b<<0) : 0; buf1 <= din_a[1] ? (din_b<<1) : 0; buf2 <= din_a[2] ? (din_b<<2) : 0; buf3 <= din_a[3] ? (din_b<<3) : 0; buf4 <= din_a[4] ? (din_b<<4) : 0; buf5 <= din_a[5] ? (din_b<<5) : 0; buf6 <= din_a[6] ? (din_b<<6) : 0; buf7 <= din_a[7] ? (din_b<<7) : 0; end
移位相加法
这种算法对被乘数的判断是从低到高按顺
序执行的,即串行的方式
优点:占用的资源较少,在低速信号处理中有 广泛的应用 缺点:串行乘法器的速度比较慢,一个结果输 出需要花费多个时钟周期
在高位宽乘法运算中尤为明显
www.ultrawise.com.cn Copyright © 2009
实验介绍
乘法器设计 直接使用“*”作为乘法,这种方法谈不上设计 乘法器,其最终的硬件实现要根据综合工具综 合的结果。
好的综合工具可以综合出想要的结果,但是通常得 到的都是劣等的乘法运算
实现乘法器的方法很多,各有各的优缺点,常 见的有移位相加法,加法树法,查表法,混合 法等等。
www.ultrawise.com.cn Copyright © 2009
www.ultrawise.com.cn Copyright © 2009
// level 2 output buf01 <= buf0 + buf1; buf23 <= buf2 + buf3; buf45 <= buf4 + buf5; buf67 <= buf6 + buf7; // level 3 output buf02 <= buf01 + buf23; buf46 <= buf45 + buf67; // level 4 output dout <= buf02 + buf46;
内容组成
实验介绍 设计原理 注意事项
Leabharlann Baidu
www.ultrawise.com.cn Copyright © 2009
注意事项
本设计需要注意以下事项: 两种方法的乘法器设计中,使用的中间(变量) 寄存器(如r_dout,buf等)的位宽定义要满足 要求,否则结果有误。 参考答案给出的串行乘法器使用的是状态机, 用户需注意对输入赋值的时间,其结果可在仿 真上看出。
加法树法
加法树法采用多级流水线结构,是一种并
行的方式,将相邻的两个部分的结果再加 到最终的输出乘积上,即排列成一个二叉 树形式的结构
流水线乘法器处理速度比串行加法器快很多
以8-bit输入为例,只需要4个时钟周期即可输出结 果
其缺点是消耗的资源较多
www.ultrawise.com.cn Copyright © 2009
其他方法
查表法 采用的是建立一个表,里面存放了所有的乘法 结果,乘数和被乘数用来作为地址去查找里面 的乘积。
可以大大提高乘法的速率,但是当乘法位数很大时 会要求产生很大的表格 适合位数较小的乘法,特别适合有一个乘数为固定 的乘法
混合法 根据多种方式设计出来的乘法器。
www.ultrawise.com.cn Copyright © 2009
移位相加法
移位相加的原理 从被乘数的最低位开始判断,若为1,则乘数左 移i(i=0,1...(WIDTH-1))位后,与上一次和相 加;若为0,则乘数左移i位后,以0相加。直至 被乘数的最高位。 乘法最终就是由加法和移位运算构成的,由此 可以用高速度的加法和移位实现乘法操作。
www.ultrawise.com.cn Copyright © 2009
内容组成
实验介绍 设计原理 注意事项
www.ultrawise.com.cn Copyright © 2009
设计原理
电路设计中常采用移位相加的方式实
现乘法的功能
移位相加法和加法树(二叉树)法都属于此类 当然如查表法等另辟蹊径,在某些条件下可能 更有效
www.ultrawise.com.cn Copyright © 2009
加法树法
加法树法的设计原理本质上依然是移位相
加,不同的是采用了流水线的方法
将组合逻辑分割成一个一个小的组合逻辑,中 间加上触发器用来锁存数据,这样可以大大提 高效率
www.ultrawise.com.cn Copyright © 2009
加法树法
加法树法关键代码实现 对被乘数各个位并行判断
版本管理
修改记录
版本号. V01 作者 陈和炯 描述 创建 修改日期 2012-12-07
审核记录
版本号. 职务 签名 修改日期
www.ultrawise.com.cn Copyright © 2009
内容组成
实验介绍 设计原理 注意事项
www.ultrawise.com.cn Copyright © 2009
移位相加法
移位相加关键代码实现
i <= 0; r_dout <= 0; … … if(i<WIDTH) begin r_dout <= r_dout + ((din_a[i]==1) ? (din_b<<i) : 0); i <= i + 1; end
www.ultrawise.com.cn Copyright © 2009
begin : piple_line // level 1 output buf0 <= din_a[0] ? (din_b<<0) : 0; buf1 <= din_a[1] ? (din_b<<1) : 0; buf2 <= din_a[2] ? (din_b<<2) : 0; buf3 <= din_a[3] ? (din_b<<3) : 0; buf4 <= din_a[4] ? (din_b<<4) : 0; buf5 <= din_a[5] ? (din_b<<5) : 0; buf6 <= din_a[6] ? (din_b<<6) : 0; buf7 <= din_a[7] ? (din_b<<7) : 0; end
移位相加法
这种算法对被乘数的判断是从低到高按顺
序执行的,即串行的方式
优点:占用的资源较少,在低速信号处理中有 广泛的应用 缺点:串行乘法器的速度比较慢,一个结果输 出需要花费多个时钟周期
在高位宽乘法运算中尤为明显
www.ultrawise.com.cn Copyright © 2009
实验介绍
乘法器设计 直接使用“*”作为乘法,这种方法谈不上设计 乘法器,其最终的硬件实现要根据综合工具综 合的结果。
好的综合工具可以综合出想要的结果,但是通常得 到的都是劣等的乘法运算
实现乘法器的方法很多,各有各的优缺点,常 见的有移位相加法,加法树法,查表法,混合 法等等。
www.ultrawise.com.cn Copyright © 2009
www.ultrawise.com.cn Copyright © 2009