代码如下:
module adder(a,b,cin,sum,cout);
input a,b;
input cin;
output cout;
output sum;
wire cout,sum;
assign sum=a^b^cin;
assign cout=(a&cin)|(b&cin)|(a&b);
endmodule
module adder_8(fa,fb,fcin,fsum,fcout);
input [7:0]fa,fb;
output [7:0]fsum;
input fcin;
output fcout;
wire [0:6]ftemp;
adder fa1(.a(fa[0]),.b(fb[0]),.cin(fcin),.sum(fsum[0]),.cout(ftemp[0])),
fa2(.a(fa[1]),.b(fb[1]),.cin(ftemp[0]),.sum(fsum[1]),.cout(ftemp[1])),
fa3(.a(fa[2]),.b(fb[2]),.cin(ftemp[1]),.sum(fsum[2]),.cout(ftemp[2])),
fa4(.a(fa[3]),.b(fb[3]),.cin(ftemp[2]),.sum(fsum[3]),.cout(ftemp[3])),
fa5(.a(fa[4]),.b(fb[4]),.cin(ftemp[3]),.sum(fsum[4]),.cout(ftemp[4])),
fa6(.a(fa[5]),.b(fb[5]),.cin(ftemp[4]),.sum(fsum[5]),.cout(ftemp[5])),
fa7(.a(fa[6]),.b(fb[6]),.cin(ftemp[5]),.sum(fsum[6]),.cout(ftemp[6])),
fa8(.a(fa[7]),.b(fb[7]),.cin(ftemp[6]),.sum(fsum[7]),.cout(fcout));
endmodule
module adder_test;
reg [7:0] da,db;
wire [7:0] dsum;
wire dcout;
reg dcin;
adder_8 f1(da,db,dcin,dsum,dcout);
initial
begin
da=0;db=0;dcin=0;
#10 $display("a=%b,b=%b,cin=%b,sum=%d,cout=%d",da,db,dcin,dsum,dcout);
db=8'b1111;
for(da=8'b0;da<=8'b11111111;da=da+1)
begin #10 dcin=~dcin;
$display("a=%b,b=%b,cin=%b,sum=%d,cout=%d",da,db,dcin,dsum,dcout);
end
end
endmodule
责任编辑:5life
本文共有0条评论,现在显示最新的5条。