小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

FPGA設(shè)計(jì)-時(shí)序約束(中篇-實(shí)例分析)

 goandlove 2019-11-11

現(xiàn)有一塊ADC連接到FPGA上,需要在FPGA上實(shí)現(xiàn)高速數(shù)據(jù)的讀取,那么第一步自然就是完成可靠的硬件連線,其中需要注意的是:

1. 注意信號的完整性,盡可能的避免邊沿退化;這兩區(qū)分兩個(gè)概念:

    i. 高速信號,指的是信號翻轉(zhuǎn),由高電平到低電平或者反之所耗得時(shí)間非常小;可能一個(gè)1MHz的TTL信號或者LVDS信號,只要邊沿足夠陡,那也算是高速信號!

    ii. 高頻信號,一般指的是周期性信號的周期時(shí)間足夠??;

    iii. 也就是說高速信號不一定是高頻的;數(shù)字信號一般都是高速信號,所以必須要保證其邊沿的完整性,如果邊沿發(fā)生退化或者變形,那么將相當(dāng)于加入了額外的時(shí)序上的偏差;

2. 保持時(shí)鐘信號和數(shù)據(jù)信號路徑等長,不管是單端還是差分信號,需要用繞線等形式迫使兩類線幾乎等長;這個(gè)在之前的時(shí)序分析中非常重要,如果真的不能夠做到等長,甚至差的還挺多的,也必須提前獲得該差值,并將則合成時(shí)間差,在后面的時(shí)序分析中將會(huì)有用;

保證以上兩點(diǎn)后,就可以著手時(shí)序的分析了,那么首先我們會(huì)得到目標(biāo)器件ADC的時(shí)序,如下圖所示:

圖 1 某ADC的時(shí)序圖

從上圖中我們首先得到幾個(gè)信息:

1. 這是個(gè)同步時(shí)序,由兩類信號組成,時(shí)鐘信號DCO和數(shù)據(jù)信號FCO以及D(忽略它們是差分信號,下面的分析會(huì)把它畫成單端信號,簡化好畫一點(diǎn))

2. 這是個(gè)DDR信號,DDR指的是數(shù)據(jù)是同步于時(shí)鐘信號的上升、下降邊沿,所以該類同步信號需要引入虛擬時(shí)鐘概念,后面繼續(xù)介紹;

3. 信號是不是邊沿對齊,而是偏移了90度!也就是說DCO邊沿翻轉(zhuǎn)后,數(shù)據(jù)信號沒有第一時(shí)間翻轉(zhuǎn),而是延后了四分之一個(gè)周期,這是高速信號慣用的伎倆,后面會(huì)發(fā)現(xiàn),這個(gè)延時(shí)讓時(shí)序更好分析;

將FCO信號和D信號的實(shí)際意義扔一邊,在設(shè)計(jì)者看來,他們都僅僅是數(shù)據(jù)而已,將上面的時(shí)序圖簡化成下圖:

圖 2 簡化后的時(shí)序圖

可以看到,實(shí)際上所有的數(shù)據(jù)信號都是同步于DCO的邊沿,但是并不是對齊的,而是相差了90度,同時(shí)還是個(gè)DDR系統(tǒng)(上下邊沿都是Launch Edge)

一般來說DDR系統(tǒng)會(huì)引入一個(gè)虛擬時(shí)鐘的概念,就是說DCO是實(shí)際存在的時(shí)鐘,設(shè)計(jì)和虛構(gòu)出一個(gè)2倍頻的DCOX2時(shí)鐘,并將其相移180度以后,我們重新得到了下圖:

圖 3 引入虛擬時(shí)鐘后的數(shù)據(jù)時(shí)序圖

引入虛擬時(shí)鐘后,我們重新規(guī)劃Launch Edge,將其規(guī)劃到DCOX2-Shift180的上升沿,其所對應(yīng)的的Latch Edge仍然還是在DCO上。

到目前為止,我們已經(jīng)很清楚的規(guī)劃了ADC的時(shí)鐘和數(shù)據(jù)輸出的關(guān)系,至于如何用SDC語言描述,見下文;接下來就要考慮到這些信號實(shí)際上是各自經(jīng)過PCB走線后來到FPGA的引腳,從FPGA引腳由進(jìn)入到FPGA內(nèi)部,然后又經(jīng)過各自的FPGA內(nèi)部走線延時(shí)以后來到了他們目標(biāo)的寄存器,如下圖所示:

圖 4 傻瓜化后的ADC和FPGA的信號流向圖

從上圖可以獲知:

