硬體描述語言與驗證

原本打算將a當作有號的-1,卻如上方般撰寫,結果gt變成了1。原因下列何者正確?

wire [7:0] a = 8'hFF;
wire gt = (a > 8'd1);
  1. A因為沒有宣告為signed,所以a被當作無號的255來比較
  2. B因為在Verilog中,比較的結果一定會是1
  3. 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)。
練習這個領域 前往領域頁面

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

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

這個領域的比較