官术网_书友最值得收藏!

1.4.2 同步原則

同步原則指的是整個設計采用同步時序電路,“同步”意味著設計中的所有邏輯單元“步調保持一致”,即所有電路在同一時鐘沿的觸發下同步處理數據。這樣看來,設計中只允許存在一個時鐘,我們把這種“同步”稱為狹義的同步。畢竟,隨著芯片規模增大和設計復雜度增加,設計中的時鐘個數也越來越多。例如,外部存儲器接口時鐘、以太網接口時鐘、PCIE接口時鐘、PS側時鐘、PL主時鐘等。因此,我們又引入了廣義的同步。這里我們先給同步時鐘下定義,所謂同步時鐘,是指時鐘組(一個時鐘組至少有兩個時鐘)內的時鐘之間有明確的相位關系。反之,若時鐘組內的時鐘之間沒有明確的相位關系,則認為它們是異步時鐘。最典型的同步時鐘場景是時鐘組內的時鐘是由同一個MMCM/PLL生成的,而異步時鐘場景是時鐘組內的時鐘由不同MMCM/PLL生成,如圖1-37所示。在圖1-37中,clk0和clk1是同步時鐘,clka和clkb是同步時鐘,但{clk0,clk1}和{clka,clkb}是異步時鐘。從而,模塊1內存在同步跨時鐘域電路,而模塊2內存在異步跨時鐘域電路。顯然,后者無論是電路設計還是時序約束都更為復雜。因此,廣義的同步是指電路在同步時鐘的作用下處理數據。

圖1-37

盡管當前的FPGA設計允許存在多個時鐘,仍要遵循“時鐘個數盡可能少”的原則。一方面可以簡化跨時鐘域電路,另一方面有利于時序約束和時序收斂。這就要求我們在設計初期制定時鐘方案時就要明確設計中有哪些時鐘,它們之間的關系如何,是否可以由同一個MMCM/PLL生成。

之所以遵循同步原則,還因為相比異步設計,同步設計有著明顯的優點。首先,同步設計可以有效地避免毛刺的影響,增強設計的穩定性。組合邏輯可能會產生毛刺,如果毛刺僅存在于同步時序的數據路徑中,那么受時鐘驅動的觸發器就可以過濾掉毛刺,因為觸發器僅在時鐘有效沿才會有動作,從而消除其對電路的影響。如果將該組合邏輯的輸出連接到觸發器的控制端,如作為觸發器的異步復位/置位信號,那么當毛刺足夠寬時,就可能導致觸發器誤動作。即使毛刺的寬度不足以驅動異步復位/置位端,也會造成觸發器不穩定,甚至激發其產生亞穩態。其次,同步設計可以減少外部環境對芯片的影響。芯片的實際工作環境可能要比實驗環境更為惡劣,這也是我們做高低溫實驗的一個主要原因,即檢測當前設計是否能在不同環境下正常工作。此外,長時間運行也會使芯片自身溫度升高,使電壓變得不穩定,芯片內部延時可能會發生微小變化。如果采用異步設計,對時序要求比較嚴苛的電路將無法正常工作,這是因為異步設計的時序正確與否完全依賴于每個邏輯元件的邏輯延時和布線延時。最后,同步設計更有利于靜態時序分析(Static Timing Analysis,STA)和驗證設計的時序性能。這得益于同步設計的時序約束更為簡單。即使對于同步跨時鐘域路徑,工具也可以自動對其進行約束,當然有時會出現約束不合理的情形。

主站蜘蛛池模板: 武清区| 凯里市| 云龙县| 陆丰市| 京山县| 揭东县| 西和县| 崇义县| 温州市| 平远县| 凌海市| 布尔津县| 凤阳县| 沁水县| 怀来县| 洪江市| 乐平市| 江达县| 莱西市| 阿克陶县| 巴塘县| 上虞市| 鄂托克旗| 安岳县| 乌鲁木齐市| 南丹县| 永顺县| 临桂县| 马关县| 惠水县| 璧山县| 柳江县| 扬中市| 阳信县| 西乌珠穆沁旗| 巫溪县| 昌邑市| 南投县| 林周县| 仪征市| 梓潼县|