通过ISE自建Spartan6 FPGA DDR3仿真平台

上一篇讲到了如何去运行xilinx给出的ddr3 ip sim example。这次来讲解一下如何通过自建的来仿真DDR3。


1.新建一个工程。新建一个top.v的文件。等会DDR3 Ip核例化在top中 

image_1d04g61s51h1412877oo231boe9.png-16.5kB

 
将DDR3 ip核添加到工程中,(.xco后缀的文件。) 

image_1d04g97pv3re1h7mc30frg1rrem.png-30.8kB

 
在生成的IPcore的docs文件夹里面有IP核需要参考的手册。 

image_1d04gq1d711fe1fqnr571l6k127s2n.png-19.5kB

 
打开mig_39_2的例化模板 

image_1d04gfme91pkg11ql18vjk0j1hq41g.png-51.1kB

 
将DDR3 IP核例化到top文件中 

image_1d04ggmkkomv16r5vkopjt187n1t.png-76.1kB

 
将这一大串内容复制到你的top文件中。 
其中C3_SIMULATION和C3_RST_ACT_LOW这两个参数要更改。 

image_1d04l5q6q1md01dpo132t1s2t8o1al.png-42.8kB

 
这两个参数的作用:

image_1d04la83it3bjqarei1u3pfl2c2.png-132kB

 
C3_RST_ACT_LOW这个参数设置是高电平复位还是低电平复位。 
C3_SIMULATION这个参数更改成TURE有利于仿真。


2.参考DDR3 IP的 example,打开example工程的顶层,我们模仿着他写 

image_1d04gbtfmjmm1ah0deu21ig2d13.png-113.8kB

 
将这些信号添加到自己的工程top的module里面。 

image_1d04gnl6q1t841k7v4b891g1cba2a.png-65.5kB

 
顶层信号中的calib_done在实际跑板子的时候是有作用的,因为这里只是作仿真,所以可以不要。 
Calib_done信号作用,可以打开xilinx ip核的手册,在ip核目录下的doc文件夹中 

image_1d04hlega11jd1uv01pd8af91tqc3h.png-16.6kB

 
搜索calib_done,可以看到xilinx对他的介绍,可以知道calib_done是FPGA MCB初始化结束的标志信号,在他初始化的阶段,不能对DDR3进行读写操作。那FPGA MCB的初始化有哪些步骤呢? 

image_1d04hn3bj24gf81vm9109619l3u.png-79.5kB

点击他的文本链接。 

image_1d04ho0huko1hco1fjj1h1k1elt4b.png-66.7kB

 
点击startup Sequence,page 45. 

image_1d04hqovusm31no91ceunm0pre4o.png-49.2kB

 
这个MCB的初始化操作步骤。 
top中顶层信号最后的样子 

image_1d04hgro71i9bqt61n5b1ts41ter34.png-50.3kB


3.接下来编写sim仿真文件,还是和之前quartusii13一样,去模仿着example去做。先新建一个tb文件。 

image_1d04keo5te701gi486t1gj7dq5i.png-82.6kB

 
然后添加top例化到tb_top中。 

image_1d04kflic1fbp2rf1fi0128jj405v.png-47kB

 
将DDR3的仿真模型和rzq和zio例化进去(这些也都是参考仿真例子的,req和zio都可以理解为一个校准信号,这是FPGA的信号,没有连接到DDR3中) 

image_1d04kh5oejoi6fejg51qq71nj56p.png-36.5kB

 

image_1d04km93k43q17ev1l2q1gq1tcn76.png-90.5kB

 

image_1d04knst11rk01k0a1a2mm4tthj7j.png-76kB


4.根据仿真脚本的提示,找到ddr3_model_c3这个文件。 
在工程中搜索这个文件,会有两个 

image_1d04ks1u21sdvpnh1ajt1kjl1ocq80.png-27.8kB

 
打开ddr3_model_c3.v可以知道,这个文件需要调用.vh的参数文件,所以要选择sim中functional文件夹的模型文件。 

image_1d04ku1691e5o1gi7ne1h31bp8d.png-35.1kB

 
将ddr3_model_c3.v和 ddr3_model_parameters_c3.vh这两个文件复制到自己的sim文件夹下。(ddr3_model_parameters_c3.vh这个参数文件有些电脑是需要放在自己的ISE工程文件夹下才能运行的) 
然后将sim下的tb_top和两个仿真模型文件添加到工程中 

image_1d04jclbm2j31d5apilq1q1g8i55.png-21.1kB

 
将属性改成sim。


5.添加好后,点击tb_top可以进行仿真。 

image_1d04le66t1p5r1ia51no0jud15bfcf.png-46.1kB

 
然后将top_inst添加到仿真波形中。 
run个100us 

image_1d04li4mmkl8tu2160okdgorocs.png-58.3kB

 
去查看刚刚的calib_done这个信号有没有生成,如果有拉高,则说明自建平台搭建成功。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
制作日志: /****************************2016-07-10 更新*********************************/ 经过不知道多少个工作日空余时间和周末业余时间,终于大致设计板子浮出水面,等待后续检查。 板子采用4层PCB,层叠情况:Top -> GND -> Power -> Bottom板子芯片情况: (1) FPGA: Xilinx Spartan6系列的XC6SLX16-FTG256 (2) DDR3: Micron的MT41J128M16,2Gbit存储容量 (2) 电源:采用2片Onsemi的NCP1529分别为FPGA Core 1.2V和DDR3 1.5V提供电源 /****************************2016-07-18 更新*********************************/ PCB打样回来了,5mil/5mil的线宽线距,10mil的过孔,花了我好多大洋!!!赶紧贴板子去了!! 贴完再上照。 /****************************2016-07-19 更新*********************************/ 搞了一个上午,终于搞定第一个板子,FPGA的1.2V VDDCore电压,1.5V的DDR3供电电压, VREF的0.75V电压都OK。往FPGA内部下载点灯程序OK,往SPI FLASH固化程序也OK。 下一步,DDR3 的MCB实现。 /****************************2016-07-23 更新*********************************/ 经测试,第一版的DDR3可以正常稳定运行在400MHz,全地址空间读写数据无任何问题。 现在开始准备第二版,打算生成100个pcb,并且会将阻焊颜色由绿色改为黑色。 具体设计细节和第一版的区别如下: (1) IO引脚数量由原来的80个增加到86个IO; (2) 所有引出的差分线尽量保持等长; (3) 电容部分进行了改进,每个DC/DC输出都增加了铝电解电容,增加可靠性,铝电解电容都放在背面。 下面是第二版的图片: /****************************2016-07-26 完成*********************************/ 2Gbit全地址空间测试完成,用的是Xilinx提供的MCB IP硬核,附件是原理图和说明书,欢迎下载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值