看完blocking assignment後,再來看看何謂nonblocking assignment吧!verilog跟一般寫程式最大的其中一個差異點就是,硬體描述語言有同時性(concurrently)的情況,簡單的講就是假設你寫了三行程式,verilog可以讓這三行程式同時執行,或許你會講,現在的程式不是都是多工在執行嗎?同時跑一堆程式呀,但是你如果以微觀的角度來看,其實同一個時間點,CPU還是只有執行一道指令的。而verilog的nonblocking assignment的用法就是用來描述這種情況。
好啦,我們再拿Verilog數位電路設計-範例寶典的範例來介紹吧!
底下有兩段程式
----------------
第一個範例
begin
q_a1_reg <= #1 data;
q_a2_reg <= #1 q_a1_reg;
q_a3_reg <= #1 q_a2_reg;
end
----------------
第二個範例
begin
q_b3_reg <= #1 q_b2_reg;
q_b2_reg <= #1 q_b1_reg;
q_b1_reg <= #1 data;
end
----------------
我們一直在講同時執行程式,所以囉!範例一跟範例二會產生出一樣的結果
我們來看看它所代表的硬體線路吧!再看看下圖是ModelSim跑的模擬結果有沒有對blocking vs nonblocking有更進一步的了解了呢?
2008年8月5日 星期二
訂閱:
張貼留言 (Atom)
-
昨天差點昏倒, 因為Chrome Browser一開啟後居然一片白畫面. 雖然還有IE可以用, 但就是習慣Chrome了啊, 然後開始Google別人如何解決, 不過看起來不少人遇到相同的問題, 但都沒什麼解決方法. 什麼掃毒啦, 重新安裝Chrome啦, 砍掉Default啦....
-
I/O mapped I/O(port-mapped I/O或Direct I/O) I/O與memory均擁有自己的記憶體空間 需要特別的指令來處理I/O 好處是完全不用考慮記憶體空間被I/O佔用,缺點需要額外的指令專門處理I/O存取。 Memory Mapped I/O I/...
-
好像不少人會找這個Sample Code, 小修改一下好了. 先前的Code有不少的Warning出現而且會Crash耶! 底下分別列出UDP Server及Client的範例程式. UDP Server (udp-server.c) 利用 socket 介面設計網路應用程...
一個小故事讓我們明白資金流通的意義
“又是炎熱小鎮慵懶的一天。太陽高掛,街道無人,每個人都債台高築,靠信用度日。這時,從外地來了一位有錢的旅客,他進了一家旅館,拿出一張1000 元鈔票放在櫃檯,說想先看看房間,挑一間合適的過夜,就在此人上樓的時候---- 店主抓了這張1000 元鈔,跑到隔壁屠戶那裡支付了他欠的肉錢...
沒有留言:
張貼留言