前面几篇博客已经讲到了关于0V7725的相关驱动问题,那么OV7725驱动成功之后,设定OV7725输出RGB565格式,那么对于640x480x16,那么若是选用FIFO,应该设置为位宽16bit,存储深度为30万,但是这样是不现实的。所以采用存储深度更大的SDRAM来实现数据的缓存。

要么对于SDRAM的学习资料,笔者列举以下几篇文档供大家学习。

当然还有之前各位大神写的博客,都可以进行参考,这里不一一列举。

本篇博客先整体介绍SDRAM,以及SDRAM的重要知识点。

  1.基础知识

SDRAM(synchronous dynamic random access memory),同步动态随机存储器。同步也就是与CPU前端总线的系统时钟频率相同,并且内部命令的发送与数据的传输都是以它为基准。动态是SDRAM是电容阵列,需要不断的充放电,不断刷新数据保证数据不丢失,所以SDRAM有个重要参数,就是刷新频率。

我们可以把SDRAM想象成一个表格,若要写入某一个单元,则需指定行地址和列地址,如下图21.1所示,整个由行列组成的块,称之为L-Bank,大部分的SDRAM都是基于4个L-Bank设计的,也就是有4张这样的表格。寻址流程,先是指定L-Bank的地址,再进行指定行地址,然后再指定列地址寻址单元,其中每个单元可以放置8/16/32位的数据。

笔者常用的是hynix(海思)的SDRAM芯片,如下图。基于hynix的其他其他型号操作时序都是一样的,只不过存储容量改变。时钟频率以及其他参数改变,这个之后会提及到。

由上图可以看出,有四个分区,每一个分区是由行和列激活信号,并通过行和列的预解码实现行和列的锁定,其中地址缓存器赋予地址寄存器,用来产生行和列的预解码,以及模式寄存器,模式寄存器用来控制写入的方式。状态机部分是产生控制逻辑,功能和仲裁器一样,SDRAM的实施其实也是利用了DMA的原理,CPU只需给仲裁逻辑发送相应的指令,会将数据从一个地方搬运到另一个地方。

所以整个SDRAM部分,应该包括逻辑控制单元,地址寄存器,数据寄存器,在时序控制中,还有一个命令解码器,CPU就是通过这个通道来实现命令的交互,来操作内存条的。SDRAM中还有模式寄存器,这个决定SDRAM是否能够读写操作的成败。

2. PCB设计注意事项

SDRAM在制作PCB时,为了保证在高频下正常工作,首先应该处理好电源引脚的退耦电容,退耦电容的layout与FPGA电源引脚一样,在PCB设计时尽可能的靠近电源引脚,以最大限度地滤除纹波,提高SDRAM驱动电源的质量。

SDRAM时钟信号:由于SDRAM的工作频率较高,为避免传输效应,同时避免对其他信号产生干扰,在时钟线的布线时应尽可能采用地线隔离,缩短PCB上面的走线长度。

SDRAM控制信号:由于是高速并行操作,控制线在layout时尽可能地等长,以最大限度地保证时序信号的同步性。

如果对SDRAM的时钟,时序要求比较高,则在重要的控制线上面,加33Ω电阻来消除干扰。这个主要是降低信号边沿的跳变速率。

SDRAM尽可能地远离电源,晶振,用户接口等干扰比较大的电路模块

SDRAM走线即使没有严格的走等长线,只要走线不是太长,都没有太大关系。

上图是笔者经常采用的一种方案,其中引脚15和19如果不采用掩模处理的话,可以直接接地。

//=======================================================================

更多详细的资料下载可以登录笔者百度网盘:

网址:http://pan.baidu.com/s/1bnwLaqF

密码:fgtb

//=======================================================================

最新文章

  1. CSS HTML元素布局及Display属性
  2. 嵌入式Linux驱动学习之路(十五)按键驱动-定时器防抖
  3. 关于iBatis.NET连接各数据库时提示没找到数据库驱动的依赖文件
  4. android之ViewFlipper
  5. Java并发之CountDownLatch 多功能同步工具类
  6. easy ui datagrid 中getSelections方法只能获取一行数据
  7. Android线程消息通信(一)
  8. leetcode:两个数的和||
  9. bzoj1801
  10. 反射给对象赋值遇到的问题——类型转换[转http://blog.csdn.net/xiaohan2826/article/details/8536074]
  11. 字典实体类:DictionaryEntry类
  12. Apache Http Server和Tomcat 之区别
  13. windows保留关键字全
  14. [CentOS] SSH 免密钥登录
  15. js 在iframe子页面获取父页面元素,或在父页面 获取iframe子页面的元素的几种方式
  16. VSTO学习(三)——创建Excel解决方案
  17. 初识 go 语言:语法
  18. LOJ 6277-6280 数列分块入门 1-4
  19. :迭代器模式1:Iterator
  20. mysql 设置用户并授权

热门文章

  1. 【Unity】3.5 导入音频文件
  2. 深入理解Java中的逃逸分析
  3. Python fabric实践操作
  4. User-Defined-Literal自定义字面量
  5. 使用 Jackson 树模型(tree model) API 处理 JSON
  6. C# FileStream 文件复制
  7. 2. K-Means的优化
  8. WCF终结点——终结点地址(EndpointAddress)
  9. Docker 容器更新,打包,上传到阿里云
  10. Eclipse 常用插件安装(最新更新:2016-12-06)