0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

调试Lattice EVDK开发板上的DDR3 Demo时的问题

SwM2_ChinaAET 来源:未知 作者:李倩 2018-07-02 14:06 次阅读

昨天在调试Lattice EVDK开发板上的DDR3 Demo时,遇到一个莫名其妙的问题,今天来总结一下,并与大家分享。

一、问题描述

在Demo的顶层文件ddr3_test_top.v中有如下几句话:

inputtest1; outputout_test1; assignout_test1=test1;

且test1和out_test1与Design中的其他逻辑没有任何的关系,然而,当我把它删除的时候,却发现原本运行正常的Demo却出错了!!!

于是乎,先去检查这两个引脚是否和硬件相关,在LPF文件中找到其相关约束:

LOCATECOMP"test1"SITE"F5"; IOBUFPORT"test1"IO_TYPE=SSTL15_I; LOCATECOMP"out_test1"SITE"B1"; IOBUFPORT"out_test1"IO_TYPE=SSTL15_I;

然后查看EVDK开发板的原理图:

握草,这是什么鬼?

于是乎,进一步做测试,把test1和out_test1替换为其他的引脚试试看呢。结果发现:当test1在Bank7上时,Demo功能正常,当test1不在Bank7上时,功能则不正常!

想了好久,奈何我这种小菜鸟却怎么也想不明白,于是请教了大牛!

二、问题分析

首先,还是检查原理图和LPF文件,由于EVDK板子上有两个Mircon的DDR3的内存颗粒,且均为x16的Configuration。也就是DQ的宽度为16bit,两个颗粒合并为32bit的DQ。其中颗粒一对应DQ0~DQ15,颗粒二对应DQ16~DQ31。DQ0~DQ15连接到了Bank6上面,而DQ16~DQ31连接到了Bank7上面。但是需要注意的是,一些控制信号(如RST、CS、WE、DM等)则分布在Bank6和Bank7上,换句话说,即使Design中只需要使用一个DDR3颗粒,也需要同时使用Bank6和Bank7。

因为DDR3采用的是SSLT15 I电平标准,所以需要设置Bank6和Bank7的VREF。在LPF文件中,我们可以找到:

LOCATEVREF"BANK_6_VREF"SITE"V4"; LOCATEVREF"BANK_7_VREF"SITE"J7";

检查原理图,发现V4和J7引脚也正确地连接到了参考电压上。

此时,我们再次将上文提到的ddr3_test_top.v中的test1和out_test1相关的几条语句删除,并删除LPF文件中的相关语句。

然后从新综合、MAP,并PAR,此时在PAR的报告中可以发现如下的警告:

WARNING - par: LOCATE VREF "BANK_7_VREF" preference has been ignored, because no PIO in bank "7" uses this VREF.

也就是说Diamond认为,我们的Design中并没有使用Bank7中的PIO,所以不需要VREF,并忽略了LPF文件中给出的约束。所以Bank7的VREF引脚并未被设置为VREF模式,而是作为普通IO的(默认模式)。但是DDR3使用的是SSLT15 I电平标准,需要VERF引脚为其提供0.75V的参考电压(一般使用1.5V的VCCIO分压即可),如下图所示:

检查ECP5数据手册,发现如下一句话:

The VREF voltage is used to set the threshold for the referencedinputbuffers, such as SSTL.

注意是input!这就解释了为什么当test1引脚分配在Bank7上可以,分配在其他引脚上就不行的原因了。因为如果Bank7上没有input的话,Diamond就会认为此时为Bank7设置VREF是没有必要的,所以也就忽略了LPF中的约束。

难道是ECP5的数据手册写错了?难道是DDR的output也需要VREF?

其实不然,再次检查EVDK板的原理图,发现Bank6和Bank7的VREF实际上连接的是同一个电压(换句话说,这两个VREF是直接连在一起的)。但是合理的硬件设计方式是,不同Bank的VREF独立(即不要连接在一起)。也正是这种不合理的设计方式,导致了本文所讨论的问题。

在我们的设计中实际上只需要给Bank6设置VREF即可,Bank7实际上是不需要的,但是为什么不给Bank7 VREF的话,DDR却不能正常工作呢?原因在于,如果Bank7的J7引脚(VREF1_7)没有被配置为VREF输入模式的话,其默认为上拉的。而J7引脚(VREF1_7)的上拉会影响到VREF的电压,进而影响到Bank6上的V4引脚(VREF1_6)的VREF输入,最终导致Bank6没有稳定有效的VREF,因此DDR不能正常工作。

为了让J7引脚(VREF1_7)不影响VREF的电压,显然最好是将其也设置成VREF输入模式,为了防止我们的设置被Diamond优化掉,才出现了本文前面所讨论的这一问题。

三、关于SSTL电平(更新内容)

这里来分析一下为什么DDR3的相关IO的输入需要参考电压,而输出却不需要。DDRx SDRAM普通IO采用的是SSTL电平标准(clk和dqs等采用的是SSTL的差分版本SSTLD),而SSTL实际上是一种伪差分电平。

所谓伪差分电平,就是信号的接收端是一个差分的接收器,但是其中一端固定接参考电压VREF,而另一端接单端信号线。输入信号电压与参考电压之间进行比较,作为判决输入信号高低的标准。而伪差分标准的输出驱动器则是单端信号标准中常见的推挽式的结构(Push-Pull),显然是不需要参考电压VREF的。

