EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 明德扬FPGA科教 于 2019-12-20 09:46 编辑
" E: G O! _ C9 a6 S4 R7 W3 q& ~! g6 l3 ]
【原创】Xilinx:K7 DDR3 IP核配置教程 1 F- r1 w5 H- P! A7 t
作者:肖肖肖
; A6 c8 b9 R0 e' K% j" Q本文为明德扬原创文章,转载请注明出处!, w2 M' X( ~: r# a* r4 g0 X1 Z. E( y
9 Y* a2 u- w5 _4 q& ?) T# t2 _
MIG IP控制器是Xilinx为用户提供的一个用于DDR控制的IP核,方便用户在即使不了解DDR的控制和读写时序的情况下,也能通过MIG IP控制器读写DDR存储器。
: i; e- i# { p- }% q/ `% K! P0 c一、新建工程 3 z" P* y2 [3 b7 C; \( J1 T7 f, ?8 E1 S
在Vivado环境里新建一个项目,可取名为 ddr3_test。 ; O- f* `$ s) L+ `
这里的芯片型号各位可以根据需要选择,我们选择的是:xc7k325tffg900-1(如下图所示):
p7 A0 W) e, {5 r; W# {: o7 Z" q- [# G
点击“Finish”结束工程的建立: + P8 ^6 [9 T6 ^) n9 T
* | A( U1 @0 j- d二、进入IP核配置界面 8 H& N+ B% g4 `% Q w- [
在Vivado左边界面“Project Manager”选项下,点击“IP Catalog”,进入如下图所示界面。
% j* ^6 i4 e" S& k' g可以在搜索栏输入“MIG” 快速查找, 双击“Memory InteRFace Generate (MIG 7 Series)”进入DDR IP核配置界面(如下图所示)。 2 v' y) f) o# l6 V
2 m2 |8 F o, ~2 t3 ~
" Z2 c$ d+ l0 z; T' G2 H' P
三、IP核配置
3 h) V, v! g, S) t" _' y点击“Next”(如果想了解更多关于MIG的信息,可以点击左下角的“User Guide”来打开Xilinx的相关文档)。 4 ?) H( X0 ^% M1 z
0 z- z$ B+ L8 o5 j* `5 W
1 p, t; t+ @6 O% [修改“Component Name”为“DDR3”,点击“Next”(如下图所示)。 + T. c" G* T' g0 A b
这里可以选择兼容的芯片,但我们不需要,直接点击“Next”(如下图所示)。
: }8 d) R. h& @' h2 r# U7 ?5 e; g8 O' n& G1 N8 k9 R
直接选择默认的“DDR3 SDRAM”,然后点击“Next”(如下图所示)。 " s$ ^$ U; J/ |( ^0 B0 f5 ^- h
在“Memory Part”选项中, 选择开发板上的型号“MT41J256m16XX-125”,数据宽度“Data Width”选择“64”位;最后“Next”(如下图所示①)。 图①:DDR3 MT41J256m16XX-125设置
" p6 T C$ N4 k) ]
, |) Q0 _" {8 k7 Z! I或者在“Memory Type”选项下, 选择“SODIMMs”;在“Memory Part”选项下镁光内存条型号这里可选为“MT8JTF25664HZ-1G6”;在“Clock Period”设置参数为“2500ps”、“400.00MHz”(如下图所示②);最后“Next”。 图②:型号为 MT8JTF25664HZ-1G6的镁光内存条设置
/ B9 t! F6 c3 Y) K5 ] {
8 g9 v' m7 L5 R& K6 [) ~! X选择PLL输入时钟的频率“Input Clock Period”为“200MHz”(这个时钟需要与开发板上的时钟频率一致);“RTT(nominal)- On Die Termination(ODT)”选项下的 板载DDR3RTT选择“RZQ/6”(MT8JTF25664HZ-1G4选择默认“RZQ/4”);其他设置输出阻抗值和内部的ODT内部上拉电阻值来改善DDR3的信号完整性,一般不需要修改(如下图③/④所示);最后点击“Next”。 图③:DDR3 MT41J256m16XX-125设置
6 A4 i$ M, Z" ~" |- R- Q
. I/ o% }2 u, Q) t' ~$ L4 ?' {4 l图④:型号为 MT8JTF25664HZ-1G6的镁光内存条设置 9 R A$ e& a1 r3 n& S. O
0 L3 Y; z& k* v6 ]5 R. h在“System Clock”选项下选择差分“No Buffer”;在“Reference Clock”选项中,因为开发板上没有提供单独的DDR参考时钟,所以选择“Use System Clock”;在“System Reset Polarity”选项下选择“ACTIVE LOW”,其它选项保留默认配置(如下图所示)。
* U0 D0 _* h* r N" K
$ b, ^( e$ V5 v" f7 b, s在“Internal Termination ImPedance”选项中High Range Banks 的内部端接阻抗,这里选择默认的“50 ohms”;在“DCI Cascade”选项下“勾选”(如果是镁光内存条MT8JTF25664HZ-1G6则不勾选)(如下图所示)。
: ]% G8 Q& l( }- p E n% a3 D+ M: P6 m
点击选择第二项,设定一下DDR的管脚,然后点击“Next”(如下图所示)。
8 G/ @- p( w) u7 l- d2 Z
: R; W, S# M- I在以下界面设置DDR3的数据、地址和控制信号的FPGA管脚分配和IO电平。但这个手工分配比较费劲,此时可以点击“Read XDC/UCF”直接导入管脚分配文件(.ucf文件)。(如下图所示) 0 K8 U6 O' @' P6 D4 r7 }
7 s4 [' _; ~; h( P7 G' B! G在本例程中我们已经为大家准备好了一个ddr3.ucf文件,只要直接导入这个.ucf文件就可以完成 ddr3 的管脚分配(内存条 MT8JTF25664HZ-1G4,则选择 dimm.ucf 文件)。 ' G( j7 d7 T* A c1 _5 p1 m
导入完成如下: 7 z3 S' u, W% M, W$ k3 f `* l N
. s' o0 f4 w E
接着再点击“Validate”验证一下,通过后点击“Next”(如下图所示)
% L h7 O2 X0 [! z3 s
1 c8 ?7 e3 t6 v' w+ h, C8 l这里保留默认设置,直接点击“Next”。 . H9 r- N! V) i% E/ S9 R4 q0 w
7 y2 v% m8 G0 \ M) t9 w接下来显示的是DDR3 IP核配置的整体情况,检查看看有没有什么问题,没有问题就点击“Next”(如下图所示)。
% R, c1 g6 @6 G( U- N( f1 ^ a
6 R( h" Q; M; [. H1 e0 W8 z选择“Accept”,点击“Next”,“Next”。
3 Z4 N6 L3 _9 Q `* o' B6 E M) t& _7 r) ^3 I$ }6 j
点击“Generate”生成MIG控制器。
/ k6 P4 }$ i8 n% `4 n- Y% K% l* ?四、生成文档
4 y/ V8 D5 G; Z( x2 D# N( A点击“Generate”,生成MIG控制器相关的设计文档。 4 D, }, M( T4 c8 x& X$ U2 Q
以上就是基于Xilinx 的K7 DDR3 IP核的生成配置过程,有兴趣的朋友可在明德扬论坛获取更多学习资料,也可加入明德扬技术交流Q群:544453837与我们进行深入讨论,期待与大家一起学习进步!
2 G* l: Z7 E# m( Q( N% Z- N1 p' `
+ W3 _, W4 T* n. W# P |