⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨


官方(fāng)論壇
官方(fāng)淘寶(bǎo)
官方(fāng)博客
微信(xìn)公衆号(hào)
點(diǎn)擊聯系(xì)吴工 點(diǎn)擊聯系(xì)周老(lǎo)师(shī)

FPGA时(shí)序約束(shù)分(fēn)享02_时(shí)鐘(zhōng)約束(shù)

發(fà)布(bù)时(shí)間(jiān):2023-04-13   作者(zhě):luoxiaoling 浏覽量(liàng):

第(dì)一(yī)章(zhāng) FPGA时(shí)序約束(shù)分(fēn)享02_时(shí)鐘(zhōng)約束(shù)

作者(zhě):潘文(wén)明(míng)

上(shàng)一(yī)篇(piān)《FPGA时(shí)序約束(shù)分(fēn)享01_約束(shù)四(sì)大步驟》一(yī)文(wén)中(zhōng),介紹了(le)时(shí)序約束(shù)的(de)四(sì)大步驟。

 

上(shàng)图(tú)是(shì)四(sì)大步驟,并且每个(gè)步驟都分(fēn)别展(zhǎn)開(kāi)了(le)各(gè)種(zhǒng)情(qíng)況,後(hòu)續可(kě)以(yǐ)參考对(duì)照,分(fēn)别添加时(shí)序約束(shù)。本(běn)文(wén)講述上(shàng)图(tú)中(zhōng)的(de)第(dì)1點(diǎn):时(shí)鐘(zhōng)約束(shù)。

时(shí)鐘(zhōng)約束(shù)分(fēn)三(sān)種(zhǒng)情(qíng)況:輸入(rù)时(shí)鐘(zhōng)、PLL等衍生(shēng)时(shí)鐘(zhōng)以(yǐ)及(jí)自(zì)己分(fēn)頻的(de)时(shí)鐘(zhōng)。而(ér)其中(zhōng)輸入(rù)时(shí)鐘(zhōng)又可(kě)再分(fēn)三(sān)種(zhǒng),第(dì)一(yī)種(zhǒng)是(shì)輸入(rù)管(guǎn)脚是(shì)CLK的(de),第(dì)二(èr)種(zhǒng)是(shì)差分(fēn)时(shí)鐘(zhōng),最(zuì)後(hòu)一(yī)種(zhǒng)是(shì)GT或(huò) 恢複的(de)一(yī)个(gè)时(shí)鐘(zhōng)。下(xià)面(miàn)分(fēn)别展(zhǎn)開(kāi)描述。

第(dì)1节(jié) 輸入(rù)时(shí)鐘(zhōng)

輸入(rù)时(shí)鐘(zhōng)根(gēn)據(jù)管(guǎn)脚情(qíng)況,有(yǒu)三(sān)種(zhǒng)三(sān)種(zhǒng),第(dì)一(yī)種(zhǒng)是(shì)輸入(rù)管(guǎn)脚是(shì)CLK的(de),第(dì)二(èr)種(zhǒng)是(shì)差分(fēn)时(shí)鐘(zhōng),最(zuì)後(hòu)一(yī)種(zhǒng)是(shì)GT或(huò) 恢複的(de)一(yī)个(gè)时(shí)鐘(zhōng)。

1.1 輸入(rù)管(guǎn)脚CLK


    时(shí)鐘(zhōng)直(zhí)接從管(guǎn)脚輸入(rù),如(rú)上(shàng)图(tú)所(suǒ)示。这(zhè)種(zhǒng)是(shì)最(zuì)常見(jiàn)的(de)一(yī)个(gè)情(qíng)況,包(bāo)括明(míng)德揚的(de)MP603MP801学習板时(shí)鐘(zhōng)都是(shì)由(yóu)外(wài)部(bù)的(de)晶振産生(shēng),然後(hòu)直(zhí)接輸入(rù)管(guǎn)脚進(jìn)来(lái)的(de)这(zhè)種(zhǒng)情(qíng)況的(de)生(shēng)成(chéng)时(shí)鐘(zhōng)約束(shù)是(shì)最(zuì)簡單的(de),其格式如(rú)下(xià):

create_clock -name SysClk -period 10 -waveform {0 5} [get_ports Clk]

