??在我之前寫的FPGA時序約束教程中,有一篇中講到了虛擬時鐘:
但文中對虛擬時鐘的應(yīng)用介紹的還不夠詳細(xì),因此這里我們再對虛擬時鐘做一個更加細(xì)致的介紹。
??首先,虛擬時鐘用于什么地方?
??虛擬時鐘通常用于設(shè)定輸入和輸出的延時,即set_input_delay
和set_output_delay
??赡苡型瑢W(xué)忘記這兩個約束的用法了,這里我們再展示一下:
set_input_delay0.5-clockclkA[get_portsA]
set_output_delay1-clockclkB[get_portsB]
其中clkA
和clkB
就是我們使用create_clock
創(chuàng)建的主時鐘或者虛擬時鐘。
??主時鐘在創(chuàng)建的時候需要指定時鐘輸入端口,虛擬時鐘不需要指定端口,所以稱之為虛擬時鐘。那什么場景下要用到虛擬時鐘呢?
- 外部IO的參考時鐘并不是設(shè)計中的時鐘
下圖中,外部IO的參考時鐘比設(shè)計中主時鐘的路徑上多了一個BUFFER,因此我們需要使用虛擬時鐘來進(jìn)行約束。
create_clock-namesysclk-period10[get_portsclkin]
create_clock-namevirtclk-period10
set_clock_latency-source1[get_clockvirtclk]
set_input_delay-clockvirtclk-max4[get_portsdina]
set_input_delay-clockvirtclk-min2[get_portsdina]
- FPGA I/O路徑參考時鐘來源于內(nèi)部衍生時鐘,但與主時鐘的頻率關(guān)系并不是整數(shù)倍
如果I/O路徑參考時鐘源于內(nèi)部的衍生時鐘,那set_input_delay
和set_output_delay
約束中-clock
參數(shù)后的時鐘不能是衍生時鐘,比如下圖的例子中,輸入10MHz時鐘經(jīng)過了MMCM后去采輸入的數(shù)據(jù)。

a) 如果MMCM沒有負(fù)的相移而且輸出的頻率也是10MHz,那么直接使用主時鐘來約束input delay。
create_clock-period100.000-nameclk[get_portsclk]
set_input_delay-clockclk-max2.000[get_portsdatain]
set_input_delay-clockclk-min1.000[get_portsdatain]
b) 如果MMCM輸出頻率是60MHz,那么這個衍生時鐘跟主時鐘并不是整數(shù)倍關(guān)系,這時就需要用到虛擬時鐘了
create_clock-period100.000-nameclk[get_portsclk]
create_clock-nameclk_port_vclk-period16.67
set_input_delay-clockclk_port_vclk-max2[get_portsdatain]
set_input_delay-clockclk_port_vclk-min1[get_portsdatain]
- 在不修改時鐘特性的情況下針對I/O指定不同的jitter和latency
這個需求我們可以在Constraints Wizards
中指定,簡單又方便

在設(shè)置完成后,可以看到Tcl Command Preview
中提示的約束指令。
審核編輯 :李倩
-
FPGA
+關(guān)注
關(guān)注
1650文章
22205瀏覽量
626837 -
虛擬時鐘
+關(guān)注
關(guān)注
0文章
5瀏覽量
6689
原文標(biāo)題:FPGA的虛擬時鐘如何使用?
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
配置了串口DMA,現(xiàn)在是接收可以,發(fā)送不行,是什么地方沒有設(shè)置對嗎?
6類4對utp電纜用于什么地方
用TVP5150做得視頻解碼芯片然后過FPGA處理,有黑線怎么處理?
基于FPGA的數(shù)字時鐘設(shè)計

使用DS90CR286A輸入穩(wěn)定的40M差分時鐘,輸出時鐘時有時無,為什么?
基于FPGA的實時時鐘設(shè)計

評論