硬體描述語言與驗證

在Verilog中寫「always @(*)」的意義,下列何者正確?

  1. A表示每當時脈上升就執行的正反器
  2. B只在模擬開始時執行一次
  3. C表示每當區塊中所讀取的任一訊號改變就執行的組合電路
查看答案與解析

正確答案:C. 表示每當區塊中所讀取的任一訊號改變就執行的組合電路

always後面@( )中的內容稱為敏感度清單,用來指定當哪些訊號改變時要執行該區塊。寫成「*」,就等於自動列出了區塊中所讀取的所有訊號,能正確表示組合電路。以手動列出容易有遺漏,因此組合電路使用「@(*)」或SystemVerilog的always_comb較為安全。

  • A. 指定時脈邊緣的是posedge等。
  • B. 只執行一次的是initial。
  • C. 正確。等同於自動列出所讀取的全部訊號。
練習這個領域 前往領域頁面

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

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

這個領域的比較