
在FPGA設計中,時序約束的設置對于電路性能和可靠性都至關重要。在上一篇的文章中,已經詳細介紹了FPGA時序約束的基礎知識。
【資料圖】
本文將重點講解主時鐘約束設置,給出詳細的約束命令,并介紹了在Vivado中如何寫入主時鐘約束。
主時鐘是FPGA電路中最基礎的時鐘,其穩定性和精確性對電路的穩定運行有著至關重要的作用。在時序約束中,我們需要準確地定義主時鐘的時鐘約束,以確保電路的時序約束得以實現。
在Vivado中,我們可以使用create_clock命令來定義主時鐘的時鐘約束,其語法如下:
create_clock -name -period [ -waveform {} ] [get_ports ]參數 | 含義 |
---|---|
-name | 用于給時鐘命名 |
-period | 用于定義時鐘周期 |
-waveform | 波形參數,可以理解為占空比,一個周期時間內,rise_time表示第一個上升沿時刻,fall_time表示第一個下降沿時刻。不設置,則表示默認為50%的占空比 |
get_ports | 指定工程里的模塊時鐘信號名 |
這里需要注意的是使用create_clock創建的時鐘必須是主時鐘primary clock。
FPGA中的主時鐘通常有兩種來源:
由外部時鐘源(晶振)提供,通過引腳進入。帶高速收發器(GT)FPGA芯片型號,有GT時鐘RXOUTCLK或TXOUTCLK。對于Xilinx 7系列FPGA,需要對GT的兩個時鐘都添加約束,但對于UltraScale以及以上系列FPGA,只需對GT的輸入時鐘約束即可。
設定從引腳clk輸入外部時鐘,時鐘周期為12ns,占空比50%,相移為0,則主時鐘約束如下所示:
create_clock -period 12 [get_ports clk]如果存在相移為90,則主時鐘約束變為
create_clock -period 12 -waveform {3 9} [get_ports clk]PGA差分時鐘是指通過時鐘管腳的P端和N端共同進來的時鐘信號。通常應用于高頻或精度要求較高的場合,它的作用是消除共模噪聲,從而提高系統性能。
只需要約束差分時鐘的P端即可,不能同時約束P端和N端,N端可以被軟件自動識別到。
比如差分時鐘sys_clk_p和sys_clk_n,時鐘周期為6.667ns,則約束為:
create_clock -name sys_clk -period 6.667 [get_ports sys_clk_p]FPGA高速收發器GT時鐘信號,是指在FPGA中使用高速收發器GT(Gigabit Transceiver)進行信號收發時,需要使用與其速率相匹配的時鐘信號進行同步傳輸。這樣做可以確保信號穩定地傳輸,避免了數據傳輸中可能出現的誤碼情況。
比如時鐘源由高速收發器gt0提供,則時序約束為:
create_clock -name rx0_outclk -period 3.333 [get_pins gt0/RXOUTCLK] create_clock -name tx0_outclk -period 3.333 [get_pins gt0/TXOUTCLK]點擊“+”號,選擇“add or create constras”,點擊下一步。
選擇“create file”,填入時序文件名即可。
(1)方法1
直接打開XDC文件,寫入時序約束語句即可
(2)方法2
在將工程綜合Synthesis完成后,點開“Open Synthesized Design”,等待打開完成后,直接在TCL console窗口中輸入時序約束語句,回車即可。
(3)方法3
在將工程綜合Synthesis完成后,點開“Edit Timing Constraints”,等待打開GUI界面。
在“分類區”選中要創建的約束類型,點擊“+”號,創建約束,彈出約束創建界面。
點擊source objects右側的“...”,打開模塊接口搜索界面,并點擊find按鈕,選中“sys_clk”信號,點擊“右箭頭”,最后點擊set即可。
最后輸入時鐘名,時鐘周期,和波形參數即可,點擊ok,并“ctrl + S”保存即可。
主時鐘約束是FPGA中常見的操作,必須掌握,本文詳細介紹了操作命令和操作示范,希望可以幫助到大家學習并掌握這個知識。
標簽: