久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【收藏】13條FPGA基礎知識,構建你的“邏輯觀”(中)

 Clock2651 2017-04-15


8,、FPGA時鐘系統(tǒng)

1.         FPGA的全局時鐘是什么,?

FPGA的全局時鐘應該是從晶振分出來的,最原始的頻率,。其他需要的各種頻率都是在這個基礎上利用PLL或者其他分頻手段得到的,。

2.         全局時鐘和BUFG:
BUFG,輸入為固定管腳,,輸出為H型全銅全局高速網(wǎng)絡,,這樣抖動和到任意觸發(fā)器的延時差最小,,這個也就是FPGA做同步設計可以不需要做后仿真的原因。

全局時鐘:今天我們從另一個角度來看一下時鐘的概念:時鐘是D觸發(fā)器的重要組成部分,,一個有效邊沿使得D觸發(fā)器進行一次工作,。而更多的時候,D觸發(fā)器保持住上次的值,。對于D觸發(fā)器來說,,可以將輸入信號和時鐘作比較。也許你會問,,這么比較有什么意義,。首先看我們比較得出什么東西:
       翻轉(zhuǎn)率:R=Dr/Crx100%
就是D觸發(fā)器改變一次值與時鐘有效沿個數(shù)的比值。

舉例:你寫了一個來一個時鐘有效沿就取一次反的電路,,那么他的翻轉(zhuǎn)率就是100%,,翻轉(zhuǎn)率和你的FPGA的功率有很大關系,翻轉(zhuǎn)率越高,,F(xiàn)PGA功率越高,。 

3.         全局時鐘不夠用是什么意思?
因為全局時鐘需要驅(qū)動很多模塊,,所以全局時鐘引腳需要有很大的驅(qū)動能力,,F(xiàn)PGA一般都有一些專門的引腳用于作為全局時鐘用,他們的驅(qū)動能力比較強,。但是如果這些引腳用完了,,就只能用一般的引腳了,而他們的驅(qū)動能力不強,,有可能不能滿足你的時序要求,。(驅(qū)動能力小的,產(chǎn)生的延遲會大一些)

理論上,,F(xiàn)PGA的任意一個管腳都可以作為時鐘輸入端口,,但是FPGA專門設計了全局時鐘,全局時鐘總線是一條專用總線,,到達片內(nèi)各部分觸發(fā)器的時間最短,,所以用全局時鐘芯片工作最可靠,但是如果你設計的時候時鐘太多,,F(xiàn)PGA上的全局時鐘管腳用完了就出現(xiàn)不夠用的情況,。

4.         什么是第二全局時鐘?

比如我有一個同步使能信號,,連接到FPGA內(nèi)部80%的資源(但不是時鐘),這個時候,,你的信號走線到達各個D觸發(fā)器的延遲差很大,或者翻轉(zhuǎn)率比較大的時候(>40%),,這個時候你就需要使用第二全局時鐘資源,。

  第二全局時鐘資源的驅(qū)動能力和時鐘抖動延遲等指標僅次于全局時鐘信號,。第二全局時鐘資源其實是通過片內(nèi)的高速行列總線來實現(xiàn)的,而不像全局時鐘總線是一條專用總線,。第二全局時鐘總線是通過軟件布線得到的,,所以硬指標肯定是拼不過全局時鐘總線。特別是當你在已經(jīng)有80%以上的布線率的情況下,,可能會出現(xiàn)約束第二全局時鐘資源失敗的情況,。

5.         CCLK:
CCLK:FPGA同步配置時鐘。如果配置模式為主模式,,則該時鐘由FPGA器件生成,,并輸出;如果配置模式為從模式,,則該時鐘由外部提供,;
當所配置的數(shù)據(jù)存放在PROM中,即通過PROM來配置器件時,,必須選擇CCLK時鐘,;
USER CLOCK:用戶定義的配置時鐘信號,該配置時鐘目前很少采用;
JTAG CLOCK:JTAG模式的配置時鐘,,該時鐘提供給內(nèi)部的JTAG控制邏輯,。
默認值為:CCLK

