如何利用FPGA進(jìn)行時(shí)序分析設計
FPGA(Field-Programmable Gate Array),即現場(chǎng)可編程門(mén)陣列,它是作為專(zhuān)用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數有限的缺點(diǎn)。對于時(shí)序如何用FPGA來(lái)分析與設計,本文將詳細介紹。
本文引用地址:http://dyxdggzs.com/article/201706/360808.htm基本的電子系統如圖 1所示,一般自己的設計都需要時(shí)序分析,如圖 1所示的Design,上部分為時(shí)序組合邏輯,下部分只有組合邏輯。而對其進(jìn)行時(shí)序分析時(shí),一般都以時(shí)鐘為參考的,因此一般主要分析上半部分。在進(jìn)行時(shí)序分析之前,需要了解時(shí)序分析的一些基本概念,如時(shí)鐘抖動(dòng)、時(shí)鐘偏斜(Tskew)、建立時(shí)間(Tsu)、保持時(shí)間(Th)等。時(shí)序分析也就是分析每一個(gè)觸發(fā)器(寄存器)是否滿(mǎn)足建立時(shí)間/保持時(shí)間,而時(shí)序的設計的實(shí)質(zhì)就是滿(mǎn)足每一個(gè)觸發(fā)器的建立時(shí)間/保持時(shí)間的要求。

圖 1 基本的電子系統
一、時(shí)鐘抖動(dòng)和時(shí)鐘偏斜
1.時(shí)鐘抖動(dòng)
時(shí)鐘信號邊沿變化的不確定時(shí)間稱(chēng)為時(shí)鐘抖動(dòng),如圖 2所示。一般情況下的時(shí)序分析是不考慮時(shí)鐘抖動(dòng),如果考慮時(shí)鐘抖動(dòng),則建立時(shí)間應該是Tsu+T1,保持時(shí)間應該是Th+T2。
圖 2 時(shí)鐘抖動(dòng)時(shí)序圖
2.時(shí)鐘偏斜
時(shí)序偏斜分析圖如圖 3所示。時(shí)鐘的分析起點(diǎn)是源寄存器(Reg1),終點(diǎn)是目標寄存器(Reg2)。時(shí)鐘在圖中的結構中傳輸也會(huì )有延遲,時(shí)鐘信號從時(shí)鐘源傳輸到源寄存器的延時(shí)為T(mén)c2s,傳輸到目標寄存器的延時(shí)為T(mén)c2d。時(shí)鐘網(wǎng)絡(luò )的延時(shí)為T(mén)c2s與Tc2d之差,即Tskew=Tc2d-Tc2s。
圖 3 時(shí)鐘偏斜時(shí)序圖
二、建立時(shí)間和保持時(shí)間
建立時(shí)間(Setup Time)常用Tsu表示,指的是在觸發(fā)器的時(shí)鐘信號上升沿到來(lái)以前,數據和使能信號穩定不變的時(shí)間,如果建立時(shí)間不夠,數據將不能在這個(gè)時(shí)鐘上升沿被打入觸發(fā)器,使能信號無(wú)效,也就是說(shuō)在這個(gè)時(shí)鐘周期對數據的操作時(shí)無(wú)效的;保持時(shí)間(Hold Time)常用Th表示,指的是在觸發(fā)器的時(shí)鐘信號上升沿到來(lái)以后,數據和使能信號穩定不變的時(shí)間,如果保持時(shí)間不夠,數據同樣不能被打入觸發(fā)器,對數據的操作同樣是無(wú)效的,使能信號無(wú)效。數據要能穩定傳輸,就必須滿(mǎn)足建立時(shí)間和保持時(shí)間的關(guān)系,圖 4標識了它們間的關(guān)系。

圖 4 建立時(shí)間/操持時(shí)間的概念
三、發(fā)送沿和捕獲沿
(1)發(fā)送沿(Launch Edge):前級寄存器發(fā)送數據對應的時(shí)鐘沿,是時(shí)序分析的起點(diǎn);
(2)捕獲沿(Latch Edge):后記寄存器捕獲數據對應的時(shí)鐘沿,是時(shí)序分析的終點(diǎn)。相對于launch Edge通常為一個(gè)時(shí)鐘周期,但不絕對,如多周期。
“信號跳變抵達窗口”:對latch寄存器來(lái)說(shuō),從previous時(shí)鐘對應的Hold Time開(kāi)始,到current 時(shí)鐘對應的Setup Time 結束。
“信號電平采樣窗口”:對latch寄存器來(lái)說(shuō),從current時(shí)鐘對應的Setup Time開(kāi)始,到current時(shí)鐘對應的Hold Time結束。
launch寄存器必須保證驅動(dòng)的信號跳變到達latch寄存器的時(shí)刻處于“信號跳變抵達窗口”內,才能保證不破壞latch寄存器的“信號電平采樣窗口”。
圖 5 Launch Edge和Latch Edge
四、數據和時(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í)鐘clk周期為T(mén),這里分析數據的建立時(shí)間和保持時(shí)間。

