DDR SDRAM是Double Data Rate SDRAM的縮寫,即雙倍速率同步動態(tài)隨機存儲器。DDR內(nèi)存是在SDRAM內(nèi)存基礎(chǔ)上發(fā)展而來的,能夠在時鐘的上升沿和下降沿各傳輸一次數(shù)據(jù),可以在與SDRAM相同的總線時鐘頻率下達(dá)到更高的數(shù)據(jù)傳輸率。雖然DDR2和DDR一樣,都采用相同采樣方式進(jìn)行數(shù)據(jù)傳輸,但DDR2擁有兩倍于DDR的預(yù)讀取系統(tǒng)命令數(shù)據(jù)的能力。也就是說,在同樣100MHz的工作頻率下,DDR的實際頻率為200MHz,而DDR2則可以達(dá)到400MHz。DDR2還引入了三項新的技術(shù),它們是OCD、ODT和Post CAS。 我們的設(shè)計(圖1)采用Altera公司Cyclone III系列型號為EP3C16F484C6N的FPGA作為控制器,以Micron公司生產(chǎn)的型號為MT47H16M16BG-5E(16M×16bit)的DDR2 SDRAM為存儲器。用一個IP核完成對4片DDR2的控制(帶寬為64bit),且DDR2的最高速率可達(dá)200MHz,以此完成對數(shù)據(jù)的高速大容量存儲。由于采用一個DDR2的IP核進(jìn)行控制,所以4片DDR2以地址和控制線共用、數(shù)據(jù)線獨立的方式進(jìn)行管腳連接。 ![]() 圖1 接口總框圖 EP3C16只有TOP和BOTTOM邊的BANK支持200MHz DDR2接口(因為DDR2管腳的特殊要求,DQS、DQ、DM管腳在FPGA上都需要專用管腳),且最高速率可達(dá)200MHz。 表1中Column I/O是指Top和Bottom I/O,Row I/O是指Right和Left I/O。Hybrid mode是指由Column和Row I/O混合。 從表1中可以看出,Cyclone III只有6系列的FPGA在Top和Bottom BANK才支持200MHz頻率的DDR2。為了滿足設(shè)計要求,我們將4片DDR2分別掛在FPGA的Top和Bottom的4個BANK。 從表2中可以看到,EP3C16 F484封裝系列的FPGA每個邊所支持的DQS和DQ組。因為在DDR中若干個DQ是由一個DQS進(jìn)行采樣的,所以FPGA以若干個DQ和一個DQS為最小單位進(jìn)行分組。 表1 FPGA BANK管腳速度 ![]() 表2 FPGA BANK DQ ![]() 如Number of ×8 Groups,其中×8就是指8個DQ,一個DQS即和8個DQ組成一個Group(即這8個DQ由這一個DQS進(jìn)行采樣)。FPGA分別有Left、Right、Top和Bottom四邊,其表示FPGA的每邊都支持4個DQS和DQ組,而每一邊有兩個Bank,即每個Bank都支持兩個×8架構(gòu)的DQS和DQ組。圖2展示了FPGA的DQS和DQ組的分配。 由于設(shè)計中采用Top和Bottom邊的Bank,這里以第3個Bank的DQS為例進(jìn)行說明。在圖2可以看到,F(xiàn)PGA的Bank3有三個DQS,分別為DQS1B、DQS3B和DQS5B。由于每組DQ都要和各自對應(yīng)的DQS配對,所以理論上DQS1B應(yīng)該和DQ1B為一組,DQS3B應(yīng)該和DQ3B為一組,DQS5B應(yīng)該和DQ5B為一組。 ![]() 圖2 FPGA BANK DQS/DQ 表3中展示了FPGA管腳中的DQ分配。可以看到,對于×8架構(gòu)的DDR2,Bank3只有DQ3B和DQ5B,且DQ3B和DQ5B各自都有9個,DQS1B其實沒有屬于自己的DQ。其實在Bank4中還有1個DQS2B和8個DQ2B,1個DQS4B和8個DQ4B。 而對于×16架構(gòu)的DDR2,則有18個DQ3B和1個DQ5B,DQS1B沒有屬于自己的DQ,其實在Bank4中還有17個DQ5B,這樣在Bank3和Bank4中一共就有18個DQ5B。 表3 FPGA BANK Pin ![]() 在×32架構(gòu)的DDR2中則有19個DQ5B,沒有DQ1B和DQ3B,在Bank4中還有17個DQ5B,這樣在Bank3和Bank4中一共就有36個DQ5B。 對于×9/×18/×36這里暫不討論,其為QDRII SRAM設(shè)計,其多余DQ做奇偶校驗使用。 從表4可以看出FPGA是如何支持不同架構(gòu)的DDR2的,還可以知道同一組的DQ不一定在同一個Bank,不是每個DQS都有自己的DQ,即使DQS有自己的DQ,其DQ數(shù)量也不一定相同。 ![]() 圖3 FPGA DQ/DQS Pin 除了DQS和DQ外,DM也有自己專用的管腳,在DDR中DM為數(shù)據(jù)信號(DQ)屏蔽位,由于DM是以8bit為單位起作用的,所以理論上只要有8個DQ便會有一個DM。事實上在FPGA的Bottom邊Bank中DM的分配如表5所示。 表4 不同架構(gòu)DDR2的支持?jǐn)?shù)量 ![]() 表5 FPGA的Bottom邊Bank中DM的分配 ![]() 了解清楚FPGA中的DQS,DQ和DM分配,我們再來看看DDR2的架構(gòu)。DDR2選用Micron生產(chǎn)的MT47H16M16BG-5E,其大小為16M×16bit,每一片分為4個Bank,每個Bank為4M×16bit。如果看到×16,你就認(rèn)為這是一片×16架構(gòu)的DDR2,再按照FPGA上×16架構(gòu)的管腳去設(shè)計,那就大錯特錯了。 雖然該DDR2是16位的帶寬,但其卻有兩個DQS,分別是LDQS和UQDS,也就是說其實兩個DQS分別采樣低8位和高8位數(shù)據(jù)。請注意,即使是32位帶寬的DDR,其也有4個DQS,每個DQS也僅采樣8位數(shù)據(jù)。至于有沒有一個DQS能采樣16位或32位數(shù)據(jù)的DDR,這就不為人知了。 確定了DDR2的架構(gòu),就確定了DDR2和FPGA的DQS,DQ和DM的連接方式。由于我們采用的是×8架構(gòu)的DDR2,所以一組內(nèi)的DQ僅需要8個,而有的DQS帶有9個DQ,在選用該DQ的時候只要任意選取其中的8個就可以。 在SSTL-18電平標(biāo)準(zhǔn)中,為了實現(xiàn)更高的信號頻率,輸入信號需要和一個參考電壓(VREF)進(jìn)行比較輸出后才被認(rèn)為是實際輸入。因為DDR2采用1.8V的SSTL電平進(jìn)行數(shù)據(jù)傳輸,所以DDR2所在FPGA 的Bank電壓必須是1.8V,F(xiàn)PGA就必須在該Bank使用VREF參考電壓。在FPGA的每個Bank都有兩個VREF參考電壓輸入,該Bank的I/O分屬這兩個VREF組,如在Bank3存在VREFB3N0和VREFB3N1。 當(dāng)FPGA的一個Bank存在VREF輸入或雙向的管腳時,為了防止輸出的開關(guān)噪聲轉(zhuǎn)移到VREF和限制輸送到VCCIO的噪聲水平,F(xiàn)PGA輸入輸出IO的位置有如下限制(BGA封裝的FPGA): • 每個VREF最多支持32個輸入; • 在Top和Bottom Bank每12個連續(xù)的管腳最多只支持9個輸出。在Right和Left Bank每14個連續(xù)的管腳最多只支持9個輸出; • 在VREF和輸出管腳(除了DQ和DQS)之間必須用兩個輸入或空腳進(jìn)行隔離。一般是空著,因為輸入會因為輸出管腳引來的噪聲而導(dǎo)致讀入不正確; • 如果不需VREF參考,一般在一個BANK中只要全部是同組數(shù)據(jù)總線或地址總線時,輸出個數(shù)不受限制(即受同一個OE控制的不受限制)。如果不是同一個OE控制就要滿足上面約束關(guān)系,以及驅(qū)動型接口要考慮驅(qū)動能力。 圖4所示,輸出腳必須和VREF用兩個輸入或空腳進(jìn)行隔離。另外,由于DDR2的地址和控制線都是輸出管腳,所以在手動分配管腳的時候很容易超出2所述的限制,而且FPGA是BGA封裝,只從SYMBOL上很難看出管腳的連續(xù)性。FPGA的管腳在外部看來是方陣排列,但其在FPGA的內(nèi)部卻是線性的排列,所以硬件設(shè)計時最好通過軟件去看管腳的連續(xù)性。在原理圖設(shè)計分配DDR2所在Bank的輸出管腳時,建議采用Quartus II軟件自動分配,這樣才能更好地避免錯誤。 ![]() 圖4 FPGA Output Pad 此外,還要注意: • 在Cyclone III系列的FPGA中,不支持差分的DQS,該FPGA的IP只在寫模式下用到DQS,在讀數(shù)據(jù)時不用(因為IP復(fù)位時IP會發(fā)送接收訓(xùn)練序列自校正產(chǎn)生捕獲時鐘); •多余不用的DQ可以當(dāng)做普通I/O使用; • Quartus II軟件自動分配管腳時不會區(qū)分同一組的DQ和DM,即DQ和DM可以互換(在EP3C16時僅有TOP邊的DQ和DM可以互換); • DDR2的地址和控制線在FPGA上沒有專用管腳,可以任意使用其它IO(只要符合輸入輸出位置限制); • 可以使用任何一對臨近的差分I/O管腳當(dāng)作DDR2的時鐘。 |