硬體描述語言與驗證
上方描述的重置種類與動作,下列何者正確?
always @(posedge clk or negedge rst_n)
if (!rst_n) q <= 0;
else q <= d;
- A同步重置,只有在rst_n為0的狀態下時脈上升時,q才會變成0
- B非同步重置,rst_n一變成0,不必等待時脈,q就立即變成0
- Crst_n一變成1,q就變成0
查看答案與解析
正確答案:B. 非同步重置,rst_n一變成0,不必等待時脈,q就立即變成0
由於敏感度清單中包含「negedge rst_n」,所以在rst_n由1變成0的瞬間,區塊也會被執行,與時脈無關,q會變成0。這就是非同步重置。名稱中的「_n」是表示在0時有效的負邏輯訊號的慣例。其優點是即使時脈停止也能重置,但需要注意解除重置的時序。
- A. 重置的邊緣也是觸發條件,所以不是同步。
- B. 正確。敏感度清單中有重置的邊緣。
- C. _n的意思是在0時有效(負邏輯)。