6.         CCLK是怎么產(chǎn)生的:
CCLK的產(chǎn)生根據(jù)配置模式不同而不同,如果設置為Master模式,,則由內(nèi)部的震蕩電路產(chǎn)生,,作為外部ROM的工作時鐘,默認為6MHZ,,可通過配置選項設置,;如果設置為Slave模式,,則由計算機(或其他下載設備)提供,,作為芯片內(nèi)部下載電路的工作時鐘;在JTAG模式情況下,,CCLK不輸出,,此時芯片內(nèi)部下載電路時鐘由內(nèi)部震蕩電路提供,TCK僅用作邊界掃描相關電路時鐘,。

補充:FPGA的主配置模式中,,CCLK信號是如何產(chǎn)生的?
CCLK是由FPGA內(nèi)部一個晶振電路產(chǎn)生的,,同時ISE的軟件在生成BIT流文件時,,有個CCLK CONFIG選項,這個選項只有在時鐘為CCLK時才可以起作用,,可以在4-60MHz選擇,,可以控制CCLK的頻率,。
在主從模式配置,配置數(shù)據(jù)的前60個字節(jié)導入FPGA之前,,CCLK一直是2.5MHz,,接下來由于前60個配置字節(jié)的作用,CCLK改為CONFIG設定的頻率,,直到結束,,一般CONFIG默認的頻率是4MHz.

7.         FPGA中全局時鐘怎么用啊,? 是把時鐘接到FPGA的全局時鐘輸入引腳后,,就起到全局時鐘的作用了,還是在編譯時需要制定某個時鐘為全局時鐘阿,?

其實全局時鐘的使用關鍵在你的代碼… 如果你的代碼中只用了一個時鐘作為所有的或者大部分觸發(fā)器的時鐘,,編譯器自然會把它編譯為全局時鐘。當然硬件連接上還是用全局時鐘引腳較好,,尤其是帶PLL的,,不是所有的全局時鐘腳都能用PLL。



無淪是用離散邏輯,、可編程邏輯,,還是用全定制硅器件實現(xiàn)的任何數(shù)字設計,為了成功地操作,,可靠的時鐘是非常關鍵的,。設計不良的時鐘在極限的溫度、電壓或制造工藝的偏差情況下將導致錯誤的行為,,并且調(diào)試困難,、花銷很大。 在設計PLD/FPGA時通常采用幾種時鐘類型,。時鐘可分為如下四種類型:全局時鐘,、門控時鐘、多級邏輯時鐘和波動式時鐘,。多時鐘系統(tǒng)能夠包括上述四種時鐘類型的任意組合,。


1.全局時鐘


對于一個設計項目來說,全局時鐘(或同步時鐘)是最簡單和最可預測的時鐘,。在PLD/FPGA設計中最好的時鐘方案是:由專用的全局時鐘輸入引腳驅(qū)動的單個主時鐘去鐘控設計項目中的每一個觸發(fā)器,。只要可能就應盡量在設計項目中采用全局時鐘。PLD/FPGA都具有專門的全局時鐘引腳,,它直接連到器件中的每一個寄存器,。這種全局時鐘提供器件中最短的時鐘到輸出的延時。


圖1 示出全局時鐘的實例。圖1 定時波形示出觸發(fā)器的數(shù)據(jù)輸入D[1..3]應遵守建立時間和保持時間的約束條件,。建立和保持時間的數(shù)值在PLD數(shù)據(jù)手冊中給出,,也可用軟件的定時分析器計算出來。如果在應用中不能滿足建立和保持時間的要求,,則必須用時鐘同步輸入信號(參看下一章“異步輸入”),。


圖1 全局時鐘

(最好的方法是用全局時鐘引腳去鐘控PLD內(nèi)的每一個寄存器,于是數(shù)據(jù)只要遵守相對時鐘的建立時間tsu和保持時間th)


