文档详情

实验五 Booth算法的乘法器.doc

发布:2018-09-06约1.3千字共5页下载文档
文本预览下载声明
实验五 Booth算法的乘法器 姓 名 学 号 专 业 微电子学与固体电子学 指导老师 实验目的 本实验在于使用Booth算法思想,设计一个16*16的乘法器。 实验原理 比较好的带符号数乘法的方法是布斯(Booth)算法。它采用相加和相减的操作计算数据的乘积。Booth算法对乘数从低位开始判断,根据两个数据位的情况决定进行加法、减法还是仅仅移位操作。判断的两个数据位为当前位及其右边的位(初始时需要增加一个辅助位0),移位操作是向右移动。 图一 Booth算法流程图 三、实验verilog代码 (1)booth算法模块 module booth_mux(reset,a,b,mux); input [15:0]a,b; input reset; output [31:0] mux; reg [31:0] mux; reg [32:0] A; integer i; always@(a or b)begin if(reset==1)begin A={16b0,b,1b0}; for(i=0;i=15;i=i+1)begin //循环部分,循环16次。 if(A[1:0]==2b10) A[32:17]=A[32:17]-a; else if(A[1:0]==2b01) A[32:17]=A[32:17]+a; A={A[32],A[32:1]}; end mux=A[32:1]; end else begin A=0; mux=0; end end endmodule 测试模块部分 module booth_mux_tb; reg reset; reg [15:0]a,b; wire[31:0] mux; booth_mux u1(.reset(reset), .a(a), .b(b), .mux(mux)); initial begin a=0; b=0; reset=0; end always begin #20 reset=1; #300 a=a+1; #400 b=b+1; end endmodule 实验结果
显示全部
相似文档