硬體描述語言與驗證 原本打算將a當作有號的-1,卻如上方般撰寫,結果gt變成了1。原因下列何者正確?wire [7:0] a = 8'hFF; wire gt = (a > 8'd1); A因為沒有宣告為signed,所以a被當作無號的255來比較 B因為在Verilog中,比較的結果一定會是1 C因為8'hFF與0是相同的值 查看答案與解析 正確答案:A. 因為沒有宣告為signed,所以a被當作無號的255來比較 在Verilog中,只要沒有加上signed,訊號就會被視為無號,所以8'hFF是255,255 > 1為真。若將a與b兩者都宣告為「wire signed [7:0]」,就會以二補數的-1來比較,結果為0。此外還有一個規則:算式中只要有1個無號的值,整體就會以無號計算,因此在有號的計算中,將所有值的型別統一是很重要的。 A. 正確。要以有號處理,需要signed的宣告。B. 比較的結果依條件可能是0也可能是1。C. 8'hFF是255(若為有號則是-1)。