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;

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

沒有留言:

一個小故事讓我們明白資金流通的意義

“又是炎熱小鎮慵懶的一天。太陽高掛,街道無人,每個人都債台高築,靠信用度日。這時,從外地來了一位有錢的旅客,他進了一家旅館,拿出一張1000 元鈔票放在櫃檯,說想先看看房間,挑一間合適的過夜,就在此人上樓的時候---- 店主抓了這張1000 元鈔,跑到隔壁屠戶那裡支付了他欠的肉錢...