booth乘法器实验
来源:互联网 发布:优化营销 编辑:程序博客网 时间:2024/05/14 21:23
在计算两个补码相乘时,可以通过Booth算法来实现定点补码一位乘的功能。布斯(Booth)算法采用相加和相减的操作计算补码数据的乘积,Booth算法对乘数从低位开始判断,根据后两个数据位的情况决定进行加法、减法还是仅仅进行移位操作。讨论当相乘的两个数中有一个或二个为负数的情况,在讨论补码乘法运算时,对被乘数或部分积的处理上与原码乘法有某些类似,差别仅表现在被乘数和部分积的符号位要和数值一起参加运算。
Booth算法中1的分类示意:
Booth算法中1的分类
Booth算法根据乘数的相邻两位来决定操作,第一步根据相邻两位的4种情况来进行加或减操作,第二步仍然是将积寄存器右移。算法描述如下
(1) 根据当前位和其右边的位,做如下操作:
00:0的中间,无任何操作
01:1的结束,将被乘数加到积的左半部分
10:1的开始,积的左半部分减去被乘数
11:1的中间,无任何操作
(2)将积寄存器右移一位
一.实验现象及结果分析
实现4位数的的booth算法(有符号数乘法)
输入输出规则对应如下:
(1) 输入的4位被乘数(multiplicand)md3-md0对应开关SD11-SD8
(2) 输入的4位乘数(multiplier)mr3-mr0对应开关SD7-SD0
(3) 按单脉冲按钮,输入脉冲
(4) 乘积product p8-p0对应灯A8-A0
(5) 当计算结束时,final信号为1,对应灯R7
根据以上操作细节,操作步骤及运算结果如下:
重复
步骤
被乘数md
积p
被乘数(-7)10
乘数(6)10
0
初始值
1001
0000 0110 0
1
1:00不操作
1001
0000 0110 0
2:右移一位
1001
0000 0011 0
2
1:10->积=积-被乘数
1001
0111 0011 0
2:右移一位
1001
0011 1001 1
3
1:11不操作
1001
0011 1001 1
2:右移一位
1001
0001 1100 1
4
1:01->积=积+被乘数
1001
1010 1100 1
2:右移一位
1001
1101 0110 0
源代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity multiply is
port
(
clr,clk :in std_logic;
a,b :in std_logic_vector(3 downto 0);
p :buffer std_logic_vector(8 downto0);
final :out std_logic
);
end entity multiply;
architecture rtl of multiply is
signal m:std_logic_vector(8 downto0):=a&"00000";
signal boothstep : std_logic_vector(2downto 0):="000";
signal flag:std_logic_vector(1 downto 0);
signal temp:std_logic_vector(8 downto 0);
begin
process(flag)is
begin
if(flag="01")then
temp<=p+m;
elsif(flag="10")then
temp<=p-m;
else
temp<=p;
endif;
end process;
flag<=p(1 downto 0);
process(clk,clr)is
begin
if(clr='0')then
p<="0000"&b&'0';
elsif(clk'eventand clk='1')then
p<=temp(8)&temp(8downto 1);
endif;
end process;
process(clk)is
begin
ifclr='0' then
final<='0';
boothstep<="000";
elsif(clk'eventand clk='1')then
if(boothstep="011")then
final<='1';
boothstep<="000";
else
boothstep<=boothstep+'1';
final<='0';
endif;
endif;
end process;
end rtl;
- booth乘法器实验
- booth乘法器原理
- Booth乘法器设计
- 对BOOTH乘法器的理解
- Booth乘法器和wallace树乘法器的理解
- 乘法器
- 乘法器
- 乘法器
- 乘法器
- Booth Algorithm
- 乘法器实现
- 乘法器型号
- 乘法器Verilog
- xilinx 乘法器
- Booth除法器设计
- booth算法计算补码乘法
- booth算法计算补码乘法
- 与非门实现硬件乘法器
- 浏览器 重定向 301 和 302 区别
- Java中的面向对象
- Object-C,四则运算计算器
- Android检查手机是否Root以及应用是否获取Root权限
- VC编程中关于新建的框架窗口的销毁的一个心得
- booth乘法器实验
- xmp标签显示原本html元素
- 从DLL中导出类
- ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
- 好把旧书多读到 义言一出见英明
- hdu4597Play Game 记忆化搜索
- 机器学习中熟悉MATLAB——区分^/*与.* /^
- HTML5之storage
- 略谈如何从工作线程中弹出对话框