create_clock是(shì)生(shēng)成(chéng)約束(shù)約束(shù)命令。

name後(hòu)面(miàn)表(biǎo)示給(gěi)这(zhè)个(gè)时(shí)鐘(zhōng)命名,这(zhè)里(lǐ)命名为(wèi)SysClk,您可(kě)以(yǐ)命为(wèi)其他(tā)您所(suǒ)想(xiǎng)要(yào)的(de)名字(zì),即使跟代(dài)碼中(zhōng)的(de)时(shí)鐘(zhōng)名不(bù)同(tóng),都是(shì)可(kě)以(yǐ)的(de)。

period後(hòu)面(miàn)表(biǎo)示約定(dìng)該时(shí)鐘(zhōng)的(de)周期(qī),默認單位为(wèi)納秒(miǎo)。

waveform後(hòu)面(miàn)表(biǎo)示該时(shí)鐘(zhōng)在(zài)一(yī)个(gè)周期(qī)內(nèi)的(de)上(shàng)升(shēng)沿和(hé)下(xià)降沿时(shí)間(jiān)點(diǎn)。{0 5}表(biǎo)示时(shí)鐘(zhōng)在(zài)第(dì)0时(shí)刻上(shàng)升(shēng),在(zài)第(dì)5时(shí)鐘(zhōng)下(xià)降。通(tòng)过(guò)这(zhè)个(gè),設置了(le)时(shí)鐘(zhōng)的(de)占空比。

get_ports这(zhè)里(lǐ)指定(dìng)了(le)約束(shù)的(de)对(duì)象(xiàng),即对(duì)應(yìng)代(dài)碼中(zhōng)的(de)哪个(gè)信(xìn)号(hào),get_ports Clk,表(biǎo)示这(zhè)个(gè)时(shí)鐘(zhōng)就(jiù)是(shì)代(dài)碼或(huò)上(shàng)图(tú)中(zhōng)的(de)Clk

这(zhè)个(gè)时(shí)鐘(zhōng)約束(shù)是(shì)最(zuì)常用(yòng)的(de),只(zhī)要(yào)參照这(zhè)種(zhǒng)格式生(shēng)成(chéng)晚(wǎn)就(jiù)可(kě)以(yǐ)了(le)。


 

假設说(shuō)該时(shí)鐘(zhōng)輸入(rù)後(hòu)經(jīng)过(guò)了(le)一(yī)个(gè)內(nèi)部(bù)的(de)PLL或(huò)者(zhě)MMCM(时(shí)鐘(zhōng)管(guǎn)理單元(yuán))後(hòu),再作为(wèi)工作时(shí)鐘(zhōng),此(cǐ)種(zhǒng)情(qíng)況下(xià),仍然是(shì)要(yào)对(duì)Clk約束(shù),其約束(shù)方(fāng)法跟前(qián)面(miàn)是(shì)一(yī)樣(yàng)的(de)。注意(yì),这(zhè)里(lǐ)说(shuō)的(de)是(shì)約束(shù)上(shàng)面(miàn)的(de)时(shí)鐘(zhōng)Clk,而(ér)不(bù)是(shì)MMCM的(de)輸出(chū)时(shí)鐘(zhōng)。


1.2 差分(fēn)时(shí)鐘(zhōng)

差分(fēn)时(shí)鐘(zhōng)是(shì)指通(tòng)过(guò)管(guǎn)脚的(de)P端和(hé)N端共(gòng)同(tóng)進(jìn)来(lái)的(de),通(tòng)常應(yìng)該到(dào)高(gāo)頻或(huò)者(zhě)精度(dù) 很高(gāo)的(de)场合,例如(rú)明(míng)德揚的(de)MP802MP5620,以(yǐ)及(jí)各(gè)種(zhǒng)核心(xīn)板,基本(běn)上(shàng)外(wài)面(miàn)都有(yǒu)差分(fēn)晶振,有(yǒu)差分(fēn)时(shí)鐘(zhōng)的(de)輸入(rù)。

如(rú)果(guǒ)是(shì)差分(fēn)时(shí)鐘(zhōng),又是(shì)如(rú)何約束(shù)呢?

