//=============================================
//gate level basic gate and nad or nor xor xnor
//=============================================
module basic_gate1(
O_and,I1,I0,
O_nand,I2,
O_or,A1,A0,
O_nor,A2,
O_xor,B1,B0,
O_xnor,B3,B2);
input I2,I1,I0,A2,A1,A0,B3,B2,B1,B0;
output O_and,O_nand,O_or,O_nor,O_xor,O_xnor;
and (O_and , I1, I0);
nand N1 (O_nand, I2 , I1, I0);
or (O_or, A1,A0);
nor Nor5 (O_nor, A2,A1,A0);
xor X9 (O_xor, B1, B0);
xnor (O_xnor, B3,B2,B1,B0);
endmodule
//=================================
// Ch04 T.V
// nasic gate(測試平台程式)
// 時間單位 1ns, 時間精確度1 ps
`timescale 100ns/10ps
module T;
//input
reg I0=1'b0;
reg I1=1'b0;
reg I2=1'b0;
reg A2=1'b0;
reg A1=1'b0;
reg A0=1'b0;
reg B3=1'b0;
reg B2=1'b0;
reg B1=1'b0;
reg B0=1'b0; //暫存器資料初值為‘0’
//output
wire O_and,O_nand,O_or,O_nor,O_xor,O_xnor;
// 建立and_gate 的模組例證
basic_gate1 UUT(
.O_and(O_and) ,.I1(I1) ,.I0(I0),
.O_nand(O_nand) ,.I2(I2),
.O_or(O_or) ,.A1(A1) ,.A0(A0),
.O_nor(O_nor) ,.A2(A2),
.O_xor(O_xor) ,.B1(B1) ,.B0(B0),
.O_xnor(O_xnor) ,.B3(B3) ,.B2(B2)
);
// initial程序結構區塊, 產生A、B輸入信號波形
initial
begin
#100; // 100ns
I2=1'b0 ; I1= 1'b0; I0=1'b1; // “001”
A2=1'b0 ; A1= 1'b0; A0=1'b1; // “001”
B3=1'b0; B2= 1'b0; B1= 1'b0; B0=1'b1; // 0001”
#100; // 200ns
I2=1'b0 ; I1= 1'b1; I0=1'b0; // “010”
A2=1'b0 ; A1= 1'b1; A0=1'b0; // “010”
B3=1'b0; B2= 1'b0; B1= 1'b1; B0=1'b01; // 0010”
#100; // 300ns
I2=1'b0 ; I1= 1'b1; I0=1'b1; // “011”
A2=1'b0 ; A1= 1'b1; A0=1'b1; // “011”
B3=1'b0; B2= 1'b0; B1= 1'b1; B0=1'b01; // 0011”
#100; // 400ns
I2=1'b1 ; I1= 1'b0; I0=1'b0; // “100”
A2=1'b1 ; A1= 1'b0; A0=1'b0; // “100”
B3=1'b0; B2= 1'b1; B1= 1'b0; B0=1'b0; // 0100”
#100; // 500ns
I2=1'b1 ; I1= 1'b0; I0=1'b1; // “101”
A2=1'b1 ; A1= 1'b0; A0=1'b1; // “101”
B3=1'b0; B2= 1'b1; B1= 1'b0; B0=1'b1; // 0101”
#100; // 600ns
I2=1'b1 ; I1= 1'b1; I0=1'b0; // “110”
A2=1'b1 ; A1= 1'b1; A0=1'b0; // “110”
B3=1'b0; B2= 1'b1; B1= 1'b1; B0=1'b0; // 0110”
#100; // 700ns
I2=1'b1 ; I1= 1'b1; I0=1'b1; // “111”
A2=1'b1 ; A1= 1'b1; A0=1'b1; // “111”
B3=1'b0; B2= 1'b1; B1= 1'b1; B0=1'b1; // 0111”
//=====================================================
#100; // 800ns
I2=1'b0 ; I1= 1'b0; I0=1'b0; // “000”
A2=1'b0 ; A1= 1'b0; A0=1'b0; // “000”
B3=1'b1; B2= 1'b0; B1= 1'b0; B0=1'b0; // 1000”
#100; // 900ns
I2=1'b0 ; I1= 1'b0; I0=1'b1; // “001”
A2=1'b0 ; A1= 1'b0; A0=1'b1; // “001”
B3=1'b1; B2= 1'b0; B1= 1'b0; B0=1'b1; // 0001”
#100; // 1000ns
I2=1'b0 ; I1= 1'b1; I0=1'b0; // “010”
A2=1'b0 ; A1= 1'b1; A0=1'b0; // “010”
B3=1'b1; B2= 1'b0; B1= 1'b1; B0=1'b01; // 1010”
#100; // 1100ns
I2=1'b0 ; I1= 1'b1; I0=1'b1; // “011”
A2=1'b0 ; A1= 1'b1; A0=1'b1; // “011”
B3=1'b1; B2= 1'b0; B1= 1'b1; B0=1'b01; // 1011”
#100; // 1200ns
I2=1'b1 ; I1= 1'b0; I0=1'b0; // “100”
A2=1'b1 ; A1= 1'b0; A0=1'b0; // “100”
B3=1'b1; B2= 1'b1; B1= 1'b0; B0=1'b0; // 1100”
#100; // 1300ns
I2=1'b1 ; I1= 1'b0; I0=1'b1; // “101”
A2=1'b1 ; A1= 1'b0; A0=1'b1; // “101”
B3=1'b1; B2= 1'b1; B1= 1'b0; B0=1'b1; // 1101”
#100; // 1400ns
I2=1'b1 ; I1= 1'b1; I0=1'b0; // “110”
A2=1'b1 ; A1= 1'b1; A0=1'b0; // “110”
B3=1'b1; B2= 1'b1; B1= 1'b1; B0=1'b0; // 1110”
#100; // 1500ns
I2=1'b1 ; I1= 1'b1; I0=1'b1; // “111”
A2=1'b1 ; A1= 1'b1; A0=1'b1; // “111”
B3=1'b1; B2= 1'b1; B1= 1'b1; B0=1'b1; // 1111”
#100; // 600ns
$stop;
end
endmodule
//=================================
沒有留言:
張貼留言