0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

時序約束連載04~隨路時鐘

jf_pJlTbmA9 ? 來源:明德?lián)PFPGA科教 ? 作者:明德?lián)PFPGA科教 ? 2023-07-11 17:19 ? 次閱讀

本文講一下隨路時鐘,什么是隨路的時鐘呢?

第1節(jié) 隨路時鐘的概念

如圖1是一個SDRAM接口時序圖,大家如果做外部接口,使用過各種芯片,一般也能看到類似這樣接口時序圖。CLK是時鐘信號,INPUT代表輸入SDRAM的各種信號,OUTPUT表示SDRAM輸出的各種信號線。其實(shí)芯片接口就是一些寄存器,既然是寄存器,那么這些寄存器想要穩(wěn)定寄存數(shù)據(jù),就會對數(shù)據(jù)信號有建立時間和保持時間相關(guān)的要求。

100572377-308714-tu1sdramjiekoushixutu.png

圖1 SDRAM接口時序圖

如圖1所示,在CLK的上升沿時,要求INPUT必須提前tCS到達(dá),并且延遲tCH,所以該接口寄存器的建立時間為tCS,保持時間為tCH,最后通過數(shù)據(jù)手冊可以獲取這些參數(shù)對應(yīng)數(shù)值。那么在設(shè)計時序時就要考慮建立時間和保持時間對數(shù)據(jù)的影響,即INPUT要在時鐘上升沿的建立時間之前穩(wěn)定,并且在上升沿之后最少穩(wěn)定保持時間對應(yīng)的時間。這是SDRAM的一個接口時序要求,也與多數(shù)的芯片接口時序類似。

這是芯片接口需要滿足的時序要求,那我們在做實(shí)際項(xiàng)目的時候,如何去滿足這個下游器件的時序要求呢?

第2節(jié) 實(shí)際應(yīng)用中,如何做到滿足

2.1建立時間、保持時間的影響因素
那在設(shè)計當(dāng)中如何做才能滿足這個時序要求,首先分析一下影響建立時間和保持時間的因素有哪些呢?

其實(shí)影響建立時間、保持時間的因素是很多的,例如說FPGA內(nèi)部的寄存器傳輸延時、寄存器到管腳的延時和PCB板上的走線延時等等,這些延時最終都會影響時鐘與數(shù)據(jù)的關(guān)系,從而就會影響到下游器件的輸入數(shù)據(jù)到底能不能滿足芯片接口時序的建立時間和保持時間要求了。

2.1.1 理想波形
如圖2是一個理想的波形,信號a的波形在時鐘的上升沿發(fā)生變化,在第2個時鐘上升沿到達(dá)時,信號a從低電平變?yōu)楦唠娖?,在?個時鐘上升沿到達(dá)時,信號a由高電平變?yōu)榈碗娖?。在兩次變化過程中,沒有任何延遲。能夠在時鐘變化時立即發(fā)生相應(yīng)的變化,這種理想的波形,它的數(shù)據(jù)會立即到達(dá)下一個寄存器,會發(fā)現(xiàn)時鐘上升沿之前的時間周期就是時鐘周期T,而且在時鐘上升沿之后穩(wěn)定的時間是0。由此,很明顯理想觀點(diǎn)是不滿足保持時間要求的。

100572377-308715-tu2lixiangdeshixutu.png

圖2 理想的時序圖

2.1.2 帶有寄存器延時、寄存器到管腳延時的波形
如果信號a在傳輸時經(jīng)過寄存器延時、寄存器到FPGA管腳的傳輸延遲Tco后,那么可能看到FPGA管腳上出來的信號相位關(guān)系就變成如圖3所示。

100572377-308716-tu3yinrujicunqiyanchihejicunqidaoguanjiaoyanshi.png

圖3 引入寄存器延遲和寄存器到管腳延時

clk是時鐘,信號a可能對時鐘會有一定的延時。由圖3中可以看到,信號a會在時鐘的第2個上升沿之后的一段時間才發(fā)生變化,這是由于寄存器延時造成的。在時鐘上升沿第3個去采樣時候,才發(fā)現(xiàn)信號a會提前時鐘周期T-Tco這么長的時間變?yōu)榉€(wěn)定。上升沿之后保持了Tco,有時候延時多久就保持多久,對不對?

