Booth算法笔记_verilog(布斯算法)Booth算法笔记_verilog(布斯算法)
参考程序下载:Booth_mul4_v
Booth算法(布斯算法),:
0 无操作
+1 加x
-1 减x 流程图(额,补充百科里缺少的算法流程图) 给出懂哥的verilog描述的booth算法硬件实现.
确实写得丑陋啊….
并且遇到过的问题就是变量不能在多个always里赋值,并且加深了多次赋值可能导致的冲突理解
module mul_4(
clk,
res_n,
mul1,
mul2,
result);
parameter width=4'd4;
input clk,res_n;
input [width-1:0]mul2,mul1;//乘数
output [2*width-1:0]result;//运算结果最多是两倍乘数位数
wire [2*width-1:0]result;
reg [width-1:0] R0,R1,R2;//result={R0,R1},multiplier=R2
reg P;
reg ns; assign result={R0,R1};
always@(posedge clk or negedge res_n)
begin
if(!res_n)
begin
R0<=0;
R1<=mul1;
R2<=mul2;
P<=1'b0;
ns<=0;
end
else
begin
if(!ns)
begin
case({R1[0],P})
2'b01:
begin
R0<=(R0+R2);ns<=1;
end
2'b10:
begin
R0<=(R0-R2);ns<=1;
end
default:
{R0,R1,P}<={R0[width-1],R0,R1};
endcase
Booth算法笔记 verilog(布斯算法) 来自淘豆网m.daumloan.com转载请标明出处.