//===============================
// ex6-3-3 4 bits Full Adder circuit
module EX10_12( A,B,Cin ,Cout ,Sum);
input [3:0] A,B; // 4位元輸入
input Cin; // 1位元輸入
output Cout ; // Output 1位元輸出
output [3:0]Sum ; // Output 4位元輸出
wire w0,w1,w2 ;
FA u1 ( A[0],B[0],Cin,w0,Sum[0] );
FA u2 ( A[1],B[1],w0,w1,Sum[1] );
FA u3 ( A[2],B[2],w1,w2,Sum[2] );
FA u4 ( A[3],B[3],w2,Cout,Sum[3]);
endmodule
//===============================
// ex6-3 Half Adder circuit
module FA( A,B,Cin ,Cout ,Sum);
input A,B,Cin; // 1位元輸入
output reg Cout , Sum ; // Output 1位元輸出
always@ ( A,B) begin
{Cout,Sum}= A+B+Cin;
end
endmodule
//===============================
// 時間單位 100ns, 時間精確度100 ps
`timescale 100ns/100ps
module Test_bench;
// Inputs
reg [3:0]A,B;
reg Cin;
// Outputs
wire Cout ;
wire [3:0]Sum ;
// Instantiate the Unit Under Test (UUT)
// ex6-3-3 4 bits Full Adder circuit
EX10_12 UUT (
.A(A),
.B(B),
.Cin(Cin),
.Cout(Cout),
.Sum(Sum)
);
initial begin
$monitor( A,B,Cin,Cout ,Sum);
//Apply inputs
A=4'b0; B=4'b0;Cin=1'b1;
#100;
A=4'b1111; B=4'b1111;Cin=1'b1;
#100;
A=4'b1010; B=4'b1010;Cin=1'b1;
#100;
A=4'b0101; B=4'b0101;Cin=1'b1;
#100;
A=4'b0101; B=4'b1010;Cin=1'b0;
#100;
end
initial begin
#600 $stop;
end
endmodule
沒有留言:
張貼留言