2.1.3 加上走線或其他延時(Tpcb)
實(shí)際波形如下:

100572377-308717-shijiboxing.png

增加延遲,信號可能會相對時鐘往后延遲,在時鐘上升沿之前的時間會保持多久?在時鐘2時信號a變高,經(jīng)過寄存器延時(tco)之后,在經(jīng)過走線延遲等等,信號傳遞時鐘3,因此時鐘上升沿前的時間為(T-tco-tpcb),上升沿后保持的時間為(tco+tpcb)。那這是正常的延時情況。

那么只要滿足T-tco-tpcb這個延時大于建立時間要求,并且tco+tpcb這個延時大于保持時間要求。那電路就是正常的,那如何才能做到這一點(diǎn)呢?但時鐘周期,PCB走線延遲一般都是固定的,對于特定的FPGA芯片,寄存器延遲也是固定的,只有信號從寄存器傳輸?shù)叫酒苣_的延遲可以改變。

第3節(jié) 兩種有效解決方法

3.1 添加時序約束,設(shè)置輸出延時set_output_delay
有兩種做法,一種是添加時序約束,Set output delay。這個約束會告訴綜合軟件下游器件的建立要求是多少和PCB走線延遲是多少,由于時鐘周期和PCB走線延遲是固定的,對于特定的器件,寄存器延時也是固定的,根據(jù)T-TCO-TPCB,綜合軟件就會通過調(diào)整寄存器到管角的延時,這個延時放大或放小,從而使下游器件能采集到這個數(shù)據(jù),滿足下游器件的建立時間和保持性要求。

3.2 添加隨路時鐘
另一種方式添加隨路時鐘,什么是隨路時鐘再看一下。

100572377-308718-suilushizhong.png

如上圖所示,信號a是在clk時鐘域產(chǎn)生的信號。Sdram_clk是與clk同源、頻率相同、相位不同的時鐘信號。當(dāng)sdram_clk 輸出作為sdram的工作時鐘,通過調(diào)整sdram_clk的相位就能調(diào)整時序,從而滿足建立時間和保持時間的要求。假如這是CLK,用PLL產(chǎn)生一個SDRAM的CLK,這兩個CLK的使用頻率是一樣的。比如說一開始有個150M的FPGA時鐘clk ,F(xiàn)PGA的時鐘clk通過PLL產(chǎn)生一個相位有一定偏差的150M時鐘sdram_clk。可以看到clk上升沿的時候,隔了很久,sdram_clk的上升沿才出現(xiàn),而這兩個時鐘的時鐘頻率一樣、相位不一樣。

那么sdram_clk如何產(chǎn)生呢?可以通過PLL來產(chǎn)生,PLL可以保證頻率相同、相位偏移量,所以該系統(tǒng)的結(jié)構(gòu)如圖:

100572377-308719-xitongjiegou.png

第一個時鐘clk可能就給Sdram接口模塊作為系統(tǒng)時鐘,sdram_clk直接就給SDRAM芯片作為數(shù)據(jù)采集的時鐘了,那這樣就有什么后果呢?

由于信號a是在clk時鐘產(chǎn)生的,使得信號a是相對于時鐘clk有一定的延時的。sdram_clk相對時鐘clk有一定延時,有一定項(xiàng)目偏差。只要調(diào)整sdram_clk相位,就可以使得信號a在時鐘sdram_clk的上升沿滿足建立時間和保持時間的要求。比如可以調(diào)整sdram_clk,讓sdram_clk上升沿剛好在信號a變化的中間。也就是說項(xiàng)目開始可以通過調(diào)節(jié)鎖相環(huán)PLL的sdram_clk相位,使得下游芯片使用sdram_clk的上升沿去采集信號a時,能夠同時滿足建立時間和保持時間要求。只要調(diào)整好,那么這個系統(tǒng)就可以正常工作。

Sdram_clk就是隨路時鐘,隨時鐘把數(shù)據(jù)一起送到下游芯片。通過調(diào)整Sdram_clk相位,讓接口信號和時鐘滿足下游接口芯片的建立時間和保持時間要求,這就是隨路時鐘的方法。

