//3位加法器
module add(
a,b,c,
sum
);
input [2:0] a,b;
input c;
output [3:0] sum;
assign sum = a + b + c;
endmodule
//位拼接符的理解
module add(
a,b,c,
count,sum
);
input [2:0] a,b;//这里定义a,b为3位位宽
input c; //c为一位位宽
output count;
output [2:0] sum;
/*error
//这里的a + b最高可以得出4位位宽
//例如:a=3’b111;
// b=3’b111;
// sum = 4’b1110
assign sum = a + b; //这里由于sum是3位的导致无法给高位赋值
*/
//位拼接符的作用
assign {count,sum} = a + b + c;
//将count位和sum位拼接起来,这里的最高位
//由count代替,sum表示低3位
//为上面所说的{count,sum} = {1,110}
endmodule
//仿真测试一个例子
module add(
a,b,c,
co,sum
);
input a,b,c;
output co,sum;
assign {co,sum} = a + b + c;
endmodule
module test_add;
//定义变量
reg a,b,c;
wire co,sum;
//例化原模块
add add1(.a(a),.b(b),.c©,.co(co),.sum(sum));
initial
begin:ONLY_ONCE
reg [2:0] num;
for(num = 0;num <= 3’b111;num = num +1) begin
//拼接赋值
{a,b,c} = num;
//显示
#5 $display("%b%b%b = “,a,b,c,”—%b%b",co,sum);
end
end
endmodule