《CPLD FPGA設(shè)計與應(yīng)用基礎(chǔ)教程》課件第八章_第1頁
《CPLD FPGA設(shè)計與應(yīng)用基礎(chǔ)教程》課件第八章_第2頁
《CPLD FPGA設(shè)計與應(yīng)用基礎(chǔ)教程》課件第八章_第3頁
《CPLD FPGA設(shè)計與應(yīng)用基礎(chǔ)教程》課件第八章_第4頁
《CPLD FPGA設(shè)計與應(yīng)用基礎(chǔ)教程》課件第八章_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第八章同步數(shù)字電路與時序分析LOREMIPSUMDOLOR目錄CONCENT8.1同步數(shù)字電路的基本概念8.2D觸發(fā)器的工作原理8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器8.4同步數(shù)字系統(tǒng)的時序約束8.5時鐘8.6IO時序分析8.7時序例外8.8PLL8.9時序優(yōu)化8.1同步數(shù)字電路的基本概念GRADUATIONTHESIS8.1基本數(shù)據(jù)類型8.1.1同步數(shù)字電路同步數(shù)字電路:由時序電路和組合邏輯電路共同構(gòu)成的電路,其中時序電路主要由各種寄存器和觸發(fā)器構(gòu)成。該電路有一個同步的信號——通常稱之為時鐘信號——來控制所有的寄存器和觸發(fā)器,因此同步數(shù)字電路會在嚴(yán)格的時鐘控制下進(jìn)行工作。電路中的所有的狀態(tài)變化都是在時鐘的上升沿或者下降沿完成的。同步數(shù)字電路示例8.1基本數(shù)據(jù)類型8.1.2時鐘域所有的時序電路都是通過時鐘信號來驅(qū)動。時鐘域,就是在該系統(tǒng)中,所有的觸發(fā)器都由同一時鐘驅(qū)動。因此,時鐘域的概念主要需要滿足如下幾點:(1)在同一個時鐘域內(nèi),所有的觸發(fā)器都由同一個時鐘驅(qū)動(2)在同一個時鐘域內(nèi),所有的組合邏輯的輸入都只能由這些觸發(fā)器驅(qū)動(3)在一個數(shù)字系統(tǒng)中,如CPLD/FPGA或者ASIC內(nèi),可能同時存在多個時鐘域如下圖所示,F(xiàn)F0和FF1為同一個時鐘域,它們同時被時鐘信號CLK1驅(qū)動,而FF2位另外一個時鐘域,它由時鐘信號CLK2驅(qū)動。當(dāng)FF2驅(qū)動的信號進(jìn)入組合邏輯時,需要進(jìn)行特別處理,如增加同步寄存器,否則會產(chǎn)生亞穩(wěn)態(tài)。8.1基本數(shù)據(jù)類型時鐘域8.2D觸發(fā)器的工作原理GRADUATIONTHESIS8.2D觸發(fā)器的工作原理D觸發(fā)器在時鐘的上升沿或者下降沿的作用下,會存儲一位系統(tǒng)狀態(tài)并更新它。同時,它也帶有復(fù)位/置位信號用于上電初始化或者系統(tǒng)復(fù)位——該輸入信號與時鐘信號互相獨立并且優(yōu)先于時鐘信號。其基本元件符號如圖所示。D觸發(fā)器元件示意圖8.2D觸發(fā)器的工作原理采用SystemVerilog實現(xiàn)此D觸發(fā)器如下:moduleDFF#(parameterW=1)(inputlogicclk,inputlogicrst_,inputlogic[W-1:0]d,outputlogic[W-1:0]q);