2.門控時鐘

在許多應用中,,整個設計項目都采用外部的全局時鐘是不可能或不實際的,。PLD具有乘積項邏輯陣列時鐘(即時鐘是由邏輯產(chǎn)生的),允許任意函數(shù)單獨地鐘控各個觸發(fā)器,。然而,,當你用陣列時鐘時,應仔細地分析時鐘函數(shù),,以避免毛刺,。

通常用陣列時鐘構成門控時鐘。門控時鐘常常同微處理器接口有關,,用地址線去控制寫脈沖,。然而,每當用組合函數(shù)鐘控觸發(fā)器時,,通常都存在著門控時鐘,。如果符合下述條件,門控時鐘可以象全局時鐘一樣可靠地工作:

1.驅(qū)動時鐘的邏輯必須只包含一個“與”門或一個“或”門,。如果采用任何附加邏在某些工作狀態(tài)下,,會出現(xiàn)競爭產(chǎn)生的毛刺。
2.邏輯門的一個輸入作為實際的時鐘,,而該邏輯門的所有其它輸入必須當成地址或控制線,,它們遵守相對于時鐘的建立和保持時間的約束。


圖2和圖3 是可靠的門控時鐘的實例,。在 圖2 中,,用一個“與”門產(chǎn)生門控時鐘,在 圖3 中,,用一個“或”門產(chǎn)生門控時鐘,。在這兩個實例中,引腳nWR和nWE考慮為時鐘引腳,,引腳ADD[o..3]是地址引腳,兩個觸發(fā)器的數(shù)據(jù)是信號D[1..n]經(jīng)隨機邏輯產(chǎn)生的,。

圖2 “與”門門控時鐘



圖3 “或”門門控時鐘


圖2和圖3 的波形圖顯示出有關的建立時間和保持時間的要求,。這兩個設計項目的地址線必須在時鐘保持有效的整個期間內(nèi)保持穩(wěn)定(nWR和nWE是低電平有效)。如果地址線在規(guī)定的時間內(nèi)未保持穩(wěn)定,則在時鐘上會出現(xiàn)毛刺,,造成觸發(fā)器發(fā)生錯誤的狀態(tài)變化,。另一方面,數(shù)據(jù)引腳D[1..n]只要求在nWR和nWE的有效邊沿處滿足標準的建立和保持時間的規(guī)定,。


我們往往可以將門控時鐘轉(zhuǎn)換成全局時鐘以改善設計項目的可靠性,。圖4 示出如何用全局時鐘重新設計 圖2 的電路。地址線在控制D觸發(fā)器的使能輸入,,許多PLD設計軟件,,如MAX+PLUSII軟件都提供這種帶使能端的D觸發(fā)器。當ENA為高電平時,,D輸入端的值被鐘控到觸發(fā)器中:當ENA為低電平時,,維持現(xiàn)在的狀態(tài)。


圖4 “與”門門控時鐘轉(zhuǎn)化成全局時鐘




圖4 中重新設計的電路的定時波形表明地址線不需要在nWR有效的整個期間內(nèi)保持穩(wěn)定,;而只要求它們和數(shù)據(jù)引腳一樣符合同樣的建立和保持時間,,這樣對地址線的要求就少很多。

圖 給出一個不可靠的門控時鐘的例子,。3位同步加法計數(shù)器的RCO輸出用來鐘控觸發(fā)器,。然而,計數(shù)器給出的多個輸入起到時鐘的作用,,這違反了可靠門控時鐘所需的條件之一,。在產(chǎn)生RCO信號的觸發(fā)器中,沒有一個能考慮為實際的時鐘線,,這是因為所有觸發(fā)器在幾乎相同的時刻發(fā)生翻轉(zhuǎn),。而我們并不能保證在PLD/FPGA內(nèi)部QA,QB,QC到D觸發(fā)器的布線長短一致,因此,,如 圖5 的時間波形所示,,在器從3計到4時,RCO線上會出現(xiàn)毛刺(假設QC到D觸發(fā)器的路徑較短,,即QC的輸出先翻轉(zhuǎn)),。



