《嵌入式Linux软硬件开发详解——基于S5PV210处理器》——2.2 DDR2 SDRAM芯片

简介:

本节书摘来自异步社区《嵌入式Linux软硬件开发详解——基于S5PV210处理器》一书中的第2章,第2.2节,作者 刘龙,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 DDR2 SDRAM芯片

SDRAM全称为同步动态随机存储器(Synchronous Dynamic Random Access Memory)。由于SDRAM集成度高,单片存储容量大,并且读写速度快,在设计嵌入式系统时,经常用其作为主存储器(或称为内存)。SDRAM发展至今,经历了SDRAM、DDR、DDR2、DDR3等几代产品,DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器,较SDRAM速度更快。在SDRAM或DDR RAM定义中,同步是指其时钟频率与CPU前端总线的系统时钟频率相同,并且内部命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据的读写。

Smart210开发板使用的是DDR2 SDRAM,型号为K4T1G084QQ,单芯片容量设计为16MBit×8BANK×8I/Os,共128MByte,板载一共4片,总计512MB。注意,芯片内部的8Bank不是指该芯片需要占用S5PV210芯片的8个存储块,而是指SDRAM芯片内部把128MB容量分成了8块存储区,每块存储区的容量为16Mx8bit。

2.2.1 DDR2 SDRAM工作原理

如图2-4所示,SDRAM内部是一个存储阵列,我们可以把它想象成一个表格,和表格的检索原理一样,先指定行,再指定列,就可以准确找到所需要的存储单元。这个表格的整体则称为BANK。DDR2 SDRAM具有8个BANK。对SDRAM的访问,我们应该先找到读写地址,才能对其进行访问。找到地址的流程为首先指定BANK,然后指定行地址,最后指定列地址。


screenshot

K4T1G084QQ采用的是FBGA球形封装,不同于普通的贴片封装。K4T1G084QQ的引脚分布及封装示意图如图2-5、图2-6所示。


screenshot

K4T1G084QQ引脚功能如表2-2所示。


screenshot


screenshot

上述引脚中,比较特殊的是ODT引脚。ODT(On-Die Termination)的含义为内建核心终结电阻器。所谓的终结,就是让电路的终端将信号吸收掉,而不会在电路上面形成反射,对后面的信号造成影响。在DDR时代,控制与数据信号的终结在主板上面完成,每块DDR主板在内存槽的旁边都会有一个终结电压部分的设计,它主要由一排终结电阻构成。随着SDRAM技术的发展,ODT技术将终结电阻移植到了芯片内部。主板上面不再有终结电路,而且DDR2可以根据自己的特点内建合适的终结电阻,这样可以保证最佳的信号波形。ODT技术允许CPU通过配置DDR2 SDRAM的内部寄存器以及控制ODT信号,来实现对匹配电阻的值及其开关状态的控制,从而实现读、写操作时最佳的信号完整性。在Smart210开发板上面,DDR2 RAM芯片的ODT引脚与S5PV210的ODT1引脚连接,信号由S5PV210来控制。

2.2.2 DDR2 SDRAM硬件设计

DDR2 SDRAM与S5PV210的地址线、数据线及控制引脚连接方式如图2-7所示。Smart210开发板一共有4片K4T1G084QQ,4片DRAM的连接方式不同:第1片的8位数据引脚连接至CPU的Xm1DATA0~Xm1DATA7;第2片的8位数据引脚连接至CPU的Xm1DATA8~Xm1DATA15;第3片的8位数据引脚连接至CPU的Xm1DATA16~Xm1DATA23;第4片的8位数据引脚连接至CPU的Xm1DATA24~Xm1DATA31。可以看出,4片DDR2 RAM采用的是并接到一起组成32位数据总线的方式。

Smart210开发板具有4片K4T1G084QQ,共计512MB。在CPU的内部寻址空间中,字节BYTE(8位)是表示存储容量的唯一单位,而在DDR2 RAM中存储单位为位Bit(1位),K4T1G084QQ的存储容量为1GBit,折合成BYTE为128MB。Smart210开发板设计中K4T1G084QQ采用8位的数据输出方式,所以4片DDR2 SDRAM的数据引脚并接(4×8Bit=32Bit),正好组成S5PV210处理器的32位数据总线宽度。

K4T1G084QQ的地址总线A0~A13连接到S5PV210的Xm1ADDR0~Xm1ADDR13引脚,共14根地址总线,采用的是8位的数据输出方式,因此地址总线给出的地址范围为214×8Bit=16MB,K4T1G084QQ的BA0、BA1和BA2引脚为内部8个Bank的选择引脚(23=8),连接到S5PV210的Xm1BA0、Xm1BA1和Xm1CSn1/BA2引脚。S5PV210控制对K4T1G084QQ内部Bank的选择使用。3条Bank选择引脚和14根地址总线共完成23×214×8Bit=128MB内存空间的访问。

4片DDR2 SDRAM的片选信号nCS引脚连接的皆为S5PV210的Xm1CSn0引脚,即S5PV210的DRAM0控制引脚,从表2-1可以看出,DDR2 SDRAM的地址应该是从0x20000000开始的连续512MB地址空间。


screenshot

相关文章
|
3天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
21天前
|
JSON 机器人 Linux
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
50 3
|
1月前
|
Linux 开发工具 git
Linux嵌入式系统中如何使用U-Boot实例
Linux嵌入式系统中如何使用U-Boot实例
26 0
|
1月前
|
Linux Android开发
嵌入式linux中Framebuffer 驱动程序框架分析
嵌入式linux中Framebuffer 驱动程序框架分析
27 0
|
9天前
|
Linux 编译器 测试技术
嵌入式 Linux 下的 LVGL 移植
嵌入式 Linux 下的 LVGL 移植
|
19天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
37 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
22天前
|
Linux
嵌入式Linux系统(NUC980)tf卡出错处理errors=remount-ro改为errors=continue
嵌入式Linux系统(NUC980)tf卡出错处理errors=remount-ro改为errors=continue
7 1
|
22天前
|
安全 Linux
嵌入式Linux系统关闭串口调试信息的输出
嵌入式Linux系统关闭串口调试信息的输出
13 1
|
22天前
|
Linux 编译器 网络安全
嵌入式Linux移植dropbear
嵌入式Linux移植dropbear
19 3
|
22天前
|
存储 Ubuntu Linux
制作一个嵌入式Linux的应用程序升级文件
制作一个嵌入式Linux的应用程序升级文件
12 2