always_ff@(posedgeclk,negedgerst_)if(!rst_) q<=0;elseq<=d;endmodule8.2D觸發(fā)器的工作原理建立時間(Tsu)——D觸發(fā)器輸入端要求輸入信號在時鐘信號有效沿(上升沿或者下降沿)到來之前保持穩(wěn)定不變的時間。保持時間(Thold)——D觸發(fā)器輸入端要求輸入信號在時鐘信號有效沿(上升沿或者下降沿)到來之后保持穩(wěn)定不變的時間。異步恢復(fù)時間(Tr)——異步控制信號在下一個有效時鐘邊沿到達(dá)前必須穩(wěn)定下來的最短時間。Tco——從D觸發(fā)器時鐘信號輸入端時鐘有效沿到達(dá)到D觸發(fā)器的輸出端更新信號穩(wěn)定之間的時間8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器GRADUATIONTHESIS8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器亞穩(wěn)態(tài)的產(chǎn)生:信號從0到1之間的跳變或者從1到0之間的跳變時間稱為上升時間或者下降時間,在這段時間內(nèi),信號是未定的,因此如果對這段時間內(nèi)的信號進(jìn)行采樣,則會出現(xiàn)亞穩(wěn)態(tài)現(xiàn)象。8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器第一種情形,經(jīng)過一段時間的振蕩,D觸發(fā)器的信號最終會恢復(fù)到設(shè)計者想要設(shè)計的電平信號,如本例Q輸出情形1最終恢復(fù)為高電平1。第二種情形,經(jīng)過一段時間的振蕩,D觸發(fā)器的信號還是無法恢復(fù)到設(shè)計者想要設(shè)計的電平邏輯,如本例Q輸出情形2最終恢復(fù)為低電平2。8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器亞穩(wěn)態(tài)恢復(fù)時間過長造成的建立時間違例的波形圖8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器同步邏輯正常采用波形圖8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器同步邏輯采用亞穩(wěn)態(tài)波形圖(假設(shè)恢復(fù)為1的情形)8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器【例8-1】采樣SystemVerilog設(shè)計一段代碼對異步信號下降沿進(jìn)行采用,要求:采用兩個觸發(fā)器進(jìn)行設(shè)計。分析:對于異步信號的邊沿采樣,通常的原理是采用時鐘信號連續(xù)對被檢測的異步信號進(jìn)行連續(xù)采樣,如果相鄰采樣的數(shù)據(jù)出現(xiàn)不同,如前一個采樣值為0,后一個采樣值為1,則表示為該異步信號在進(jìn)行上升沿跳變,如果前一個采樣值為1,后一個采樣值為0,則表示該異步信號在進(jìn)行下降沿跳變。該代碼原理按照此分析進(jìn)行。8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器moduleEdge_detect(inputlogicclk,inputlogicrst_,inputlogicAsync_in,outputlogicfalling_edge_latch);

logic[1:0]edge_latch;//邊沿檢測

always_ff@(posedgeclk,negedgerst_)

if(!rst_)

edge_latch<=2'b0;

else

begin

edge_latch[0]<=Async_in;

edge_latch[1]<=edge_latch[0];

end//當(dāng)前一個采樣值為1后一個采樣值為0,則表示偵測到下降沿

assignfalling_edge_latch=(~edge_latch[0])&(edge_latch[1]);endmodule

8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器moduleEdge_detect(inputlogicclk,inputlogicrst_,inputlogicAsync_in,outputlogicfalling_edge_latch);