注意(yì)下(xià),差分(fēn)信(xìn)号(hào)在(zài)芯片(piàn)上(shàng),肯定(dìng)是(shì)占用(yòng)了(le)两(liǎng)个(gè)管(guǎn)脚位置,但在(zài)代(dài)碼中(zhōng)不(bù)一(yī)定(dìng)。在(zài)XILINX的(de)頂层接口(kǒu)代(dài)碼中(zhōng),差分(fēn)时(shí)鐘(zhōng)会(huì)对(duì)應(yìng)两(liǎng)个(gè)接口(kǒu)信(xìn)号(hào),分(fēn)别 P端和(hé)N端;而(ér)对(duì)于(yú)ALTERA,頂层接口(kǒu)信(xìn)号(hào)只(zhī)有(yǒu)一(yī)个(gè),不(bù)用(yòng)區(qū)分(fēn)出(chū)P端和(hé)N端,在(zài)管(guǎn)脚定(dìng)義时(shí),再来(lái)區(qū)分(fēn)出(chū)P和(hé)N

对(duì)于(yú)ALTERA的(de)差分(fēn)时(shí)鐘(zhōng)約束(shù),其與(yǔ)單端輸入(rù)約束(shù)方(fāng)法完全(quán)一(yī)樣(yàng)。

对(duì)于(yú)XILINX的(de)差分(fēn)时(shí)鐘(zhōng)約束(shù),只(zhī)需要(yào)約束(shù)P端就(jiù)可(kě)以(yǐ)了(le),即:

create_clock -name SysClk -period 10 -waveform {0 5} [get_ports Clk_p]


1.3 GT或(huò)恢複的(de)时(shí)鐘(zhōng)

 


第(dì)三(sān)種(zhǒng)是(shì)GT或(huò)恢複的(de)时(shí)鐘(zhōng),即使用(yòng)了(le)高(gāo)速收(shōu)發(fà)器的(de)情(qíng)形,最(zuì)常見(jiàn)的(de)就(jiù)是(shì)光(guāng)纤接口(kǒu)了(le)。

在(zài)高(gāo)速收(shōu)發(fà)器管(guǎn)脚中(zhōng),是(shì)沒(méi)有(yǒu)时(shí)鐘(zhōng)的(de),时(shí)鐘(zhōng)已經(jīng)嵌入(rù)到(dào)數據(jù)里(lǐ)面(miàn)。接收(shōu)的(de)时(shí)候,我(wǒ)们(men)使用(yòng)高(gāo)速收(shōu)發(fà)器如(rú)GTX、GTY IP核接收(shōu)數據(jù),并且從數據(jù)时(shí)提(tí)取(qǔ)出(chū)时(shí)鐘(zhōng)。这(zhè)个(gè)恢複出(chū)来(lái)的(de)时(shí)鐘(zhōng)就(jiù)是(shì)此(cǐ)種(zhǒng)情(qíng)形,例如(rú)上(shàng)图(tú)中(zhōng)的(de)GT模块(kuài),就(jiù)是(shì)FPGA內(nèi)部(bù)使用(yòng)的(de)一(yī)个(gè)IP核,其輸出(chū)了(le)时(shí)鐘(zhōng)TXCLK。

在(zài)这(zhè)種(zhǒng)情(qíng)況下(xià),我(wǒ)们(men)需要(yào)約束(shù)这(zhè)个(gè)恢複出(chū)来(lái)的(de)时(shí)鐘(zhōng)。按前(qián)面(miàn)方(fāng)式,同(tóng)樣(yàng)也(yě)是(shì)使用(yòng)create_clock,定(dìng)義时(shí)鐘(zhōng)周期(qī)、占空比等,但約束(shù)对(duì)象(xiàng)需要(yào)注意(yì)一(yī)下(xià),不(bù)是(shì)通(tòng)过(guò)get_ports,而(ér)是(shì)通(tòng)过(guò)get_pins找(zhǎo)到(dào)对(duì)象(xiàng),該对(duì)象(xiàng)是(shì)恢複出(chū)的(de)时(shí)鐘(zhōng),如(rú)上(shàng)图(tú)中(zhōng)的(de)GT/TXOUTCLK,即:

create_clock -name txClk -period 6.667-waveform {0 5} [get_pins GT/TXOUTCLK]

