硬體描述語言與驗證

將上方的描述針對FPGA進行邏輯合成時,一般會如何處理?

reg [7:0] mem [0:255];
always @(posedge clk) begin
    if (we) mem[addr] <= din;
    dout <= mem[addr];
end
  1. A無法合成,所以會發生錯誤
  2. B成為256個獨立的加法器
  3. C被推論為8位元×256字的記憶體,並分配給FPGA內建的區塊RAM
查看答案與解析

正確答案:C. 被推論為8位元×256字的記憶體,並分配給FPGA內建的區塊RAM

若以與時脈同步進行寫入與讀出的固定形式撰寫reg的陣列,邏輯合成工具會將它辨識(推論)為記憶體,並分配給FPGA的區塊RAM或ASIC的記憶體零件。連讀出也與時脈同步,是配合區塊RAM的訣竅;若採用非同步讀出的寫法,有時會以大量的正反器或其他種類的記憶體來建構。

  • A. 陣列的reg可以合成為記憶體。
  • B. 並沒有進行加法。
  • C. 正確。以固定的形式撰寫就會被辨識為記憶體。
練習這個領域 前往領域頁面

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

  1. 在組合電路中,比較長串的if・else if描述與條件互不重疊的case語句描述時的說明,下列何者正確?
  2. Verilog的等號運算子「==」與「===」的差異,下列何者正確?
  3. 以Verilog等HDL撰寫的描述,與C語言等軟體程式的最大差異,下列何者正確?
  4. 在Verilog中使用module的目的,下列何者正確?
  5. Verilog的wire型與reg型的差異,下列何者正確?

這個領域的比較