成功解決FPGA設(shè)計(jì)時(shí)序問題的三大要點(diǎn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
FPGA的設(shè)計(jì)與高速接口技術(shù)可以幫助你滿足今天的市場(chǎng)要求,但也提出了一些有趣的設(shè)計(jì)挑戰(zhàn)。為了確保存儲(chǔ)器接口的數(shù)據(jù)傳輸準(zhǔn)確,在超過200兆赫茲以上,進(jìn)行時(shí)序分析將發(fā)揮更突出的作用,以識(shí)別和解決系統(tǒng)運(yùn)行的問題。在這些頻率內(nèi),最重要的是創(chuàng)建和控制時(shí)序空余,留下最小的空余,以確保數(shù)據(jù)采集和演示窗口的準(zhǔn)確。更快的邊緣速率同時(shí)也放大物理設(shè)計(jì)的影響,造成信號(hào)完整性問題,對(duì)此則需要更多的沉降時(shí)間及縮小時(shí)序空余。
FPGA器件現(xiàn)在還包括某些先進(jìn)的功能,如支持帶有I/O單元接口的雙通道數(shù)據(jù)(DDR)和板上鎖相環(huán)(PLL)網(wǎng)絡(luò)進(jìn)行精確時(shí)鐘控制等等。這些在FPGA技術(shù)中的高級(jí)功能均提供先進(jìn)的接口模塊,從而有助于減少界面設(shè)計(jì),再加上TimingDesigner軟件的獨(dú)特能力,在最短的時(shí)序中提供最準(zhǔn)確、有力的解決方案。本文主要探討了DDR型存儲(chǔ)器接口設(shè)計(jì)中必要的時(shí)鐘偏移及數(shù)據(jù)采集的時(shí)序空余。
DDR/QDR存儲(chǔ)器接口的設(shè)計(jì)問題
DDR或四倍數(shù)據(jù)速率(QDR)存儲(chǔ)設(shè)備可以提供和接受兩倍于器件時(shí)鐘頻率的源同步數(shù)據(jù),這意味著數(shù)據(jù)在時(shí)鐘的上升緣和下降緣傳輸。此外,需要捕捉時(shí)鐘偏移和進(jìn)行適當(dāng)?shù)卣{(diào)整,以確保適當(dāng)?shù)臅r(shí)鐘與數(shù)據(jù)關(guān)系。
圖1:TimingDesigner軟件便于捕獲設(shè)計(jì)特點(diǎn)的圖形界面窗口。
如前所述,現(xiàn)在一些FPGA裝置包括DDR接口的I/O單元和板上的PLL網(wǎng)絡(luò)。這意味著,你必須有一個(gè)方式來控制模塊的準(zhǔn)確和可靠。為了說明這一點(diǎn),讓我們來讀取QDR II SRAM源同步接口的設(shè)計(jì)要求看看實(shí)例。
在同步存儲(chǔ)器系統(tǒng)例如QDR SRAM中,數(shù)據(jù)是與時(shí)鐘同步的,所以存儲(chǔ)器數(shù)據(jù)的相位必須旋轉(zhuǎn)90度。這種相位旋轉(zhuǎn)通常在有效數(shù)據(jù)窗口中進(jìn)行時(shí)鐘中心調(diào)整,這是QDR實(shí)現(xiàn)準(zhǔn)確數(shù)據(jù)采集的一個(gè)重要設(shè)計(jì)特點(diǎn)(見圖2)。如果要改變時(shí)鐘中心,我們可以通過對(duì)板上FPGA的PLL網(wǎng)絡(luò)進(jìn)行簡單的延時(shí)時(shí)鐘信號(hào)來達(dá)到。
圖2:中心對(duì)齊的時(shí)鐘/數(shù)據(jù)關(guān)系。
獲取數(shù)據(jù)
延遲時(shí)鐘信號(hào)可以實(shí)現(xiàn)中心對(duì)齊以避免各種溫度變化和其他類似的設(shè)計(jì)影響,可能會(huì)對(duì)時(shí)鐘或數(shù)據(jù)方面帶來一些影響,但不會(huì)很大,但違背了接收存儲(chǔ)器的建立或保持時(shí)序的要求。在理論上,對(duì)于大部分器件,中心對(duì)齊的時(shí)鐘邊緣將最大限度地建立和保持時(shí)序,留出足夠的安全空余。然而,除非建立的需求合適于保持的需求,時(shí)鐘信號(hào)的中心對(duì)齊將提供更多的時(shí)序空余。
理想的解決辦法是為器件的建立和保持提供一個(gè)最大的安全空余,可以通過轉(zhuǎn)化平衡空余,為二者都提供相同的安全空余。為了平衡空余,我們?yōu)榻邮掌骷_定最低的有效數(shù)據(jù)窗口,在實(shí)際有效數(shù)據(jù)窗口的中心窗內(nèi)可以給我們的存儲(chǔ)器提供設(shè)計(jì)參數(shù)。
利用接收器件最小的建立和保持時(shí)間,我們可以利用下面的公式確定最小的"安全"的有效數(shù)據(jù)窗口:
最小創(chuàng)建時(shí)間+最低保持時(shí)間=最低有效數(shù)據(jù)窗口
如圖3所示,在存儲(chǔ)器器件中可以看出,實(shí)際結(jié)果是在有效數(shù)據(jù)窗口中間。為了確保獲取數(shù)據(jù),總線必須在接收器最小的有效數(shù)據(jù)窗口外的"安全"區(qū)域內(nèi)進(jìn)行轉(zhuǎn)換。根據(jù)時(shí)鐘與數(shù)據(jù)的關(guān)系,信號(hào)設(shè)計(jì)在任一區(qū)域內(nèi),在獲取數(shù)據(jù)時(shí),我們確保盡可能多的安全空余。
圖3:平衡實(shí)際有效數(shù)據(jù)窗口中的最小有效數(shù)據(jù)窗口。
實(shí)現(xiàn)適當(dāng)?shù)臅r(shí)鐘偏移
源同步時(shí)鐘的相位偏移將有效地改變存儲(chǔ)控制器接收寄存器的最小有效數(shù)據(jù)窗口,因此將形成平衡有效數(shù)據(jù)窗口。時(shí)鐘偏移調(diào)整是FPGA裝置中PLL器件的一個(gè)組成部分。要確定偏移的值,我們必須考慮到影響信號(hào)的布線延遲和任何外部延遲。
首先,我們使用TimingDesigner軟件通過存儲(chǔ)器數(shù)據(jù)表為QDR SRAM創(chuàng)造一個(gè)圖表(圖4)。我們利用此圖確定存儲(chǔ)器與有效數(shù)據(jù)窗口中的時(shí)鐘和數(shù)據(jù)信號(hào)時(shí)序的關(guān)系。目的是精確定義存儲(chǔ)器的信號(hào)關(guān)系,并在PCB到FPGA的設(shè)計(jì)中傳遞這種關(guān)系。
圖4:QDR存儲(chǔ)器讀取時(shí)序圖MT54W1MH18J。
從圖4可以看出在FPGA的管腳上,PCB傳播延遲與時(shí)鐘(CQ_FPGA)和數(shù)據(jù)(Q_FPGA)信號(hào)間的關(guān)系。在TimingDesigner軟件的動(dòng)態(tài)鏈接參數(shù)表中使用單獨(dú)的變量可以輕松地獲得PCB板的延時(shí)及延遲值對(duì)相關(guān)的信號(hào)的影響?,F(xiàn)在,我們可以在適當(dāng)?shù)腇PGA裝置中,為獲取時(shí)鐘而得到內(nèi)部布線延遲和確定正確的相位偏移。
FPGA設(shè)計(jì)要素
大多數(shù)的FPGA利用約束驅(qū)動(dòng)進(jìn)行布局和布線。時(shí)序約束為關(guān)鍵信號(hào)提供時(shí)序信息。TimingDesigner軟件提供獨(dú)特的時(shí)序參考圖如測(cè)量和計(jì)算變量結(jié)果,從行內(nèi)文字到文件都支持廠商特定的約束語法。例如,在一個(gè)FPGA約束布線中,對(duì)符合其動(dòng)態(tài)文字窗口的語法要求中,可以通過時(shí)序圖中為特定信號(hào)計(jì)算延遲誤差。然后,我們可以將這些語法通過一個(gè)文本文件導(dǎo)入到FPGA的開發(fā)系統(tǒng)中,或者我們可以直接將數(shù)值復(fù)制到FPGA的約束編輯器中。
對(duì)于高速存儲(chǔ)器接口設(shè)計(jì),數(shù)據(jù)存儲(chǔ)器被放置在FPGA裝置I/O單元的附近,以盡量減少布線延時(shí)的影響。該I/O單元只有一個(gè)布線路徑為輸入數(shù)據(jù)信號(hào),因此在數(shù)據(jù)總線的每一部分都存在數(shù)據(jù)路徑延遲。FPGA的PLL也被用來進(jìn)行適當(dāng)?shù)臅r(shí)鐘控制,并通常有幾種可能的從輸入焊盤到捕捉寄存器的路徑。制造商通過控制特定的屬性,使PLL的特點(diǎn)包括相位偏移,相乘,或相除等因素,無論是原始示例的設(shè)計(jì)代碼或約束都可以帶入模塊。因此,時(shí)鐘和數(shù)據(jù)路徑的布線和延誤必須確定,以實(shí)現(xiàn)適當(dāng)?shù)臅r(shí)鐘相位偏移。
圖5:TimingDesigner軟件為FPGA設(shè)計(jì)流程提供直觀的界面。
在FPGA的最初布局和布線完成后,時(shí)序報(bào)告提供數(shù)據(jù)總線中每個(gè)時(shí)序的詳細(xì)延時(shí)信息。如果有必要,可為FPGA開發(fā)系統(tǒng)的關(guān)鍵信號(hào)設(shè)定延時(shí)路徑,TimingDesigner軟件可以提取相關(guān)信息和利用圖表更新。在這個(gè)設(shè)計(jì)實(shí)例中,我們需要輸入數(shù)據(jù)總線和相關(guān)時(shí)鐘信號(hào)的時(shí)序報(bào)告。
1.導(dǎo)入布線后的時(shí)序到TimingDesigner軟件中
導(dǎo)入FPGA的時(shí)序報(bào)告信息,我們需要規(guī)劃最壞的情況從而確定在圖表(Q_FPGA)中相關(guān)的波形圖。信號(hào)設(shè)計(jì)規(guī)范定義在同一個(gè)時(shí)序圖表中不能帶有同名的波形圖。通過規(guī)劃端口, TimingDesigner軟件可以過濾時(shí)序報(bào)告并提取有用的信息。這些規(guī)劃被存儲(chǔ)在圖表文件內(nèi)并可預(yù)先解決的布局和布線問題。
2.提供可視化的捕捉寄存器
從導(dǎo)入時(shí)序報(bào)告文件開始, TimingDesigner軟件為關(guān)鍵信號(hào)延時(shí)創(chuàng)建變量,并在電子數(shù)據(jù)表中規(guī)劃和分配這些信號(hào)端口。變量過去是用來在時(shí)序圖中更新時(shí)鐘與數(shù)據(jù)關(guān)系。現(xiàn)在,可確定在FPGA器件內(nèi)捕捉寄存器中的邊緣關(guān)系。
內(nèi)部寄存器建立和保持是從時(shí)序報(bào)告和相關(guān)的約束中提取所需的時(shí)序。下一步,在時(shí)序圖表中添加另外兩個(gè)信號(hào)和偏移時(shí)序報(bào)告中的布線延時(shí);在捕捉寄存器中添加數(shù)據(jù)和時(shí)鐘,然后建立和保持FPGA器件適用的約束。用時(shí)鐘邊緣和有效數(shù)據(jù)窗口邊緣的補(bǔ)償確定必要的相位偏移,來平衡設(shè)計(jì)中有效的數(shù)據(jù)窗口。
3.平衡有效數(shù)據(jù)窗口
我們可以使用下列公式來確定PLL時(shí)鐘信號(hào)產(chǎn)生的相位偏移:
1、從設(shè)計(jì)的實(shí)際有效數(shù)據(jù)窗口減少FPGA裝置I/O部分的最小有效數(shù)據(jù)窗口,然后結(jié)果除于2,實(shí)際結(jié)果為這2個(gè)有效數(shù)據(jù)窗口的差額(DlyDVW)。(參考圖3)
DlyDVW = (DVWdata - DVWdev) / 2
2、I/O寄存器數(shù)據(jù)建立時(shí)間加上DlyDVW值,就確定了相對(duì)時(shí)鐘邊緣的有效數(shù)據(jù)窗口(DlyRelSU)。
DlyRelSU = DlyDVW + IOEsu
3、最后,從相對(duì)建立時(shí)間(上面第2步得到的數(shù)值),減去時(shí)鐘信號(hào)與捕捉寄存器的有效數(shù)據(jù)窗口(從時(shí)序圖測(cè)量)之間的補(bǔ)償。
Clk_offset = DlyRelSU - EdgeOffset
利用上述公式,我們可以確定FPGA開發(fā)系統(tǒng)中PLL的相位偏移量,并執(zhí)行到下一步的布局和布線。
4.驗(yàn)證結(jié)果
再次導(dǎo)入做過以上修改的布線后時(shí)序文件,TimingDesigner軟件會(huì)自動(dòng)更新需要的數(shù)值,并更正及重新定位I/O單元的時(shí)鐘信號(hào)CQ_intPLL。如圖6所示。依靠改變PLL,確切的平衡建立和保持空余將是不可能的。對(duì)于這些情況下,應(yīng)該在FPGA裝置的PLL中獲取平衡增量以解決這個(gè)問題。
圖6:在改變時(shí)鐘和平衡建立及保持空余后,獲取數(shù)據(jù)分析的時(shí)序圖表。
本文小結(jié)
高速設(shè)計(jì)往往有嚴(yán)格的規(guī)范和嚴(yán)謹(jǐn)?shù)陌l(fā)布時(shí)間表,所以需要一個(gè)交互式的時(shí)序規(guī)劃和分析工具,來獲得快速和完整的時(shí)序空余,以分析并解決可能影響到最終設(shè)計(jì)成功的因素。本文說明了如何利用TimingDesigner軟件對(duì)FPGA設(shè)計(jì)流程進(jìn)行準(zhǔn)確地捕捉和交換時(shí)序信息,以幫助在整個(gè)設(shè)計(jì)過程中管理時(shí)序空余,并提供可視化的界面驗(yàn)證設(shè)計(jì),并預(yù)測(cè)設(shè)計(jì)性能。今天的FPGA器件產(chǎn)品都帶有多功能的時(shí)鐘配置和豐富的I/O資源,并且?guī)в懈邤?shù)據(jù)傳輸能力,TimingDesigner軟件為高速存儲(chǔ)器如DDR & QDR SRAM提供精確的關(guān)鍵路徑時(shí)序分析功能。