簡單邏輯閘測試

主程式

module and1(in1,in2,in3,in4,out);

input in1,in2,in3,in4;

output out;

and g1(w1,in1,in2);

and g2(w2,in3,in4);

or g3(out,w1,w2);

endmodule

測試 模組

module test_end;

reg in1,in2,in3,in4;

wire out;

and1 s1(in1,in2,in3,in4,out);

initial begin

#10 in1=1; in2=1; in3=1; in4=1;

#10 in1=1; in2=1; in3=0; in4=0;

#10 in1=0; in2=0; in3=1; in4=0;

#10 in1=0; in2=0; in3=1; in4=1;

#10 $finish;

end

initial

$monitor($time,"in1=%b in2=%b in3=%b in4=%b out=%b",in1,in2,in3,in4,out);

endmodule

上面是用Simucad程式寫的

拜託高手 幫我解說 這個圖的意思話出來的圖 是2個and閘 作用到1個or閘然後輸出 但是我不知道要怎描述這個圖 然後幫我大約解釋上面的程式碼

已更新項目:

很感謝大大 你熱心的解答 那請問大大可以介紹有關這方面的書嗎 你認為哪1本對初學著 最好學習呢

2 個已更新項目:

抱歉 又有2個的問題想要請教你 如果是2個NAND閘 作用到另1個NAND閘 那

這個 and1 的功能是??

3 個已更新項目:

1個AND跟1個XOR閘 作用到OR閘 那and1 的功能是??<<===這個圖 完全看不懂

4 個已更新項目:

麻煩大大 可以 解說1下嘛 如果沒辦法 還是會選你為最佳解答 拜託你了

5 個已更新項目:

恩 多謝你的幫忙 我會聽你的意見 很感謝你幫助1個剛進大學什麼都不懂的心生QQ

2 個解答

評分
  • 1 0 年前
    最佳解答

    你好,

    你的 主程式 和 測試模組, 都是用 verilog 來寫成的.

    你的主程式是描述一個模組(module) and1, 有四個輸入腳 in1, in2, in3, in4 和一個輸出腳 out; 這個 and1 的功能是 "當 in1 和 in2 都為 1" 或 "當 in3 和 in4 都為 1" 時 out 輸出 1, 否則輸出 0;

    測試模組 test_end 的功用則是每 10 個單位時間, 改變一次 in1, in2, in3, in4 的值, 再用 $monitor 指令來看 in1, in2, in3, in4 和 out 的關係是否如預期?

    我簡單說明如下, 你有興趣可以去找本 Verilog 的書來看看.

    主程式

    module and1(in1,in2,in3,in4,out);

    input in1,in2,in3,in4;

    output out;

    and g1(w1,in1,in2); // g1, g2, g3 只是流水號, 但是必須為英文起頭且不重覆

    and g2(w2,in3,in4); // and 或 or 則是 verilog 的邏輯描述之一

    or g3(out,w1,w2); // 將 g1, g2 的輸出 w1, w2 接到 g3 (OR閘) 的輸入

    endmodule

    測試 模組

    module test_end;

    reg in1,in2,in3,in4; // 參數宣告

    wire out;

    and1 s1(in1,in2,in3,in4,out); // 把 and1 呼叫進來模擬

    initial begin

    #10 in1=1; in2=1; in3=1; in4=1; // 檢查 "out = 1" ?

    #10 in1=1; in2=1; in3=0; in4=0; // 檢查 "out = 1" ?

    #10 in1=0; in2=0; in3=1; in4=0; // 檢查 "out = 0" ?

    #10 in1=0; in2=0; in3=1; in4=1; // 檢查 "out = 1" ?

    #10 $finish; // 模擬結束

    end

    initial

    // $monitor 只令是當值改變時會顯示要求的值

    $monitor($time,"in1=%b in2=%b in3=%b in4=%b out=%b",in1,in2,in3,in4,out);

    endmodule

    2008-09-26 09:20:27 補充:

    我建議你先去電子系所旁聽或圖書館找 "數位邏輯設計" 的課程與書, 把基本邏輯閘, 真值表與布林轉換學好; 之後再到圖書館找 "Verilog" 的中文工具書, 挑一本自己看得懂的再去買.

    你問"功能是什麼?"這很難回答, 標準答案應該是把它的真值表畫出來(這是邏輯設計的基本)

    2008-09-26 09:21:08 補充:

    2個NAND閘 作用到另1個NAND閘:

    "當 in1 和 in2 都為 1" 或 "當 in3 和 in4 都為 1" 時 out 輸出 1, 否則輸出 0;

    1個AND跟1個XOR閘 作用到OR閘:

    "當 in1 和 in2 都為 1" 或 "當 in3 與 in4 的值互斥" 時 out 輸出 1, 否則輸出 0;

    參考資料: Pegasus
  • 6 年前

    到下面的網址看看吧

    ▶▶http://qoozoo09260.pixnet.net/blog

還有問題?馬上發問,尋求解答。