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