約束衍生時(shí)鐘
系統(tǒng)中有4個(gè)衍生時(shí)鐘,但其中有兩個(gè)是MMCM輸出的,不需要我們手動(dòng)約束,因此我們只需要對(duì)clk_samp和spi_clk進(jìn)行約束即可。約束如下:
create_generated_clock -name clk_samp -source [get_pins clk_gen_i0/clk_core_i0/clk_tx] -divide_by 32 [get_pins clk_gen_i0/BUFHCE_clk_samp_i0/O] create_generated_clock -name spi_clk -source [get_pins dac_spi_i0/out_ddr_flop_spi_clk_i0/ODDR_inst/C] -divide_by 1 -invert [get_ports spi_clk_pin]
這里需要注意的是,如果該約束中使用get_pins(即產(chǎn)生的時(shí)鐘并非輸出到管腳),那么無(wú)論是source的時(shí)鐘還是我們衍生的時(shí)鐘,在get_pins后面的一定是這個(gè)時(shí)鐘最初的產(chǎn)生位置。在視頻中我們會(huì)具體展示)。
我們?cè)龠\(yùn)行report_clocks,顯示如下:
我們?cè)诶碚撈摹癱reate_generated_clock”一節(jié)中講到,我們可以重新設(shè)置Vivado自動(dòng)生成的衍生時(shí)鐘的名字,這樣可以更方便我們后續(xù)的使用。按照前文所講,只需設(shè)置name和source參數(shù)即可,其中這個(gè)source可以直接從report_clocks中得到,因此我們的約束如下:
create_generated_clock -name clk_tx -source [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1] [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT1] create_generated_clock -name clk_rx -source [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1] [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT0]
大家可以對(duì)比下report_clocks的內(nèi)容和約束指令,很容易就能看出它們之間的關(guān)系。
把上述的約束指令在tcl中運(yùn)行后,我們?cè)龠\(yùn)行一遍report_clocks,顯示如下:
在時(shí)序樹的分析中,我們看到,clk_samp和clk2兩個(gè)異步時(shí)鐘之間存在數(shù)據(jù)交互,因此要進(jìn)行約束,如下:
set_clock_groups -asynchronous -group [get_clocks clk_samp] -group [get_clocks clk2]
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618634 -
Vivado
+關(guān)注
關(guān)注
19文章
835瀏覽量
68795
發(fā)布評(píng)論請(qǐng)先 登錄
FPGA的IO口時(shí)序約束分析
FPGA主時(shí)鐘約束詳解 Vivado添加時(shí)序約束方法

FPGA時(shí)序約束之衍生時(shí)鐘約束和時(shí)鐘分組約束
FPGA時(shí)序約束之偽路徑和多周期路徑
FPGA時(shí)序約束之建立時(shí)間和保持時(shí)間

FPGA時(shí)鐘周期約束講解
FPGA全局時(shí)鐘約束(Xilinx版本)
FPGA實(shí)戰(zhàn)演練邏輯篇56:VGA驅(qū)動(dòng)接口時(shí)序設(shè)計(jì)之3時(shí)鐘約束
FPGA時(shí)鐘約束問(wèn)題
FPGA設(shè)計(jì)約束技巧之XDC約束之I/O篇(下)

FPGA設(shè)計(jì)之時(shí)鐘約束操作
簡(jiǎn)述FPGA時(shí)鐘約束時(shí)鐘余量超差解決方法

FPGA設(shè)計(jì)衍生時(shí)鐘約束和時(shí)鐘分組約束設(shè)置

時(shí)序約束一主時(shí)鐘與生成時(shí)鐘

FPGA時(shí)序約束之設(shè)置時(shí)鐘組

評(píng)論