1. 前言
在數(shù)字電路課程中,老師在講組合邏輯的時候,一般都會講競爭與冒險。sky當時也聽的云里霧里,沒有想清楚如下問題:
1) 競爭與冒險究竟是什么東西?有啥物理現(xiàn)象?
2) 在數(shù)字電路設計中,什么時候需要關心(分析)競爭與冒險?
3) 如何避免競爭與冒險導致的問題呢?
經(jīng)過多年實際工作的實踐與理解,在此文略作分析。
2. 競爭與冒險的產(chǎn)生
在數(shù)字電路中,調用一個AND gate,用verilog可以如下描述:
assign out = in0 & in1;
其綜合后對應的電路與波形如下:
如果in0/in1分別有1--》0/0--》1的變化,如果同時滿足如下兩個條件:
1) in0/in1同時變化;
2) 從in0/in1的driver到AND gate的delay絕對匹配;
則,AND gate的輸出端不會有毛刺,一直穩(wěn)定的輸出logic 0。
但是在實際電路中,經(jīng)過place & route后,如上兩個條件基本不能滿足。抽象簡化后,實際電路和波形如下:
可以看到,由于in0/in1到AND gate輸入pin上delay的不匹配,導致AND的輸出out出現(xiàn)一個logic 1的小脈沖,一般也叫毛刺(glitch)。
對于一個簡單的AND gate,就會產(chǎn)生毛刺;那么對于一個更復雜的電路,比如:加法器,乘法器,glitch更是起起伏伏,直到一定的時間后,才會輸出穩(wěn)定的值。
這就是信號的競爭與冒險:邏輯上(真值表)輸入的變化本來不會導致組合邏輯輸出的變化;但是因為在輸入邏輯gate的PIN上,輸入信號變化時間上的差異,導致組合邏輯的輸出端產(chǎn)生一些不必要的0--》1/1--》0變化,出現(xiàn)glitch。
3. 競爭與冒險分析
A. 對于同步電路(比如DFF的clk是同一個信號),我們需要分析(關心)競爭與冒險嗎?
答案是不需要。
在實際同步數(shù)字電路中,組合邏輯通常伴隨時序邏輯(DFF等),其結構如下圖:
因為在同步電路中,我們會做STA時序分析,計算每條path的delay(如上圖綠色線)。AND gate在各條path的最大delay后,out PIN上的信號是穩(wěn)定不變的。再分析后級DFF是否滿足setup/hold timing需求,則后級DFF一定采樣到out PIN上穩(wěn)定的輸出值,而非中間的glitch。
也就是說:在同步電路中,我們利用STA分析,已經(jīng)把out PIN產(chǎn)生glitch的期間給濾除(mask)掉了;只要后級DFF的setup/hold timing分析pass,則后級DFF肯定采樣到正確的邏輯計算值,不會采樣到毛刺。
B. 對于異步電路(比如DFF的clk不是同一個信號),我們需要分析(關心)競爭與冒險嗎?
答案是需要。
在實際異步數(shù)字電路中,組合邏輯也通常伴隨時序邏輯(DFF等),其結構如下圖:
在異步電路中,我們在做STA時序分析,會有困難。雖然我們仍然能準確計算每條path的delay(如上圖綠色線),但是我們無法預知clk0/clk1的相位(phase)關系,導致無法分析后級DFF的setup/hold time,即:我準確計算out PIN在glitch產(chǎn)生期間是否會有clk1的上升沿。在工程實踐中,一般是設置:set_flase_path -from clk0 -to clk1。這樣,后級DFF(圖中橙色DFF)可能會采樣到毛刺。
這時,我們就得關心glitch了,即競爭與冒險。
不是說了不能計算了嗎?那怎么“關心”呢?
既然不能計算,就從電路結構上解決問題:
通過增加一個clk0 domain的DFF,讓clk0--》clk1的數(shù)據(jù)交互是DFF輸出,是不是就肯定不會有glitch啦 ^_^?!皁ut_reg”PIN是DFF輸出,不會有glitch的。
啊,講到這兒,是否突然明白,老師講:跨時鐘域時,信號一定要DFF的Q端直接輸出。
C. 還有哪兒需要分析(關心)競爭與冒險嗎?
當然是有的。
比如:chip IO上的異步信號。比如IIC接口的SCL/SDA。這2信號在chip輸出時,是不是應該(必須)用DFF輸出呢?不能搞組合邏輯輸出,否則接收方chip可能看到SCL上的glitch,導致功能錯誤。
4. 總結
綜上:
1) 在同步電路中,我們并不關心競爭與冒險,因為有STA做保障;
2) 在異步電路中,我們關心競爭與冒險(從電路結構解決問題),因為沒有STA做保障;
編輯:jq
-
同步電路
+關注
關注
1文章
60瀏覽量
13352 -
STA
+關注
關注
0文章
51瀏覽量
19058 -
SCL
+關注
關注
1文章
240瀏覽量
17186
原文標題:數(shù)字IC/FPGA設計基礎_競爭與冒險
文章出處:【微信號:bianpinquan,微信公眾號:變頻圈】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論