時(shí)序約束是如何影響數(shù)字系統(tǒng)的,具體如何做時(shí)序分析?
在進(jìn)行數(shù)字電路系統(tǒng)的設(shè)計(jì)時(shí),時(shí)序是否能夠滿足要求直接影響著電路的功能和性能。本文首先講解了時(shí)序分析中重要的概念,并將這些概念同數(shù)字系統(tǒng)的性能聯(lián)系起來,最后結(jié)合FPGA的設(shè)計(jì)指出時(shí)序約束的內(nèi)容和時(shí)序約束中的注意事項(xiàng)。
一、時(shí)序分析中的重要概念
在數(shù)字系統(tǒng)中有兩個(gè)非常重要的概念:建立時(shí)間和保持時(shí)間,其示意圖如圖1所示。一個(gè)數(shù)字系統(tǒng)能否正常工作跟這兩個(gè)概念密切相關(guān)。只有建立時(shí)間和保持時(shí)間都同時(shí)得到滿足時(shí),數(shù)字系統(tǒng)才能可靠的、正常的工作。
當(dāng)寄存器的建立時(shí)間或保持時(shí)間不能得到滿足時(shí),寄存器有可能會(huì)進(jìn)入亞穩(wěn)態(tài)( Metastable)。亞穩(wěn)態(tài)是一種電壓的中間態(tài),假設(shè)寄存器的輸出電壓大于3V判決為邏輯1,小于0.3V判決為邏輯0,那么電壓處于0.3V到3V之間并且能夠短時(shí)間穩(wěn)定的狀態(tài)就是亞穩(wěn)態(tài)。寄存器在進(jìn)入亞穩(wěn)態(tài)一段時(shí)間后會(huì)回復(fù)到正常的狀態(tài),但是有可能回到邏輯1的狀態(tài),也有可能回到邏輯0的狀態(tài)。這種不確定性就有可能引起數(shù)字系統(tǒng)的錯(cuò)誤。
建立時(shí)間和保持時(shí)間是一個(gè)寄存器的固有屬性,是由其內(nèi)部的結(jié)構(gòu)、工藝等因素決定的,因而在進(jìn)行數(shù)字系統(tǒng)設(shè)計(jì)時(shí)只能通過改變電路結(jié)構(gòu)使其滿足建立時(shí)間和保持時(shí)間的要求,而不能改變建立時(shí)間和保持時(shí)間的值。
二、建立時(shí)間和保持時(shí)間對電路性能的影響
首先來看一個(gè)典型的同步數(shù)字系統(tǒng)的示意圖,見圖2。
在圖2中,F(xiàn)F1和FF2代表兩個(gè)寄存器,在兩個(gè)寄存器中間存在組合邏輯。同步的數(shù)字系統(tǒng)正是由許多的寄存器,以及寄存器中間的組合邏輯構(gòu)成的(也包括寄存器間的直接連接)。
顯然,如果要數(shù)字系統(tǒng)正常工作,每個(gè)寄存器的建立時(shí)間和保持時(shí)間都必須得到滿足。假設(shè)時(shí)鐘信號ck到達(dá)所有寄存器的時(shí)間相同,圖3畫出了這兩個(gè)寄存器間的時(shí)序關(guān)系。
從圖中可以看到,如果要FF2的建立時(shí)間和保持時(shí)間得到滿足,必須要滿足以下公式:
其中Ts建立時(shí)間,Th為保持時(shí)間,Tclock為時(shí)鐘周期,Tclk2q為寄存器的傳輸延時(shí)(從時(shí)鐘有效沿到輸出的時(shí)間),Tdelay為兩個(gè)寄存器之間的組合邏輯延時(shí)。
從公式(1)中可以看出,建立時(shí)間是否能得到滿足取決于3個(gè)參數(shù):時(shí)鐘周期、寄存器傳輸延時(shí)以及組合邏輯延時(shí)。其中寄存器的輸出延時(shí)是寄存器的固有屬性,不可更改,因而在設(shè)計(jì)中只能靠調(diào)節(jié)時(shí)鐘周期和組合邏輯的延時(shí)來滿足寄存器對于建立時(shí)間的要求。
從公式(2)中可以看出,保持時(shí)間能否得到滿足取決于2個(gè)參數(shù):寄存器的傳輸延時(shí)和組合邏輯的延時(shí),設(shè)計(jì)者能做的僅僅是調(diào)節(jié)組合邏輯的延時(shí)。
圖3僅僅是兩個(gè)寄存器之間的時(shí)序關(guān)系,在一個(gè)數(shù)字系統(tǒng)中往往包含有成千上萬個(gè)寄存器,任意兩個(gè)相鄰的寄存器之間的時(shí)序關(guān)系都必須滿足公式(1)和公式(2)的約束,只有如此數(shù)字系統(tǒng)才能正常工作。在數(shù)字系統(tǒng)可以正常工作的前提下,組合邏輯的延時(shí)就決定了數(shù)字系統(tǒng)能夠工作的時(shí)鐘頻率的上限。組合邏輯的延時(shí)越短,系統(tǒng)的工作頻率的上限就越高,這里的組合邏輯的延時(shí)指的是任意兩個(gè)相鄰的寄存器之間的最長的組合邏輯延時(shí),也就是關(guān)鍵路徑的延時(shí)。當(dāng)然,組合邏輯的延時(shí)也不能無限短,必須要滿足公式(2) 的要求。
三、在FPGA中對時(shí)序進(jìn)行約束
在FPGA設(shè)計(jì)中,時(shí)序約束占有重要的地位。時(shí)序約束主要有兩方面的作用:第一,EDA工具會(huì)根據(jù)設(shè)計(jì)者的約束努力嘗試布局布線,盡量滿足設(shè)計(jì)者提出的時(shí)序方面的要求;第二,在EDA工具經(jīng)過努力仍不能滿足設(shè)計(jì)者提出的時(shí)序要求時(shí)會(huì)給出警告信息,用以提示設(shè)計(jì)者。
在對設(shè)計(jì)進(jìn)行約束時(shí)要做到恰到好處,太松或者太緊的約束都不能使電路達(dá)到最好的狀態(tài)。約束過松自不必提,約束過緊之后EDA軟件經(jīng)過努力嘗試仍不能達(dá)到要求,但其不會(huì)取最接近目標(biāo)的一次,而是將最后一次作為結(jié)果,可能導(dǎo)致電路性能更加惡化。
當(dāng)今的FPGA設(shè)計(jì)中時(shí)序約束主要包括3種:一是寄存器到寄存器的約束,二是引腳到寄存器的約束,三是寄存器到引腳的約束。
寄存器到寄存器的約束是對時(shí)鐘周期的約束,對應(yīng)于公式(1)中的Tclk2q+Tdelay+Ts,通常來講設(shè)計(jì)者應(yīng)該對其所設(shè)計(jì)的系統(tǒng)需要多快的時(shí)鐘頻率有所了解,只要結(jié)合需求給出時(shí)鐘周期的約束即可。
在約束時(shí)鐘周期時(shí),實(shí)際上保證的是兩個(gè)寄存器中后一級的寄存器。第一級寄存器連接在FPGA的外部引腳上,那么第一級寄存器能否滿足其建立時(shí)間和保持時(shí)間的約束就取決于引腳上時(shí)鐘和數(shù)據(jù)的關(guān)系以及各自到達(dá)寄存器的延時(shí)。假設(shè)引腳時(shí)鐘和內(nèi)部時(shí)鐘是同步的(頻率和相位都同步),那么數(shù)據(jù)引腳和時(shí)鐘引腳的時(shí)序關(guān)系以及從引腳到寄存器輸入端的延時(shí)共同決定了第一個(gè)寄存器的建立時(shí)間和保持時(shí)間能否得到滿足,設(shè)計(jì)者可以對數(shù)據(jù)引腳到寄存器輸入端的延時(shí)進(jìn)行約束。
為了保證FPGA的輸出信號和時(shí)鐘的時(shí)序關(guān)系達(dá)到預(yù)期的效果,比如達(dá)到后一級芯片對時(shí)鐘和數(shù)據(jù)時(shí)序關(guān)系的要求,設(shè)計(jì)者可以對寄存器的輸出到引腳所經(jīng)歷的延時(shí)進(jìn)行約束。
以上三種約束就可以涵蓋設(shè)計(jì)中的所有寄存器。但是在某些特定的情況下,比如異步時(shí)鐘域時(shí),我們清楚地知道某些寄存器會(huì)發(fā)生建立時(shí)間或者保持時(shí)間不滿足的情況,但這是不可避免的,設(shè)計(jì)者也已經(jīng)對其進(jìn)行了處理。在這種情況下,設(shè)計(jì)者最好告訴EDA軟件忽略這些路徑,否則EDA軟件會(huì)努力嘗試解決這些路徑的時(shí)序沖突,既費(fèi)時(shí)又沒有效果。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請聯(lián)系我們,謝謝!