上(shàng)面(miàn)産生(shēng)了(le)一(yī)个(gè)名为(wèi)txClk的(de)約束(shù),其对(duì)象(xiàng)为(wèi)GT/TXOUTCLK,周期(qī)为(wèi)6.667,即133M

对(duì)于(yú)get_ports和(hé)get_pins的(de)區(qū)别,可(kě)以(yǐ)簡單認为(wèi),get_ports是(shì)FPGA頂层的(de)接口(kǒu),該接口(kǒu)是(shì)要(yào)連(lián)到(dào)FPGA芯片(piàn)管(guǎn)脚上(shàng)的(de);get_pins是(shì)模块(kuài)內(nèi)的(de)輸出(chū)管(guǎn)脚。如(rú)果(guǒ)大家(jiā)不(bù)清(qīng)楚是(shì)用(yòng)哪个(gè),可(kě)以(yǐ)使用(yòng)工具,工具会(huì)提(tí)醒您怎麼(me)找(zhǎo)出(chū)这(zhè)个(gè)信(xìn)号(hào)来(lái)的(de)。

注意(yì)上(shàng)面(miàn)找(zhǎo)到(dào)的(de)是(shì)GT/TXOUTCLK,而(ér)不(bù)是(shì)图(tú)中(zhōng)的(de)TXCLK。这(zhè)是(shì)因(yīn)为(wèi)TXCLK是(shì)例化(huà)的(de)信(xìn)号(hào),有(yǒu)时(shí)候是(shì)找(zhǎo)不(bù)出(chū)来(lái)的(de)。这(zhè)个(gè)时(shí)候,需要(yào)設計(jì)者(zhě)找(zhǎo)到(dào)GT模块(kuài),再仔细(xì)辨識出(chū)时(shí)鐘(zhōng)信(xìn)号(hào)是(shì)哪个(gè),非(fēi)常考验(yàn)設計(jì)师(shī)的(de)經(jīng)验(yàn)。

第(dì)2节(jié) PLL等衍生(shēng)时(shí)鐘(zhōng)

 

上(shàng)图(tú)是(shì)时(shí)鐘(zhōng)Clk經(jīng)过(guò)內(nèi)部(bù)的(de)MMCM时(shí)鐘(zhōng)管(guǎn)理單元(yuán),該时(shí)鐘(zhōng)管(guǎn)理單元(yuán)在(zài)此(cǐ)基礎上(shàng)倍頻或(huò)者(zhě)分(fēn)頻等,産生(shēng)輸出(chū)时(shí)鐘(zhōng)CLKOUT0,該时(shí)鐘(zhōng)用(yòng)于(yú)驅動(dòng)REGA和(hé)REGB。在(zài)前(qián)面(miàn)的(de)介紹里(lǐ),我(wǒ)们(men)知道(dào)需要(yào)对(duì)Clk進(jìn)行約束(shù),使用(yòng)的(de)是(shì)create_clock命令。那(nà)麼(me)上(shàng)图(tú)中(zhōng)的(de)CLKOUT0要(yào)不(bù)要(yào)約束(shù)呢?

对(duì)于(yú)PLL和(hé)MMCM,一(yī)般VIVIDAOISE和(hé)QUARTUS工具是(shì)可(kě)以(yǐ)推導出(chū)該时(shí)鐘(zhōng)約束(shù)的(de),因(yīn)为(wèi)我(wǒ)们(men)在(zài)生(shēng)成(chéng)IP核的(de)时(shí)候,已經(jīng)設置了(le)該时(shí)鐘(zhōng)的(de)輸入(rù)和(hé)輸出(chū) 时(shí)鐘(zhōng)頻率、相位等信(xìn)息,通(tòng)过(guò)这(zhè)些信(xìn)息,工具就(jiù)可(kě)以(yǐ)推導出(chū)时(shí)鐘(zhōng)約束(shù)。

因(yīn)此(cǐ),对(duì)于(yú)XILINX可(kě)以(yǐ)不(bù)用(yòng)約束(shù)PLL和(hé)MMCM産生(shēng)的(de)时(shí)鐘(zhōng);对(duì)于(yú)ALTERA,也(yě)可(kě)以(yǐ)自(zì)動(dòng)推導的(de),但需要(yào)添加如(rú)下(xià)命令,才会(huì)自(zì)動(dòng)推導:

