计算机组成原理实验二
    乘法器
    实验目的
    1、掌控乘法器以及booth乘法器的原理
    实验步骤
    1、如果未加yteblaster,参考实验一的配置文件的加装。2、相连接jtag和usb通信线,关上电源。
    3、打开quartus->tools->programmer,将booth_multiplier.sof下载到fpga中。注意进行programmer时,应在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、乘积product(8位)p7~p0对应灯a8~a1,辅助位a0。5、当计算结束时,final信号为1,对应灯r7。
booth算法乘法例题讲解    例如表中2.5的booth算法举例,一共须要0~个大步骤排序出来结果。本实验也就是通过九个大步骤同时实现的,通过按单脉冲按钮输入脉冲,观测内积寄存器的变化,掌控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)10110011001100110011001100110011001100积(p)乘数是(-5)100000101100100101100010010110010010110001001011101001011110100100010100100001010011:10→积=积-被乘数2:积右移1位21:11→空操作2:积右移1位31:01→积=积+被乘数2:积右移1位41:10→积=积-被乘数2:积右移1位
    2.5、思考题
    试述booth乘法器的原理,即为什么可以用相邻两位的差来决定加减操作
    booth算法的关键在于把1分类为已经开始、中间、完结三种。
    当然一串0的时候加法减法都不做。因此,总结1的分类情况有4种如表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乘法器就是存有符号数的乘法,因此内积寄存器移位的时候,为了留存符号位,展开算术右移,不像是前面的算法逻辑右移就可以了。