计算100位数据的全加器
module top_module(
input [99:0] a, b,
input cin,
output [99:0] cout,
output [99:0] sum );
integer i = 0;
always @(*)
begin
sum[0] = a[0]^b[0]^cin;
cout[0] = a[0]&b[0] | a[0]&cin | b[0]&cin;
for(i = 1; i< 100; i = i+1)
begin
cout[i] = (a[i] && b[i]) || (cout[i-1] && (a[i] | b[i]));
sum[i] = a[i]^b[i]^cout[i-1];
end
end
/* 好的写法
always @(*) begin
for (int i=0;i<=99;i++)
{cout[i],sum[i]} = a[i] + b[i] + ((i==0)?cin:cout[i-1]);
end
*/
endmodule