關(guān)于建立時間和保持時間_第1頁
關(guān)于建立時間和保持時間_第2頁
關(guān)于建立時間和保持時間_第3頁
關(guān)于建立時間和保持時間_第4頁
關(guān)于建立時間和保持時間_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、關(guān)于建立時間和保持時間 建立時間(Tsu:set up time)是指在時鐘沿到來之前數(shù)據(jù)從不穩(wěn)定到穩(wěn)定所需的時間,如果建立的時間不滿足要求那么數(shù)據(jù)將不能在這個時鐘上升沿被穩(wěn)定的打入觸發(fā)器;保持時間(Th:hold time)是指數(shù)據(jù)穩(wěn)定后保持的時間,如果保持時間不滿足要求那么數(shù)據(jù)同樣也不能被穩(wěn)定的打入觸發(fā)器。建立與保持時間的簡單示意圖如下圖1所示。 圖1 保持時間與建立時間的示意圖    在FPGA設(shè)計的同一個模塊中常常是包含組合邏輯與時序邏輯,為了保證在這些邏輯的接口處數(shù)據(jù)能穩(wěn)定的被處理,那么對建立時間與保持時間建立清晰的概念非常重要。下面在認識了建立時間與保

2、持時間的概念上思考如下的問題。 圖2 同步設(shè)計中的一個基本模型    圖2為統(tǒng)一采用一個時鐘的同步設(shè)計中一個基本的模型。圖中Tco是觸發(fā)器的數(shù)據(jù)輸出的延時;Tdelay是組合邏輯的延時;Tsetup是觸發(fā)器的建立時間;Tpd為時鐘的延時。如果第一個觸發(fā)器D1建立時間最大為T1max,最小為T1min,組合邏輯的延時最大為T2max,最小為T2min。問第二個觸發(fā)器D2建立時間T3與保持時間T4應(yīng)該滿足什么條件,或者是知道了T3與T4那么能容許的最大時鐘周期是多少。這個問題是在設(shè)計中必須考慮的問題,只有弄清了這個問題才能保證所設(shè)計的組合邏輯的延時是否滿足了要求。&#

3、160;   下面通過時序圖來分析:設(shè)第一個觸發(fā)器的輸入為D1,輸出為Q1,第二個觸發(fā)器的輸入為D2,輸出為Q2;    時鐘統(tǒng)一在上升沿進行采樣,為了便于分析我們討論兩種情況即第一:假設(shè)時鐘的延時Tpd為零,其實這種情況在FPGA設(shè)計中是常常滿足的,由于在FPGA 設(shè)計中一般是采用統(tǒng)一的系統(tǒng)時鐘,也就是利用從全局時鐘管腳輸入的時鐘,這樣在內(nèi)部時鐘的延時完全可以忽略不計。這種情況下不必考慮保持時間,因為每個數(shù)據(jù)都是保持一個時鐘節(jié)拍同時又有線路的延時,也就是都是基于CLOCK的延遲遠小于數(shù)據(jù)的延遲基礎(chǔ)上,所以保持時間都能滿足要求,重點是要關(guān)心建立

4、時間,此時如果D2的建立時間滿足要求那么時序圖應(yīng)該如圖3所示。從圖中可以看出如果:T-Tco-Tdelay>T3即: Tdelay< T-Tco-T3那么就滿足了建立時間的要求,其中T為時鐘的周期,這種情況下第二個觸發(fā)器就能在第二個時鐘的升沿就能穩(wěn)定的采到D2,時序圖如圖3所示。 圖3 符合要求的時序圖    如果組合邏輯的延時過大使得T-Tco-Tdelay<T3那么將不滿足要求,第二個觸發(fā)器就在第二個時鐘的升沿將采到的是一個不定態(tài),如圖4所示。那么電路將不能正常的工作。 圖4 組合邏輯的延時過大時序不滿足要求   

5、; 從而可以推出 T-Tco-T2max>T3 這也就是要求的D2的建立時間。    從上面的時序圖中也可以看出,D2的建立時間與保持時間與D1的建立與保持時間是沒有關(guān)系的,而只和D2前面的組合邏輯和D1的數(shù)據(jù)傳輸延時有關(guān),這也是一個很重要的結(jié)論。說明了延時沒有疊加效應(yīng)。    第二種情況如果時鐘存在延時,這種情況下就要考慮保持時間了,同時也需要考慮建立時間。時鐘出現(xiàn)較大的延時多是采用了異步時鐘的設(shè)計方法,這種方法較難保證數(shù)據(jù)的同步性,所以實際的設(shè)計中很少采用。此時如果建立時間與保持時間都滿足要求那么輸出的時序如圖5所示。 圖5