圖5 不可靠的門控時鐘

(定時波形示出在計數(shù)器從3到4改變時,RCO信號如何出現(xiàn)毛刺的)



圖6 給出一種可靠的全局鐘控的電路,,它是圖5不可靠計數(shù)器電路的改進,,RCO控制D觸發(fā)器的使能輸入。這個改進不需要增加PLD的邏輯單元,。

 

圖6 不可靠的門控時鐘轉(zhuǎn)換為全局時鐘

(這個電路等效于圖5電路,,但卻可靠的多)


3.多級邏輯時鐘


當產(chǎn)生門控時鐘的組合邏輯超過一級(即超過單個的“與”門或“或”門)時,證設計項目的可靠性變得很困難,。即使樣機或仿真結果沒有顯示出靜態(tài)險象,,但實際上仍然可能存在著危險,。通常,我們不應該用多級組合邏輯去鐘控PLD設計中的觸發(fā)器,。

圖7 給出一個含有險象的多級時鐘的例子,。時鐘是由SEL引腳控制的多路選擇器輸出的。多路選擇器的輸入是時鐘(CLK)和該時鐘的2分頻(DIV2),。由圖7 的定時波形圖看出,,在兩個時鐘均為邏輯1的情況下,當SEL線的狀態(tài)改變時,,存在靜態(tài)險象,。險象的程度取決于工作的條件。 多級邏輯的險象是可以去除的,。例如,,你可以插入“冗余邏輯”到設計項目中。然而,,PLD/FPGA編譯器在邏輯綜合時會去掉這些冗余邏輯,,使得驗證險象是否真正被去除變得困難了。為此,,必須應尋求其它方法來實現(xiàn)電路的功能,。



圖7 有靜態(tài)險象的多級時鐘


圖8 給出 圖7 電路的一種單級時鐘的替代方案。圖中SEL引腳和DIV2信號用于使能D觸發(fā)器的使能輸入端,,而不是用于該觸發(fā)器的時鐘引腳,。采用這個電路并不需要附加PLD的邏輯單元,工作卻可靠多了,。 不同的系統(tǒng)需要采用不同的方法去除多級時鐘,,并沒有固定的模式。


圖7 無靜態(tài)險象的多級時鐘

(這個電路邏輯上等效于圖7,,但卻可靠的多)


4.行波時鐘


另一種流行的時鐘電路是采用行波時鐘,,即一個觸發(fā)器的輸出用作另一個觸發(fā)器的時鐘輸入。如果仔細地設計,,行波時鐘可以象全局時鐘一樣地可靠工作,。然而,行波時鐘使得與電路有關的定時計算變得很復雜,。行波時鐘在行波鏈上各觸發(fā)器的時鐘之間產(chǎn)生較大的時間偏移,,并且會超出最壞情況下的建立時間、保持時間和電路中時鐘到輸出的延時,,使系統(tǒng)的實際速度下降,。

用計數(shù)翻轉(zhuǎn)型觸發(fā)器構成異步計數(shù)器時常采用行波時鐘,一個觸發(fā)器的輸出鐘控下一個觸發(fā)器的輸入,,參看圖9 同步計數(shù)器通常是代替異步計數(shù)器的更好方案,,這是因為兩者需要同樣多的宏單元而同步計數(shù)器有較快的時鐘到輸出的時間,。圖10 給出具有全局時鐘的同步計數(shù)器,,它和 圖9 功能相同,,用了同樣多的邏輯單元實現(xiàn),卻有較快的時鐘到輸出的時間,。幾乎所有PLD開發(fā)軟件都提供多種多樣的同步計數(shù)器,。


圖9 行波時鐘


圖10 行波時鐘轉(zhuǎn)換成全局時鐘
(這個3位計數(shù)器是圖9異步計數(shù)器的替代電路,它用了同樣的3個宏單元,,但有更短的時鐘到輸出的延時)

