硬體描述語言與驗證

在Verilog中將8位元的訊號a與b相加,並把結果賦值給8位元的訊號s(assign s = a + b;)。需要注意的地方,下列何者正確?

  1. A8位元之間的加法在Verilog中無法撰寫
  2. B結果會自動擴展為16位元
  3. C和超過255時第9位元的進位會被捨棄,所以若需要進位,要將s設為9位元
查看答案與解析

正確答案:C. 和超過255時第9位元的進位會被捨棄,所以若需要進位,要將s設為9位元

8位元之間的和最大為255+255=510,表示它需要9位元。若賦值目的地s為8位元,則上位的進位會被默默捨棄,例如200+100會變成44。若也想使用進位,就將s宣告為9位元。Verilog對於寬度不同的訊號賦值不會視為錯誤,而是截斷或擴展,因此以Lint工具檢查寬度不一致是有效的。

  • A. 可以正常撰寫。
  • B. 若賦值目的地為8位元,就會被截斷為8位元。
  • C. 正確。結果會依賦值目的地的寬度被截斷。
練習這個領域 前往領域頁面

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

  1. 原本打算將a當作有號的-1,卻如上方般撰寫,結果gt變成了1。原因下列何者正確?
  2. Verilog的模擬中所使用的4值邏輯的值的組合,下列何者正確?
  3. 在模擬中,沒有重置的暫存器的值一開始是X。在實際的晶片中,會變成怎麼樣?
  4. 在上方的描述中,當sel為X(不定)時,Verilog的模擬會讓y選擇b。這個性質在驗證上成為問題的原因,下列何者正確?
  5. 關於在HDL中輸出Z(高阻抗)的三態描述,一般而言下列何者正確?

這個領域的比較