《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 如何利用FPGA進(jìn)行時(shí)序分析設(shè)計(jì)

如何利用FPGA進(jìn)行時(shí)序分析設(shè)計(jì)

2017-06-23
來(lái)源:ZLG致遠(yuǎn)電子

  FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。對(duì)于時(shí)序如何用FPGA來(lái)分析與設(shè)計(jì),本文將詳細(xì)介紹。

  基本的電子系統(tǒng)如圖 1所示,一般自己的設(shè)計(jì)都需要時(shí)序分析,如圖 1所示的Design,上部分為時(shí)序組合邏輯,下部分只有組合邏輯。而對(duì)其進(jìn)行時(shí)序分析時(shí),一般都以時(shí)鐘為參考的,因此一般主要分析上半部分。在進(jìn)行時(shí)序分析之前,需要了解時(shí)序分析的一些基本概念,如時(shí)鐘抖動(dòng)、時(shí)鐘偏斜(Tskew)、建立時(shí)間(Tsu)、保持時(shí)間(Th)等。時(shí)序分析也就是分析每一個(gè)觸發(fā)器(寄存器)是否滿足建立時(shí)間/保持時(shí)間,而時(shí)序的設(shè)計(jì)的實(shí)質(zhì)就是滿足每一個(gè)觸發(fā)器的建立時(shí)間/保持時(shí)間的要求。

1.jpg

  圖 1  基本的電子系統(tǒng)

  一、時(shí)鐘抖動(dòng)和時(shí)鐘偏斜

  1.時(shí)鐘抖動(dòng)

  時(shí)鐘信號(hào)邊沿變化的不確定時(shí)間稱為時(shí)鐘抖動(dòng),如圖 2所示。一般情況下的時(shí)序分析是不考慮時(shí)鐘抖動(dòng),如果考慮時(shí)鐘抖動(dòng),則建立時(shí)間應(yīng)該是Tsu+T1,保持時(shí)間應(yīng)該是Th+T2。

2.jpg

  圖 2  時(shí)鐘抖動(dòng)時(shí)序圖

  2.時(shí)鐘偏斜

  時(shí)序偏斜分析圖如圖 3所示。時(shí)鐘的分析起點(diǎn)是源寄存器(Reg1),終點(diǎn)是目標(biāo)寄存器(Reg2)。時(shí)鐘在圖中的結(jié)構(gòu)中傳輸也會(huì)有延遲,時(shí)鐘信號(hào)從時(shí)鐘源傳輸?shù)皆醇拇嫫鞯难訒r(shí)為Tc2s,傳輸?shù)侥繕?biāo)寄存器的延時(shí)為Tc2d。時(shí)鐘網(wǎng)絡(luò)的延時(shí)為Tc2s與Tc2d之差,即Tskew=Tc2d-Tc2s。

3.png

  圖 3  時(shí)鐘偏斜時(shí)序圖

  二、建立時(shí)間和保持時(shí)間

  建立時(shí)間(Setup Time)常用Tsu表示,指的是在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來(lái)以前,數(shù)據(jù)和使能信號(hào)穩(wěn)定不變的時(shí)間,如果建立時(shí)間不夠,數(shù)據(jù)將不能在這個(gè)時(shí)鐘上升沿被打入觸發(fā)器,使能信號(hào)無(wú)效,也就是說(shuō)在這個(gè)時(shí)鐘周期對(duì)數(shù)據(jù)的操作時(shí)無(wú)效的;保持時(shí)間(Hold Time)常用Th表示,指的是在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來(lái)以后,數(shù)據(jù)和使能信號(hào)穩(wěn)定不變的時(shí)間,如果保持時(shí)間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器,對(duì)數(shù)據(jù)的操作同樣是無(wú)效的,使能信號(hào)無(wú)效。數(shù)據(jù)要能穩(wěn)定傳輸,就必須滿足建立時(shí)間和保持時(shí)間的關(guān)系,圖 4標(biāo)識(shí)了它們間的關(guān)系。

4.jpg

  圖 4  建立時(shí)間/操持時(shí)間的概念

  三、發(fā)送沿和捕獲沿

  (1)發(fā)送沿(Launch Edge):前級(jí)寄存器發(fā)送數(shù)據(jù)對(duì)應(yīng)的時(shí)鐘沿,是時(shí)序分析的起點(diǎn);

  (2)捕獲沿(Latch Edge):后記寄存器捕獲數(shù)據(jù)對(duì)應(yīng)的時(shí)鐘沿,是時(shí)序分析的終點(diǎn)。相對(duì)于launch Edge通常為一個(gè)時(shí)鐘周期,但不絕對(duì),如多周期。

  “信號(hào)跳變抵達(dá)窗口”:對(duì)latch寄存器來(lái)說(shuō),從previous時(shí)鐘對(duì)應(yīng)的Hold Time開(kāi)始,到current 時(shí)鐘對(duì)應(yīng)的Setup Time 結(jié)束。

  “信號(hào)電平采樣窗口”:對(duì)latch寄存器來(lái)說(shuō),從current時(shí)鐘對(duì)應(yīng)的Setup Time開(kāi)始,到current時(shí)鐘對(duì)應(yīng)的Hold Time結(jié)束。

  launch寄存器必須保證驅(qū)動(dòng)的信號(hào)跳變到達(dá)latch寄存器的時(shí)刻處于“信號(hào)跳變抵達(dá)窗口”內(nèi),才能保證不破壞latch寄存器的“信號(hào)電平采樣窗口”。