6、 時鐘存在延時但滿足時序    從圖5中可以容易的看出對建立時間放寬了Tpd,所以D2的建立時間需滿足要求: TpdT-Tco-T2max>T3    由于建立時間與保持時間的和是穩(wěn)定的一個時鐘周期,如果時鐘有延時,同時數(shù)據(jù)的延時也較小那么建立時間必然是增大的,保持時間就會隨之減小,如果減小到不滿足D2的保持時間要求時就不能采集到正確的數(shù)據(jù),如圖6所示。    這時即T(Tpd+TTco-T2min)<T4,就不滿足要求了,所以D2的保持時間應(yīng)該為:T(Tpd+TTco-T2min)>T

7、4 即TcoT2min-Tpd>T4    從上式也可以看出如果Tpd0也就是時鐘的延時為0那么同樣是要求TcoT2min>T4,但是在實際的應(yīng)用中由于T2的延時也就是線路的延時遠遠大于觸發(fā)器的保持時間即T4所以不必要關(guān)系保持時間。圖6 時鐘存在延時且保持時間不滿足要求    綜上所述,如果不考慮時鐘的延時那么只需關(guān)心建立時間,如果考慮時鐘的延時那么更需關(guān)心保持時間。下面將要分析在FPGA設(shè)計中如何提高同步系統(tǒng)中的工作時鐘。如何提高同步系統(tǒng)中的工作時鐘    從上面的分析可以看出同步系統(tǒng)時對D

8、2建立時間T3的要求為: T-Tco-T2max>T3    所以很容易推出T>T3+Tco+T2max,其中T3為D2的建立時間Tset,T2為組合邏輯的延時。在一個設(shè)計中T3和Tco都是由器件決定的固定值,可控的也只有T2也就時輸入端組合邏輯的延時,所以通過盡量來減小T2就可以提高系統(tǒng)的工作時鐘。為了達到減小T2在設(shè)計中可以用下面不同的幾種方法綜合來實現(xiàn)。通過改變走線的方式來減小延時    以altera的器件為例,我們在quartus里面的timing closure floorplan可以看到有很多條條塊塊,我們可

9、以將條條塊塊按行和按列分,每一個條塊代表1個LAB,每個LAB里有8個或者是10個LE。它們的走線時延的關(guān)系如下:同一個LAB中(最快) < 同列或者同行 < 不同行且不同列。我們通過給綜合器加適當?shù)募s束(約束要適量,一般以加5%裕量較為合適,比如電路工作在100Mhz,則加約束加到105Mhz就可以了,過大的約束效果反而不好,且極大增加綜合時間)可以將相關(guān)的邏輯在布線時盡量布的靠近一點,從而減少走線的時延。通過拆分組合邏輯的方法來減小延時    由于一般同步電路都不止一級鎖存(如圖8),而要使電路穩(wěn)定工作,時鐘周期必須滿足最大延時要求,縮短最長延時路

10、徑,才可提高電路的工作頻率。如圖7所示:我們可以將較大的組合邏輯分解為較小的幾塊,中間插入觸發(fā)器,這樣可以提高電路的工作頻率。這也是所謂“流水線”(pipelining)技術(shù)的基本原理。    對于圖8的上半部分,它時鐘頻率受制于第二個較大的組合邏輯的延時,通過適當?shù)姆椒ㄆ骄峙浣M合邏輯,可以避免在兩個觸發(fā)器之間出現(xiàn)過大的延時,消除速度瓶頸。 圖7 分割組合邏輯圖8 轉(zhuǎn)移組合邏輯那么在設(shè)計中如何拆分組合邏輯呢,更好的方法要在實踐中不斷的積累,但是一些良好的設(shè)計思想和方法也需要掌握。我們知道,目前大部分 FPGA都基于4輸入LUT的,如果一個輸出對應(yīng)的判斷條件大于四

