時鐘篇
選用全局時鐘緩沖區(qū)(BUFG)作為時鐘輸入信號,BUFG是最穩(wěn)定的時鐘輸入源,可以避免誤差。
只用一個時鐘沿來寄存數(shù)據(jù),使用時鐘的兩個沿是不可靠的,如果時鐘沿“漂移”,就會導(dǎo)致時序錯誤。
不要隨意將內(nèi)部信號作為時鐘,如門控時鐘和分頻時鐘,而要使用CLKDLL或者DCM產(chǎn)生的時鐘,或者可以通過建立時鐘使能或者DCM產(chǎn)生不同的時鐘信號。
FPGA盡量采取同步設(shè)計,也就是所有時鐘都是同一個源頭,如果使用兩個沒有相位關(guān)系的異步時鐘,必須要解決跨時鐘域問題。
性能篇
邏輯級的時延不要超過時序預(yù)算的百分之五十,否則會影響系統(tǒng)的運行頻率??梢酝ㄟ^分析時序報告中某個路徑的時序統(tǒng)計量來掌握系統(tǒng)的邏輯級時延。
對于關(guān)鍵的輸出選擇快速轉(zhuǎn)換速率,可以為LVCMOS和LVTTL電平選擇轉(zhuǎn)換速率來降低輸出時延。
如果設(shè)計允許增加延遲,可以對組合邏輯采用流水操作來提高性能。
利用四種全局約束來對設(shè)計進行全局約束,周期、偏置、輸入/輸出,管腳到管腳。
I/O寄存器提供了最快的時鐘到輸入、輸出到時鐘的延時,對于輸入、輸出信號,管腳到寄存器、寄存器到管腳都不可以有組合邏輯存在,對于三態(tài)寄存器,必須低電平有效,才能被綜合到IOB當中。
盡量使用IP核進行設(shè)計,因為IP核都是針對FPGA器件進行了優(yōu)化,性能更高。
編程篇
使用Case語句而不是if-then-else語句
復(fù)雜的if-then-else語句在綜合布局布線以后會生成優(yōu)先級譯碼邏輯,增加路徑上的時延。然而,case語句則綜合為并行邏輯,沒有時延。
有限狀態(tài)機盡量不要包含有算術(shù)邏輯、數(shù)據(jù)通路邏輯以及其它與狀態(tài)機不相關(guān)的組合邏輯;
狀態(tài)機編寫的時候,下一狀態(tài)邏輯和輸出譯碼邏輯必須放在獨立的進程中或者always語句中,綜合工具在輸出和下一狀態(tài)邏輯之間不允許共享資源。
盡量使用一位編碼有限狀態(tài)機;
使用不同風格的計數(shù)器,二進制計數(shù)器是非常慢的,可以考慮LFSR,Pre -scalar,Johnson.
代碼設(shè)計要按照功能塊劃分成不同的層次,層次化有助于設(shè)計更加容易讀懂,也容易調(diào)試和復(fù)用。
編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1643文章
21923瀏覽量
612389
發(fā)布評論請先 登錄
FPGA時序約束之衍生時鐘約束和時鐘分組約束
基于lmk03806的高性能可編程時鐘發(fā)生器的設(shè)計與fpga實現(xiàn) 畢...
時鐘IC怎么滿足高性能時序需求?
基于FPGA的時鐘設(shè)計

如何滿足高性能時鐘IC需求

(10)FPGA跨時鐘域處理

(08)FPGA時鐘概念

(12)FPGA時鐘設(shè)計原則

(29)FPGA原語設(shè)計(差分時鐘轉(zhuǎn)單端時鐘)

(30)FPGA原語設(shè)計(單端時鐘轉(zhuǎn)差分時鐘)

評論