久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用Quartus II Timequest Timing Analyzer進行時序分析 :實例講解 (三)

 灞河之濱 2018-08-02

上面已經(jīng)把DAC7512控制器中所有的時鐘都創(chuàng)建好了,。下面我們再額外討論一下關(guān)于時鐘屬性方面的一些問題和在做時序分析時的處理方法,。

     對于具有單一時鐘的系統(tǒng),設(shè)計和時序分析都相對簡單,。但是現(xiàn)在很多設(shè)計都有多個甚至幾十個時鐘乃至更多的時鐘,。比如說DAC7512控制器,在設(shè)計中用到的時鐘實際上是有3個,,CLK25M,,CLK50M和DA_SCLK。在對多時鐘設(shè)計進行時序分析的時候,,我們首先要搞清楚各時鐘之間的關(guān)系,。

     當設(shè)計中有多個時鐘時,時鐘之間可能存在三種關(guān)系,,分別是同步,,異步和互斥,。

     如果兩個或者多個時鐘具有相同的source和固定的相位差,,那么這些時鐘是同步時鐘。在DAC7512的控制器里,,CLK25M,,CLK50M和DA_SCLK的source都是CLK_IN,所以可以認為他們?nèi)齻€是同步的,。

     如果兩個或者多個時鐘之間沒有任何關(guān)系,,則稱之為異步時鐘,。比如說CLKA來源于晶振A,而CLKB來源于其他系統(tǒng)的輸入,,CLKA和CLKB就為異步時鐘,。對于異步時鐘來講,兩個時鐘域的時鐘沿有可能在任意時刻出現(xiàn),,相互之間不會有任何關(guān)系,。如果一條timing path的起始點是在CLKA,而終點在CLKB,,即這條timing path跨越了CLKA和CLKB兩個時鐘域,,那么STA軟件是不會對該timing path做分析的。實際上這等同于在這兩個時鐘之間設(shè)定了一條false path,。

     如果兩個時鐘不會相互作用,,那么稱這兩個時鐘為互斥的。舉個例子來講,,PCIE GEN2可以工作在GEN1和GEN2兩種模式,,在GEN1模式下,時鐘為125MHz,,在GEN2的模式下,,時鐘為250MHz,但在某一個特定時間里,,時鐘只可能為125MHz或者250MHz,,這兩個頻率的時鐘不會共存,相互之間也不會有相互作用,。

    下圖給出了時鐘的三種關(guān)系的例子,。

clip_image002

     做時序分析時,在創(chuàng)建好所有的時鐘后,,需要定義這些時鐘之間的關(guān)系,。我們可以把同步時鐘放到一個group中,然后在定義時鐘之間的關(guān)系時,,可以使用group來定義,。在默認情況下,TimeQuest認為設(shè)計中所有的時鐘都是同步的,,并把所有的時鐘都放在同一個group里,。如果設(shè)計中有異步時鐘,就需要用命令把異步時鐘分組并定義出來,。

     在TimeQuest里,,我們用set_clock_groups來定義時鐘的group。下面是命令的語法,更詳細的說明請參照quartusII的幫助系統(tǒng),。

Syntax

set_clock_groups [-h | -help] [-long_help] [-asynchronous] [-exclusive] -group <names> [-logically_exclusive] [-physically_exclusive]

     在DAC7512控制器里,,CLK25M,CLK50M和DA_SCLK三個時鐘是同步時鐘,。默認情況下,,它們已經(jīng)被軟件放到了同一個group里,所以我們不需要對其做任何的處理,。

    但假設(shè)CLK25M屬于一個group,,而CLK50M和DA_SCLK屬于另外一個group,我們就要用set_clock_groups命令把二者設(shè)為異步時鐘,,命令如下:

set_clock_groups -asynchronous -group {CLK25M} -group {CLK50M DA_SCLK}

     我們對比一下把CLK25M設(shè)定為CLK50M的異步時鐘前后TimeQuest對時序分析的處理情況來看這個命令的作用,。下面是在添加這個命令前后TimeQuest中Report clock transfer的結(jié)果。

在沒有添加這個命令前,,軟件默認三個時鐘都是同步時鐘,,所以會分析并報告出三個時鐘之間所有的timing path。

clip_image004

       在添加這個命令以后,,軟件認為CLK25M和CLK50M/DA_SCLK是異步時鐘,,所以就直接將CLK25M和CLK50M/DA_SCLK之間的timing path設(shè)為false path。不再做更多的分析,。

clip_image006

        那如果我們假設(shè)CLK25M和CLK50M是互斥時鐘的話,,又會是什么情況呢?用下面的命令將CLK25M和CLK50M設(shè)為互斥時鐘:

set_clock_groups -exclusive -group {CLK25M} -group {CLK50M}

       還是看TimeQuest中Report clock transfer的結(jié)果,,可以發(fā)現(xiàn)CLK25M和CLK50M之間的timing path都被設(shè)定為false path了,。

clip_image008

     再看一下關(guān)于Clock uncertainty的知識

     簡單的說,Clock uncertainty是指時鐘邊沿實際到達時間與理論到達時間之間的差異和變化,。在做時序分析的時候,,是需要加上clock uncertainty來計算timing path的延時的。Clock uncertainty的大小是比較難確定的,,在ASIC設(shè)計中,,clock uncertainty的值往往要根據(jù)所使用的工藝,以往項目的經(jīng)驗等各種因素來決定,。但在FPGA的設(shè)計中,,我們能參考的資料不多,特別是對于PLL輸出的時鐘,,因為我們對PLL本身的參數(shù)并不是非常的了解,,所以很難給出合適的clock uncertainty的值。

     在FPGA設(shè)計中定義PLL的時候,,我們要定義參考時鐘的精度,,這會直接影響到PLL輸出時鐘的clock uncertainty的值,。如下圖所示,,25.000MHz即為輸入基準時鐘的精度,。

clip_image009

      有了輸入時鐘的精度,TimeQuest會根據(jù)PLL本身的屬性,,自動計算出各輸出時鐘的uncertainty值,。如果要在設(shè)計中由軟件加入clock uncertainty的值,可以使用下面的命令:

derive_clock_uncertainty

     除非你對系統(tǒng)的時鐘有充分的理解并確切知道時鐘的屬性,,否則不建議使用set_clock_uncertainty命令直接定義FPGA中各時鐘的uncertainty屬性,。推薦使用derive_clock_uncertainty命令由軟件自動計算并添加。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多