作為一個(gè)FPGA開發(fā)者,之前對(duì)于DDR的使用,一直僅限于對(duì)廠商接口的使用,像無(wú)論是Xilinx還是Intel,在使用DDR時(shí)甚至IP配置參數(shù)都不需要了解,直接從老的工程里把IP拷貝過(guò)來(lái)就可以,而在使用DDR時(shí)只需要會(huì)使用AXI4/AvalonMm標(biāo)準(zhǔn)總線接口就行了?;炝诉@么多年,本著夠用即可,再往下稍微了解些。
個(gè)人總結(jié),淺入淺出。讓我設(shè)計(jì)一個(gè)控制器那可是難為我了。
DDR——無(wú)非大的數(shù)組
對(duì)于DDR的理解,最初簡(jiǎn)單的以為無(wú)非一個(gè)大的數(shù)組,我會(huì)接口使用就OK了。不管各種概念天花亂墜,其總歸最終還是要?dú)w還到DDR顆粒芯片上來(lái)吧。我們常說(shuō)DDR容量大小,某款DDR顆粒手冊(cè)上寫的規(guī)格容量如下圖所示:
看完之后一開始我只看懂了這個(gè)DDR顆粒手冊(cè)上寫的DDR容量是8Gb,剩下的我就能看懂的不多了~這也是為什么決定花點(diǎn)兒功夫好好了解下DDR的基礎(chǔ)知識(shí)。后面我們?cè)賮?lái)Review這張表。
這款芯片的512Mb x 16的引腳有這么幾個(gè):
BG:1bit(GB0)
BA:2bit(BA0~BA1)
ROW:16 bit(A0~A15)
Column:10 bit(A0~A9)
DQ: 16 bit(DQ0~DQ1)
看完之后簡(jiǎn)單總結(jié)一句話:對(duì)于DDR顆粒,Bank是讀寫地址動(dòng)作的最小單元。像上面的512Mb x 16模式下,顆粒內(nèi)部有兩個(gè)Bank Group,每個(gè)Bank Group內(nèi)部有四個(gè)Bank,而每個(gè)Bank內(nèi)部的“存儲(chǔ)矩陣(二維數(shù)組)”對(duì)應(yīng)的行地址16 bit,列地址10 bit,每個(gè)存儲(chǔ)單元存儲(chǔ)16 bit數(shù)據(jù)。先不管對(duì)錯(cuò),這么算起來(lái)的話:
2**(1+2+10+16)*16=2**(33)=8Gb
容量是對(duì)上了,然而這看起來(lái)和上面的表格里的有些東西卻并對(duì)不上。
在上面的表格中,關(guān)于Configuration一行,512Mbx16意味著該DDR顆粒尋址能力為512Mb,每個(gè)地址對(duì)應(yīng)16 bit。由于對(duì)于DDR4列地址的低三bit并不參與譯碼,故尋址范圍大小的計(jì)算方式為:
2**(1(BG)+2(BA)+16(COL)+(10-3)COL)=2**26=512 Mb
如果你在Quartus進(jìn)行配置的話,也會(huì)發(fā)現(xiàn)給使用者的接口AvalonMm總線地址位寬也恰好為26 bit。
Page Size
按照上面文章里面的解釋,prefetch相當(dāng)于在DRAM Core與外面的IO建立了8多條通道,而Burst Fetch Length則是對(duì)于DDR顆??梢栽谥付ㄐ校械刂泛罂蛇B續(xù)讀取在該行指定列地址之后的多個(gè)列地址對(duì)應(yīng)的內(nèi)容。DDR4 prefetch和burst fetch length一般均為8,以上面的512Mbx16則意味著當(dāng)發(fā)起一個(gè)讀指令時(shí),將會(huì)返回8x16=128 bit=16 Byte字節(jié)數(shù)據(jù)。
Page Size所定義的為一行ROW所對(duì)應(yīng)的數(shù)據(jù)量大小,如前所屬,參與尋址的列地址位寬為7,每個(gè)cell對(duì)應(yīng)16 bits,對(duì)應(yīng)burst fetch length為8,故Page Size的計(jì)算方式為:
2**7*16*8=2*14 bits=16 Kb=2 KB顆粒堆疊
像上面的單個(gè)顆粒容量大小為8Gb。在FPGA使用里,DDR常見的配置有x64/x32這樣的模式。
如果在板卡上使用DDR顆粒,以x64的形式來(lái)組織板卡DDR架構(gòu),那就是這樣的結(jié)構(gòu)。
x64模式下,用到4片DDR,4片DDR的地址總線共用,數(shù)據(jù)總線則分成四份連接到四路DDR上。故此當(dāng)你在IP上發(fā)起64字節(jié)讀寫請(qǐng)求時(shí)每個(gè)DDR分別承擔(dān)了16 Byte字節(jié)的讀寫,恰好為一次Burst Length。
而當(dāng)你如果要是能ECC時(shí),則需要5片DDR:
此時(shí)第五個(gè)DDR 8bit專門用于存儲(chǔ)ECC校驗(yàn)結(jié)果。在ECC模式下,x72bit模式下,若非64字節(jié)讀取/寫入,則需將數(shù)據(jù)先讀取出來(lái)再更新寫入,效率有一定的降低~
審核編輯:劉清
-
FPGA
+關(guān)注
關(guān)注
1645文章
22046瀏覽量
618272 -
控制器
+關(guān)注
關(guān)注
114文章
17100瀏覽量
184221 -
DDR
+關(guān)注
關(guān)注
11文章
732瀏覽量
66805 -
ECC
+關(guān)注
關(guān)注
0文章
97瀏覽量
21090
原文標(biāo)題:FPGAer淺入淺出DDR——容量規(guī)格篇(一)
文章出處:【微信號(hào):Spinal FPGA,微信公眾號(hào):Spinal FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
FPGAer淺入淺出DDR

評(píng)論