5. 多時鐘系統(tǒng)


許多系統(tǒng)要求在同一個PLD內(nèi)采用多時鐘,。最常見的例子是兩個異步微處理器器之間的接口,或微處理器和異步通信通道的接口,。由于兩個時鐘信號之間要求一定的建立和保持時間,,所以,上述應用引進了附加的定時約束條件,。它們也會要求將某些異步信號同步化,。

圖11 給出一個多時鐘系統(tǒng)的實例。CLK_A用以鐘控REG_A,,CLK_B用于鐘控REG_B,,由于REG_A驅(qū)動著進入REG_B的組合邏輯,故CLK_A的上升沿相對于CLK_B的上升沿有建立時間和保持時間的要求,。由于REG_B不驅(qū)動饋到REG_A的邏輯,,CLK_B的上升沿相對于CLK_A沒有建立時間的要求。此外,,由于時鐘的下降沿不影響觸發(fā)器的狀態(tài),,所以CLK_A和CLK_B的下降沿之間沒有時間上的要求。,, 如圖4,,2.II所示,電路中有兩個獨立的時鐘,,可是,,在它們之間的建立時間和保持時間的要求是不能保證的。在這種情況下,,必須將電路同步化,。圖12 給出REG_A的值(如何在使用前)同CLK_B同步化。新的觸發(fā)器REG_C由GLK_B觸控,,保證REG_G的輸出符合REG_B的建立時間,。然而,這個方法使輸出延時了一個時鐘周期,。

圖ll 多時鐘系統(tǒng)
(定時波形示出CLK_A的上升沿相對于CLK_B的上升沿有建立時間和保持時間的約束條件)


圖12 具有同步寄存器輸出的多時鐘系統(tǒng)
(如果CLK_A和CLK_B是相互獨立的,,則REG—A的輸出必須在它饋送到1REG_B之前,,用REG_C同步化)


在許多應用中只將異步信號同步化還是不夠的,當系統(tǒng)中有兩個或兩個以上非同源時鐘的時候,,數(shù)據(jù)的建立和保持時間很難得到保證,,我們將面臨復雜的時間問題。最好的方法是將所有非同源時鐘同步化,。使用PLD內(nèi)部的鎖項環(huán)(PLL或DLL)是一個效果很好的方法,,但不是所有PLD都帶有PLL、DLL,,而且?guī)в蠵LL功能的芯片大多價格昂貴,,所以除非有特殊要求,一般場合可以不使用帶PLL的PLD,。 這時我們需要使用帶使能端的D觸發(fā)器,,并引入一個高頻時鐘。

  

圖13 不同源時鐘

如圖13所示,,系統(tǒng)有兩個不同源時鐘,,一個為3MHz,一個為5MHz,,不同的觸發(fā)器使用不同的時鐘,。為了系統(tǒng)穩(wěn)定,我們引入一個20MHz時鐘,,將3M和5M時鐘同步化,,如圖15所示。 20M的高頻時鐘將作為系統(tǒng)時鐘,,輸入到所有觸發(fā)器的的時鐘端,。3M_EN 和5M_EN將控制所有觸發(fā)器的使能端。即原來接3M時鐘的觸發(fā)器,,接20M時鐘,,同時3M_EN 將控制該觸發(fā)器使能 ,原接5M時鐘的觸發(fā)器,,也接20M時鐘,,同時5M_EN 將控制該觸發(fā)器使能。 這樣我們就可以將任何非同源時鐘同步化,。


圖13 同步化任意非同源時鐘

(一個DFF和后面非門,,與門構成時鐘上升沿檢測電路)


另外,異步信號輸入總是無法滿足數(shù)據(jù)的建立保持時間,,容易使系統(tǒng)進入亞穩(wěn)態(tài),,所以也建議設計者把所有異步輸入都先經(jīng)過雙觸發(fā)器進行同步化。


異步時鐘同步化


