FPGA設計一個很重要的設計是時序設計,而時序設計的實質就是滿足每一個觸發(fā)器的建立(Setup)/保持(Hold)時間的要求。
建立時間(Setup Time):是指在觸發(fā)器的時鐘信號上升沿到來以前,數(shù)據穩(wěn)定不變的時間,如果建立時間不夠,數(shù)據將不能在這個時鐘上升沿被打入觸發(fā)器;
保持時間(Hold Time):是指在觸發(fā)器的時鐘信號上升沿到來以后,數(shù)據穩(wěn)定不變的時間, 如果保持時間不夠,數(shù)據同樣不能被打入觸發(fā)器。
FPGA設計分為同步電路設計和同步電路設計,然而很多異步電路設計都可以轉化為同步電路設計,在設計時盡量采用同步電路進行設計。對于同步電路可以轉化的邏輯必須轉化,不能轉化的邏輯,應將異步的部分減到最小,而其前后級仍然應該采用同步設計。
為了讓同步電路可靠地運行,就要對時鐘偏差進行控制,以使時鐘偏差減小到可用的范圍。影響時鐘偏差的主要有以下幾個因素:
用于連接時鐘樹的連線
鐘樹的拓撲結構
時鐘的驅動
時鐘線的負載
時鐘的上升及下降時間
在通常的FPGA設計中對時鐘偏差的控制主要有以下幾種方法:
控制時鐘信號盡量走可編程器件的的全局時鐘網絡。在可編程器件中一般都有專門的時鐘驅動器及全局時鐘網絡,不同種類、型號的可編程器件,它們中的全局時鐘網絡數(shù)量不同,因此要根據不同的設計需要選擇含有合適數(shù)量全局時鐘網絡的可編程器件。一般來說,走全局時鐘網絡的時鐘信號到各使用端的延時小,時鐘偏差很小,基本可以忽略不計。
若設計中時鐘信號數(shù)量很多,無法讓所有的信號都走全局時鐘網絡,那么可以通過在設計中加約束的方法,控制不能走全局時鐘網絡的時鐘信號的時鐘偏差。
異步接口時序裕度要足夠大。局部同步電路之間接口都可以看成是異步接口,比較典型的是設計中的高低頻電路接口、I/O接口,那么接口電路中后一級觸發(fā)器的建立-保持時間要滿足要求,時序裕度要足夠大。
在系統(tǒng)時鐘大于30MHz時,設計難度有所加大,建議采用流水線等設計方法。采用流水線處理方式可以達到提高時序電路的速度,但使用的器件資源也成倍增加。
要保證電路設計的理論最高工作頻率大于電路的實際工作頻率。