SDRAM 学习笔记(一)
前面几篇博客已经讲到了关于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 学习笔记(一)的更多相关文章
- SDRAM学习笔记(二)
上一篇博客主要讲解了一下SDRAM整体结构以及PCB方面的注意事项.接下来讲解一下需要用到的一些命令. 1.常用命令的缩写 上述是常用到的一些指令集. 2.模式寄存器 (1)突发长度 通过对A0~ ...
- SDRAM 学习笔记(三)
上图是terasic公司提供的SDRAM控制器,大部分已经封装好,我们需要修改其中部分代码,以此来实现我们自己需要的功能. 1.PLL时钟设定 首先上面的sdram_pll.v中产生上一篇博客所需要的 ...
- SDRAM学习笔记
摘自“开源骚客视频教程” 1.仲裁模块就是用来控制什么时候读.写.刷新 2.模块中的状态机 3.初始化时序图说明,来自“IS42S116160.pdf”文件 4.SDRAM写时序图,来自“IS42S1 ...
- jz2440-uboot-201204版本移植【学习笔记】【原创】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山二期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC)4.3.2 PC环境:ubuntu18.04 一.uboot ...
- jz2440使用openjtag+openocd+eclipse调试【学习笔记】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山二期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC) 3.4.5 eclipse版本:eclipse-cpp-l ...
- jz2440存储管理实验【学习笔记】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山一期视频学习笔记 简介:先来简单的说明一下这次的实验,看看下图,我们的程序通过烧录器下载到nandflash当中去,之后在启动的时 ...
- Aurora学习笔记连载一:仿真平台搭建
由于公司项目需要,需要学习Aurora协议,才有了这样的连载学习笔记,也算是对自己学习的一份记录吧. 对于Aurora是什么,大家自行百度. 当然,Kevin也在此先提醒大家,本套学习笔记不是你想学就 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
随机推荐
- Linux重启命令与如何重启网络?
分享下Linux重启命令的用法,linux如何重启网络的方法? 第一部分,有关Linux重启命令的用法 1.shutdown2.poweroff3.init4.reboot5.halt *---具体说 ...
- vivado烧写bin文件到flash 中
点击 bitstream setting ,将 bin_file 勾上,点击 OK. 2)点击 generate bitstream ,生成 bit 文件和 bin 文件 3)点击 open hard ...
- Python使用读写excel文件
Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...
- FFmpeg(11)-基于FFmpeg进行音频重采样(swr_init(), swr_convert())
一.包含头文件和库文件 修改CMakeLists # swresample add_library(swresample SHARED IMPORTED) set_target_properties( ...
- 【小白的CFD之旅】20 计算区域的构建
计算域是什么计算域如何创建常用的建模软件计算域几何的特殊之处具体的计算域提取方法小白总结 自从上次在食堂听了小牛师兄关于计算网格的一些问题后,小白决定在寒假期间好好的补习一下关于计算网格的划分内容.在 ...
- angular五种服务详解
在这之前angular学习笔记(十五)-module里的'服务'这篇文章里,已经大致讲解了ng中的'服务',在之后的很多地方也用到了服务,但是,所有的服务都是使用app.factory来创建的.但其实 ...
- 破解Linux系统root用户密码
linux系统的启动过程 在介绍破解Linux系统root密码之前先了解一下linux系统的启动过程 开机自检(POST),初始化部分硬件 搜素可用于引导的启动设备(如磁盘的MBR) 读取并将控制权 ...
- iOS-图片浏览器(字典和plist文件的使用)
// // ViewController.m // 19-图片浏览器 // // Created by hongqiangli on 2017/7/31. // Copyright © 201 ...
- ubuntu下安装与卸载软件方法
http://www.cnblogs.com/JamyWong/archive/2009/11/19/1606442.html 1.通过deb包安装的情况:安装.deb包:代码:sudo dpkg - ...
- python-minidom模块【解析xml】
1,xml的文档结构 1.1,XML文档包括XML头信息和XML信息体 1.1.1,XML文档头信息 <?xml version="1.0" encoding="u ...