通過雙觸發(fā)器接口,,異步信號輸入總是無法滿足數(shù)據(jù)的建立保持時間,,所以建議大家把所有異步輸入都先經(jīng)過雙觸發(fā)器進行同步化,。如圖所示,時鐘域clk_s傳給時鐘域clk_d的數(shù)據(jù)經(jīng)過了雙觸發(fā)器的同步處理,,相同的,,時鐘域clk_d經(jīng)雙觸發(fā)器傳給時鐘域clk_s的數(shù)據(jù)


 

通過高頻時鐘同步化,當在單個系統(tǒng)中有兩個或兩個以上非同源時鐘的時候,,數(shù)據(jù)的建立和保持時間很難得到保證,,我們將面臨復雜的時間問題,,最好的方法是將所有非同源時鐘同步化:選用一個頻率是它們的時鐘頻率公倍數(shù)的高頻主時鐘將他們進行同步,。

假設系統(tǒng)有兩個不同源時鐘,一個為3MHz,,一個為5MHz,,不同的觸發(fā)器使用不同的時鐘。為了系統(tǒng)穩(wěn)定,,假設我們引入一個20MHz時鐘,。




  1. module orignal(clk,clk5m,clk3m,clk3men,clk5men);  

  2. input clk;  

  3. input clk3m;  

  4. input clk5m;  

  5. output clk3men;  

  6. output clk5men;  

  7.    

  8. reg clk3mreg1;  

  9. reg clk5mreg1;  

  10. reg clk3mreg2;  

  11. reg clk5mreg2;  

  12.    

  13. always @(posedge clk)  

  14. begin  

  15.     clk3mreg1<>

  16.     clk3mreg2<>

  17.     clk5mreg1<>

  18.     clk5mreg2<>

  19. end  

  20.     assign clk3men=clk3mreg1&(~clk3mreg2);  

  21.     assign clk5men=clk5mreg1&(~clk5mreg2);  

  22. endmodule  

  23.    





用modelsim仿真后得到的時序圖如圖所示



9、如何確定時序約束數(shù)值

FPGA工程的功能框圖如圖所示,。上電初始,,F(xiàn)PGA需要通過IIC接口協(xié)議對攝像頭模塊進行寄存器初始化配置。這個初始化的基本參數(shù),,如初始化地址和數(shù)據(jù)存儲在一個預先配置好的FPGA內(nèi)嵌ROM中,。在初始化配置完成后,攝像頭就能夠持續(xù)輸出RGB標準的視頻數(shù)據(jù)流,,F(xiàn)PGA通過對其相應的時鐘,、行頻和場頻進行檢測,從而一幀一幀的實時采集圖像數(shù)據(jù),。

采集到的視頻數(shù)據(jù)先通過一個FIFO,,將原本25MHz頻率下同步的數(shù)據(jù)流轉(zhuǎn)換到100MHz頻率下。接著講這個數(shù)據(jù)再送入寫SDRAM緩存的FIFO中,,最終這個FIFO每滿160個數(shù)據(jù)就會將其寫入SDRAM的相應地址中,。在另一側(cè),使用另一個異步FIFO將SDRAM緩存的圖像數(shù)據(jù)送個LCD驅(qū)動模塊,。LCD驅(qū)動模塊不斷的讀出新的現(xiàn)實圖像,,并且驅(qū)動3.5寸液晶屏工作。

由于這個工程是移植過來的,,SDRAM的時序約束已經(jīng)添加好并且很好的收斂了,。但是,新增加的CMOS sensor的接口也需要做相應的時序約束,。下面我們就來探討下它的時序該如何做約束,。

先看看CMOS Sensor的datasheet中提供的時序波形和相應的建立,、保持時間要求。波形如圖所示,。

波形中出現(xiàn)的時間參數(shù)定義如下表所示,。

