硬體描述語言與驗證 原本打算做成組合電路,卻如上方般撰寫,邏輯合成會產生什麼?always @(*) begin if (en) y = d; end Aen為0時y會自動變成0的組合電路 B以時脈動作的D型正反器 Cen為0時需要保持y的值,因此會產生非預期的閂鎖器 查看答案與解析 正確答案:C. en為0時需要保持y的值,因此會產生非預期的閂鎖器 en為0時沒有對y的賦值,所以y必須記住之前的值。組合電路沒有記憶的功能,因此邏輯合成會產生用來保持值的閂鎖器。閂鎖器會使時序分析變得困難,也會因雜訊而造成誤動作,因此在非預期的情況下要避免。若像「else y = 0;」一樣在所有情況下都賦值,就會成為組合電路。 A. 因為沒有設為0的描述,所以不會變成0。B. 因為沒有使用時脈,所以不會成為正反器。C. 正確。原因在於沒有else。