前面几篇博客已经讲到了关于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

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

SDRAM 学习笔记(一)的更多相关文章

  1. SDRAM学习笔记(二)

    上一篇博客主要讲解了一下SDRAM整体结构以及PCB方面的注意事项.接下来讲解一下需要用到的一些命令. 1.常用命令的缩写 上述是常用到的一些指令集. 2.模式寄存器   (1)突发长度 通过对A0~ ...

  2. SDRAM 学习笔记(三)

    上图是terasic公司提供的SDRAM控制器,大部分已经封装好,我们需要修改其中部分代码,以此来实现我们自己需要的功能. 1.PLL时钟设定 首先上面的sdram_pll.v中产生上一篇博客所需要的 ...

  3. SDRAM学习笔记

    摘自“开源骚客视频教程” 1.仲裁模块就是用来控制什么时候读.写.刷新 2.模块中的状态机 3.初始化时序图说明,来自“IS42S116160.pdf”文件 4.SDRAM写时序图,来自“IS42S1 ...

  4. jz2440-uboot-201204版本移植【学习笔记】【原创】

    平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山二期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC)4.3.2 PC环境:ubuntu18.04 一.uboot ...

  5. jz2440使用openjtag+openocd+eclipse调试【学习笔记】

    平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山二期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC) 3.4.5 eclipse版本:eclipse-cpp-l ...

  6. jz2440存储管理实验【学习笔记】

    平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山一期视频学习笔记 简介:先来简单的说明一下这次的实验,看看下图,我们的程序通过烧录器下载到nandflash当中去,之后在启动的时 ...

  7. Aurora学习笔记连载一:仿真平台搭建

    由于公司项目需要,需要学习Aurora协议,才有了这样的连载学习笔记,也算是对自己学习的一份记录吧. 对于Aurora是什么,大家自行百度. 当然,Kevin也在此先提醒大家,本套学习笔记不是你想学就 ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

随机推荐

  1. Android Studio 1.1.0 切换主题和绑定 代码提示 快捷键

    这篇文章用于给刚从eclipse 转用 Android Studio 1.1.0的同学看的. 所以经常会更新的. 至于为什么要转Android Studio 1.1.0呢,就自己想吧.没有人强逼的. ...

  2. 云服务器 nginx + tomcat 部署集群 配置

    nginx.conf #user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error.log not ...

  3. IOS使用AVAudioPlayer播放mp3歌曲文件并监听来电打断

    本实例实现了AVAudioPlayer播放mp3歌曲文件,实现了播放.暂停.继续操作,音乐音量控制.播放进度显示,同时监听来电打断事件 一.控件初始化 - (void)viewDidLoad { [s ...

  4. [nginx]盗链和防盗链场景模拟实现

    盗链环境模拟 http://www.daolian.com/index.html 这个页面盗用http://www.maotai.com/qq.jpg这个站点页面的图. <!doctype ht ...

  5. STL学习笔记— —无序容器(Unordered Container)

    简单介绍 在头文件<unordered_set>和<unordered_map> 中定义 namespace std { template <typename T, ty ...

  6. HTML5学习笔记(八):CSS定位

    CSS 定位 (Positioning) 属性允许你对元素进行定位. 定位和浮动 CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠.定位的基本思想很简单 ...

  7. WinEdt 6+SumatraPDF -- 实现TeX文档和PDF文件正反向搜索

    这几天试用了新出不久的WinEdt 6,结合PDF文件的阅读器SumatraPDF,感觉实现TeX文档和PDF文件之间的正反向搜索十分便利,故此向大家特别推荐! CTeX v2.8版本的一项重要功能是 ...

  8. 每日英语:China's Bigger Innovation Problem

    Last month's Third Plenum meeting of Chinese leaders seemed to signal Beijing's intention to experim ...

  9. c与c++相互调用机制分析与实现

    c++通常被称为Better c,多数是因为c++程序可以很简单的调用c函数,语法上基本实现兼容.最常用的调用方式就是c++模块调用c实现的dll导出函数,很简单的用法,使用extern " ...

  10. 【密码学】RSA公钥密码体制

    RSA公钥密码体制是美国麻省理工学院(MIT)的三位科学家Rivest.Shamir.Adleman于1978年提出的,简称RSA公钥秘密系统.实际上,RSA稍后于MH背包公钥密码实用系统,但它的影响 ...