5.jpg

  圖 5  Launch Edge和Latch Edge

  四、數(shù)據(jù)和時(shí)鐘的時(shí)序分析

  如圖 6所示,為分析建立時(shí)間/保持時(shí)間的基本電路圖。Tclk1為Reg1的時(shí)鐘延時(shí),Tclk2為Reg2的時(shí)鐘延時(shí),Tco為Reg1固有延時(shí),Tdata為Reg1的到Reg2之間組合邏輯的延時(shí),Tsu為Reg2的建立時(shí)間,Th為Reg2的保持時(shí)間,設(shè)時(shí)鐘clk周期為T,這里分析數(shù)據(jù)的建立時(shí)間和保持時(shí)間。

6.jpg

  圖 6  基本電路圖

  1、建立時(shí)間的分析

  如圖 7所示,建立時(shí)間的分析是以第一個(gè)launch Edge為基準(zhǔn),在Latch Edge查看結(jié)果。建立時(shí)間的裕量(T為時(shí)鐘周期):

  Setup Stack = (T+Tclk2) – Tsu – (Tclk1+Tco+Tdata)

  假設(shè)△T = Tclk2-Tclk1,則:

  Setup Stack = (T+△T) – Tsu – (Tco+Tdata)

  可見(jiàn)△T<0影響建立時(shí)間,使建立時(shí)間的要求更加苛刻。因此對(duì)于△T盡量避免,采用同步單時(shí)鐘,并且盡量采用全局的時(shí)鐘信號(hào),這樣△T幾乎為0,,△T的影響幾乎不存在,可以忽略不計(jì)。

  如果建立時(shí)間的裕量Setup Stack小于0,則不滿足建立時(shí)間,也就會(huì)產(chǎn)生不穩(wěn)定態(tài),并通過(guò)寄存器傳輸下去。

7.jpg

  圖 7  建立時(shí)間時(shí)序分析圖

  2、保持時(shí)間的分析

  如圖 8所示,保持時(shí)間的分析是以第二個(gè)launch Edge為基準(zhǔn),在Latch Edge查看結(jié)果。保持時(shí)間的裕量:

  Hold Stack = (Tclk1+Tco+Tdata) – Tclk2 – Th

  假設(shè)△T = Tclk2-Tclk1,則:

  Hold Stack = (Tco+Tdata) – △T – Th

  可見(jiàn)△T>0影響保持時(shí)間,使保持時(shí)間的要求更加苛刻。。因此對(duì)于△T盡量避免,采用同步單時(shí)鐘,并且盡量采用全局的時(shí)鐘信號(hào),這樣△T幾乎為0,,△T的影響幾乎不存在,可以忽略不計(jì)。

  如果保持時(shí)間的裕量Hold Stack小于0,則不滿足保持時(shí)間,也就會(huì)產(chǎn)生不穩(wěn)定態(tài),并通過(guò)寄存器傳輸下去。

8.jpg

  圖 8  保持時(shí)間時(shí)序分析圖

  五、DT6000S項(xiàng)目實(shí)例

  DT6000S項(xiàng)目上有4路光以太網(wǎng)接口連接到FPGA,由FPGA進(jìn)行實(shí)現(xiàn)MAC層和解碼IEC61850的SV和GOOSE。以太網(wǎng)PHY通過(guò)MII接口和FPGA,因此FPGA與外部的接口有4路MII接口。項(xiàng)目初期是實(shí)現(xiàn)1路光以太網(wǎng)接口,并且驗(yàn)證功能正確之后,但是后期變成的4路光以太網(wǎng)時(shí),總會(huì)存在1路光以太網(wǎng)通信不正常。經(jīng)過(guò)分析得到是FPGA通MII接口和PHY的時(shí)序不滿足。如圖 9所示為MII接口的時(shí)序圖,時(shí)序不滿足分為TX_CLK和RX_CLK。

  其一是PHY輸出的TX_CLK和FPGA依據(jù)TX_CLK產(chǎn)生的TXD[3:0]&TX_EN延時(shí)大,主要延時(shí)為內(nèi)部邏輯的延時(shí),PCB延時(shí)小并且一致,導(dǎo)致PHY的TX_CLK的建立時(shí)間不滿足,從而導(dǎo)致發(fā)送數(shù)據(jù)錯(cuò)誤。

  其二是PHY輸出的RX_CLK和RXD[3:0]&RX_DV&RX_ER到FPGA內(nèi)部同步觸發(fā)器的延時(shí)之差太大,導(dǎo)致FPGA內(nèi)部同步觸發(fā)器的RX_CLK的建立時(shí)間不滿足,從而導(dǎo)致接收數(shù)據(jù)錯(cuò)誤。

  因此FPGA在綜合時(shí)需要添加約束,使之時(shí)序滿足要求,約束的條件為TXD[3:0]和TX_EN的輸出延時(shí)要少。RX_CLK和RXD[3:0]&RX_DV&RX_ER路徑延時(shí)之差要小。添加約束之后,4路MII接口的光以太網(wǎng)數(shù)據(jù)通信就正常了。

9.jpg

  圖 9  MII時(shí)序圖

  這里闡述了時(shí)序分析基礎(chǔ),說(shuō)明概念的同時(shí)進(jìn)行了時(shí)序分析,通過(guò)時(shí)序分析理解建立時(shí)間和保持時(shí)間。希望大家閱讀本文之后可以對(duì)FPGA時(shí)序分析有進(jìn)一步的了解。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。