logic[2:0]edge_latch;//邊沿檢測always_ff@(posedgeclk,negedgerst_)if(!rst_) edge_latch<=3'b0; else begin edge_latch[0]<=Async_in; edge_latch[1]<=edge_latch[0]; edge_latch[2]<=edge_latch[1]; end//當(dāng)前一個采樣值為1后一個采樣值為0,則表示偵測到下降沿assignfalling_edge_latch=(~edge_latch[1])&(edge_latch[2]);endmodule修改代碼8.3亞穩(wěn)態(tài)的產(chǎn)生原理以及同步寄存器基本電路邏輯如下:8.4同步數(shù)字系統(tǒng)的時序約束GRADUATIONTHESIS8.4同步數(shù)字系統(tǒng)的時序約束同步數(shù)字系統(tǒng)的時序約束,其本質(zhì)在于在任何時候使得信號滿足建立時間和保持時間的要求,確保系統(tǒng)不會出現(xiàn)亞穩(wěn)態(tài)或者出現(xiàn)亞穩(wěn)態(tài)時系統(tǒng)能夠自行恢復(fù)到正常狀態(tài)。同步數(shù)字電路示意圖如下:其中,Tpd為組合邏輯的傳播時延,Tcycle為時鐘CLK的時鐘周期,該時鐘周期沒有考慮時鐘偏斜和抖動。8.4同步數(shù)字系統(tǒng)的時序約束從圖中可以看出,要能夠維持正確的同步邏輯,系統(tǒng)時序必須滿足:8.4同步數(shù)字系統(tǒng)的時序約束在該不等式中,Tco、Tsu都是CPLD/FPGA所固定的,一旦選擇哪款CPLD/FPGA,則Tco和Tsu不能更改,可以通過具體的CPLD/FPGA芯片的數(shù)據(jù)手冊查閱。因此,在不考慮時鐘偏斜和抖動的情況下,影響系統(tǒng)時序的主要是Tcycle時鐘周期和Tpd組合邏輯傳播時延。當(dāng)組合邏輯時延Tpd過長,則Q1_Delay信號滿足了FF2的保持時間的要求,但無法滿足FF2的建立時間的要求,因此Q2輸出為未定態(tài)。此時,可以通過降低時鐘頻率來解決該問題,如下圖所示。8.4同步數(shù)字系統(tǒng)的時序約束但如果組合邏輯傳播時延Tpd過短,則可能導(dǎo)致下一次上升沿到來時,信號因為保持時間不滿足而違例。降低時鐘頻率滿足時序邏輯時序要求8.4同步數(shù)字系統(tǒng)的時序約束如果Q1_Delay的傳播時延過短,導(dǎo)致該信號在下一個時鐘上升沿到來之后無法滿足其保持時間的要求,因而依舊會輸出亞穩(wěn)態(tài)波形。8.5時鐘GRADUATIONTHESIS8.5時鐘8.5.1時鐘偏斜與抖動對于時鐘而言,由于走線拓?fù)?、布線位置、扇出等不同而會導(dǎo)致同樣的時鐘信號到達(dá)各個觸發(fā)器的時間也各不相同,這樣就會出現(xiàn)時鐘偏斜與抖動的現(xiàn)象。一個100MHz時鐘從時鐘源出來后,驅(qū)動一個時序邏輯系統(tǒng),其中CLK1延時6個時間單位,CLK2延時4.9個時間單位,CLK3延時4.7個時間單位,CLK4延時3.8個時間單位,因此盡管時鐘域相同,但由于走線不同,最終到達(dá)觸發(fā)器的時間會不相同。8.5時鐘在該圖中,時鐘周期不再是理想的時鐘周期Tcycle,而是Tcycle+Tskew。其中Tskew可正可負(fù)。因此,當(dāng)系統(tǒng)同時滿足如下不等式時,同步數(shù)字電路能夠穩(wěn)定運(yùn)行。

8.5時鐘

增加Tskew后的同步數(shù)字電路波形時序圖(Tskew大于0)相對于CLK1的第一個上升沿,CLK2的上升沿到達(dá)FF2的時間為Tcycle+Tskew。Q1_Delay在CLK2第二個上升沿到來時穩(wěn)定時間加長,但同時相對于保持時間會減小。在這種情況下,時序約束需要重點考慮保持時間違例的情形,如下圖所示8.5時鐘保持時間違例的同步數(shù)字電路波形時序圖(Tskew大于0)8.5時鐘時鐘偏斜也存在小于零的情況,如圖,CLK2的上升沿到達(dá)FF2的時間相對于CLK1的上升沿到達(dá)的時間會提前一個偏斜時間到達(dá),因此從CLK1的第一個上升沿到達(dá)FF1的時間和CLK2的第二個上升沿到達(dá)FF2的時間小于一個時鐘周期,具體為Tcycle+Tskew(其中Tskew<0)。8.5時鐘當(dāng)組合邏輯傳播延時過大,導(dǎo)致信號不滿足FF2的建立時間時,則會產(chǎn)生建立時間違例,Q2輸出亞穩(wěn)態(tài)。相應(yīng)的時序波形圖如圖所示。8.5時鐘8.5.2FmaxFmax的概念:用來衡量芯片最大支持的工作頻率。對于芯片內(nèi)部而言,它是D觸發(fā)器到D觸發(fā)器之間的延時,而對于整個芯片來說,還需要考慮進(jìn)入芯片的建立時間、保持時間以及輸出芯片的Tco等。