11、輸入的話就要由多個LUT級聯(lián)才能完成,這樣就引入一級組合邏輯時延,我們要減少組合邏輯,無非就是要輸入條件盡可能的少,這樣就可以級聯(lián)的LUT更少,從而減少了組合邏輯引起的時延。 從D觸發(fā)器的角度說明建立和保持時間 從D觸發(fā)器的角度說明建立和保持時間我們平時聽說的流水就是一種通過切割大的組合邏輯(在其中插入一級或多級D觸發(fā)器,從而使寄存器與寄存器之間的組合邏輯減少)來提高工作頻率的方法。比如一個32 位的計數(shù)器,該計數(shù)器的進位鏈很長,必然會降低工作頻率,我們可以將其分割成4位和 8位的計數(shù),每當4位的計數(shù)器計到15后觸發(fā)一次8位的計數(shù)器,這樣就實現(xiàn)了計數(shù)器的切割,也提高了工作頻率。在狀態(tài)機中,一般

12、也要將大的計數(shù)器移到狀態(tài)機外,因為計數(shù)器這東西一般是經(jīng)常是大于4輸入的,如果再和其它條件一起做為狀態(tài)的跳變判據(jù)的話,必然會增加LUT的級聯(lián),從而增大組合邏輯。以一個6輸入的計數(shù)器為例,我們原希望當計數(shù)器計到111100后狀態(tài)跳變,現(xiàn)在我們將計數(shù)器放到狀態(tài)機外,當計數(shù)器計到111011后產(chǎn)生個enable信號去觸發(fā)狀態(tài)跳變,這樣就將組合邏輯減少了。狀態(tài)機一般包含三個模塊,一個輸出模塊,一個決定下個狀態(tài)是什么的模塊和一個保存當前狀態(tài)的模塊。組成三個模塊所采用的邏輯也各不相同。輸出模塊通常既包含組合邏輯又包含時序邏輯;決定下一個狀態(tài)是什么的模塊通常又組合邏輯構(gòu)成;保存現(xiàn)在狀態(tài)的通常由時序邏輯構(gòu)成。三

13、個模塊的關(guān)系如下圖9所示。 圖9 狀態(tài)機的組成所有通常寫狀態(tài)機時也按照這三個模塊將狀態(tài)機分成三部分來寫,如下面就是一種良好的狀態(tài)機設(shè)計方法:/*-This is FSM demo programDesign Name : arbiterFile Name : arbiter2.v-*/module arbiter2 (clock , / clockreset , / Active high, syn resetreq_0 , / Request 0req_1 , / Request 1gnt_0 ,gnt_1);/-Input Ports-input clock ;input reset ;i

14、nput req_0 ;input req_1 ;/-Output Ports-output gnt_0 ;output gnt_1 ;/-Input ports Data Type-wire clock ;wire reset ;wire req_0 ;wire req_1 ;/-Output Ports Data Type-reg gnt_0 ;reg gnt_1 ;/-Internal Constants-parameter SIZE = 3 ;parameter IDLE = 3'b001 ,GNT0 = 3'b010 ,GNT1 = 3'b100 ;/-Int

15、ernal Variables-reg SIZE-1:0 state ;/ Seq part of the FSMwire SIZE-1:0 next_state ;/ combo part of FSM/-Code startes Here-assign next_state = fsm_function(req_0, req_1);function SIZE-1:0 fsm_function;input req_0;input req_1;case(state)IDLE : if (req_0 = 1'b1)fsm_function = GNT0;else if (req_1 =

16、1'b1)fsm_function= GNT1;elsefsm_function = IDLE;GNT0 : if (req_0 = 1'b1)fsm_function = GNT0;elsefsm_function = IDLE;GNT1 : if (req_1 = 1'b1)fsm_function = GNT1;elsefsm_function =IDLE;default : fsm_function = IDLE;endcaseendfunctionalways(posedge clock)beginif (reset = 1'b1)state <