1. ADC內(nèi)部看起來有一個(gè)源時(shí)鐘,這個(gè)源時(shí)鐘我們不用管怎么產(chǎn)生,它分成了兩路,其中一路經(jīng)過倍頻+移相后觸發(fā)了ADC上的REG0(就是說其上升沿作為Launch Edge),另一路直接輸出到ADC引腳DCO;

2. 數(shù)據(jù)由REG0產(chǎn)生后輸出至ADC引腳D,經(jīng)過一個(gè)延時(shí)后來到FPGA的相應(yīng)輸入引腳D`,與此同時(shí),DCO引腳也經(jīng)由PCB來到了FPGA的輸入引腳DCO`;

3. 這兩個(gè)信號進(jìn)入FPGA后,都各自分成了兩路,分別經(jīng)過各自的延時(shí)來到其目標(biāo):

    a) DCO`引腳輸入后,進(jìn)過TCLK2,來到了REG1的clk引腳

    b) DCO`引腳輸入后,進(jìn)過TCLK3,來到了REG2的clk引腳

    c) D`引腳輸入后,進(jìn)過Tdata2,來到了REG1的D引腳

    d) D`引腳輸入后,進(jìn)過Tdata3,來到了REG2的D引腳

4. REG1和REG2有所區(qū)別,一個(gè)是上升沿觸發(fā),一個(gè)是下降沿觸發(fā)(clk前加了個(gè)小圈圈),這是因?yàn)閘atch edge本來就是上升沿又有下降沿的;后期實(shí)際上也可以給DCO`也引入虛擬時(shí)鐘,這里不表;

5. 不管是REG1還是REG2,想要鎖存latch數(shù)據(jù)就必須滿足建立時(shí)間和保持時(shí)間,這個(gè)在下文的圖中也有所體現(xiàn);

說了那么多,都不如實(shí)際的時(shí)序圖來的實(shí)際,下面放圖:

圖 5 實(shí)際時(shí)序分析

上圖由三個(gè)顏色的時(shí)序,分別是:

1. 紫色代表DAT,也就是數(shù)據(jù)到達(dá)時(shí)間,它由Tco(圖中沒有體現(xiàn),可以參考手冊)、Tdata1和Tdata2三者構(gòu)成,是不是和我們的DAT定義不一樣?公式是死的,只需要理解其意思就可以。和公式相比少了Tclk(源時(shí)鐘到REG0的clk的延時(shí)),是因?yàn)槲覀儾恍枰紤]這個(gè)延時(shí),我們是根據(jù)ADC數(shù)據(jù)手冊的時(shí)序圖反推回里面的結(jié)構(gòu)圖,所以所有延時(shí)在反推的過程中已經(jīng)都被體現(xiàn)或者被折合!

2. 綠色伙同棕色線,表達(dá)出兩個(gè)意思DRTsu和DRTh,分別代表數(shù)據(jù)建立所需時(shí)間和數(shù)據(jù)保持所需時(shí)間;

3. 將兩者按照定義做減法,就能夠得到建立時(shí)間裕量和保持時(shí)間裕量!

如上圖所示,棕色線所劃分的時(shí)間窗中,REG1.D已經(jīng)是新的數(shù)據(jù),而且在這個(gè)時(shí)間窗內(nèi)并沒有變化,所以就同時(shí)滿足了建立時(shí)間裕量大于0和保持時(shí)間裕量大于0兩個(gè)關(guān)系,這樣的時(shí)序是穩(wěn)定的!

但是這個(gè)只是圖示而已,所有的Tdata1、2、3以及Tclk1、2、3都是我們目前假設(shè)的,在實(shí)際進(jìn)行約束時(shí),那些量時(shí)需要設(shè)計(jì)者提前設(shè)定,而那些量是自動(dòng)生成的那?答案是:

1. Tdata1和Tclk1是由PCB實(shí)際布線所決定的,如果能夠按照等長布線規(guī)則,就能夠讓兩者相互抵消;

2. DCO和DCOX2-shift180的時(shí)序是由器件決定的;

3. Tdata2、3,Tclk2、3是FPGA在布線時(shí)自動(dòng)產(chǎn)生的!

所以說這里我們只需要告訴FPGA,DCO`和D`之間的時(shí)序關(guān)系就可以了,要獲得這兩者之間的時(shí)序關(guān)系,我們就必須獲得DCO和D之間的原始關(guān)系,以及他們是如何被布線延時(shí)變成DCO`和D`的;如何去描述上面所說的這種關(guān)系呢?利用SDC文件!

也就是說SDC文件就是要準(zhǔn)確的告訴FPGA,所有輸入(輸出先不管)信號在進(jìn)入FPGA時(shí)會(huì)是個(gè)什么樣子,然后根據(jù)這個(gè)信息,F(xiàn)PGA會(huì)自動(dòng)布線,使得REG1和REG2能夠獲得正確的數(shù)據(jù);如果萬一SDC文件所描述的時(shí)序關(guān)系非常的惡劣,將會(huì)導(dǎo)致不管FPGA怎么優(yōu)化布線和布局,都不能夠?qū)崿F(xiàn)正確時(shí)時(shí)序時(shí),就會(huì)輸出報(bào)錯(cuò),這個(gè)在以后的文章TimeQuest TA中會(huì)有詳細(xì)的分析;那么接下來就開始寫SDC文件吧;

#設(shè)置各種延時(shí)常數(shù)

#這里假設(shè)ADC片上的延時(shí)都為0

    set ADC_CLKs_max 0

    set ADC_CLKs_min 0

    Set ADC_CLKd_max 0

    set ADC_CLKd_min 0

# 同時(shí)根據(jù)ADC手冊去設(shè)置Launch edge到有效數(shù)據(jù)之間的延時(shí),這里假設(shè)他為X

    set ADC_tCO_max X

    set ADC_tCO_min X

#這里設(shè)置時(shí)鐘信號和數(shù)據(jù)信號在PCB板上的延時(shí)差,即使是等長布線,我們也要可以給

#定兩個(gè)值,這樣可以給FPGA布線更多的壓力,使得后期布線會(huì)往一個(gè)最理想的方向進(jìn)行,

#分別是

    set ADC_BD_min XX

    set ADC_BD_max XX

#設(shè)置兩個(gè)時(shí)鐘,第一個(gè)時(shí)鐘為DCO,它會(huì)從FPGA的DCO引腳輸入

#另一個(gè)時(shí)鐘是虛擬時(shí)鐘,根據(jù)設(shè)置,它是DCO的兩倍頻,而且有180度的相移

#這兩個(gè)時(shí)鐘之間是同步的,一個(gè)是很是存在的,另一個(gè)是虛擬的!

    create_clock -name DCO-period 5-waveform {1.25   3.75} [get_ports {DCO}]

    create_clock -name DCO_virtual-period 2.5 -waveform {0    1.25}

#最后將所有的數(shù)據(jù)引腳同步到DCO_virtual的上升沿,根據(jù)上面的延時(shí)常數(shù)設(shè)置輸入延時(shí)和

#輸出延時(shí),這條語句非常關(guān)鍵,它告訴FPGA所有的輸入信號,在進(jìn)入FPGA之前,相對于

#時(shí)鐘存在怎么樣的關(guān)系!

    set_input_delay -clock DCO_virtual -max [expr $ADC_CLKs_max + $ADC_tCO_max + $ADC_BD_max - $ADC_CLKd_min] [get_ports {D*}]

    set_input_delay -clock DCO_virtual -min [expr $ADC_CLKs_min + $ADC_tCO_min + $ADC_BD_min - $ADC_CLKd_max] [get_ports {}D*}]

SDC文件解釋

1. 藍(lán)色底部分代表定義一些延時(shí)參數(shù),這些延時(shí)參數(shù)都是根據(jù)實(shí)際的PCB布線或者是ADC的書籍參數(shù)來設(shè)定的

2. 綠色底部分設(shè)定同步時(shí)鐘,如果有必要的話還要設(shè)置虛擬時(shí)鐘;

3. 紫色底部分將所有的輸入信號同步到時(shí)鐘,在這里這個(gè)時(shí)鐘是虛擬時(shí)鐘,因?yàn)槲覀兗僭O(shè)虛擬時(shí)鐘的上升沿是launch edge,這里其實(shí)可以也可以同步到DCO上,但就要設(shè)置下降沿同步,會(huì)顯得比較麻煩;但是一樣都是可以實(shí)現(xiàn)的!

通過上面的語句,F(xiàn)PGA就知道了,這些屬于信號之間的關(guān)系:D和DCO之間的關(guān)系,D和DCOX2-shift180(就是DCO_Virtual)之間關(guān)系;

歡迎通信工程師和FPGA工程師關(guān)注公眾號

全國第一大FPGA微信技術(shù)群

歡迎大家加入全國FPGA微信技術(shù)群,這個(gè)群體擁有數(shù)萬工程師、一群熱愛技術(shù)的工程師,這里的FPGA工程師相互幫助,相互分享,技術(shù)氛圍濃厚!趕緊叫上小伙伴一起加入吧!!

用手指按住就可以加入FPGA全國技術(shù)群哦

FPGA之家元器件芯城

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多