組合邏輯設計中的毛刺現象
和所有的數字電路一樣,毛刺也是FPGA電路中的棘手問(wèn)題,它的出現會(huì )影響電路工作的穩定性,可靠性,嚴重時(shí)會(huì )導致整個(gè)數字系統的誤動(dòng)作和邏輯紊亂。
本文引用地址:http://dyxdggzs.com/article/201710/365694.htm信號在FPGA器件中通過(guò)邏輯單元連線(xiàn)時(shí),一定存在延時(shí)。延時(shí)的大小不僅和連線(xiàn)的長(cháng)短和邏輯單元的數目有關(guān),而且也和器件的制造工藝、工作電壓、溫度等有關(guān)。另外,信號的高低電平轉換也需要一定的過(guò)渡時(shí)間,由于存在這兩方面的因素,多路信號的電平值發(fā)生變化時(shí),在信號變化的瞬間,組合邏輯的輸出有先后順序,并不是同時(shí)變化,往往會(huì )出現一些不正確的尖峰信號,這些尖峰信號就是“毛刺”。任何組合電路,反饋電路和計數器都可能。
潛在的毛刺信號發(fā)生器。
電路布線(xiàn)長(cháng)短不同造成各端口輸入信號延時(shí)不一致,有競爭冒險,會(huì )產(chǎn)生毛刺。分立元件之間存在分布電容和電感可以濾掉這些毛刺,所以用分立元件設計電路時(shí),很少考慮競爭冒險和毛刺問(wèn)題,但PLD/FPGA內部沒(méi)有分布電容和電感,不能濾掉任何毛刺(哪怕不到1ns)。
舉個(gè)簡(jiǎn)單的例子:
設計的一個(gè)二輸入與門(mén),output=A B;進(jìn)行布局布線(xiàn)后仿真(此時(shí)沒(méi)有加管腳約束文件)可看到:
output_obuf_2處有一毛刺出現。毛刺高電平時(shí)間維持141ps.
從output_obuf到output輸出處,雖消除了毛刺,但不能保證其它情況下都會(huì )消除,我想有可能是此處毛刺時(shí)間比較小的原因,所以才有output處輸出是正常的。
首先毛刺的出現是由于輸入端A由1到0和B由0到1的變化引起的。
從靜態(tài)時(shí)序文件中可以看到:A,B到達與門(mén)的時(shí)間相差141ps,這也正是上述中出現毛刺的原因。
下面將管腳約束文件加進(jìn)去再進(jìn)行后仿真:
可看出此時(shí)output輸出有明顯的毛刺出現。
時(shí)序分析報告:
對于信號A:(Trace delay of A)+AND gate internal delay=9.139ns;
對于信號B:(Trace delay of B)+AND gate internal delay=5.607ns;
即A和B到達與門(mén)的時(shí)間相差了3.532ns,下圖顯示毛刺的時(shí)間即正好相符。
毛刺并不是對所有的輸入都有危害,如觸發(fā)器的D輸入端,只要數據不出現在時(shí)鐘的上長(cháng)升沿,并滿(mǎn)足數據的建立保持時(shí)間,就不會(huì )對系統造成危害,而當毛刺信號成為系統的啟動(dòng)信號,控制信號,握手信號,觸發(fā)器的清零信號,預置信號,時(shí)鐘信號,或鎖存器的輸入信號時(shí)就會(huì )產(chǎn)生邏輯錯誤。因此,判斷邏輯電路中是否存在冒險以及如何避免冒險是設計人員必須考慮的問(wèn)題。
評論