17、=IDLE;elsestate <=next_state;end/-Output Logic-always (posedge clock)beginif (reset = 1'b1) begingnt_0 <= #1 1'b0;gnt_1 <= #1 1'b0;endelse begincase(state)IDLE : begingnt_0 <= #1 1'b0;gnt_1 <= #1 1'b0;endGNT0 : begingnt_0 <= #1 1'b1;gnt_1 <= #1 1'b0;e

18、ndGNT1 : begingnt_0 <= #1 1'b0;gnt_1 <= #1 1'b1;enddefault : begingnt_0 <= #1 1'b0;gnt_1 <= #1 1'b0;endendcaseendend / End Of Block OUTPUT_endmodule狀態(tài)機通常要寫成3段式,從而避免出現(xiàn)過大的組合邏輯。上面說的都是可以通過流水的方式切割組合邏輯的情況,但是有些情況下我們是很 難去切割組合邏輯的,在這些情況下我們又該怎么做呢?狀態(tài)機就是這么一個例子,我們不能通過往狀態(tài)譯碼組合邏輯中加入流水。如果我

19、們的設(shè)計中有一個幾十個狀態(tài)的狀態(tài)機,它的狀態(tài)譯碼邏輯將非常之巨大,毫無疑問,這極有可能是設(shè)計中的關(guān)鍵路徑。那我們該怎么做呢?還是老思路,減少組合邏輯。我們可以對狀態(tài)的輸出進行分析,對它們進行重新分類,并根據(jù)這個重新定義成一組組小狀態(tài)機,通過對輸入進行選擇(case語句)并去觸發(fā)相應(yīng)的小狀態(tài)機,從而實現(xiàn)了將大的狀態(tài)機切割成小的狀態(tài)機。在ATA6的規(guī)范中(硬盤的標準),輸入的命令大概有20十種,每一個命令又對應(yīng)很多種狀態(tài),如果用一個大的狀態(tài)機(狀態(tài)套狀態(tài))去做那是不可想象的,我們可以通過case語句去對命令進行譯碼,并觸發(fā)相應(yīng)的狀態(tài)機,這樣做下來 這一個模塊的頻率就 可以跑得比較高了??偨Y(jié):提高工

20、作頻率的本質(zhì)就是要減少寄存器到寄存器的時延,最有效的方法就是 避免出現(xiàn)大的組合邏輯,也就是要盡量去滿足四輸入的條件,減少LUT級聯(lián)的數(shù)量。我們 可以通過加約束、流水、切割狀態(tài)的方法提高工作頻率。在FPGA中進行時鐘設(shè)計時也要注意一下幾點:   1. 一個模塊盡量只用一個時鐘,這里的一個模塊是指一個module或者是一個entity。在多時鐘域的設(shè)計中涉及到跨時鐘域的設(shè)計中最好有專門一個模塊做時鐘域的隔 離。這樣做可以讓綜合器綜合出更優(yōu)的結(jié)果。   2. 除非是低功耗設(shè)計,不然不要用門控時鐘-這會增加設(shè)計的不穩(wěn)定性,在要用到門控時鐘的地方,也要將門控信號用

21、時鐘的下降沿 打一拍再輸出與時鐘相與。   3. 禁止用計數(shù)器分頻后的信號做其它模塊的時鐘,而要用改成時鐘使能的方式,否則這種時鐘滿天飛的方式對設(shè)計的可靠性極為不利,也大大增加了靜態(tài)時序分析的復(fù)雜性。 不同時鐘域之間的同步當一個設(shè)計中的兩個模塊分別用的是兩個工作時鐘,那么在它們的接口處就工作在異步模式,這時為了保證數(shù)據(jù)能正確的處理那么就要對兩個模塊進行同步。這里的不同的時鐘域通常是以下的兩種情況:1、 兩個時鐘的頻率不同;2、 雖然兩個時鐘的頻率相同,但是它們是兩個獨立的時鐘,其相位沒有任何關(guān)系。分別如下兩個圖所示:圖10 兩個時鐘的頻率完全不同圖11兩個時鐘的頻率相同,但

22、相位不相關(guān)兩個時鐘域之間傳輸?shù)臄?shù)據(jù)根據(jù)不同的位寬通常采用不同的同步的方法。1、單bit之間的同步且發(fā)送的每個pulse至少有1個周期寬度的情況這類同步主要是用于一些控制信號自己的同步。通常的采用方法就是輸出數(shù)據(jù)在接收的模塊中利用兩個觸發(fā)器采用系統(tǒng)時鐘打兩拍,如下圖12所示。對于這種同步需要說明以下幾點。圖12 一位同步器設(shè)計(1)圖12中的同步電路其實叫"一位同步器",它只能用來對一位異步信號進行同步,而且這個信號的寬度必須大于本級時鐘的脈沖寬度,否則有可能根本采不到這個異步信號。(2)為什么圖一中的同步電路只能用來對一位異步信號進行同步呢? (a)當有兩個或更多的異步信號(控制或地址)同時進入本時域來控制本時域的電路時,如果這些信號分別都用圖12中的同步電路來同步就會出現(xiàn)問題,由于連線延遲或其他延遲使兩個或更多的異步信號(控制或地址)之間產(chǎn)生了skew,那么這個skew經(jīng)過圖12的同步器同步進入本時域后,會產(chǎn)生很大的skew 或產(chǎn)生競爭,導(dǎo)致本時域電路出錯。出現(xiàn)的問題如下圖13所示:圖13 同步多個控制

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論