derive_pll_clocks

虽然工具可(kě)以(yǐ)自(zì)動(dòng)推導PLL和(hé)MMCM産生(shēng)的(de)时(shí)鐘(zhōng)約束(shù),但是(shì)其約束(shù)时(shí)鐘(zhōng)名是(shì)不(bù)受設計(jì)师(shī)控制或(huò)預見(jiàn)的(de)。这(zhè)会(huì)带(dài)来(lái)什麼(me)問(wèn)題(tí)呢?

我(wǒ)们(men)産生(shēng)时(shí)鐘(zhōng)約束(shù)後(hòu),通(tòng)常還(huán)会(huì)在(zài)基于(yú)此(cǐ)时(shí)鐘(zhōng)産生(shēng)其他(tā)約束(shù),例如(rú)下(xià)面(miàn)是(shì)input delay的(de)約束(shù):

set_input_delay -clock sysclk -max 4 [get_ports ain]

上(shàng)面(miàn)是(shì)input delay的(de)約束(shù),对(duì)象(xiàng)是(shì)ain,但注意(yì)看(kàn),-clock後(hòu)面(miàn)的(de)sysclk是(shì)时(shí)鐘(zhōng)約束(shù)産生(shēng)的(de)时(shí)鐘(zhōng)名(注意(yì)是(shì)約束(shù)名,不(bù)是(shì)代(dài)碼中(zhōng)的(de)时(shí)鐘(zhōng)信(xìn)号(hào)),这(zhè)说(shuō)明(míng)input delay約束(shù)时(shí),是(shì)依賴时(shí)鐘(zhōng)約束(shù)名的(de)。

如(rú)果(guǒ)由(yóu)工具自(zì)動(dòng)推導PLL和(hé)MMCM産生(shēng)时(shí)鐘(zhōng)約束(shù),那(nà)麼(me)名字(zì)就(jiù)不(bù)知道(dào),或(huò)者(zhě)虽然知道(dào)了(le),但可(kě)能(néng)稍微改下(xià)代(dài)碼名稱又變(biàn)了(le)。这(zhè)樣(yàng)会(huì)導致(zhì)依賴于(yú)此(cǐ)名字(zì)的(de)其他(tā)約束(shù),会(huì)存在(zài)失效而(ér)不(bù)知道(dào)的(de)风险。

因(yīn)此(cǐ),明(míng)德揚建議对(duì)PLL和(hé)MMCM産生(shēng)时(shí)鐘(zhōng)添加約束(shù),确定(dìng)时(shí)鐘(zhōng)名。

 

例如(rú)上(shàng)面(miàn)的(de)電(diàn)路(lù),添加如(rú)下(xià)約束(shù)

create_clcok name clk_200 period 5 [get_ports Clk]

create_generated_clock  -name my_clk [get_pins MMCM/CLKOUT0]

-source [get_pins MMCM/CLKIN]

-master_clock clk_200

首先(xiān)通(tòng)过(guò)create_clock命令对(duì)輸入(rù)管(guǎn)脚Clk約束(shù),周期(qī)为(wèi)5,命名为(wèi)Clk_200。然後(hòu)通(tòng)过(guò)create_geneated_clock对(duì)MMCM産生(shēng)的(de)CLKOUT0約束(shù),命名为(wèi)my_clk;約束(shù)对(duì)象(xiàng)为(wèi)MMCM/CLKOUT0;通(tòng)过(guò)-source表(biǎo)明(míng)来(lái)源于(yú)MMCM/CLKIN,即MMCM的(de)輸入(rù)管(guǎn)脚;通(tòng)过(guò)-master_clock表(biǎo)明(míng)其主(zhǔ)时(shí)鐘(zhōng)是(shì)clk_200

通(tòng)过(guò)上(shàng)面(miàn)方(fāng)法,就(jiù)可(kě)以(yǐ)确定(dìng)MMCM的(de)时(shí)鐘(zhōng)名,已經(jīng)固定(dìng)为(wèi)my_clk,不(bù)会(huì)再變(biàn)了(le)。前(qián)面(miàn)提(tí)及(jí)的(de)input delay約束(shù),就(jiù)会(huì)變(biàn)为(wèi)如(rú)下(xià):

