|
CMOS攝像頭接口時序設計1理想時序(特權同學版權所有) 本文節選自特權同學的圖書《FPGA設計實戰演練(邏輯篇)》(特權同學版權所有) 配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 本實例的CMOS接口是時序分析中典型的pin2reg接口。由于詳細的設計說明將在第12章中,因此大家可以先大體瀏覽過第12章,對整個系統設計有一定了解后,再來進行本節的pin2reg的時序路徑分析。(特權同學,版權所有) CMOS Sensor接口相對于FPGA來說是不折不扣的pin2reg所覆蓋的約束類型。在開始這個CMOS Sensor的時序約束前,我們先來進一步認識一下pin2reg的約束模型。(特權同學,版權所有) 如圖8.44所示,前面已經給出的這個模型覆蓋了pin2reg、reg2reg和reg2pin這三大類時序路徑。本例重點討論的pin2reg即FPGA和外部芯片連接時,FPGA的輸入信號從外部引腳到內部寄存器所經過的延時。圖中大圈部分即pin2reg的完整意義上的路徑約束起點和終點,而圖中小圈部分則是在FPGA內部實際的pin2reg路徑,也是我們約束的直接對象。(特權同學,版權所有) 在圖示中,我們從前面reg2reg分析不難推測,在外部芯片內的源寄存器和在FPGA內部的目的寄存器構成的reg2reg也是需要滿足一定的時序要求的,即對應的假設它們有同一個時鐘源,是100MHz(對應10ns周期)。那么,如圖中假設外部芯片所需要的數據路徑延時是4ns,不考慮外部信號和FPGA間的PCB走線延時情況下,FPGA內部的pin2reg路徑上的延時就應該是10ns-4ns = 6ns了。時序設計工具一般支持直接約束和間接約束兩種方式。所謂直接約束,即設計者自己算出FPGA內部的pin2reg約束是6ns,那么告訴時序設計工具6ns這個數據就OK了;而間接約束,就是設計者告訴時序設計工具FPGA外部的路徑上占用了4ns時間,時序設計工具自己有一套運算機制,它也能運算出FPGA內部的pin2reg時間是6ns。而我們這個模型和所使用的約束方式,是間接方式。(特權同學,版權所有)
圖8.44 pin2reg路徑模型 如圖8.45所示,我們將前面的模型放大。在這個模型中,我們理想的假設外部芯片和FPGA都使用同一個時鐘源,這個時鐘源到達外部芯片(對應源寄存器)的時鐘輸入引腳的路徑延時(即PCB走線延時)為Tc2s,時鐘源到達FPGA的時鐘輸入引腳的路徑延時(即PCB走線延時)為Tc2r。數據信號在外部芯片所經過的總延時值定義為extTco。數據在外部信號和FPGA輸入引腳之間所經過的PCB走線延時定義為Tpcb。在FPGA內部,時鐘信號的走線延時定義為uTc2r;數據信號的pin2reg延時定義為Tp2r;此外,FPGA內部寄存器的建立時間定義為uTsu,保持時間定義為uTh。(特權同學,版權所有) 在這些路徑參數中,我們可以簡單的分三大類來看。第一類是在PCB上的走線路徑,包括Tc2s、Tc2r和Tpcb,這類路徑的延時基本上在硬件設計完成后就固定了,而且這些路徑的影響通常是微乎其微的(以0.17ns/inch的走線延時計算);第二類是外部芯片中的延時,即extTco,因為外部芯片的時序也都是固定的,我們作為芯片的應用者,無法改變芯片內部時序;第三類是FPGA內部的路徑,寄存器固有的uTsu和uTh是隨所使用的FPGA器件而定的,通常作為器件的應用者也無法改變,而時鐘延時uTc2r雖然是可變的,但是因為FPGA內部一般都有專用的全局時鐘網絡,專門用于類似時鐘信號這樣的高扇出、低延時信號,所以uTc2r通常也會控制在一個比較低的范圍內,而最有文章可做的就是Tpin2reg的延時值大小了。因此,我們的時序約束關注的重點也就是Tpin2reg延時。(特權同學,版權所有)
圖8.45 pin2reg的理想寄存器模型 對于以上的路徑,參考reg2reg路徑的分析,我們不難得到以下的基本建立時間和保持時間要求。(特權同學,版權所有) 建立時間需要滿足的公式: Launch edge + Tc2s + extTco + Tpcb +Tp2r < latch edge + (Tc2r + uTc2r) - uTsu 保持時間需要滿足的公式: Launch edge + Tc2s + extTco + Tpcb +Tp2r > latch edge + (Tc2r + uTc2r) + uTh 我們可以將以上的兩個不等式做些變換,得到如下兩個公式。(特權同學,版權所有) 建立時間: (Tc2s - Tc2r) + extTco + Tpcb <(latch edge - Launch edge) – uTsu + uTc2r - Tp2r 保持時間: (Tc2s - Tc2r) + extTco + Tpcb >(latch edge - Launch edge) + uTh + uTc2r - Tp2r 如果取input delay = (Tc2s - Tc2r) + extTco + Tpcb,對照具體的路徑,我們不難發現這個input delay實際上就FPGA外部所有延時參數的總和。由此,我們可以得到: input delay < (latch edge - Launchedge) + uTc2r – uTsu - Tp2r input delay > (latch edge - Launchedge) + uTc2r + uTh - Tp2r 我們再來看,Altera官方的handbook中給出了pin2reg路徑的建立時間和保持時間的slack計算公式。以下公式中所涉及的input max delay和input min delay也正是我們上面所定義的input delay的最大值和最小值。(特權同學,版權所有) 建立時間余量計算公式: Setup time slack = Data Required Time–Data Arrival Time Data Arrival Time = Launch Edge +input max delay + Tp2r Data Required Time = Latch Edge +uTc2r – uTsu 保持時間余量計算公式: Hold time slack = Data Arrival Time –Data Required Time Data Arrival Time = Launch Edge +input min delay + Tp2r Data Required Time = Latch Edge +uTc2r + uTh |