外部時鐘
時鐘訊號的**在fpga晶元外部,通常的,外部時鐘對於fpga來說是必需的,因為fpga內部沒有供內部邏輯使用的時鐘和激勵電路。
2內部時鐘
再生時鐘
再生時鐘是以乙個輸入時鐘作為參考,在此基礎上通過調整其頻率和相位產生的新時鐘,fpga中產生再生時鐘訊號的模組只有pll和dcm(注意,兩者都能產生時鐘訊號)
時鐘域引入時鐘域在於通常乙個fpga設計中會用到多個時鐘訊號。因此必然涉及到這樣乙個問題:時鐘訊號的管理範圍時多大?這就是時鐘域的問題
時鐘樹通常描述的乙個電路中,微觀來看,由許多觸發器構成,那麼,問題在於這些觸發器所共用的時鐘訊號能否同時到達每個暫存器的輸入端,時鐘樹的存在就是為了保證訊號到達時鐘域內不同觸發器的時間差最小。
現在注意到這樣乙個事情:時鐘訊號由fpga的外部引腳產生,硬體連線時,需要將外部的時鐘電路專門的連線道特定的全域性時鐘設計管腳,以及fpga晶元外圍引腳也有專門為區域時鐘和io時鐘設計的專有引腳。
為什麼需要這些專有引腳呢,因為這些引腳具有時鐘樹管理資源,進而確保時鐘能夠有正確的時序約束!!!
但是僅僅約束到正確的管腳,未必一定完成了正確的時鐘樹!!通常還需要進行使用原語這一程式設計行為來保證時鐘訊號的正確約束(關於具體的請參考fpga之道這本書籍)。
跨時鐘域問題:
fpga設計中不可能所有的模組設計都採用乙個時鐘,因此必然存在跨時鐘域問題。
現在思考這樣乙個問題:
當兩個不同時鐘域之間進行資訊互動的時候,會存在什麼問題???
如果兩個時鐘域的時鐘訊號從時間上講,永遠對不准,會發生什麼???
例子:「一發一收」穿牆雷達的pll輸出,設定為120mhz,30mhz,20mhz,12mhz。這些頻率之間都是有最小公倍數的,即意味著在某一時刻,他們能夠滿足相位對準。通常我們在進行時鐘設計的時候,pll的輸出頻率不要完全互質,導致時鐘需要很長的週期才能對準。
思考時鐘設計背後的意義。
關於時鐘樹的應用:
上圖是穿牆雷達,ad時鐘輸入的前端子的原語描述時鐘的rtl級網表。網表結構顯示,鎖相環產生的時鐘,如果直接通過io端連線到ad晶元的時鐘輸入端,需要引入乙個oddr模組,而這個模組的作用即保證了建立io時鐘的時鐘樹,這與上文中的描述是一致的。
時鐘和復位
這一章主要講了同步電路設計要注意的一些事項以及時鐘和復位的問題。首先是要避免的一些寫法 所謂的行波計數器指的就是用觸發器來驅動後續的觸發器的時鐘輸入端了,電路結構如下 這種設計主要存在的問題就是觸發器存在時鐘 資料延遲,這種結構會累加這種延遲,相當於增加了時鐘偏移,使電路出現錯誤 同樣也是會導致時鐘...
時鐘和復位
經驗表明,對asic的時域控制最安全的方法就是同步設計。時鐘線上的門控單元會導致時鐘偏移,並會引入尖峰脈衝作用於觸發器。會為使用同步復位和插入掃瞄鏈等測試方法帶來麻煩,並且增加確定關鍵訊號路徑的難度。在同步設計中,所有的反饋迴路都應包含暫存器。組合環路會導致無休止的迴圈運算。用兩個或多個帶有單扇入和...
電源域,時鐘域,復位域
許多新的soc設計必須整合很多功能並消耗非常低的功耗,即設計可能會有很多時鐘域,電源域和復位域。例如,我們最近分析的乙個設計具有接近20個電源域,超過200個時鐘域和最多32個復位域。標準驗證工具和方法沒有提供可靠的方法來分析不同的域並全面驗證其互操作性。因此,開發多域驗證 mdv 以解決這一領域的...