module FA_dataflow(A,B,Cin,S,Cout);
input A,B,Cin;
output S,Cout;
assign S= A^B^Cin;
assign Cout = (A&B)| (B&Cin) | (Cin&A);
endmodule
// Test_bench.v
// 全加器 (測試平台程式)
// 時間單位 100ns, 時間精確度10 ps
`timescale 100ns/10ps
module Test_bench;
reg A = 1'b0; // A 暫存器資料初值為‘0’
reg B = 1'b0; // B 暫存器資料初值為‘0’
reg Cin= 1'b0; // Cin 暫存器資料初值為‘0’
wire S , Cout ;
// 建立 Full Adder 全加器 的模組例證
FA_dataflow UUT (.A(A),.B(B),.Cin(Cin),.S(S),.Cout(Cout));
// initial程序結構區塊, 產生A、B輸入信號波形
initial
begin
#100; // 100ns
A = 1'b0; B = 1'b0;Cin= 1'b1; // “001”
#100; // 200ns
A = 1'b0; B = 1'b1;Cin= 1'b0; // “010”
#100; // 300ns
A = 1'b0; B = 1'b1;Cin= 1'b1; // “011”
#100; // 400ns
A = 1'b1; B = 1'b0;Cin= 1'b0; // “100”
#100; // 500ns
A = 1'b1; B = 1'b0;Cin= 1'b1; // “101”
#100; // 200ns
A = 1'b1; B = 1'b1;Cin= 1'b0; // “110”
#100; // 300ns
A = 1'b1; B = 1'b1;Cin= 1'b1; // “111”
end
initial
begin
#800; // 模擬終止時間 800 ns
$stop;
end
endmodule
沒有留言:
張貼留言