set_input_delay -clock my_clk -max 4 [get_ports ain]


第(dì)3节(jié) 自(zì)己分(fēn)頻的(de)时(shí)鐘(zhōng)

 


第(dì)三(sān)種(zhǒng)就(jiù)是(shì)自(zì)己分(fēn)頻的(de)时(shí)鐘(zhōng)。如(rú)上(shàng)图(tú)所(suǒ)示,CLK1經(jīng)过(guò)一(yī)个(gè)D觸發(fà)器,通(tòng)过(guò)該觸發(fà)器二(èr)分(fēn)頻産生(shēng)了(le)时(shí)鐘(zhōng)CLK2

首先(xiān)说(shuō)明(míng),明(míng)德揚不(bù)推薦使用(yòng)此(cǐ)方(fāng)法来(lái)産生(shēng)时(shí)鐘(zhōng),我(wǒ)们(men)建議全(quán)部(bù)使用(yòng)PLL等来(lái)産生(shēng)时(shí)鐘(zhōng)。如(rú)果(guǒ)确实要(yào)用(yòng)到(dào)分(fēn)頻时(shí)鐘(zhōng)时(shí),那(nà)就(jiù)要(yào)記(jì)得做时(shí)鐘(zhōng)約束(shù)。这(zhè)種(zhǒng)情(qíng)況下(xià)要(yào)怎麼(me)進(jìn)行約束(shù)呢?下(xià)面(miàn)是(shì)推薦的(de)約束(shù)方(fāng)法。


    create_clcok name CLK1 period 5 [get_ports CKP1]

            

           create_generated_clock  -name CLK2 [get_pins REGA/Q]

                                                       

                                                        -source [get_ports CKP1] divide_by 2







首先(xiān)通(tòng)过(guò)create_clock産生(shēng)对(duì)管(guǎn)脚CKP1的(de)时(shí)鐘(zhōng)約束(shù),周期(qī)定(dìng)为(wèi)5,名字(zì)为(wèi)CLK1

然後(hòu)通(tòng)过(guò)create_generated_clock産生(shēng)二(èr)分(fēn)頻後(hòu)的(de)时(shí)鐘(zhōng)約束(shù),对(duì)象(xiàng)是(shì)REGA/Q,即D觸發(fà)器的(de)輸出(chū)信(xìn)号(hào);然後(hòu)要(yào)指示該时(shí)鐘(zhōng)来(lái)自(zì)于(yú)CKP1,通(tòng)过(guò)-source来(lái)指定(dìng);最(zuì)後(hòu)還(huán)要(yào)说(shuō)明(míng)頻率,通(tòng)过(guò)-divide_by来(lái)说(shuō)明(míng)幾(jǐ)分(fēn)頻,-divide_by 2是(shì)表(biǎo)示二(èr)分(fēn)頻,即CKP1时(shí)鐘(zhōng)的(de)一(yī)半頻率。

注意(yì)的(de)是(shì),一(yī)定(dìng)要(yào)通(tòng)过(guò)-divide_by来(lái)指定(dìng)頻率,因(yīn)为(wèi)工具无法從您的(de)代(dài)碼中(zhōng)推導出(chū)頻率的(de)。

強(qiáng)烈建議,分(fēn)頻时(shí)鐘(zhōng)一(yī)定(dìng)要(yào)約束(shù),經(jīng)验(yàn)之談,沒(méi)有(yǒu)約束(shù)的(de)話(huà),时(shí)鐘(zhōng)是(shì)不(bù)稳定(dìng)的(de),会(huì)産生(shēng)莫名其妙的(de)問(wèn)題(tí)的(de),这(zhè)方(fāng)面(miàn)我(wǒ)们(men)已經(jīng)吃过(guò)虧的(de)。


第(dì)4节(jié) 總(zǒng)結與(yǔ)建議

好(hǎo)了(le),我(wǒ)们(men)在(zài)这(zhè)里(lǐ)再總(zǒng)結一(yī)下(xià)。