我們可以簡單分析下這個datasheet中提供的時序波形和參數(shù)提供了一些什么樣的有用信息。我們重點關注PCLK和D[7:0]的關系,,HREF其實也可以歸類到D[7:0]中一起分析,,他們的時序關系基本是一致的(如果存在偏差,也可以忽略不計),。這個波形實際上表達的是從Sensor的芯片封裝管腳上輸出的PCLK和D[7:0]的關系,。而在理想狀況下,經(jīng)過PCB走線將這組信號連接到其他的芯片上(如CPU或FPGA),,若盡可能保持走線長度,,在其他芯片的管腳上,PCLK和D[7:0]的關系基本還是不變的,。那么,,對于采集端來說,用PCLK的上升沿去鎖存D[7:0]就變得理所當然了,。而對于FPGA而言,,從它的管腳到寄存器傳輸路徑上總歸是有延時存在的,那么PCLK和D[7:0]之間肯定不會是理想的對齊關系,。而我們現(xiàn)在關心的是,,相對于理想的對齊關系,PCLK和D[7:0]之間可以存在多大的相位偏差(最終可能會以一個延時時間范圍來表示),。在時序圖中,,Tsu和Th雖然是PCLK和D[7:0]在Sensor內(nèi)部必須保證的建立時間和保持時間關系,但它同樣是Sensor的輸出管腳上,,必須得到保證的基本時序關系,。因此,我們可以認為:理想相位關系情況下,,PCLK上升沿之前的Tsu時間(即15ns)到上升沿后的Th時間(即8ns)內(nèi),,D[7:0]是穩(wěn)定不變的。同樣的,,理想情況下,,PCLK的上升沿處于D[7:0]兩次數(shù)據(jù)變化的中央。換句話說,,在D[7:0]保持當前狀態(tài)的情況下,,PCLK上升沿實際上在理想位置的Tsu時間和Th時間內(nèi)都是允許的。請大家記住這一點,下面我們需要利用這個信息對在FPGA內(nèi)部的PCLK和D[7:0]信號進行時序約束,。

OK,,明確了PCLK和D[7:0]之間應該保持的關系后,我們再來看看他們從CMOS Sensor的管腳輸出后,,到最終在FPGA內(nèi)部的寄存器進行采樣鎖存,,這整個路徑上的各種“艱難險阻”(延時)。

在這個路徑分析中,,我們不去考慮CMOS Sensor內(nèi)部的時序關系,,我們只關心它的輸出管腳上的信號。先看時鐘PCLK的路徑延時,,在PCB上的走線延時為Tcpcb,,在FPGA內(nèi)部,從進入FPGA的管腳到寄存器的時鐘輸入端口的延時為Tcl,。再看數(shù)據(jù)D[7:0]的延時,,在PCB上的走線延時為Tdpcb,在FPGA內(nèi)部的管腳到寄存器輸入端口延時為Tp2r,。而FPGA的寄存器同樣有建立時間Tsu和保持時間Th要求,也必須在整個路徑的傳輸時序中予以考慮,。

另外,,從前面的分析,我們得到了PCLK和D[7:0]之間應該滿足的關系,。那么,,為了保證PCLK和D[7:0]穩(wěn)定考慮的得到傳輸,我們可以得到這樣一個基本的關系必須滿足:

對于建立時間,,有:

Launch edge + Tdpcb + Tp2r + Tsu < latch="" edge="" +="" tcpcb="" +="">

對于保持時間,,有:

Launch edge + Tdpcb + Tr2p < latch="" edge="" +="" tcpcb="" +="" tcl="" –="">

關于launch edge和latch edge,對于我們當前的設計,,如下圖所示,。

在對這個FPGA的input接口的時序進行分析和約束之前,我們先來看看Altera官方是如何分析此類管腳的時序,。

具體問題具體分析,,我們當前的工程,狀況和理想模型略有區(qū)別,。實際上在上面這個模型的源寄存器端的很多信息都不用詳細分析,,因為我們獲得的波形是來自于Sensor芯片的管腳。同理,,我們可以得到input delay的計算公式如下,。

Input max delay = (0 – Tcpcb_min) + Tco_max + Tdpcb_max