圖 6 基本電路圖
1、建立時(shí)間的分析
如圖 7所示,建立時(shí)間的分析是以第一個(gè)launch Edge為基準,在Latch Edge查看結果。建立時(shí)間的裕量(T為時(shí)鐘周期):
Setup Stack = (T+Tclk2) – Tsu – (Tclk1+Tco+Tdata)
假設△T = Tclk2-Tclk1,則:
Setup Stack = (T+△T) – Tsu – (Tco+Tdata)
可見(jiàn)△T<0影響建立時(shí)間,使建立時(shí)間的要求更加苛刻。因此對于△T盡量避免,采用同步單時(shí)鐘,并且盡量采用全局的時(shí)鐘信號,這樣△T幾乎為0,,△T的影響幾乎不存在,可以忽略不計。
如果建立時(shí)間的裕量Setup Stack小于0,則不滿(mǎn)足建立時(shí)間,也就會(huì )產(chǎn)生不穩定態(tài),并通過(guò)寄存器傳輸下去。

圖 7 建立時(shí)間時(shí)序分析圖
2、保持時(shí)間的分析
如圖 8所示,保持時(shí)間的分析是以第二個(gè)launch Edge為基準,在Latch Edge查看結果。保持時(shí)間的裕量:
Hold Stack = (Tclk1+Tco+Tdata) – Tclk2 – Th
假設△T = Tclk2-Tclk1,則:
Hold Stack = (Tco+Tdata) – △T – Th
可見(jiàn)△T>0影響保持時(shí)間,使保持時(shí)間的要求更加苛刻。。因此對于△T盡量避免,采用同步單時(shí)鐘,并且盡量采用全局的時(shí)鐘信號,這樣△T幾乎為0,,△T的影響幾乎不存在,可以忽略不計。
如果保持時(shí)間的裕量Hold Stack小于0,則不滿(mǎn)足保持時(shí)間,也就會(huì )產(chǎn)生不穩定態(tài),并通過(guò)寄存器傳輸下去。

圖 8 保持時(shí)間時(shí)序分析圖
五、DT6000S項目實(shí)例
DT6000S項目上有4路光以太網(wǎng)接口連接到FPGA,由FPGA進(jìn)行實(shí)現MAC層和解碼IEC61850的SV和GOOSE。以太網(wǎng)PHY通過(guò)MII接口和FPGA,因此FPGA與外部的接口有4路MII接口。項目初期是實(shí)現1路光以太網(wǎng)接口,并且驗證功能正確之后,但是后期變成的4路光以太網(wǎng)時(shí),總會(huì )存在1路光以太網(wǎng)通信不正常。經(jīng)過(guò)分析得到是FPGA通MII接口和PHY的時(shí)序不滿(mǎn)足。如圖 9所示為MII接口的時(shí)序圖,時(shí)序不滿(mǎn)足分為T(mén)X_CLK和RX_CLK。
其一是PHY輸出的TX_CLK和FPGA依據TX_CLK產(chǎn)生的TXD[3:0]&TX_EN延時(shí)大,主要延時(shí)為內部邏輯的延時(shí),PCB延時(shí)小并且一致,導致PHY的TX_CLK的建立時(shí)間不滿(mǎn)足,從而導致發(fā)送數據錯誤。
其二是PHY輸出的RX_CLK和RXD[3:0]&RX_DV&RX_ER到FPGA內部同步觸發(fā)器的延時(shí)之差太大,導致FPGA內部同步觸發(fā)器的RX_CLK的建立時(shí)間不滿(mǎn)足,從而導致接收數據錯誤。
因此FPGA在綜合時(shí)需要添加約束,使之時(shí)序滿(mǎn)足要求,約束的條件為T(mén)XD[3:0]和TX_EN的輸出延時(shí)要少。RX_CLK和RXD[3:0]&RX_DV&RX_ER路徑延時(shí)之差要小。添加約束之后,4路MII接口的光以太網(wǎng)數據通信就正常了。
圖 9 MII時(shí)序圖
這里闡述了時(shí)序分析基礎,說(shuō)明概念的同時(shí)進(jìn)行了時(shí)序分析,通過(guò)時(shí)序分析理解建立時(shí)間和保持時(shí)間。希望大家閱讀本文之后可以對FPGA時(shí)序分析有進(jìn)一步的了解。
評論