多位加法器的再分解(接上一节)
在实际运用中,一般32bit以下的加法器是不会被隔离进行分割的。即使是特别大的位宽,也会被分割为高于1bit的加法器单元(如果任意bit的都分割到1bit的话,不仅会浪费资源,而且会得不到想要的系统时钟周期),然后引入流水线结构,其中多为分割的加法器图如下所示:
以64bit分割为32bit为例,其余的都类似。代码如下:
module adder_64bits_sperated_32bits(
input[63:0]a,b,
input CLK,
input RST,
output reg[63:0]sum,
output reg c
);
reg[31:0]a0,b0;
reg c0;
reg[31:0]s0;
wire[32:0]s1;
assign s1={1'b0,a0}+{1'b0,b0}+{32'h0000_0000,c0};
always@(posedge CLK&nbs***bsp;negedge RST)
begin
if(!RST)
begin
a0<=32'h0000_0000;
b0<=32'h0000_0000;
end
else begin
a0<=a[63:32];
b0<=b[63:32];
end
end
always@(posedge CLK&nbs***bsp;negedge RST)
begin
if(!RST)
begin
c0<=1'b0;
s0<=32'h0000_0000;
end
else begin
{c0,s0}<=a[31:0]+b[31:0];
end
end
always@(posedge CLK&nbs***bsp;negedge RST)
begin
if(!RST)
begin
c<=1'b0;
sum<=32'h0000_0000;
end
else begin
c<=s1[32];
sum<={s1[31:0],s0};
end
end
endmodule 
查看2道真题和解析

滴滴公司福利 1784人发布