本篇主要針對(duì)Zynq UltraScale + MPSoC的DDR接口,從硬件設(shè)計(jì)的角度進(jìn)行詳細(xì)介紹,最后展示一下小編之前自己設(shè)計(jì)的基于ZU+的外掛8顆DDR4的設(shè)計(jì)。
目前比較常用的DDR是DDR4和DDR3,其他系列相對(duì)使用較少一些,本文主要以DDR4進(jìn)行介紹。
1、選型
根據(jù)ZU+系列芯片的數(shù)據(jù)手冊(cè)、TRM、pg150等文檔,DDR可以掛載在PS側(cè),也可以掛載在PL側(cè),也可同時(shí)掛載在PS側(cè)和PL側(cè)。
PL和PS均支持64位的DDR4(不帶ECC功能),PL部分如果要支持64位的DDR4,則至少需要提供三個(gè)bank的HP接口,只能選擇SFVC784或者更高的封裝。需要特別說明的是,使用內(nèi)存顆粒和使用內(nèi)存條的容量差異較大,需要根據(jù)實(shí)際需求進(jìn)行選擇。
ZU+的DDR4接口如下:
PS側(cè)DDR接口框圖
PL側(cè)DDR接口框圖
針對(duì)DDR3,其特性如下:
支持DDR3 (1.5V) and DDR3L (1.35V)
容量限制:Support densities up to 8 Gb for components, 32 GB for RDIMMs, 16 GB for SODIMMs, and 16 GB for UDIMMs. Other densities for memory device support is available through custom part selection.
針對(duì)DDR4,其特性如下:
容量限制:Support densities up to 32 Gb for components, 64 GB for LRDIMMs, 128 GB for RDIMMs, 16 GB for SODIMMs, and 16 GB for UDIMMs. Other densities for memory device support is available through custom part selection.
DDR接口粗略的介紹可以參見之前的文章《Zynq UltraScale+系列之“外圍接口概述”》,PS側(cè)的DDR控制器的詳細(xì)特性可參看《UG1085》的第17章,PL側(cè)的的相關(guān)特性可參考《PG150》、《WP454》等資料,此處不再贅述。
2、Performance
DDR總線的效率在不同的使用模式下差異很大,在實(shí)際評(píng)估速率時(shí)一定要搞清楚使用情況。
針對(duì)幾種常用的操作模式,《PG150》給出了具體的效率,詳見下表:
幾種常見的操作模式如下:
Sequential Read
Simple address increment pattern
100% reads
Sequential Write
Simple address increment pattern
100% writes (except for periodic reads generated by the controller for VT tracking)
Burst Read/Write Mix
Repeating pattern of 64 sequential reads and 64 sequential writes
50/50 read/write mix
Short Burst Read/Write Mix
Repeating pattern of four sequential reads and four sequential writes
Full DRAM page accessed in bursts of four before changing the row address for high page hit rate
50/50 read/write mix
Random Address Read/Write Mix
Repeating pattern of two random reads and two random writes
Fully random address for a low page hit rate
50/50 read/write mix
3、原理圖設(shè)計(jì)
PS側(cè)的原理圖設(shè)計(jì)基本沒有任何問題,按照對(duì)應(yīng)功能引腳連接即可,PL側(cè)的接口需要特別注意。
對(duì)于單個(gè)Memory接口,盡量集中使用幾個(gè)HP bank。如果使用三個(gè)bank,兩個(gè)bank用作數(shù)據(jù)接口,一個(gè)bank用作地址、控制、命令信號(hào)線接口,地址、控制、命令信號(hào)盡量使用同一個(gè)bank,不要跨bank使用;如果使用兩個(gè)bank,盡量保證數(shù)據(jù)相關(guān)引腳在一個(gè)bank,地址和控制信號(hào)在另一個(gè)bank。
地址、控制、命令信號(hào)不能和data共用byte group,只能使用data byte groups以外的byte groups。
CK差分時(shí)鐘對(duì)必須使用差分對(duì),必須連接在控制byte group上,盡量按照Vivado軟件對(duì)時(shí)鐘引腳的約束來連接。如果有多個(gè)CK對(duì),必須來自于同一個(gè)byte lane。
除了DQS和CK之外,其他信號(hào)都可以在byte group內(nèi)隨意交換。
每一byte的data可以在組內(nèi)隨意交換
前期原理圖設(shè)計(jì)階段最好在vivado中進(jìn)行PL側(cè)管腳預(yù)分配,別等到PCB出來后才開始在vivado中驗(yàn)證,如果關(guān)鍵信號(hào)管腳定義有問題,不能交換,則無法彌補(bǔ)。
針對(duì)ZU+系列MPSoC,DDR4接口的原理圖處理如下:
4、PCB Guidelines for DDR4 SDRAM (PL and PS)
DDR總線的布局布線需要遵循一些通用的規(guī)則,數(shù)據(jù)線只支持點(diǎn)到點(diǎn)連接,其他信號(hào)根據(jù)顆粒數(shù)量的不同可以有多種拓?fù)洹?/p>
ZU+ DDR4 SDRAM支持兩種拓?fù)漕愋停篺ly-by和clamshell。Clamshell拓?fù)湓诎遄涌臻g比較緊張時(shí)有一定的優(yōu)勢(shì)。在MIG中(PL側(cè))是一種可選的拓?fù)?,在PS側(cè)不支持clamshell拓?fù)洹?/p>
如果使用5片x16的顆粒組成80位寬的接口時(shí),5片DDR的布局采用fly-by topology,如果用9片x8的顆粒,則采用clamshell topology比較節(jié)約空間。
4.1.1、Fly-by結(jié)構(gòu)布局
4.1.2、Clamshell結(jié)構(gòu)布局
4.1.3、Point-to-Point數(shù)據(jù)信號(hào)
由于官方推薦的主線路阻抗較?。▎味?6/39Ω,差分76Ω),線寬比較寬,但扇出部分阻抗又比較大(單端50Ω,差分86Ω),會(huì)導(dǎo)致阻抗突變,因此實(shí)際使用中可以通過調(diào)整疊層來優(yōu)化線寬,在滿足阻抗要求的同時(shí)減小阻抗突變。
4.1.4、Layout Guidelines
以下為DDR4的約束規(guī)則,表格中的參數(shù)均為最短信號(hào)線和最長(zhǎng)信號(hào)線之間的tolerance參數(shù),數(shù)據(jù)group一般都是以DQS為TARGET,DQ與DQS進(jìn)行比較約束。地址、控制、命令group一般都是以CLK為TARGET,ACC(Address、Command、Control)與CLK進(jìn)行比較約束。
針對(duì)上圖解釋為:例如,最快的ACC信號(hào)線傳輸時(shí)間是800ps,最慢的ACC信號(hào)線傳輸時(shí)間是840ps,時(shí)鐘信號(hào)線的傳輸時(shí)間應(yīng)該為862ps±8ps,比ACC總線的中間傳輸時(shí)間(820ps)慢42ps.
CLK和DQS之間的約束比較寬松,最小的差異可以為-879,最大差異可以為+10600,主要是為了保證讀寫平衡功能從整個(gè)菊花鏈的第一片到最后一片顆粒都正常。
DDR控制器可以調(diào)整DQS信號(hào)線的內(nèi)部延遲,由于CK信號(hào)線鏈路連接每一片DDR顆粒,導(dǎo)致CK容性負(fù)載更重,所以需要能夠調(diào)整DQS信號(hào)線的內(nèi)部延遲,以滿足和CK之間的約束。
規(guī)范規(guī)定CK信號(hào)線和DQS信號(hào)線從FPGA到鏈路中的第一片DDR顆粒的偏差不小于-149ps,到鏈路中最遠(yuǎn)端的DDR顆粒的偏差不大于1796ps。只要鏈鏈路中第一片DDR顆粒和最后一片DDR顆粒都滿足此條件,整個(gè)鏈路上所有的DDR顆粒的讀寫平衡功能都將正常。
例如,如果從FPGA到第一片DDR顆粒的DQS延遲為200ps,則從FPGA到第一片DDR顆粒的CK延遲應(yīng)至少為51ps(200ps-149ps)。如果從FPGA到最后一片DDR顆粒的DQS延遲為700ps,則從FPGA到最后一片DDR顆粒的CK延遲應(yīng)該小于2496ps(700ps+1796ps)。
下面是一些基本的規(guī)則,可以參考遵守:
使用內(nèi)存條時(shí),CK信號(hào)和DQS信號(hào)之間的余量會(huì)更小一些,因?yàn)榧s束的是FPGA到DIMM插槽處,而顆粒的走線是由DIMM決定的,因此余量預(yù)留小一些。
同組的DQ、DQS、DM走線必須在同一層。
DIMM數(shù)據(jù)線走線最好選擇靠近接插件的層,尤其是靠DIMM中間位置的數(shù)據(jù)組。
采用菊花鏈結(jié)構(gòu)布線時(shí),ACC信號(hào)線可以布在不同的層,但層數(shù)越少越好。不要將一個(gè)信號(hào)切換好幾層,主要走線盡量一層走完,這樣可以減小串?dāng)_,信號(hào)換層時(shí),切換過孔附近50mil范圍內(nèi)需要放置一個(gè)接地過孔。
FPGA和DDR器件驅(qū)動(dòng)端的阻抗為40Ω,DCI和ODT也是40Ω。因此VTT端接電阻都選為39.2Ω。
當(dāng)使用內(nèi)部VREF時(shí),PL側(cè)HP bank上的VREF引腳可以懸空,但不能用于普通IO。
如果系統(tǒng)時(shí)鐘連接到了DDR的HP bank,則LVDS時(shí)鐘信號(hào)需要外部端接至合適的電壓,因?yàn)樵揵ank上有不同的邏輯電平 (HSTL, SSTL, or POD)。
對(duì)于菊花鏈布局,人字形扇出(chevron-style routing)可以形成stitching vias;對(duì)于比較緊湊的布局,可以通過環(huán)抱式扇出形成ground stitch vias。
在器件內(nèi)部或者周圍盡量多放置接地過孔,這樣可以更好的為信號(hào)提供返回路徑,尤其是在邊角的位置。
對(duì)于ACC信號(hào)線的端接電阻布局,應(yīng)該每四個(gè)端接電阻中間穿插布局一個(gè)0.1uF的VTT去耦電容,這樣可以減小端接VTT的噪聲。為了便于布局,最好在原理圖中就按每四個(gè)電阻放置一個(gè)去耦電容。
對(duì)于DIMM,去耦電容放置得離DIMM越近越好,這樣除了能提供接地過孔外,也能給電源提供低阻抗回路。
以上就是針對(duì)ZU+系列MPSoC的DDR接口的詳細(xì)介紹,PCB設(shè)計(jì)相關(guān)可參考《UG583:UltraScale Architecture PCB Design User Guide》、官方開發(fā)板ZCU104、ZCU102、ZCU106等。
下面介紹一下小編自己設(shè)計(jì)的基于ZU+(XCZU3CG-SFVC784)的外掛8顆DDR4的設(shè)計(jì),采用十層板,板厚1.6mm,最小線寬4mil。板子尺寸120*150mm,單12V電源輸入,支持串口、I2C、USB、GbE、TF卡、CAN、PCIe等常用接口,預(yù)留PS側(cè)和PL側(cè)IO接口。
硬件框圖如下圖所示:
疊層設(shè)計(jì)如下圖所示:
整板DDR4部分布局如下圖所示:
Allegro中的約束規(guī)則如下圖所示:
ACC信號(hào)線的約束規(guī)則如下圖所示:
DATA信號(hào)線的約束規(guī)則如下圖所示:
整板布線完成后的情況如下圖所示:
編輯:hfy
-
pcb
+關(guān)注
關(guān)注
4327文章
23179瀏覽量
400296 -
DDR
+關(guān)注
關(guān)注
11文章
716瀏覽量
65577 -
DDR4
+關(guān)注
關(guān)注
12文章
322瀏覽量
40989 -
ACC
+關(guān)注
關(guān)注
1文章
57瀏覽量
22829 -
Zynq
+關(guān)注
關(guān)注
10文章
610瀏覽量
47327
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于ZU19EG的4路100G光纖加速卡
![基于<b class='flag-5'>ZU</b>19EG的<b class='flag-5'>4</b>路100G光纖加速卡](https://file1.elecfans.com/web3/M00/06/0B/wKgZO2eHGAmAZFHSAAJmrzcg-rY505.png)
評(píng)論