计算机组成原理实验二
- 格式:docx
- 大小:37.68 KB
- 文档页数:2
计算机组成原理实验二
乘法器
实验目的
1、掌握乘法器以及booth乘法器的原理
实验步骤
1、如果未安装byteblaster,参照实验一的配置文件的安装。2、连接jtag和usb通信线,打开电源。
3.打开quartus->tools->programmer并设置booth_uu乘法器。软件下载到FPGA上。请注意,编程时,请选中program/configure下的复选框,然后下载。
4、在实验台上通过模式开关选择fpga独立调试模式010。
5.短路DZ3,断开短路DZ4,使FPGA CPU所需时钟采用正单脉冲时钟。
2.4、实验现象
本实验实现了4位Booth乘法(有符号数乘法)。相应的输入和输出规则如下:
1、输入的4位被乘数(multiplicand)md3~md0对应开关sd11~sd8。2、输入的4位乘数(multiplier)mr3~mr0对应开关sd3~sd0。3、按单脉冲按钮,输入脉冲,也即节拍。
4.产品(8位)p7~p0对应于灯A8~A1和辅助位A0。5.计算结束时,最终信号为1,对应于灯R7。
如表2.5的booth算法举例,一共需要0~8九个小步骤计算出结果。本实验也是通过九个小步骤实现的,通过按单脉冲按钮输入脉冲,观察积寄存器的变化,掌握booth乘法器的原理。
1.切换开关sd11~SD8以输入4位乘法器(MD3~md0)0010,切换开关SD3~sd0以输入4位乘法器(mr3~mr0)1101。
2、按动单脉冲按钮,输入脉冲,对照表2.5观察积寄存器即灯a8~a0的变化情况,当灯r7亮时,说明计算结束,灯a8~a1为最后相乘结果。
根据上述操作细节,按照表2.5中的步骤操作。 进行新的乘法运算时,或者说当上一次运算结束即灯r7亮时,输入新的被乘数、乘数(拨动开关),然后按动单脉冲开关即可观察正确的寄存器结果。00:0的中间,无任何操作;
重复01初始值步骤。乘法器(MD)是(-4)10110011001100乘积(P)乘法器是(-5)1000001100110010110001011001011001011001011011000101110111010001010001010000010011:10→ 乘积=乘积-乘法器2:乘积向右移动1位21:11→ 空操作2:产品向右移动1位31:01→ 乘积=乘积+乘法器2:乘积向右移动1位41:10→ 乘积=乘积-乘法器2:乘积向右移动1位
2.5、思考题
试着解释一下布斯乘法器的原理,也就是说,为什么可以用两个相邻位之间的差来确定加法和减法运算
booth算法的关键在于把1分类为开始、中间、结束三种。
当然,当一系列的零出现时,加法和减法是不可能完成的。因此,总结1分为四类,如表2.4所示:
表2.41的分类
当前位1100当前位右侧的位0110是分类1开始1的中间1和结束0的中间。乘法器的第一步是根据乘法器的最低位决定是否将乘法器添加到中间结果乘积,而Booth算法根据乘法器的相邻2位决定运算,第一步是根据相邻2位的4种情况进行加法或减法,第二步仍然是将产品注册移到右侧。算法描述如下:
1)根据当前位和其右边的位,做如下操作:00:0的中间,无任何操作;
在01:1的末尾,将乘法器添加到乘积的左半部分;
10:1的开始,积的左半部分减去被乘数;11:1的中间,无任何操作。
2) 像前面提到的算法一样,将乘积寄存器向右移动1位。
需要注意的是,因为booth乘法器是有符号数的乘法,因此积寄存器移位的时候,为了保留符号位,进行算术右移,不像前面的算法逻辑右移就可以了。