1. 毛刺的產生原因:冒險和競爭
使用分立元件設計電路時,由于PCB在走線時,存在分布電容和電容,所以在幾ns內毛刺被自然濾除,而在PLD內部沒有分布電感和電容,所以在PLD/FPGA設計中,競爭和冒險問題比較重要。
信號在FPGA器件內部通過連線和邏輯單元時,都有一定的延時。延時的大小與連線的長短和邏輯單元的數目有關,同時還受器件的制造工藝、工作電壓、溫度等條件的影響。信號的高低電平轉換也需要一定的過渡時間。由于存在這兩方面因素,多路信號的電平值發生變化時,在信號變化的瞬間,組合邏輯的輸出有先后順序,并不是同時變化,往往會出現一些不正確的尖峰信號,這些尖峰信號稱為"毛刺"。如果一個組合邏輯電路中有"毛刺"出現,就說明該電路存在"冒險"。
可以概括的講,只要輸入信號同時變化,(經過內部走線)組合邏輯必將產生毛刺。將它們的輸出直接連接到時鐘輸入端、清零或置位端口的設計方法是錯誤的,這可能會導致嚴重的后果。所以我們必須檢查設計中所有時鐘、清零和置位等對毛刺敏感的輸入端口,確保輸入不會含有任何毛刺。
存在邏輯冒險的電路:

仿真波形:

2. 判斷是否存在冒險
關于冒險的知識,數電書上有詳細的說明,當時沒有認真學,只了解個大概,現在又要重新看...還記得當年畫卡諾圖時的痛苦
冒險按照產生方式分為靜態冒險&動態冒險兩大類。靜態冒險指輸入有變化,而輸出不應該變化時產生的窄脈沖;動態冒險指輸入變化時,輸出也應該變化時產生的冒險。動態冒險是由靜態冒險引起的,所以,存在動態冒險的電路也存在靜態冒險。
靜態冒險根據產生條件不同,分為功能冒險和邏輯冒險兩種。當有兩個或兩個以上的輸入信號同時變化時,在輸出端有毛刺,稱為功能冒險;如果只有一個輸入變量變化時,出現的冒險稱為邏輯冒險。
因為動態冒險是由靜態冒險引起的,所以消除了靜態冒險,也就消除了動態冒險。功能冒險是由電路的邏輯功能產生的,只要輸入信號不是按照循環碼的方式變化,就會產生功能冒險,而且不能通過修改設計來消除,只能通過對輸出進行采樣來消除。判斷邏輯冒險的步驟:
判斷信號是否會同時變化
判斷信號同時變化時,是否會發生冒險(代數法 or 卡諾圖
3. 消除毛刺
我們可以通過改變設計,破壞毛刺產生的條件,來減少毛刺的發生。例如,在數字電路設計中,常常采用格雷碼計數器取代普通的二進制計數器,這是因為格雷碼計數器的輸出每次只有一位跳變,消除了競爭冒險的發生條件,避免了毛刺的產生。
毛刺并不是對所有的輸入都有危害,例如D觸發器的D輸入端,只要毛刺不出現在時鐘的上升沿并且滿足數據的建立和保持時間,就不會對系統造成危害,我們可以說D觸發器的D輸入端對毛刺不敏感。根據這個特性,我們應當在系統中盡可能采用同步電路,這是因為同步電路信號的變化都發生在時鐘沿,只要毛刺不出現在時鐘的沿口并且不滿足數據的建立和保持時間,就不會對系統造成危害。(由于毛刺很短,多為幾納秒,基本上都不可能滿足數據的建立和保持時間)
以上方法可以大大減少毛刺,但它并不能完全消除毛刺,有時,我們必須手工修改電路來去除毛刺。一般有兩種方法:
脈沖選擇法
一般說來,冒險出現在信號發生電平轉換的時刻,也就是說在輸出信號的建立時間內會發生冒險,而在輸出信號的保持時間內是不會有毛刺信號出現的。如果在輸出信號的保持時間內對其進行"采樣",就可以消除毛刺信號的影響。缺點是必須人為的保證sample信號必須在合適的時間中產生


時序邏輯保持法
利用D觸發器的D輸入端對毛刺信號不敏感的特點,在輸出信號的保持時間內,用觸發器讀取組合邏輯的輸出信號,這種方法類似于將異步電路轉化為同步電路。


4. 具體信號的討論
1. 置位/復位信號
清除和置位信號要求象對待時鐘那樣小心地考慮它們,因為這些信號對毛刺也是非常敏感的。正如使用時鐘那樣,最好的清除和置位是從器件的引腳單直接地驅動。有一個主復位Reset引腳是常用的最好方法,主復位引腳給設計項目中每個觸發器饋送清除或置位信號。幾乎所有PLD器件都有專門的全局清零腳和全局置位。如果必須從器件內產生清除或置位信號,則要按照“門控時鐘”的設計原則去建立這些信號,確保輸入無毛刺。
2. 組合邏輯輸出
當PLD輸出引腳給出系統內其它部分的邊沿敏感信號或電平敏感信號時,這些出信號必須象內部時鐘、清除和置位信號一樣小心地對待。只要可能就應在PLD輸出端寄存那些對險象敏感的組合輸出。如果你不能寄存險象敏感的輸出,則應符合“門控時鐘”中討論的門控時鐘的條件。決不能用多級邏輯驅動毛刺敏感的輸出。
3. 異步輸入信號
按照定義,異步輸入不是總能滿足(它們所饋送的觸發器的)建立和保持時間的要求。因此,異步輸入常常會把錯誤的數據鎖存到觸發器,或者使觸發器進入亞穩定的狀態,在該狀態下,觸發器的輸出不能識別為l或0。如果沒有正確地處理,亞穩性會導致嚴重的系統可靠性問題。采用附加觸發器同步使能信號的方法可保證不違反計數器的建立時間,從而解決可靠性的問題。
審核編輯 :李倩
-
FPGA
+關注
關注
1660文章
22412瀏覽量
636328 -
PLD
+關注
關注
6文章
230瀏覽量
61246 -
毛刺
+關注
關注
0文章
30瀏覽量
16026
原文標題:FPGA學習-關于毛刺
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
DAC8560:16位超低毛刺電壓輸出數模轉換器的深度剖析
飛凌嵌入式ElfBoard-文件I/O的了解探究之競爭冒險
Sycotec汽車輪轂去毛刺主軸:柔性精密加工的原理解析
使用 APx500 軟件檢測音頻毛刺與信號丟失
4036 DC-T-ER11浮動主軸在汽車輪轂去毛刺中的解決方案
鋰離子電池毛刺控制的要求及檢測
漢思新材料:環氧底部填充膠固化后有氣泡產生原因分析及解決方案
鋁鑄件去毛刺加工,用SycoTec浮動去毛刺主軸
超聲波清洗機對于微小毛刺的去除效果如何?
最全的硬件工程師筆試試題集
激光焊錫中虛焊產生的原因和解決方法
晶圓表面清洗靜電力產生原因
機器人加裝電主軸SycoTec 4060 ER-S,外螺紋毛刺效率飆升!
毛刺的產生原因:冒險和競爭
評論