由于伪差分电平的信号输出的摆幅较小,瞬态的电流较小,保持信号完整性要相对容易些。因此,这种电平主要应用在高速的存储器接口中,如DDRx SDRAM、QDR SRAM和RLDRAM等中。

这种结构的好处是,其输入信号只需要在VREF上下小幅度摆动即可被输入驱动器正确地接收。这样信号的噪声余量就很大,信号能否被正确接收下来,VREF将起到关键作用,因此设计时需要保证VREF较高的精度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电平
    +关注

    关注

    5

    文章

    338

    浏览量

    39568
  • 开发板
    +关注

    关注

    25

    文章

    4441

    浏览量

    94125

原文标题:【博文连载】EVDK DDR3 Demo调试笔记(关于VREF的问题)

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于Arty Artix-35T FPGA开发板DDR3和mig介绍

    讲解xilinx FPGA 使用mig IP对DDR3的读写控制,旨在让大家更快的学习和应用DDR3。 本实验和工程基于Digilent的Arty Artix-35T FPGA开发板完成。 软件
    的头像 发表于 01-01 10:09 3768次阅读
    基于Arty Artix-35T FPGA<b class='flag-5'>开发板</b>的<b class='flag-5'>DDR3</b>和mig介绍

    DDR3布线参考

    DDR3DDR
    电子学习
    发布于 :2022年12月07日 22:58:53

    如何提高DDR3的效率

    现在因为项目需要,要用DDR3来实现一个4入4出的vedio frame buffer。因为片子使用的是lattice的,参考设计什么的非常少。需要自己调用DDR3控制器来实现这个vedio
    发表于 08-27 14:47

    【创龙TMS320C665x DSP开发板DDR3加载程序的问题与解决方法

    程序的运行是由IBL作引导的,其实质是TI固化ROM中的程序,但调试时可以不烧写到FLASH直接加载到RAM中,加载到内部RAM中是没有问题的,但是外部RAM中就出现问题。主要是缺少对DDR3的初始化
    发表于 05-06 22:45

    请问为什么DSP需要外接DDR3? DDR3和外接Flash有什么区别和联系?

    本帖最后由 一只耳朵怪 于 2018-6-20 11:34 编辑 各位专家好!刚刚学习DSP,还没有入门。实验室购买了TMS320C6678开发板。请问:1、为什么DSP需要外接DDR3?2
    发表于 06-20 00:40

    DDR3设计与调试小结

    本帖最后由 一只耳朵怪 于 2018-6-21 15:24 编辑 各位好!关于DDR3,之前有小结过如果进行DDR3的SW leveling和进行EMIF4寄存器的配置。但是调试时,如果进行
    发表于 06-21 04:01

    6678开发板DDR3布线约束的问题

    大家好,为了能够leveling成功,DDR3的布线约束需要规定到每一片DRAM的CLK长度与DQS长度差值不能超过一定范围。但是根据6678或者6670开发板,其中关于DQS和CLK长度差的布线
    发表于 01-02 15:21

    6657的DDR3初始化不成功

    最近我在调试自制6657板子的DDR3初始化,发现一个很奇怪的现象,百思不得其解,我分别用GEL和KEYSTONE DDR3 INIT 在6657EVM开发板
    发表于 01-08 10:19

    请问谁有LATTICE ECP3系列的开发资料吗?

    各位大侠有没有LATTICE ECP3开发板资料或者是相关PCB原理图,最好是带4个DDR3的,求分享呀
    发表于 09-12 01:41

    TMSC6678 DDR3初始化问题

    我们参照TMDXEVM6678L开发板设计了一块FPGA加DSP架构的处理,由FPGA完成6678的boot启动任务。在进行程序烧录调试的过程中,出现了以下问题。未使用到DDR3内存
    发表于 10-29 17:56

    【Combat FPGA开发板】配套视频教程——DDR3的读写控制

    本视频是Combat FPGA开发板的配套视频课程,本章节课程主要介绍Gowin中DDR3 的基础知识、DDR3的IP core的特性和使用以及DDR3的IPcore例程的仿真。课程资
    发表于 05-06 15:34

    DDR3芯片读写控制及调试总结

    DDR3芯片读写控制及调试总结,1. 器件选型及原理图设计(1) 由于是直接购买现成的开发板作为项目前期开发调试使用,故
    发表于 07-22 08:33

    【FPGA DEMO】Lab2:DDR3读写实验

    `本开发板板载了一片高速 DDR3 SDRAM, 型号:MT41J128M16JT-093, 容量:256MByte(128M*16bit),16bit 总线。开发板 FPGA 和
    发表于 07-30 11:23

    紫光同创FPGA入门指导:DDR3 读写——紫光盘古系列50K开发板实验教程

    MES50HP 开发板简介 MES50HP 开发板集成两颗 4Gbit(512MB)DDR3 芯片,型号为 MT41K256M16。DDR3 的总线宽度共为 32bit。
    发表于 05-19 14:28

    lattice DDR3 IP核的生成及调用过程

    本文以一个案例的形式来介绍lattice DDR3 IP核的生成及调用过程,同时介绍各个接口信号的功能作用
    发表于 03-16 14:14 1849次阅读
    <b class='flag-5'>lattice</b> <b class='flag-5'>DDR3</b> IP核的生成及调用过程