利用直接時(shí)鐘控制技術(shù)實(shí)現(xiàn)存儲(chǔ)器接口數(shù)據(jù)采集
提要
本應(yīng)用指南介紹了在 VirtexTM-4 器件中實(shí)現(xiàn)存儲(chǔ)器接口的直接時(shí)鐘控制數(shù)據(jù)采集技術(shù)。直接時(shí)鐘控制方案利用了 Virtex-4 系列所獨(dú)有的某些架構(gòu)特性(例如,每個(gè) I/O 模塊 (IOB) 中均具備一個(gè) 64-tap 的絕對(duì)延遲線)。
簡(jiǎn)介
大多數(shù)存儲(chǔ)器接口都是源同步接口,從外部存儲(chǔ)器器件傳出的數(shù)據(jù)和時(shí)鐘/ 選通脈沖是邊沿對(duì)齊的。在 Virtex-4 器件采集這一數(shù)據(jù),需要延遲時(shí)鐘/ 選通脈沖或數(shù)據(jù)。利用直接時(shí)鐘控制技術(shù),數(shù)據(jù)經(jīng)延遲,并與內(nèi)部 FPGA 時(shí)鐘實(shí)現(xiàn)中心對(duì)齊。在這個(gè)方案中,內(nèi)部 FPGA 時(shí)鐘采集傳出的數(shù)據(jù)。存儲(chǔ)器傳出的時(shí)鐘/ 選通脈沖用于決定與數(shù)據(jù)位相關(guān)的延遲值。因此,與選通脈沖相關(guān)的數(shù)據(jù)位的數(shù)量不受限制。由于無(wú)需將選通脈沖分配給相關(guān)數(shù)據(jù)位,所以不需要其他時(shí)鐘資源。
時(shí)鐘/ 選通脈沖和數(shù)據(jù)位使用的 Virtex-4 資源是一條 64-tap 絕對(duì)延遲線。該 64-tap 絕對(duì)延遲線可利用 IDELAY 和 IDELAYCTRL primitive 實(shí)現(xiàn)。時(shí)鐘/ 選通脈沖和數(shù)據(jù)位均通過(guò)此 64-tap絕對(duì)延遲線來(lái)布線。雖然選通脈沖不 用于采集數(shù)據(jù),但它用于確定數(shù)據(jù)與內(nèi)部 FPGA 時(shí)鐘實(shí)現(xiàn)中心對(duì)齊所需的 tap 數(shù)量。以下部分將詳細(xì)解釋直接時(shí)鐘控制技術(shù)方案的設(shè)計(jì)及實(shí)現(xiàn)。
選通脈沖邊沿檢測(cè)
與時(shí)鐘/ 選通脈沖相關(guān)的數(shù)據(jù)位的延遲值就是內(nèi)部 FPGA 時(shí)鐘上升沿與時(shí)鐘/ 選通脈沖中心之間的相位差。假設(shè)時(shí)鐘/ 選通脈沖和數(shù)據(jù)實(shí)現(xiàn)了邊沿對(duì)齊。要確定這個(gè)相位差,時(shí)鐘/ 選通脈沖通過(guò) IOB 內(nèi)的 64-tap 絕對(duì)延遲線輸入,并利用內(nèi)部 FPGA 時(shí)鐘在增量 tap 輸出端對(duì)其進(jìn)行采樣。
要確定時(shí)鐘/ 選通脈沖的中心,至少需要檢測(cè)到時(shí)鐘/ 選通脈沖的兩個(gè)邊沿或轉(zhuǎn)換。檢測(cè)出第二次轉(zhuǎn)換所需的 tap 數(shù)(即第二個(gè)邊沿的 tap)和檢測(cè)出第一次轉(zhuǎn)換所需的 tap 數(shù)(即第一個(gè)邊沿的 tap)之差,即為時(shí)鐘/ 選通脈沖寬度。這個(gè)差值的二分之一就是脈沖中心(即脈沖中心的 tap)。從內(nèi)部 FPGA 時(shí)鐘上升沿到時(shí)鐘/ 選通脈沖中心之間的 tap 數(shù),即為第一個(gè)邊沿的tap 數(shù)與脈沖中心的 tap 數(shù)之和。
表1 描述了各類(lèi) tap 數(shù)量。
圖1 說(shuō)明了通過(guò)使數(shù)據(jù)延遲相應(yīng)的 tap 數(shù),讓數(shù)據(jù)與內(nèi)部 FPGA 時(shí)鐘實(shí)現(xiàn)中心對(duì)齊的兩種情況。第 1 種情況所示為,由于時(shí)鐘/ 選通脈沖的下降沿是被檢測(cè)到的第一個(gè)邊沿,因此內(nèi)部FPGA 時(shí)鐘的上升沿位于延遲數(shù)據(jù)的中心。第 2 種情況所示為,由于時(shí)鐘/ 選通脈沖的上升沿是檢測(cè)到的第一個(gè)邊沿,因此內(nèi)部 FPGA 時(shí)鐘下降沿位于延遲數(shù)據(jù)的中心。
實(shí)現(xiàn)選通脈沖邊沿檢測(cè)
由于具有專(zhuān)用的 IDELAY 和 IDELAY_CTRL 電路,所以可以輕松地在 Virtex-4 器件中實(shí)現(xiàn)確定延遲值的電路。實(shí)現(xiàn)確定延遲值電路的結(jié)構(gòu)圖如圖2 所示。
利用一個(gè)簡(jiǎn)單的算法檢測(cè)存儲(chǔ)器時(shí)鐘/ 選通脈沖的邊沿。將初始值為 0 的時(shí)鐘/ 選通脈沖輸入IDELAY 模塊。時(shí)鐘/ 選通脈沖將不停地增加 1 tap 的延遲,直到檢測(cè)到第一個(gè)邊沿。然后記錄下檢測(cè)出第一個(gè)邊沿所需的 tap 數(shù)。在檢測(cè)到第二個(gè)邊沿之前,時(shí)鐘/ 選通脈沖仍然不停地增加 1 tap 的延遲。然后記錄下檢測(cè)出第二個(gè)邊沿所需的 tap 數(shù)。根據(jù)兩次記錄的值,計(jì)算出脈沖寬度。在用 tap 數(shù)確定時(shí)鐘/ 選通脈沖寬度后,除以 2 即得到中間值。中間值與檢測(cè)出第一個(gè)邊沿所需的 tap 數(shù)之和為延遲數(shù)據(jù)所需的 tap 數(shù)。
IDELAY 模塊可用的 tap 總數(shù)為64。因此,當(dāng)頻率為 200 MHz 或以下時(shí),將無(wú)法檢測(cè)出兩個(gè)邊沿。如果在 64 tap 結(jié)束后僅檢測(cè)出一個(gè)邊沿,那么延遲數(shù)據(jù)所需的 tap 數(shù)應(yīng)為,檢測(cè)出第一個(gè)邊沿所需的 tap 數(shù)減去 16 tap (約 1.25 ns,每個(gè) tap 的延時(shí)約為 75 ps)。一個(gè) 200 MHz 時(shí)鐘/ 選通脈沖周期的四分之一約為 16 tap。根據(jù)時(shí)序分析,該值也適用于更低的頻率,最低可達(dá) 110 MHz。當(dāng)頻率低于 110 MHz 時(shí),如果在 64 tap 結(jié)束后未檢測(cè)出任何邊沿,那么延遲數(shù)據(jù)所需的 tap 數(shù)應(yīng)為 32 tap(約 2.5 ns,每個(gè) tap 的延時(shí)約為 75 ps)。該值足以使內(nèi)部 FPGA時(shí)鐘邊沿位于數(shù)據(jù)窗口內(nèi)。
檢測(cè)第一個(gè)和第二個(gè)邊沿僅需一個(gè)小型狀態(tài)機(jī)。只有在為確定數(shù)據(jù)延遲 tap 數(shù)而發(fā)出的虛讀操作過(guò)程中,才啟用該狀態(tài)機(jī)。在正式工作之前,發(fā)送至外部存儲(chǔ)器器件的虛讀操作命令包含多條背靠背讀命令。狀態(tài)機(jī)將控制輸入 IDELAY 電路的信號(hào),即DLYRST、DLYCE 和 DLYINC。
DLYRST - 延遲線復(fù)位信號(hào),將延遲線中的 tap 數(shù)重設(shè)為按 IOBDELAY_VALUE 屬性設(shè)置的值。本設(shè)計(jì)中被設(shè)為 "0"。
DLYCE - 延遲線使能信號(hào),確定何時(shí)激活延遲線遞增/ 遞減信號(hào)。
DLYINC - 延遲線遞增/ 遞減信號(hào),可增加或減少延遲模塊中的 tap 數(shù)。表2 描述了延遲線的運(yùn)行模式。
用于控制這些延遲模塊輸入的狀態(tài)圖如圖3 所示。該狀態(tài)機(jī)的四種狀態(tài)分別為:DELAY_RST、IDLE、DELAY_INC 和 DETECT_EDGE。
DELAY_RST
該狀態(tài)是發(fā)起虛讀操作時(shí)啟用的狀態(tài)機(jī)的第一個(gè)狀態(tài)。在這種狀態(tài)下,延遲模塊被重設(shè)為“0”tap。該狀態(tài)之后是多個(gè) IDLE 狀態(tài)。
IDLE
在這種狀態(tài)下,延遲模塊保持“無(wú)變化”運(yùn)行模式。除 IDLE 狀態(tài)之外,每種狀態(tài)結(jié)束后都會(huì)出現(xiàn)數(shù)個(gè) IDLE 狀態(tài),
DELAY_INC
這個(gè)狀態(tài)使延遲模塊 tap 數(shù)加 1。該狀態(tài)之后是數(shù)個(gè)IDLE 狀態(tài)。
DETECT_EDGE
在這種狀態(tài)下,比較延遲模塊的輸出及其上一個(gè)值,用于檢測(cè)信號(hào)邊沿或轉(zhuǎn)換,同時(shí),延遲模塊 tap 數(shù)加 1。該狀態(tài)之后是數(shù)個(gè) IDLE 狀態(tài)。
在確定了延遲數(shù)據(jù)所需的 tap 數(shù)后,將啟用數(shù)據(jù) IDELAY 電路,并增加到這一數(shù)值。按照所需的 tap 數(shù),使數(shù)據(jù) IDELAY 電路增加相同的時(shí)鐘周期。數(shù)據(jù) IDELAY 電路的讀/ 寫(xiě)數(shù)據(jù)通路結(jié)構(gòu)圖如圖4 所示。
數(shù)據(jù)采集與二次采集
如圖4 所示,利用內(nèi)部 FPGA 時(shí)鐘,在輸入 DDR 觸發(fā)器中采集延遲數(shù)據(jù)。然后,把這些觸發(fā)器的輸出存儲(chǔ)到兩個(gè) FIFO 中;一個(gè)代表上升沿?cái)?shù)據(jù),另一個(gè)代表下降沿?cái)?shù)據(jù)。這些 FIFO 是利用 LUT RAM 實(shí)現(xiàn)的,其寫(xiě)使能操作由控制器生成的讀使能信號(hào)提供,并在數(shù)據(jù)格式校準(zhǔn)的基礎(chǔ)上與采集的讀取數(shù)據(jù)對(duì)齊。
DDR2 SDRAM 器件并未隨讀取數(shù)據(jù)一同提供讀有效或讀使能信號(hào)。因此,控制器將根據(jù) CAS延遲和突發(fā)長(zhǎng)度,生成這個(gè)讀使能信號(hào)。在開(kāi)始執(zhí)行讀取操作時(shí),必須令該讀使能信號(hào)有效,并在選通脈沖的最后一個(gè)上升沿結(jié)束后使其無(wú)效。在 IDDR 觸發(fā)器的輸出端,該讀使能信號(hào)必須與采集到的讀取數(shù)據(jù)對(duì)齊。為了實(shí)現(xiàn)讀使能對(duì)齊,在數(shù)據(jù)與 FPGA 時(shí)鐘對(duì)齊后,將已知數(shù)據(jù)格式寫(xiě)入存儲(chǔ)器。然后讀回已知數(shù)據(jù)格式,并在讀使能信號(hào)與采集到的讀取數(shù)據(jù)對(duì)齊之前,利用移位寄存器延遲讀使能信號(hào)。每字節(jié)數(shù)據(jù)都會(huì)生成一個(gè)讀使能信號(hào)。圖5 為讀使能對(duì)齊的時(shí)序圖。
讀時(shí)序分析
這一部分介紹了利用直接時(shí)鐘控制技術(shù)實(shí)現(xiàn)的讀時(shí)序分析。直接在 FPGA 時(shí)鐘域內(nèi)采集讀取數(shù)據(jù),因此,用于數(shù)據(jù)有效窗口分析的存儲(chǔ)器參數(shù)就是存取時(shí)間 (TAC)。下面簡(jiǎn)要介紹了此時(shí)序分析中使用的各個(gè)參數(shù)。
此時(shí)序分析中考慮的外部存儲(chǔ)器參數(shù)有:
TAC - 讀取數(shù)據(jù) (DQ) 的存取時(shí)間(以 FPGA 傳遞給存儲(chǔ)器的時(shí)鐘為參照)
TDCD - DCM 輸出占空比失真
利用 FPGA 時(shí)鐘而非存儲(chǔ)器時(shí)鐘/ 選通脈沖 (DQS),來(lái)采集讀取數(shù)據(jù) (DQ) ;因此,該分析考慮了 TAC (以時(shí)鐘為參照的數(shù)據(jù)存取時(shí)間)。在此分析中,未考慮 DQS - DQ 存儲(chǔ)器參數(shù),如TDQSQ 和 TQHS,因?yàn)?TAC 比這兩個(gè)參數(shù)更重要。
此時(shí)序分析中考慮的 FPGA 參數(shù)有:
TCLOCK_TREE-SKEW - 緊密放置在該組中的 IOB 觸發(fā)器的全局時(shí)鐘樹(shù)歪斜
TPACKAGE_SKEW - 特定器件/ 封裝的封裝歪斜
TSAMP - Virtex-4 源同步數(shù)據(jù)手冊(cè)中規(guī)定的采樣窗口
TIDELAYPAT_JIT - Virtex-4 數(shù)據(jù)手冊(cè)中規(guī)定的每個(gè) IDELAY tap 的數(shù)據(jù)格式抖動(dòng)
通過(guò)檢測(cè) DQS 邊沿,計(jì)算出與 DQS 相關(guān)的數(shù)據(jù)位延遲。利用全局時(shí)鐘在 I/O 觸發(fā)器中采集DQS 來(lái)進(jìn)行檢測(cè)。因此,最終得到的數(shù)據(jù)延遲值已經(jīng)包含了 I/O 觸發(fā)器的建立時(shí)間和保持時(shí)間。在進(jìn)行最差情況分析時(shí),需要考慮 I/O 觸發(fā)器固有的建立時(shí)間和保持時(shí)間。
此外,計(jì)算數(shù)據(jù)位和相關(guān)選通脈沖之間的歪斜也需要考慮 PCB 布局歪斜。
表3 所示為在205 MHz 頻率下,對(duì)DDR2 接口執(zhí)行的讀時(shí)序分析。全部參數(shù)單位均為皮秒。
TDATA_PERIOD 是時(shí)鐘周期的二分之一減去TMEM_DCD。TDATA_PERIOD 與不確定值之和的差,就是有效數(shù)據(jù)窗口 (43 ps)。因此,在 205 MHz 頻率下,-11Virtex-4 器件將產(chǎn)生 43 ps 的余量。
參考設(shè)計(jì)
存儲(chǔ)器接口生成器 (MIG) 工具中集成了直接時(shí)鐘控制數(shù)據(jù)采集技術(shù)的參考設(shè)計(jì)。該工具已被集成到 Xilinx Core Generator 工具中。最新版參考設(shè)計(jì),可從 Xilinx 網(wǎng)站下載 IP 更新:http://www.xilinx.com/cn/xlnx/xil_sw_updates_home.jsp
結(jié)論
Virtex-4 I/O 架構(gòu)增強(qiáng)了源同步存儲(chǔ)器接口的實(shí)現(xiàn)。本應(yīng)用指南及參考設(shè)計(jì)中使用的架構(gòu)特性包括:
IDELAY 模塊 - 連續(xù)校準(zhǔn)的 tap 延時(shí)很小的延遲元件。
FIFO16 primitive - 用作 FIFO 的 Block RAM,無(wú)需使用生成狀態(tài)標(biāo)志所需的其他 CLB 資源。
高速差分全局時(shí)鐘資源提供了更好的占空比。差分時(shí)鐘減少了參考設(shè)計(jì)所需的全局時(shí)鐘資源數(shù)量。
評(píng)論