時鐘

在大家理解了時鐘和時序邏輯的工作機理後,也就能夠理解爲什麼時鐘信號對於時序邏輯而言是如此的重要。關於時鐘的設計要點,主要有以下幾個方面:

① 避免使用門控時鐘或系統內部邏輯產生的時鐘,多用使能時鐘去替代。(特權同學,版權所有)

門控時鐘或系統內部邏輯產生的時鐘很容易導致功能或時序出現問題。尤其是內部邏輯(組合邏輯)產生的時鐘容易出現毛刺,影響設計的功能實現;組合邏輯固有的延時也容易導致時序問題。(特權同學,版權所有)

② 對於需要分頻或倍頻的時鐘,用器件內部的專用時鐘管理(如PLL或DLL)單元去生成。(特權同學,版權所有)

用FPGA內部的邏輯去做分頻倒不是難事,倍頻恐怕就不行了。但是無論是分頻還是倍頻,在通常情況下都不建議用內部邏輯去實現,而應該採用器件內部的專用時鐘管理單元(如PLL或DLL)來產生,這類專用時鐘管理單元的使用並不複雜,在EDA工具中打開配置頁面進行簡單參數的設置,然後在代碼中對接口進行例化就可以很方便的使用引出的相應分頻或倍頻時鐘進行使用了。(特權同學,版權所有)

③ 儘量對輸入的異步信號用時鐘進行鎖存。(特權同學,版權所有)

所謂異步信號,是指兩個處於不同時鐘頻率或相位控制下的信號。這樣的信號在相互接口的時候如果沒有可靠的同步機制,則存在很大的隱患,甚至極有可能導致數據的誤採集。筆者在工程實踐中常常遇到這類異步信號誤觸發或誤採集的問題,因此也需要引起初學者足夠的重視。在筆者的《深入淺出玩轉FPGA》筆記6中列舉的一些改進的復位設計方法就是非常典型的異步信號的同步機制。(特權同學,版權所有)

④ 避免使用異步信號進行復位或置位控制。(特權同學,版權所有)

這個點和上一個點所強調的是同一類問題,異步信號不建議直接作爲內部的復位或置位控制信號,最好能夠用本地時鐘鎖存多拍後做同步處理,然後再使用。(特權同學,版權所有)

上述幾個點對於初學者可能很難理解和體會,沒有關係,當你有了實踐經歷以後回頭再品味一下或許就有味道多了。由於這幾個點多少也算是比較高級的技巧了,所以無法一一擴展開來深入剖析。更多相關擴展的知識點讀者可以參考筆者的《深入淺出玩轉FPGA》一書,那裏有更多更詳細的介紹和說明。(特權同學,版權所有)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章