目录
1位半加器的实现可以采用调用门元件、数据流方式、行为描述。
1.调用门元件
module half_add(a,b,sum,cout);
input a,b;
output sum,cout;
and (cout,a,b);
xor (sum,a,b);
endmodule
或者
module full_add(a,b,cin,sum,cout);
input a,b,cin;
output sum,cout;
wire s1,m1,m2,m3;
and (m1,a,b);
(m2,b,cin);
(m3,a,cin);
xor (s1,a,b);
(sum,s1,cin);
or (cout,m1,m2,m3);
endmodule
2.数据流方式
module half_add(a,b,sum,cout);
input a,b;
output sum,cout;
assign sum = a^b;
assign cout = a&b;
endmodule
3.行为描述
module half_add(a,b,sum,cout);
input a,b;
output sum,cout;
reg sum,cout;
always @(a or b)
begin
case({a,b})
2'b00:begin sum = 0;cout = 0; end
2'b01:begin sum = 1;cout = 0; end
2'b10:begin sum = 1;cout = 0; end
2'b11:begin sum = 0;cout = 1; end
endcase
end
endmodule
或者
module half_add(a,b,sum,cout);
input a,b;
output sum,cout;
reg sum,cout;
always @(a or b)
begin
sum = a^b;
cout = a&b;
end
endmodule