2008年8月5日 星期二

blocking assignment (=) 的使用方法

blocking assignment一般來講都翻成阻斷賦值,聽起來是不是有點抽象不太懂呢?
我們拿Verilog數位電路設計-範例寶典的範例來介紹吧!因為我覺得它的例子蠻容易讓人理解。

看一下底下兩段程式
---------------
第一個範例
begin
q_a1_reg = data;
q_a2_reg = q_a1_reg;
q_a3_reg = q_a2_reg;
end
---------------
第二個範例
begin
q_b3_reg = q_b2_reg;
q_b2_reg = q_b1_reg;
q_b1_reg = data;
end
---------------
看起來是不是差不多呢?我們不管命名的差別,則差異只在順序的不相同而以,這個部份就跟我們寫一般的程式沒兩樣,這就是所謂的blocking assignment,就是由上往下執行,一行做完接著一行做。

但我們先來比較一下它所代表的硬體線路差異
下圖是跑ModelSim的結果
所以看懂差異了嗎?很有趣吧^^

沒有留言:

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

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