芯片內(nèi)部的Fmax的計算公式如下:整個系統(tǒng)時鐘頻率Fmax的計算公式如下:8.6IO時序分析GRADUATIONTHESIS8.6IO時序分析8.6.1輸入時序分析輸入時序分析是指信號從上一個源芯片驅(qū)動輸出,經(jīng)過電路板或者電纜傳送,到達(dá)目標(biāo)CPLD/FPGA芯片的輸入管腳,并成功被采樣的過程。在此過程中主要有三種時序參數(shù)需要考慮。(1)輸入建立時間——輸入建立時間是指時鐘采樣邊沿到達(dá)CPLD/FPGA管腳與數(shù)據(jù)信號到達(dá)CPLD/FPGA輸入管腳之間的時間差。如果數(shù)據(jù)先于時鐘信號到達(dá),則該輸入建立時間為正。它是時鐘頻率、源芯片輸出時序以及板級時延的函數(shù)。與CPLD/FPGA內(nèi)部D觸發(fā)器的建立時間是一個固定值不同,由于輸入建立時間取決于輸入時鐘周期值,如果輸入時鐘周期發(fā)生改變,則輸入建立時間也會發(fā)生改變。(2)輸入延時——輸入延時是指采樣時鐘上一個上升沿到達(dá)CPLD/FPGA管腳到數(shù)據(jù)到達(dá)CPLD/FPGA輸入管腳之間的時間差。顯然,這段時間與時鐘周期無關(guān),因此如果輸入時鐘周期發(fā)生改變不會影響輸入延時。(3)保持時間——保持時間是指FPGA輸入端的數(shù)據(jù)在采樣時鐘邊沿到達(dá)FPGA管腳后保持有效的時間。8.6IO時序分析8.6.2輸出時序分析輸出時序邏輯實際就是分析輸入時序邏輯的源設(shè)備的時序。其具體時序邏輯如下圖所示。輸出時序分析是指數(shù)據(jù)信號被時鐘信號采樣并成功驅(qū)動輸出到電路板或者電纜,并順利傳送給目標(biāo)芯片的輸入管腳,在下一個采樣時鐘到來時成功被采樣的過程。在此過程中主要有兩種時序參數(shù)需要考慮。8.6IO時序分析輸出時序分析中主要有兩種時序參數(shù):lTco——此時的Tco和之前D觸發(fā)器的Tco有所不同。輸出時序邏輯的Tco是指發(fā)布時鐘的有效邊沿到達(dá)CPLD/FPGA輸出寄存器到信號被驅(qū)動離開FPGA管腳的時間。它不僅包含D觸發(fā)器的Tco時間,還包括了從輸出寄存器的輸出端到FPGA管腳之間的延時。它是時鐘頻率、目標(biāo)設(shè)備時序以及板級延時的函數(shù)。因此,如果時鐘周期發(fā)生變化,也會導(dǎo)致該參數(shù)發(fā)生變化。l輸出延時——信號從離開CPLD/FPGA管腳到信號被目標(biāo)芯片成功采樣之間的時間差。它包括板級延時、輸入建立時間以及因為板級SI等問題導(dǎo)致的時鐘偏斜等。它與時鐘周期無關(guān)。8.7時序例外GRADUATIONTHESIS8.7時序例外8.7.1FalsePathFlasePath定義在設(shè)計中,把不需要進(jìn)行時序檢查的路徑稱之為FalsePath。FalsePath一般形式:(1)邏輯上不可能出現(xiàn)的路徑:設(shè)計者需要指出哪些路徑在邏輯功能上不會存在,因為工具不可能獲得足夠的信息來分辨,如圖8-29所示,不論And1與門為何值,And2與門用于輸出為0。(2)CDC路徑:對于跨時鐘域的信號,采用握手協(xié)議或者FIFO來通信。(3)測試功能邏輯路徑:在CPLD/FPGA設(shè)計中,往往會加入很多測試電路,如BIST測試、JTAG測試等。設(shè)計者對這些測試電路無需進(jìn)行時序檢查。(4)其他設(shè)計者特別指明的路徑。8.7時序例外FathPath示例:邏輯上不可能出現(xiàn)的路徑8.7時序例外8.7.2MultiCyclePathMultiCycle路徑允許設(shè)計者指定一個與默認(rèn)情況下的要求不同的時間要求。MultiCycle路徑中的發(fā)送寄存器和接收寄存器可以由相同的時鐘驅(qū)動,也可以采用不同的時鐘驅(qū)動——但必須相關(guān)。8.7時序例外1.相同時鐘域的MultiCycle路徑概念:當(dāng)發(fā)送寄存器和接收寄存器采用相同時鐘的相同時鐘沿(注意:是相同的時鐘邊沿)進(jìn)行觸發(fā)時,這就是相同的時鐘域。MultiCycle路徑的時序是:發(fā)布寄存器在上一個時鐘上升沿發(fā)送數(shù)據(jù),但接收數(shù)據(jù)發(fā)生在第三個時鐘上升沿,而不是緊接著的第二個時鐘上升沿。當(dāng)然,并不是所有MultiCycle路徑都是在第二個時鐘上升沿接收數(shù)據(jù),而是取決于在進(jìn)行時鐘約束時所設(shè)定的在第幾個時鐘上升沿接收數(shù)據(jù)。在約束文件中可以采用乘積因子(MultiplierFactor)來設(shè)定。如針對圖8-35,設(shè)定如下:FREQUENCYPORT“clk”200MHZ;MULTICYCLEFROMCELL“FF_S”TO“FF_D”2X;“2X”為乘積因子提醒布局布線軟件數(shù)據(jù)從FF_S到FF_D需要額外一個時鐘周期。8.7時序例外2.跨時鐘域的MultiCycle路徑所謂跨時鐘域,也就是說發(fā)送寄存器和接收寄存器的驅(qū)動時鐘不同,或者敏感驅(qū)動邊沿不同。

