FPGA重點(diǎn)知識(shí)13條,助你構(gòu)建完整“邏輯觀”之二
異步時(shí)鐘同步化
本文引用地址:http://butianyuan.cn/article/201802/375719.htm通過(guò)雙觸發(fā)器接口,異步信號(hào)輸入總是無(wú)法滿(mǎn)足數(shù)據(jù)的建立保持時(shí)間,所以建議大家把所有異步輸入都先經(jīng)過(guò)雙觸發(fā)器進(jìn)行同步化。如圖所示,時(shí)鐘域clk_s傳給時(shí)鐘域clk_d的數(shù)據(jù)經(jīng)過(guò)了雙觸發(fā)器的同步處理,相同的,時(shí)鐘域clk_d經(jīng)雙觸發(fā)器傳給時(shí)鐘域clk_s的數(shù)據(jù)
通過(guò)高頻時(shí)鐘同步化,當(dāng)在單個(gè)系統(tǒng)中有兩個(gè)或兩個(gè)以上非同源時(shí)鐘的時(shí)候,數(shù)據(jù)的建立和保持時(shí)間很難得到保證,我們將面臨復(fù)雜的時(shí)間問(wèn)題,最好的方法是將所有非同源時(shí)鐘同步化:選用一個(gè)頻率是它們的時(shí)鐘頻率公倍數(shù)的高頻主時(shí)鐘將他們進(jìn)行同步。
假設(shè)系統(tǒng)有兩個(gè)不同源時(shí)鐘,一個(gè)為3MHz,一個(gè)為5MHz,不同的觸發(fā)器使用不同的時(shí)鐘。為了系統(tǒng)穩(wěn)定,假設(shè)我們引入一個(gè)20MHz時(shí)鐘。
用modelsim仿真后得到的時(shí)序圖如圖所示
9、如何確定時(shí)序約束數(shù)值
FPGA工程的功能框圖如圖所示。上電初始,FPGA需要通過(guò)IIC接口協(xié)議對(duì)攝像頭模塊進(jìn)行寄存器初始化配置。這個(gè)初始化的基本參數(shù),如初始化地址和數(shù)據(jù)存儲(chǔ)在一個(gè)預(yù)先配置好的FPGA內(nèi)嵌ROM中。在初始化配置完成后,攝像頭就能夠持續(xù)輸出RGB標(biāo)準(zhǔn)的視頻數(shù)據(jù)流,F(xiàn)PGA通過(guò)對(duì)其相應(yīng)的時(shí)鐘、行頻和場(chǎng)頻進(jìn)行檢測(cè),從而一幀一幀的實(shí)時(shí)采集圖像數(shù)據(jù)。
采集到的視頻數(shù)據(jù)先通過(guò)一個(gè)FIFO,將原本25MHz頻率下同步的數(shù)據(jù)流轉(zhuǎn)換到100MHz頻率下。接著講這個(gè)數(shù)據(jù)再送入寫(xiě)SDRAM緩存的FIFO中,最終這個(gè)FIFO每滿(mǎn)160個(gè)數(shù)據(jù)就會(huì)將其寫(xiě)入SDRAM的相應(yīng)地址中。在另一側(cè),使用另一個(gè)異步FIFO將SDRAM緩存的圖像數(shù)據(jù)送個(gè)LCD驅(qū)動(dòng)模塊。LCD驅(qū)動(dòng)模塊不斷的讀出新的現(xiàn)實(shí)圖像,并且驅(qū)動(dòng)3.5寸液晶屏工作。
由于這個(gè)工程是移植過(guò)來(lái)的,SDRAM的時(shí)序約束已經(jīng)添加好并且很好的收斂了。但是,新增加的CMOS sensor的接口也需要做相應(yīng)的時(shí)序約束。下面我們就來(lái)探討下它的時(shí)序該如何做約束。
先看看CMOS Sensor的datasheet中提供的時(shí)序波形和相應(yīng)的建立、保持時(shí)間要求。波形如圖所示。
波形中出現(xiàn)的時(shí)間參數(shù)定義如下表所示。
我們可以簡(jiǎn)單分析下這個(gè)datasheet中提供的時(shí)序波形和參數(shù)提供了一些什么樣的有用信息。我們重點(diǎn)關(guān)注PCLK和D[7:0]的關(guān)系,HREF其實(shí)也可以歸類(lèi)到D[7:0]中一起分析,他們的時(shí)序關(guān)系基本是一致的(如果存在偏差,也可以忽略不計(jì))。這個(gè)波形實(shí)際上表達(dá)的是從Sensor的芯片封裝管腳上輸出的PCLK和D[7:0]的關(guān)系。而在理想狀況下,經(jīng)過(guò)PCB走線將這組信號(hào)連接到其他的芯片上(如CPU或FPGA),若盡可能保持走線長(zhǎng)度,在其他芯片的管腳上,PCLK和D[7:0]的關(guān)系基本還是不變的。那么,對(duì)于采集端來(lái)說(shuō),用PCLK的上升沿去鎖存D[7:0]就變得理所當(dāng)然了。而對(duì)于FPGA而言,從它的管腳到寄存器傳輸路徑上總歸是有延時(shí)存在的,那么PCLK和D[7:0]之間肯定不會(huì)是理想的對(duì)齊關(guān)系。而我們現(xiàn)在關(guān)心的是,相對(duì)于理想的對(duì)齊關(guān)系,PCLK和D[7:0]之間可以存在多大的相位偏差(最終可能會(huì)以一個(gè)延時(shí)時(shí)間范圍來(lái)表示)。在時(shí)序圖中,Tsu和Th雖然是PCLK和D[7:0]在Sensor內(nèi)部必須保證的建立時(shí)間和保持時(shí)間關(guān)系,但它同樣是Sensor的輸出管腳上,必須得到保證的基本時(shí)序關(guān)系。因此,我們可以認(rèn)為:理想相位關(guān)系情況下,PCLK上升沿之前的Tsu時(shí)間(即15ns)到上升沿后的Th時(shí)間(即8ns)內(nèi),D[7:0]是穩(wěn)定不變的。同樣的,理想情況下,PCLK的上升沿處于D[7:0]兩次數(shù)據(jù)變化的中央。換句話說(shuō),在D[7:0]保持當(dāng)前狀態(tài)的情況下,PCLK上升沿實(shí)際上在理想位置的Tsu時(shí)間和Th時(shí)間內(nèi)都是允許的。請(qǐng)大家記住這一點(diǎn),下面我們需要利用這個(gè)信息對(duì)在FPGA內(nèi)部的PCLK和D[7:0]信號(hào)進(jìn)行時(shí)序約束。
OK,明確了PCLK和D[7:0]之間應(yīng)該保持的關(guān)系后,我們?cè)賮?lái)看看他們從CMOS Sensor的管腳輸出后,到最終在FPGA內(nèi)部的寄存器進(jìn)行采樣鎖存,這整個(gè)路徑上的各種“艱難險(xiǎn)阻”(延時(shí))。
在這個(gè)路徑分析中,我們不去考慮CMOS Sensor內(nèi)部的時(shí)序關(guān)系,我們只關(guān)心它的輸出管腳上的信號(hào)。先看時(shí)鐘PCLK的路徑延時(shí),在PCB上的走線延時(shí)為T(mén)cpcb,在FPGA內(nèi)部,從進(jìn)入FPGA的管腳到寄存器的時(shí)鐘輸入端口的延時(shí)為T(mén)cl。再看數(shù)據(jù)D[7:0]的延時(shí),在PCB上的走線延時(shí)為T(mén)dpcb,在FPGA內(nèi)部的管腳到寄存器輸入端口延時(shí)為T(mén)p2r。而FPGA的寄存器同樣有建立時(shí)間Tsu和保持時(shí)間Th要求,也必須在整個(gè)路徑的傳輸時(shí)序中予以考慮。
另外,從前面的分析,我們得到了PCLK和D[7:0]之間應(yīng)該滿(mǎn)足的關(guān)系。那么,為了保證PCLK和D[7:0]穩(wěn)定考慮的得到傳輸,我們可以得到這樣一個(gè)基本的關(guān)系必須滿(mǎn)足:
對(duì)于建立時(shí)間,有:
Launch edge + Tdpcb + Tp2r + Tsu < latch edge + Tcpcb + Tcl
對(duì)于保持時(shí)間,有:
Launch edge + Tdpcb + Tr2p < latch edge + Tcpcb + Tcl – Th
關(guān)于launch edge和latch edge,對(duì)于我們當(dāng)前的設(shè)計(jì),如下圖所示。
在對(duì)這個(gè)FPGA的input接口的時(shí)序進(jìn)行分析和約束之前,我們先來(lái)看看Altera官方是如何分析此類(lèi)管腳的時(shí)序。
具體問(wèn)題具體分析,我們當(dāng)前的工程,狀況和理想模型略有區(qū)別。實(shí)際上在上面這個(gè)模型的源寄存器端的很多信息都不用詳細(xì)分析,因?yàn)槲覀儷@得的波形是來(lái)自于Sensor芯片的管腳。同理,我們可以得到input delay的計(jì)算公式如下。
Input max delay = (0 – Tcpcb_min) + Tco_max + Tdpcb_max
Input min delay = (0 – Tcpcb_max) + Tco_min + Tdpcb_min
在這兩個(gè)公式中,參數(shù)Tco是前面我們還未曾提到的,下面我們就要分析下如何得到這個(gè)參數(shù)。Tco指的是理想情況下數(shù)據(jù)在源寄存器被源時(shí)鐘鎖存后,經(jīng)過(guò)多長(zhǎng)時(shí)間輸入到管腳上。前面我們已經(jīng)得到了PCLK和D[7:0]之間的關(guān)系,其實(shí)從已知的關(guān)系中,我們不難推斷出Tco_max和Tco_min,如圖所示。若PCLK的時(shí)鐘周期為T(mén)pclk,則:
Tco_max = Tpclk – Tsu
Tco_min = Th
在我們采樣的CMOS Sensor圖像中,PCLK頻率為12.5MHz,即80ns。因此,我們可以計(jì)算到:
Tco_max = 80ns – 15ns = 65ns
Tco_min = 8ns
我們?cè)倏纯碢CB的走線情況,算算余下和PCB走線有關(guān)的延時(shí)。
評(píng)論