硬體描述語言與驗證

如上方般計算8位元d中1的個數的描述,經邏輯合成後會成為什麼樣的電路?

always @(*) begin
    count = 0;
    for (i = 0; i < 8; i = i + 1)
        count = count + d[i];
end
  1. A花8個時脈逐位元計數的序向電路
  2. B迴圈被展開為8次份,成為並排加法電路的組合電路
  3. Cfor迴圈無法合成,所以會發生錯誤
查看答案與解析

正確答案:B. 迴圈被展開為8次份,成為並排加法電路的組合電路

HDL的for迴圈不像軟體那樣重複使用同一個電路,而是在邏輯合成時被展開成迴圈次數份的電路。此例會成為並排8次份加法電路的組合電路,在1個時脈之內計算完全部。迴圈次數一多,電路會變大,延遲也會變長,需要注意。若想花時間以較少的電路來計算,則要寫成以時脈動作的狀態機。

  • A. 因為沒有使用時脈,所以不會成為花時間計數的電路。
  • B. 正確。因為重複次數固定,所以可以展開。
  • C. 次數固定的for迴圈是可以合成的。
練習這個領域 前往領域頁面

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

  1. 上方描述的重置種類與動作,下列何者正確?
  2. 同步重置與非同步重置的差異,下列何者正確?
  3. 在使用非同步重置的電路中,先以2級正反器使重置的解除(由0變為1)與時脈同步,再分送給各電路,其原因下列何者正確?
  4. 以HDL撰寫的狀態機(state machine)的基本架構,下列何者正確?
  5. 在上方狀態機的描述中,於第2個always區塊開頭寫「next = state;」的原因,下列何者正確?

這個領域的比較