Ch3邏輯閘層次 Gate Level

3.1 基本邏輯閘

3.2 使用方法

使用方法:

<閘名稱> <閘編號> ( 輸出埠, 輸入埠1, 輸入埠2… );

閘名稱:使用的邏輯閘名稱( ex. and, or, nor... )
閘編號:給予該閘名稱或編號,可不寫,交由軟體處理
輸出埠:輸出埠只能有一個,並且寫在最前面
輸入埠:輸入邏輯閘的資料口,需使用逗號分別

範例:

………
wire w1, w2;

and and1( w1, In1, In2 );   // w1 = In1 and In2
or or1( w2, w1, In2 );      // w2 = w1 or In2
xor xor( Out, w1, w2 );     // Out = w1 xor w2

// 最後out  = ( In1 and In2 ) xor ( w1 or In2 )
            = ( In1 and In2 ) xor (( In1 and In2 ) or In2 )
………

3.3 實際範例

一位元全加器

程式碼:

module Full_Adder( A, B, Cin, Sum, Cout );

    input A, B, Cin;
    output Sum, Cout;

    wire W1, W2, W3;

    xor xor1( W1, A, B );
    and and1( W2, W1, Cin );
    and and2( W3, A, B );
    xor xor2( Sum, W1, Cin );
    or  or1( Cout, W2, W3 );

endmodule