Input min delay = (0 – Tcpcb_max) + Tco_min + Tdpcb_min

在這兩個公式中,參數(shù)Tco是前面我們還未曾提到的,,下面我們就要分析下如何得到這個參數(shù),。Tco指的是理想情況下數(shù)據(jù)在源寄存器被源時鐘鎖存后,,經(jīng)過多長時間輸入到管腳上。前面我們已經(jīng)得到了PCLK和D[7:0]之間的關系,,其實從已知的關系中,,我們不難推斷出Tco_max和Tco_min,如圖所示,。若PCLK的時鐘周期為Tpclk,,則:

Tco_max = Tpclk – Tsu

Tco_min = Th

在我們采樣的CMOS Sensor圖像中,PCLK頻率為12.5MHz,,即80ns,。因此,我們可以計算到:

Tco_max = 80ns – 15ns = 65ns

Tco_min = 8ns

我們再看看PCB的走線情況,,算算余下和PCB走線有關的延時,。

如圖所示,這是PCLK和D[7:0]在SF-CY3核心板上的走線,。

如圖所示,,這是PCLK和D[7:0]在SF-SENSOR子板上的走線,在這個板子上的走線由匹配電阻分兩個部分,。

根據(jù)前面的走線長度,,我們可以換算一下相應的走線延時,如下表所示,。因此,,我們可以得到,Tcpcb_max = 0.35ns,,Tcpcb_min = 0.35ns,,Tdpcb_max = 0.36ns,Tdpcb_min = 0.31ns,。

信號名

SF-CY3走線長度

SF-SENSOR走線長度1

SF-SENSOR走線長度2

總長度(mm)

延時(ns)

PCLK

18

27.7

6

51.7

0.346023622

VD0

16.8

24.9

9.1

50.8

0.34

VD1

19.5

26.8

6

52.3

0.35003937

VD2

16.2

25

9.1

50.3

0.336653543

VD3

18.9

27.8

6

52.7

0.352716535

VD4

15.9

24.8

9.1

49.8

0.333307087

VD5

18.7

28.5

6

53.2

0.356062992

VD6

15.3

24.8

9.1

49.2

0.329291339

VD7

18.7

27.8

6

52.5

0.351377953

HREF

14.6

23.8

9.1

47.5

0.317913386

將上面得到的具體數(shù)值都代入公式,,得到:

Input max delay = (0 – 0.35ns) + 65ns + 0.36ns = 65.01ns

Input min delay = (0 – 0.35ns) + 8ns + 0.31ns = 7.96ns

加上一些余量,我們可以去input max delay = 66ns,,input min delay = 7ns,。

下面我們來添加時序約束,打開TimeQuest,,點擊菜單欄的ContraintsàCreat Clock,,做如下設置。

點擊ContraintsàSet Maximum Delay,,對vdb[0] vdb[1] vdb[2] vdb[3] vdb[4] vdb[5] vdb[6] vdb[7] vhref的set_max_delay做如下設置,。

點擊ContraintsàSet Minimum Delay,對vdb[0] vdb[1] vdb[2] vdb[3] vdb[4] vdb[5] vdb[6] vdb[7] vhref的set_min_delay做如下設置。

約束完成后,,參照前面章節(jié)Update Timing Netlist并且Write SDC File…,,接著就可以重新編譯整個工程,再來看看這個時序分析的報告,。在報告中,,數(shù)據(jù)的建立時間有9-13ns的余量,而保持時間也都有7-11ns的余量,,可謂余量充足,。

另外,我們也可以專門找一條路徑出來,,看看它的具體時序路徑的分析,。vd[0]這條數(shù)據(jù)線的建立時間報告中,66ns的input max delay出現(xiàn)在了Data Arrival Path中,。

而在vd[0]的保持時間報告中,,7ns的input min delay則出現(xiàn)在了Data Arrival Path中。





關注《硬件十萬個為什么》,,發(fā)送“FPGA”獲取全部內(nèi)容,。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多