硬體描述語言與驗證
在Verilog中將8位元的訊號a與b相加,並把結果賦值給8位元的訊號s(assign s = a + b;)。需要注意的地方,下列何者正確?
- A8位元之間的加法在Verilog中無法撰寫
- B結果會自動擴展為16位元
- 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. 正確。結果會依賦值目的地的寬度被截斷。