Sdram控制器(二)

经过几天的Sdram项目调试,小编想说简直了~,感触颇深,今天就分享给大家喽~

Sdram项目调试感悟:

1. 首先保证仿真正确,能够完全读写整个sdram model【难点二】

2. 保证板子上的sdram是正常工作的。

3. 时钟:sdram的输入时钟能在数据中间采样(做相移或者output delay)【难点一】

4. 约束:时序约束和物理约束

5. 其他

  • 复位或者VIO:Debug的时候会感受到这个神奇之处
  • Oddr2的使用,这里有两个坑:

(1)如果输出管脚不是时钟引脚,则需要加CLOCK_DEDICATED_ROUTE = FALSE;

(2)输出的时钟不能作为ila的采样时钟。

  • 初始化时序:两次自动刷新和预充电的先后顺序可以不用管(具体的可以看手册),其实这个很好理解,这里相当于一个刷新模块而已,然后进行模式寄存器配置。【难点三】
  • 刷新:刷新操作其实可以定义的间隔非常小,这样会一直发出请求,但是对于读写来说是独占的,只有等读写完成后才会进行刷新,这样就避免了读写操作被中断,存储行业里很少有指令的记录这个说法,不能读写一半的时候去做别的操作,然后再返回来进行读写,这个是很难实现的,因为后面的操作请求会将以前的“冲”掉。
  • Ras,Cas,We的时序:这个可以使用示波器观察是否跟波形一致,测试是否命令到达sdram芯片【难点四】
  • Addr:可以用示波器采最低位,这样就会是一个方波(作为验证地址是否到达sdram芯片的手段)
  • inout信号的控制,最好放在顶层进行处理

图Ⅰ 输出有错

接下来

跟着小编一起去攻破难点问题吧

难点一:Sdram的时钟问题

为了保证数据被时钟的上升沿采到,所以设计中使用了一个-150°的相移,示波器才采集到的时钟的确也没有问题。

(图1 黄色是pll产生的无相位偏移的时钟 蓝色是相位偏移-150°后结果)

难点二:仿真出错

当读写数据如果超过1024行,会有错误,这是因为在预充电的时候必须指定充电类型,如果A[10]为0,则需要在数据读写完成后加入一个预充电命令(关闭一行的作用);如果A[10]为1,则需要在数据读写完成后不予理会;

仿真在超过1024行出错(已解决)

难点三:上版调试

上板调试无结果这是因为inout信号最好在顶层进行处理,如果在内部处理,综合后可能会出错,反正我是入过“坑”了,搞了三天都没有数据读出。

上板调试的初始化时序

上板调试的刷新时序

上板调试的写时序

上板调试的写时序

难点四:控制信号的把握

We信号与时钟的关系

Ras与时钟的关系

Cas下降沿与时钟关系

Cas上升沿与时钟关系

因为sdram对于我们来说其实相当于是一个“黑盒子”,必须保证所有的操作都正确,才能读写。所以此处关键就是借助示波器来分析是否信号传送给sdram芯片,下面是一个几个信号的时序与时钟的相位关系。

原文发布于微信公众号 - 瓜大三哥(xiguazai_tortoise)

原文发表时间:2018-04-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4878
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4948
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

32210
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3225
来自专栏转载gongluck的CSDN博客

cocos2dx 打灰机

#include "GamePlane.h" #include "PlaneSprite.h" #include "BulletNode.h" #include...

5656
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2665
来自专栏杨龙飞前端

scrollto 到指定位置

2544
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

7068
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2717
来自专栏Golang语言社区

【Golang语言社区】GO1.9 map并发安全测试

var m sync.Map //全局 func maintest() { // 第一个 YongHuomap := make(map[st...

4828

扫码关注云+社区