第4節(jié) 兩種方法優(yōu)缺點(diǎn)及取舍

4.1 第一種方法優(yōu)缺點(diǎn)
那這種方法有什么優(yōu)缺點(diǎn),如何取舍,第一點(diǎn)就是常規(guī)做法,就是一個時序約束的做法。產(chǎn)生兩個時鐘,但調(diào)試還是比較麻煩的。并且有一點(diǎn)就是我們用的時間,對不對?它是有時間有限度的,因?yàn)檎{(diào)整是TCO,它一定是有限度的,就是任意調(diào)都可以是吧?比如說是調(diào)不了的,這時候就需要用Sdram_clk隨路時鐘的方法去做了。

4.2 第二種方法優(yōu)缺點(diǎn)
隨路時鐘調(diào)試起來簡單,PLL設(shè)置簡單,出錯可能性小。不斷的調(diào)整相位,總能找到一個點(diǎn)讓時序滿足。但是也明顯的,需要有個PLL來產(chǎn)生這個時鐘,會消耗鎖相環(huán)硬件資源。如果使用這種方法,就不用設(shè)置output delay之類的約束,直接用調(diào)整相位方式找到同時滿足建立時間和保持時間要求的點(diǎn)就ok 了,所以隨路時鐘這種方法很多項(xiàng)目都喜歡用。

第5節(jié) 接收方向

SDRAM是TX(輸出)方向的,輸入方向是同樣的道理。比如說千兆網(wǎng)模塊就是接收數(shù)據(jù)的,如下圖所示。

100572377-308720-jieshoushuju.png

它有個時鐘rx_clk,假設(shè)信號a為輸入數(shù)據(jù),時鐘信號與數(shù)據(jù)a對齊。這個時候如果我直接用rx_clk去采集信號a,可能就就不滿足了寄存器的建立時間和保持時間了,那怎么辦呢?以下兩種方法:此時就可以時鐘信號,

5.1 方法1
設(shè)置輸入延時set_input_delay。FPGA根據(jù)時序情況,增加寄存器延時、時鐘延時等,從而滿足FPGA本身的建立時間和保持時間要求。比如說set input delay,F(xiàn)PGA 根據(jù)調(diào)整,去增加寄存器延時等方式,來滿足自身建立時間和保持要求。

5.2 方法2
另一種方式也可以跟SDRAM一樣,用rx clk通過鎖相環(huán)生成一個與rx_clk頻率相同,相位不同的pll_clk作為千兆網(wǎng)接口模塊的時鐘信號。用pll_clk去采集信號a的數(shù)據(jù),這樣不斷調(diào)整pll_clk相位,使得pll_clk時鐘上升沿位于信號a中間,此時就可能滿足寄存器建立時間和保持時間要求了。這個時候就不用設(shè)input delay 了,就不用設(shè)時序約束了,這個時候就ok 了。所以這種方法特別是做接口調(diào)試的時候特別有用。像千兆網(wǎng)、SDRAM、DDR2這種東西,全部都可以用這種方式去做。

100572377-308721-suoxianghuanpll.png

要注意的是由于這種方式,使用了一個鎖相環(huán)PLL的,鎖相環(huán)PLL對其輸入時鐘是有要求的,要求輸入的時鐘必須來自于FPGA芯片的時鐘管腳,否則綜合軟件會報錯,這是唯一的要求。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1630

    文章

    21768

    瀏覽量

    604623
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5359

    瀏覽量

    120785
  • 時鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1740

    瀏覽量

    131625
  • 時序約束
    +關(guān)注

    關(guān)注

    1

    文章

    115

    瀏覽量

    13433
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA的IO口時序約束分析

      在高速系統(tǒng)中FPGA時序約束不止包括內(nèi)部時鐘約束,還應(yīng)包括完整的IO時序約束
    發(fā)表于 09-27 09:56 ?1768次閱讀

    FPGA時序約束之衍生時鐘約束時鐘分組約束

    在FPGA設(shè)計中,時序約束對于電路性能和可靠性非常重要。在上一篇的文章中,已經(jīng)詳細(xì)介紹了FPGA時序約束的主時鐘
    發(fā)表于 06-12 17:29 ?2826次閱讀

    FPGA時鐘周期約束講解

    時鐘周期約束是用于對時鐘周期的約束,屬于時序約束中最重要的
    發(fā)表于 08-14 18:25 ?903次閱讀

    關(guān)于FPGA時序約束的一點(diǎn)總結(jié)

    )。方法2調(diào)試起來簡單,PLL設(shè)置簡單,出錯可能性小。通過不斷調(diào)整相位,最終肯定可以正確通信。缺點(diǎn)也明顯,接口一多,每個都要做時鐘就浪費(fèi)了。最近一直在做時序
    發(fā)表于 09-13 21:58

    時序約束時鐘約束

    vivado默認(rèn)計算所有時鐘之間的路徑,通過set_clock_groups命令可禁止在所標(biāo)識的時鐘組之間以及一個時鐘組內(nèi)的時鐘進(jìn)行時序分析
    發(fā)表于 09-21 12:40

    時序約束時序分析 ppt教程

    時序約束時序分析 ppt教程 本章概要:時序約束時序分析基礎(chǔ)常用
    發(fā)表于 05-17 16:08 ?0次下載

    FPGA開發(fā)之時序約束(周期約束

    時序約束可以使得布線的成功率的提高,減少ISE布局布線時間。這時候用到的全局約束就有周期約束和偏移約束。周期
    發(fā)表于 02-09 02:56 ?728次閱讀

    添加時序約束的技巧分析

    。 在添加全局時序約束時,需要根據(jù)時鐘頻率劃分不同的時鐘域,添加各自的周期約束;然后對輸入輸出端口信號添加偏移
    發(fā)表于 11-25 09:14 ?2608次閱讀

    xilinx時序分析及約束

    詳細(xì)講解了xilinx的時序約束實(shí)現(xiàn)方法和意義。包括:初級時鐘,衍生時鐘,異步時終域,多時終周期的講解
    發(fā)表于 01-25 09:53 ?6次下載

    如何使用時序約束向?qū)?/a>

    了解時序約束向?qū)绾斡糜凇巴耆?b class='flag-5'>約束您的設(shè)計。 該向?qū)ё裱璘ltraFast設(shè)計方法,定義您的時鐘時鐘交互,最后是您的輸入和輸出
    的頭像 發(fā)表于 11-29 06:47 ?3014次閱讀
    如何使用<b class='flag-5'>時序</b><b class='flag-5'>約束</b>向?qū)? />    </a>