跨時鐘域MultiCycle路徑示意圖8.7時序例外跨時鐘域MultiCycle可以設(shè)置約束文件如下:FREQUENCYPORT"CLK1"333.000000MHz;FREQUENCYPORT"CLK2"250.000000MHz;CLK_OFFSET1.330000X;CLOCK_TO_OUTPORT"Q"1.000000nsCLKPORT"CLK2";CLKSKEWDIFFCLKPORT"CLK2"CLKPORT"CLK1"0.500000ns;時鐘時序波形圖8.8PLLGRADUATIONTHESIS8.8PLLPLL概念:PLL(PhaseLockedLoop,鎖相環(huán))是一種反饋控制電路,其工作原理示意圖如下,通常由鑒相器(PD,PhaseDetector)、環(huán)路濾波器(LF,LoopFilter)和壓控振蕩器(VCO,VoltageControlledOscillator)三部分組成。PLL工作原理圖8.8PLL用LatticeCPLD/FPGA中的一個PLL如下:my_plli_my_pll(.CLK(clk1),.RESET(rst),.CLKOP(clkop),.CLKOS(),.CLKOK(clkok),.LOCK(pll_lock));clk1為基準(zhǔn)輸入時鐘信號clkop和clkok是PLL輸出時鐘信號pll_lock表示PLL輸出時鐘信號穩(wěn)定信號。輸出信號的頻率可以比輸入時鐘高,也可以低,還可以相等,相位可以相同,也可以不同。8.8PLL采用PLL進(jìn)行CPLD/FPGA設(shè)計的優(yōu)勢在于:l整個CPLD/FPGA的時序可控,盡管PLL輸出的時鐘信號可能頻率和相位都不相同,但可以相關(guān),這樣就可以使用MultiCycle進(jìn)行時序約束。l在進(jìn)行系統(tǒng)綜合和布局布線時,各種時序報告可以自動分析PLL輸出時鐘信號的狀態(tài)和相關(guān)約束,因此容易進(jìn)行時序約束調(diào)整。l采用PLL對輸入信號進(jìn)行鎖頻、分頻和倍頻,可以盡量減小輸入信號的偏斜、抖動等各種影響時序約束的因素。8.9時序優(yōu)化GRADUATIONTHESIS8.9時序優(yōu)化時序優(yōu)化的額一般方法:(1)采用專用GSR資源來改善Fmax。如果設(shè)計中會涉及大量的置位/復(fù)位的扇出,推薦采用專用的硬件GSR資源,從而減少布線擁塞,改善布線性能。(2)采用I/O寄存器來改善I/O時序??梢酝ㄟ^打開I/O寄存器來改善輸入建立時間以及輸出Tco。可以通過在VerilogHDL語言中進(jìn)行注釋來打開

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論