//測試程式有Testbench.v , FA_op.v 兩個程式
//op.v 為 運算子之使用 (資料流層敘述) 範例程式
// 4bit 加法器 輸入 :A,B,Ci 輸出: S ,Co
// 運算子之使用 (資料流層敘述)
module FA_op (A, B, Ci, Co, S, X, Y, Z);
input [3:0] A, B; // A, B 四位元輸入
input Ci; // Ci 一位元輸入
output Co; // Co 一位元輸出
output [3:0] S, X, Y, Z; // S, X, Y, Z 四位元輸出
assign {Co, S} = A + B + Ci; // 全加法
endmodule
//***************************************************
//testbench 程式
`timescale 1ns/1ps // reference_time_unit/time_precision
module Testbench;
//將輸入
變成 reg
reg [3:0] A = 4'b0000; //A=0000b
reg [3:0] B = 4'b0000; //B=0000b
reg Ci = 1'b0; //Ci=0b
//將輸出變成Wire
wire Co;
wire [3:0] S;
FA_op UUT (
.A(A),
.B(B),
.Ci(Ci),
.Co(Co),
.S(S)
);
initial
begin
#1000 // Final time: 1000 ns
$stop; //停止Modelsim 程式運轉
end
initial begin
// ------------- Current Time: 100ns
#100; //設定輸入A=12 , B=10 Ci=1
Ci = 1'b1;
A = 4'b1100;
B = 4'b1010;
// -------------------------------------
// ------------- Current Time: 200ns
#100;
//設定輸入A=9 , B=0 Ci=0
Ci = 1'b0;A = 4'b1001;
B = 4'b0000;
// -------------------------------------
// ------------- Current Time: 300ns
#100;
//設定輸入A=1 , B=9 Ci=1
Ci = 1'b1;
A = 4'b0001;
B = 4'b1001;
// -------------------------------------
// ------------- Current Time: 400ns
#100;
//設定輸入A=14 , B=4 Ci=0
Ci = 1'b0;A = 4'b1110;
B = 4'b0100;
// -------------------------------------
// ------------- Current Time: 500ns
#100;
//設定輸入A=7 , B=5 Ci=1
Ci = 1'b1;
A = 4'b0111;
B = 4'b0101;
// -------------------------------------
// ------------- Current Time: 600ns
#100; /
/設定輸入A=8 , B=9 Ci=0
Ci = 1'b0;
A = 4'b1000;
B = 4'b1001;
// -------------------------------------
// ------------- Current Time: 700ns
#100;
/
/設定輸入A=10 , B=0 Ci=1Ci = 1'b1;
A = 4'b1010;
B = 4'b0000;
// -------------------------------------
// ------------- Current Time: 800ns
#100;
/
/設定輸入A=3 , B=3 Ci=0Ci = 1'b0;
A = 4'b0011;
B = 4'b0011;
// -------------------------------------
// ------------- Current Time: 900ns
#100;
/
/設定輸入A=15 , B=15 Ci=1Ci = 1'b1;
A = 4'b1111;
B = 4'b1111;
// -------------------------------------
// ------------- Current Time: 1000ns
#100;
/
/設定輸入A=13 , B=6 Ci=0Ci=1'b0;
A = 4'b1101;
B = 4'b0110;
end
endmodule
//1) 輸入A=0 , B=0 Ci=0 ,輸出 S=0 Co=0
//2)
輸入A=12 , B=10 Ci=1
,
12+10+1=23
//
輸出 S=7 Co=1 , 16+7=23
//3)
輸入A=9 , B=0 Ci=0 , 9+0+0 = 9
//
輸出 S=9 Co=0 , 0+9=9
以下依此類推
沒有留言:
張貼留言