 圖10 典型的DDR接口 圖 11顯示了一個DDR接口的寫時序。在此,我們關(guān)注離開FPGA控制器時的信號。注意FPGA控制器發(fā)送與數(shù)據(jù)窗口中心對齊的DQS。這與前面所提到的來自存儲器的邊沿對齊的情形不同。還得注意一個要求:所有數(shù)據(jù)(用于DDR333)必須滿足相對于所有DQS邊沿的0.45ns的建立和保持時間。  圖11 寫過程中的DQ-DQS典型的SDRAM接口實現(xiàn)方式是每個DQS信號控制8、16或32位。注意DQS和數(shù)據(jù)位的比率獨立于存儲器總的位寬。一個8位接口將有一個DQS信號。 用FPGA器件實現(xiàn)DDR存儲器接口 現(xiàn)在我們已經(jīng)詳細(xì)說明了一個典型的DDR接口的要求,我們能夠轉(zhuǎn)而在一個FPGA中實現(xiàn)這一DDR存儲器接口了。 存儲器讀的實現(xiàn) 在這里我們將檢查一下設(shè)計一個讀接口要遇到的挑戰(zhàn)以及可獲取的解決方案! 在存儲器讀時FPGA遇到的挑戰(zhàn) 1.DQS-DQ 的對齊 - 在狹窄的數(shù)據(jù)有效窗口中,DQS必須重新對齊(移相90度)來捕捉數(shù)據(jù)。系統(tǒng)歪斜和多個DQ線之間的歪斜必須得到處理。 2.數(shù)據(jù)多路合成和多路分解 - 在讀期間,DDR輸入數(shù)據(jù)必須多路分解成兩個SDR流。 時鐘域轉(zhuǎn)換 - 數(shù)據(jù)經(jīng)多路分解后,它必須和一個公共時鐘邊沿對齊,然后和一個無關(guān)的FPGA系統(tǒng)時鐘同步。這個到FPGA時鐘域的轉(zhuǎn)換必須考慮DQS選通信號和FPGA系統(tǒng)時鐘間的相對相位以避免建立和保持時間的沖突! 解決方案 FPGA包含簡化DDR接口的讀部分實現(xiàn)的特點。它們包括: ·經(jīng)DLL補(bǔ)償?shù)腄QS延時單元 ·DDR輸入寄存器 ·半時鐘傳送寄存器 ·自動的DQS到系統(tǒng)時鐘域的轉(zhuǎn)換電路 DDR輸入電路 一個完整的DDR收發(fā)器或者輸入接口的實現(xiàn)需要所有上述所列的部件。 圖12描述了將所有這些部件連接在一起實現(xiàn)DDR存儲器接口讀的一個FPGA的實現(xiàn)。  圖12 DDR輸入電路 DQS延時塊接收來自存儲器的、經(jīng)邊沿對齊的DQS信號,并且將它移相90度。這個經(jīng)過移相的DQS信號現(xiàn)在可以被FPGA輸入寄存器用來捕捉和多路分解上升和下降沿的數(shù)據(jù)。注意接下來捕捉上升沿數(shù)據(jù)的寄存器是一個下降沿觸發(fā)器。這個半時鐘傳輸寄存器用DQS的下降沿傳送來自第一個寄存器的上升沿數(shù)據(jù),以使得數(shù)據(jù)的上升和下降沿部分現(xiàn)在用相同的DQS的下降沿被送到下一級寄存器。最終,最后一級寄存器現(xiàn)在能夠用同一個FPGA系統(tǒng)時鐘邊沿來驅(qū)動這兩組半個的數(shù)據(jù)。然而,為了在數(shù)據(jù)從DQS域轉(zhuǎn)換到FPGA系統(tǒng)時鐘域的傳送過程中獲得最佳的建立和保持時間,這個邊沿必須經(jīng)過仔細(xì)的選擇。這就是上面所示的時鐘邊沿多路選擇器的用途。這種時鐘極性選擇的方法在后面詳細(xì)說明。 最糟糕的細(xì)節(jié) 這是很重要的一點:請注意與一個高速DDR恢復(fù)模塊的輸入部分中的5個寄存器相關(guān)的時序是非常緊迫的。在3納秒(甚至更。┑慕⒑捅3謺r間的數(shù)據(jù)窗口情況下,設(shè)計者通常的布線和邏輯延時會壓垮系統(tǒng)的時序要求。如果設(shè)計要在高速的情況下工作,許多FPGA結(jié)構(gòu)要求設(shè)計者手工地對這些寄存器進(jìn)行布局和布線。即便如此,在工作溫度和電壓下,設(shè)計者仍然難以達(dá)到DDR333的速度! ‖F(xiàn)在萊迪思半導(dǎo)體公司提供在一個硬I/O塊(IOB)中集成了所有5個輸入寄存器和相關(guān)布線的FPGA。這樣保證了設(shè)計的性能和成功。設(shè)計者只需簡單地把I/O塊和DQS子模塊連接起來而得到確保可以工作的接口! 片上的DLL校準(zhǔn) 由于時序非常緊迫, DQS延時模塊的歪斜和實際的延時必須得到仔細(xì)地控制。一個低成本的解決方案可能為DQS延時采用一個開環(huán)的固定延時塊。然而,這種方案的性能將隨溫度和電壓的變化而變化。這將限制最高可達(dá)到的DDR接口速度。在一個更加完整的解決方案中,用一個閉環(huán)方法來補(bǔ)償影響DQS延時塊的溫度、電壓和工藝的差異。該方法采用FPGA中專用的DLL單元,將校準(zhǔn)數(shù)據(jù)(6位總線)送到每個延時單元。更進(jìn)一步,一個系統(tǒng)有兩個DLL,每一個位于器件相對的一邊,能夠提供相關(guān)延時塊的更為精準(zhǔn)的補(bǔ)償數(shù)據(jù)。圖13說明了這類系統(tǒng)的DLL補(bǔ)償方法。這個對齊后的DQS被分配到輸入寄存器。每個DQS支持多達(dá)8個DQ。  圖13 采用片上DLL的DQS對齊 自動的時鐘極性控制 在一個典型的DDR存儲器接口設(shè)計中,經(jīng)延時的輸入DQS選通信號和內(nèi)部系統(tǒng)時鐘(在讀周期中)之間的相位關(guān)系是未知的。許多FPGA器件將這個問題留給用戶解決。LatticeEC系列擁有專用電路來決定這個必要的系統(tǒng)時鐘的極性,實現(xiàn)這個選者并且實施這些域之間的數(shù)據(jù)傳送。為了防止在DQS(經(jīng)延時的)和系統(tǒng)時鐘域間轉(zhuǎn)換時建立和保持時間的沖突,采用了一個時鐘極性選擇器。這需要在每個讀周期開始時進(jìn)行計算來確定正確的FPGA系統(tǒng)時鐘極性(圖14)。DDR存儲器中讀操作之前,DQS是三態(tài)的(由終端決定)。三態(tài)之后,在前同步狀態(tài)中DDR存儲器間把DQS置為低電平。一個專用的電路來檢測這種變化并產(chǎn)生一個信號指出FPGA系統(tǒng)時鐘所需的極性(DDRCLKPOL)。這個信號用來控制送到同步寄存器的時鐘的極性。 圖14 自動的時鐘極性選擇 讀時序波形 圖15和16展示了基于時鐘極性選擇邏輯的兩種情況下的讀數(shù)據(jù)的傳送。  圖15 當(dāng)DDRCLKPOL=0時讀數(shù)據(jù)的傳送 圖16 當(dāng)DDRCLKPOL=1時讀數(shù)據(jù)的傳送 存儲器寫的實現(xiàn) 要實現(xiàn)DDR存儲器接口的寫的部分,兩個單數(shù)據(jù)率的數(shù)據(jù)流必須先多路合成為一個用兩個時鐘邊沿傳送的數(shù)據(jù)流。而且,F(xiàn)PGA控制器必須發(fā)送與輸出數(shù)據(jù)DQ中心對齊的DQS信號。在寫周期中還使用了數(shù)據(jù)屏蔽信號(DM)! DR輸出信號(ADDRCMD, DQS, 但不是 DQ, DM)與輸出的差分時鐘(CLKP/CLKN)的上升沿對齊是FPGA輸出控制的職責(zé)! ≡诖鎯ζ鲗憰rFPGA遇到的挑戰(zhàn): 1.DQS需要與輸出的DDR數(shù)據(jù)DQ實現(xiàn)中心對齊 2.FPGA需要產(chǎn)生差分時鐘信號(CLKP和CLKN)。CLKP需要與地址和控制信號對齊! 3.FPGA控制器必須滿足DDR接口標(biāo)準(zhǔn)的tDSS和tDSH參數(shù),它們的定義是DQS下降到CLKP上升的建立和保持時間。 4.DDR輸出數(shù)據(jù)必須由兩個SDR流多路合成為一個輸出DDR數(shù)據(jù)流。 解決方案 一個具有完整特性的FPGA解決方案包括一對DDR輸出寄存器,輸出多路選擇器和三態(tài)寄存器,以及用于在DDR存儲器接口寫的部分中方便地實現(xiàn)必需的不同相位的輸出時鐘的PLL! DDR輸出邏輯 DDR輸出寄存器塊能夠把兩個SDR數(shù)據(jù)流合成為一個DDR數(shù)據(jù)流。這個DDR三態(tài)寄存器簡化了雙向信號的實現(xiàn)(圖17)。  圖17 DDR輸出邏輯 寫控制電路必須產(chǎn)生多個相位的系統(tǒng)時鐘以便適當(dāng)?shù)匕l(fā)送來自FPGA的各自的控制信號: 1.一個PLL用來產(chǎn)生一個90度相移的時鐘。這個90度相移的時鐘用來產(chǎn)生送入存儲器的DQS、地址、控制信號和差分時鐘。注意ADDRESS和CMD僅在時鐘速率(SDR)下變化。然后地址和數(shù)據(jù)與DQS和CLKP/N信號邊沿對齊。這就要求滿足tDSS和tDSH的規(guī)范! 2.通過將"0"和"1"賦值到DDR輸出寄存器對的輸入端可以產(chǎn)生DDR時鐘。然后它被送入一個SSTL25的差分輸出緩沖器來產(chǎn)生CLKP和CLKN差分時鐘。用這種方式產(chǎn)生的CLKN可以防止這兩個信號間的任何歪斜! 3.由于在內(nèi)部采用FGPA主時鐘產(chǎn)生DQS和ADD/CMD信號,用戶將需要實現(xiàn)一個從核心邏輯到DDR存儲器的?時鐘轉(zhuǎn)換。這個時序很難達(dá)到,因此建議用戶先用反向時鐘寄存這些信號,這樣從核心邏輯到I/O寄存器的轉(zhuǎn)換將只要一個?時鐘的轉(zhuǎn)換。 4.當(dāng)數(shù)據(jù)DQ和DM離開FPGA時需要被延時90度。這是為了當(dāng)DQS到達(dá)DDR存儲器時,數(shù)據(jù)和數(shù)據(jù)屏蔽信號與DQS中心對齊。這可以通過將CLK相對于DQ和DM數(shù)據(jù)反向來實現(xiàn)。DM信號采用與DQ數(shù)據(jù)引腳所用的相同的時鐘來產(chǎn)生。如果DM引腳置為高電平,存儲器將屏蔽掉DQ信號! D18說明了DDR寫接口信號的產(chǎn)生。  圖18 存儲器寫接口信號的產(chǎn)生 寫時序波形 圖19顯示了DDR寫操作的DQ數(shù)據(jù)節(jié)點和DQS選通節(jié)點的數(shù)據(jù)傳送時序。當(dāng)寫入DDR存儲器件時,DM(數(shù)據(jù)選通)和ADDR/CMD(地址和控制)信號還會隨同數(shù)據(jù)和選通信號一起被送至存儲器件。  圖19 存儲器寫數(shù)據(jù)傳送波形 總結(jié) 如通篇所述,系統(tǒng)設(shè)計者有許多不同的存儲器可選方案。當(dāng)對于一個特殊的應(yīng)用評估一種存儲器時,細(xì)致的思考是絕對必要的。我們還總結(jié)出了DDR正日漸成為大多數(shù)系統(tǒng)的存儲器選擇。與其它存儲器選擇相比,DDR的優(yōu)勢是很明顯的。然而,DDR是一個高速、復(fù)雜的接口,要正確的實現(xiàn)需要非常細(xì)致的工作。幸運的是FPGA廠商開始實施一條龍的解決方案,在提供設(shè)計靈活性的同時確保了性能和可靠性。 |