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 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

Python多线程并发的简单测试

之前也写了一些简单的Python程序,对于多线程的并发一直没有涉及,今天决定先突破一下,把这个部分的内容先快速的掌握,然后在这个基础上细化改进。 我的...

34711
来自专栏极客猴

高并发的那些事

"高并发"对后台开发同学来说,既熟悉又陌生。熟悉是因为面试和工作经常会提及它。陌生的原由是服务器因高并发导致出现各位问题的情况少之又少。同时,想收获这方面的经验...

713
来自专栏PHP实战技术

3-5年的PHPer常见的面试题

看到有很多,的总结一下,比较适合有一定经验的PHPer 平时喜欢哪些php书籍及博客?CSDN、虎嗅、猎云 js闭包是什么,原型链了不了解? for与forea...

35710
来自专栏杨建荣的学习笔记

在线重定义的补充测试(r10笔记第26天)

在很多时候,我们都是需要保持业务的可持续性,尽管说DDL的过程持续时间很短,但是在线业务出现,就会阻塞DML,导致业务访问中断,事务收到影响,所以在有些...

3328
来自专栏牛客网

C++后台研发工程师2018年BAT华为网易等面经总结

先介绍下个人情况,国内top5本硕科班,英特尔和腾讯两段实习经历,几个项目和还没中的论文QVQ。目前提前批和内推已经基本结束,有意向的offer也有了几个,现整...

963
来自专栏跨界架构师

如何一步一步用DDD设计一个电商网站(十二)—— 提交并生成订单

之前的十一篇把用户购买商品并提交订单整个流程上的中间环节都过了一遍。现在来到了这最后一个环节,提交订单。单从业务上看,这个动作的背后包含了多个业务操作,根据用...

532
来自专栏数据和云

月之初 数之慎

上周日,也就是9月1日,收到了一则用户的故障请求,系统中一个存储过程出错,紧急安排工程师响应处理,解决了故障。 我们经历过很多类似的故障,在月初、月尾、年初、年...

3189
来自专栏牛客网

(19实习)51信用卡Java面经51信用卡、

1523
来自专栏腾讯云技术沙龙

黄文俊:Serverless架构及场景介绍

大家好,自我介绍一下,目前我是腾讯云无服务器云函数产品负责人。我做了很多年后端开发。今天是从一个程序员角度讲解一下我们怎么样用Serverless架构。

2736
来自专栏北京马哥教育

从解决Redis访问超时的问题谈起——故事比结果要精彩

这周终于解决了Redis访问经常超时的问题,终于可以踏实睡觉了。从上周就开始纠结在这个问题上,可以用寝食难安来形容,感觉这个问题就像个定时炸弹一样,虽然根据手搜...

3285

扫码关注云+社区