- AMD FPGA設計優化寶典:面向Vivado/VHDL
- 高亞軍編著
- 1119字
- 2023-12-12 20:02:30
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)和驗證設計的時序性能。這得益于同步設計的時序約束更為簡單。即使對于同步跨時鐘域路徑,工具也可以自動對其進行約束,當然有時會出現約束不合理的情形。
- C++面向對象程序設計(第三版)
- 玩轉Scratch少兒趣味編程
- AngularJS Testing Cookbook
- C語言程序設計基礎與實驗指導
- 碼上行動:用ChatGPT學會Python編程
- Python 3 數據分析與機器學習實戰
- ASP.NET Web API Security Essentials
- Tableau Desktop可視化高級應用
- PHP 8從入門到精通(視頻教學版)
- Continuous Delivery and DevOps:A Quickstart Guide Second Edition
- 人人都能開發RPA機器人:UiPath從入門到實戰
- 軟件測試技術
- 零基礎學Java(第5版)
- Learning Ionic(Second Edition)
- ArcGIS Blueprints