回答:7个。
解释:全加器是full_adder,实现两个二进制相加求和的过程。其中,Ai是被加数,Bi是加数,相邻低位来的进位数是Ci-1,输出本位和是Si,向相邻高位进位数是Ci。
图1:全加器的真值表
下面就8bit数值进行逻辑结果上的梳理:
图2:不同颜色代表不同权重(核心重点)
下面就图2中的逻辑进行代码书写:
Module full_adder(
Input a,
Input b,
Input cin,
Ouput sum,
Output cout
);
Assign {cout,sum} = a + b + cin ;
endmodule
//
module count(
input [7:0] data_in;
output [3:0] data_out;
);
Wire sum_1;
Wire sum_2;
Wire sum_3;
Wire sum_4;
Wire sum_5;
Wire sum_6;
Wire sum_7;
Wire cout_1;
Wire cout_2;
Wire cout_3;
Wire cout_4;
Wire cout_5;
Wire cout_6;
Wire cout_7;
full_adder full_adder_inst1 (
.a(data_in[0]),
.b(data_in[1]),
.cin(data_in[2]),
.sum(sum_1),
.cout(cout_1)
);
full_adder full_adder_inst2 (
.a(data_in[3]),
.b(data_in[4]),
.cin(data_in[5]),
.sum(sum_2),
.cout(cout_2)
);
full_adder full_adder_inst3 (
.a(sum_1),
.b(sum_2),
.cin(data_in[6]),
.sum(sum_3),
.cout(cout_3)
);
full_adder full_adder_inst4 (
.a(sum_3),
.b(data_in[7]),
.cin(1’b0),
.sum(sum_4),
.cout(cout_4)
);
full_adder full_adder_inst5 (
.a(cout_1),
.b(cout_3),
.cin(cout_2),
.sum(sum_5),
.cout(cout_5)
);
full_adder full_adder_inst6 (
.a(sum_5),
.b(cout_4),
.cin(1’b0),
.sum(sum_6),
.cout(cout_6)
);
full_adder full_adder_inst7 (
.a(cout_5),
.b(cout_6),
.cin(1’b0),
.sum(sum_7),
.cout(cout_7)
);
Endmodule
感谢大家的支持。