2008年8月5日 星期二

blocking與nonblocking的使用時機

一般而言:
  1. 在同一個always區塊中,blocking與nonblocking assignment不可以混合使用。

  2. 具有Clock的循序電路,建議採用nonblocking assignment(<=)的寫法。

  3. 如:
    always@(posedge clk or negedge reset_n) begin
    if (!reset_n)
    counter <= 8'b00;
    else
    counter <= counter + 1;
    end
  4. 如果是組合電路,則建議採用blocking assignment(=)的寫法。

  5. 如:
    always@(sel or a or b) begin
    case (sel)
    2'b00 : c = a;
    2'b01 : c = b;
    endcase
    end
  6. 在continuous assignment則使用blocking的寫法。

  7. 如:
    assign y = a&b;

    這個主要的目的是用以明顯的區分出不同電路的設計,以必免不必要的麻煩。

沒有留言: