– 在結構描述中隨規模的增大而變得異常複雜。 –
仍然不能描述基本單元
(primitive)
中不同引腳上的不同延時。
– 精確性:所有路徑延時都能精確說明。 –
模組性:時序與功能分開說明
• 當事件佇列中所有事件結束時**前進乙個時片。在某種零延時反饋情況下,新事件在同一時片不斷的加入,致使**停滯在那個時片。 •
若在結構描述**現從輸出到輸入的零反饋情況,多數**器會檢測到這個反饋並產生錯誤資訊。
verilog
的lint checker
對這種情況會提出警告。 •
解決這個問題的方法是在電路中加入分布延時。路徑延時不能解決零延時振盪問題,因為輸出訊號在反饋前不會離開模組。
2.5.1、在verilog中,可以:
and #(2,3) (out, in1, in2, in3); // rise, fall
bufif0 #( 3,3,7) (out, in, ctrl); // rise, fall, turn- off
(in => out) = (1, 2); // rise, fall
(a => b) = (5, 4, 7); // rise, fall, turn- off
(c => q) = (5, 12, 17, 10, 6, 22);(c => q) = (5, 12, 17, 10, 6, 22, 11, 8, 9, 17, 12, 16);or #( 3.2:4.0:6.3) o1( out, in1, in2); // min:typ: maxnot #( 1:2:3, 2:3:5) (o, in); // min:typ: max for rise, fall
user_module#(1:2:3, 2:3:4) ( ……);在cadence verilog中還不支援
(b => y) = (2: 3: 4, 3: 4: 6, 4: 5: 8); // min:typ: max for rise, fall, and turnoff
延時說明定義的是門或模組的
固有延時
。輸入上的任何變化要經過說明的延時才能在輸出端反映出來。如果沒有延時說明,則
基本單元
的延時為
0。分布
關斷延時
只對三態基本單元有效。 –
如果說明了上公升、下降和關斷延時,則
1->x
的轉換延時使用上公升和關斷延時的最小值。
x->0
的延時為下降延時;
x->z
的轉換為關斷延時。 –
如果只說明了上公升和下降延時,則
1->x
和x->0
使用下降延時,
x->z
使用上公升和下降延時的最小延時 –
如果只說明了乙個延時,則所有轉換使用這個延時。 –
如果說明了六個延時,則
1->x
使用1->x
和1->z
中最小延時;
x->0
使用1->0
和x->0
的最大延時;
x->z
使用1->z
和0->z
中的最大延時。
android 中的延時
一 開啟新執行緒 new thread new runnable start new thread new runnable start 二 利用定時器 timertask task new timertask timer timer new timer timer.schedule task,de...
延時函式中的volatile
除錯wince驅動時候,有時候碰到us級別的時序要求的短延時,使用硬體定時器顯得麻煩.一般我會用乙個短延時delay 今天碰到了離奇事情.實現乙個短延時,用巨集,內聯函式或者函式都可以實現.下面是乙個例子.define delay us dowhile 0 你能想象的出上面 有什麼問題?我使用pb的...
Linux Shell中的延時函式
linux shell 中的延時函式 在 linux shell 指令碼中經常需要做一些延時處理。所以經常要用到 sleep 或 usleep 函式。下面來說一下 sleep 和 usleep 的區別 sleep 預設以秒為單位。usleep 預設以微秒為單位。1s 1000ms 1000000us...