硬體描述語言與驗證

在Verilog中區分使用賦值種類時的一般準則,下列何者正確?

  1. A不論何處都只使用阻塞賦值(=)
  2. B以時脈動作的序向電路使用非阻塞賦值(<=),組合電路的always使用阻塞賦值(=)
  3. C在一個always中隨意混用兩者
查看答案與解析

正確答案:B. 以時脈動作的序向電路使用非阻塞賦值(<=),組合電路的always使用阻塞賦值(=)

以非阻塞賦值撰寫序向電路時,會與所有正反器同時取入值的電路動作一致,結果不會受到描述順序或與其他always區塊執行順序的左右。在組合電路中,由上而下依序計算中間值的寫法較為自然,因此使用阻塞賦值。此外,在同一個always區塊中不要混用兩者也很重要。

  • A. 在序向電路中使用阻塞賦值,容易變成與意圖不同的電路。
  • B. 正確。較容易使模擬與電路的動作一致。
  • C. 混用會使動作難以理解,並成為錯誤的根源。
練習這個領域 前往領域頁面

硬體描述語言與驗證的其他題目

  1. 在Verilog中寫「always @(*)」的意義,下列何者正確?
  2. 原本打算做成組合電路,卻如上方般撰寫。可能發生的問題,下列何者正確?
  3. 原本打算做成組合電路,卻如上方般撰寫,邏輯合成會產生什麼?
  4. 上方描述會產生閂鎖器的原因與對策的組合,下列何者正確?
  5. 在組合電路的always區塊中,為了防止非預期的閂鎖器而常用的寫法為何?

這個領域的比較