首先(xiān),本(běn)文(wén)将时(shí)鐘(zhōng)約束(shù)分(fēn)了(le)好(hǎo)幾(jǐ)種(zhǒng)情(qíng)況,制成(chéng)了(le)一(yī)个(gè)表(biǎo)。您可(kě)以(yǐ)根(gēn)據(jù)实際情(qíng)況,对(duì)照步驟表(biǎo),從而(ér)制定(dìng)自(zì)己需要(yào)在(zài)我(wǒ)約束(shù)。

其次(cì),注意(yì)一(yī)下(xià)約束(shù)的(de)优先(xiān)級。

自(zì)定(dìng)義約束(shù)覆蓋工具推導的(de)約束(shù)。前(qián)面(miàn)講过(guò),有(yǒu)些約束(shù)工具是(shì)可(kě)以(yǐ)推導出(chū)来(lái)的(de)。如(rú)果(guǒ)自(zì)己又定(dìng)義了(le)該对(duì)象(xiàng)的(de)約束(shù),那(nà)麼(me)这(zhè)个(gè)約束(shù)将覆蓋工具推導出(chū)来(lái)的(de)約束(shù),即定(dìng)義的(de)約束(shù)有(yǒu)效,推導出(chū)来(lái)的(de)約束(shù)无效。

後(hòu)定(dìng)義的(de)約束(shù)覆蓋先(xiān)定(dìng)義的(de)約束(shù)。例如(rú),在(zài)開(kāi)始的(de)时(shí)候定(dìng)義了(le)一(yī)个(gè)对(duì)CLK的(de)約束(shù),定(dìng)義为(wèi)100M,後(hòu)面(miàn)又有(yǒu)一(yī)个(gè)对(duì)CLK的(de)約束(shù),定(dìng)義为(wèi)200M,那(nà)麼(me)以(yǐ)哪个(gè)为(wèi)準呢?那(nà)就(jiù)以(yǐ)後(hòu)面(miàn)的(de)为(wèi)準,約束(shù)为(wèi)200M

但有(yǒu)时(shí)候需要(yào)对(duì)多(duō)个(gè)約束(shù)同(tóng)时(shí)有(yǒu)效,即多(duō)个(gè)約束(shù)共(gòng)存,那(nà)麼(me)可(kě)以(yǐ)在(zài)約束(shù)後(hòu)面(miàn)加上(shàng)-add,以(yǐ)此(cǐ)表(biǎo)明(míng)不(bù)要(yào)覆蓋前(qián)面(miàn)約束(shù),而(ér)是(shì)共(gòng)同(tóng)有(yǒu)效。


 

下(xià)一(yī)篇(piān)文(wén)章(zhāng),我(wǒ)们(men)将具體(tǐ)探讨input delays約束(shù)”的(de)內(nèi)容,講解(jiě)各(gè)種(zhǒng)情(qíng)況下(xià)的(de)时(shí)序約束(shù)方(fāng)法。需要(yào)更(gèng)多(duō)更(gèng)詳细(xì)的(de)資料和(hé)文(wén)檔,可(kě)以(yǐ)找(zhǎo)作者(zhě)了(le)解(jiě)領取(qǔ)。




温(wēn)馨提(tí)示:明(míng)德揚除了(le)培訓学習還(huán)有(yǒu)項目承接業务,擅长的(de)項目
主(zhǔ)要(yào)包(bāo)括的(de)方(fāng)向(xiàng)有(yǒu)以(yǐ)下(xià)幾(jǐ)个(gè)方(fāng)面(miàn):



1. MIPI視頻拼接


2. SLVS-EC轉(zhuǎn)MIPI接口(kǒu)(IMX472 IMX492)

3. PCIE采集系(xì)統

4. 图(tú)像項目

5. 高(gāo)速多(duō)通(tòng)道(dào)ADDA系(xì)統

6. 基于(yú)FPGA板卡(kǎ)研發(fà)

7. 前(qián)端模拟采集、射頻、電(diàn)荷靈敏前(qián)置放(fàng)大器


需要(yào)了(le)解(jiě)相關(guān)信(xìn)息可(kě)以(yǐ)聯系(xì)江老(lǎo)师(shī)18022859964(微信(xìn)同(tóng)号(hào))
明(míng)德揚科技教育


   拓展(zhǎn)閱读(dú)
⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