</div>                            <div   id=

    時序約束---多時鐘介紹

    當(dāng)設(shè)計存在多個時鐘時,根據(jù)時鐘的相位和頻率關(guān)系,分為同步時鐘和異步時鐘,這兩類要分別討論其約束
    的頭像 發(fā)表于 04-06 14:34 ?1212次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b>---多<b class='flag-5'>時鐘</b>介紹

    約束、時序分析的概念

    很多人詢問關(guān)于約束、時序分析的問題,比如:如何設(shè)置setup,hold時間?如何使用全局時鐘和第二全局時鐘(長線資源)?如何進(jìn)行分組約束?如
    的頭像 發(fā)表于 05-29 10:06 ?835次閱讀
    <b class='flag-5'>約束</b>、<b class='flag-5'>時序</b>分析的概念

    淺談時序設(shè)計和時序約束

    ??本文主要介紹了時序設(shè)計和時序約束。
    的頭像 發(fā)表于 07-04 14:43 ?1462次閱讀

    時序約束連載03~約束步驟總結(jié)

    本小節(jié)對時序約束做最終的總結(jié)
    的頭像 發(fā)表于 07-11 17:18 ?661次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b><b class='flag-5'>連載</b>03~<b class='flag-5'>約束</b>步驟總結(jié)

    時序約束連載02~時序例外

    本文繼續(xù)講解時序約束的第四大步驟——時序例外
    的頭像 發(fā)表于 07-11 17:17 ?734次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b><b class='flag-5'>連載</b>02~<b class='flag-5'>時序</b>例外