当前位置:网站首页>08-SDRAM:汇总
08-SDRAM:汇总
2022-08-01 23:59:00 【刘颜儿】
前言
推荐阅读:孤独的单刀 - SDRAM汇总篇
正文
一、SDRAM概念
1.1 含义
SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器
同步:
动态:不断刷新保证数据的可靠性(电容存储电荷)
随机:
1.2 版本
- SDR SDRAM:即常说的SDRAM,采用
单端时钟信号,在时钟上升沿采样 - DDR SDRAM
- DDR2 SDRAM
- DDR3 SDRAM
- DDR4 SDRAM
时钟信号:差分信号(抗干扰)
采样模式:时钟上升沿和下降沿都要采样
1.3 存储阵列
SDRAM中4个区域用存储,即4个Bank
SDRAM 存储容量计算:
- 找到芯片手册中对应的行地址、列地址的位宽,下面图中Bank的行数=13,列数=9

- 假设每个存储单元可以存16bit的数据
- 计算公式:
(2^13) * (2^9) * 16 bit * 4 Bank = 256Mbit (单位是bit)
1.4 芯片引脚
CLK:时钟
CKE:时钟使能,高电平时,CLK才起作用
RAS#:低电平有效,行选通信号
CAS#:低电平有效,列选通信号
这2个引脚共同使用A0-A12这13个引脚,分时复用
WE#:使能写操作、预充电
CS#:片选信号,屏蔽或使能所有的输入输出端口
SDRAM操作命令:CS#——CAS#——RAS#——WE#
BA[1:0]:Bank地址
A[12:0]:存储地址
DQ[15:0]:双向数据端口
1.5 操作命令
1.6 学习难点
主要体现在对控制时序要求很严格
1.6.1 由动态造成的难点
1.6.2 由随机造成的难点
行地址、列地址公用一个端口,分时复用
二、实验
2.1 初始化
时序图来自镁光数据手册
波形图来自野火视频
2.1.1指令:
指令的写入只占用一个时钟周期
SDRAM初始化需要用到下面这4个指令共同完成
parameter P_CHARGE = 4'b0010 , //预充电指令 AUTO_REF = 4'b0001 , //自动刷新指令
NOP = 4'b0111 , //空操作指令 M_REG_SET = 4'b0000 ; //模式寄存器设置指令

2.1.2 地址
init_addr = {
3'd0,1'b0,2'b00,3'b011,1'b0,3'b111};

2.2 自动刷新(保证数据不丢失)



2.3 写操作(页突发)
突发模式:不带自动充电的页突发模式
页突发的长度 : 一行包含的存储单元的个数


2.4 读操作(页突发)
突发模式:不带自动充电的页突发模式
设置潜伏期

在初始化模块部分设置的3个潜伏期
于是在读数据部分,就需要用突发长度+3来表示读数据的使用的周期



从SDRAM中读取的数据需要进行打拍,因为SDRAM的工作时钟和当前模块的系统时钟频率相同、相位不同
2.5 仲裁模块
优先级:自动刷新>写操作>读操作

2.6 SDRAM控制模块

2.7 FIFO控制模块
需要配置读写FIFO的IP核:FIFOIP核配置步骤


边栏推荐
- Detailed explanation of Zadig's self-testing and tuning environment technical solution for developers
- QML package management
- Several interview questions about golang concurrency
- SphereEx苗立尧:云原生架构下的Database Mesh研发实践
- 带你搞懂MySQL隔离级别,两个事务同时操作同一行数据会怎样?
- Excel导入和导出
- 【三子棋】C语言实现简易三子棋
- 【加密周报】经济衰退在加息气氛中蔓延 美联储“放手一搏”?盘点上周加密市场发生的重大事件
- 使用Ganache、web3.js和remix在私有链上部署并调用合约
- 【Leetcode】470. Implement Rand10() Using Rand7()
猜你喜欢

async和await用法介绍

CDH6 Hue to open a "ASCII" codec can 't encode characters

QML package management

mysql8安装make报错如何解决

接地气讲解TCP协议和网络程序设计

在MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password YES) 拒绝访问问题解决

Excel导入和导出

分享一份接口测试项目(非常值得练手)

月薪12K,蝶变向新,勇往直前—她通过转行测试实现月薪翻倍~

ICLR 2022 Best Paper: Partial Label Learning Based on Contrastive Disambiguation
随机推荐
工件SSMwar exploded 部署工件时出错。请参阅服务器日志了解详细信息
DVWA靶场环境搭建
在linux下MySQL的常用操作命令
辛普森悖论
CDH6 Hue to open a "ASCII" codec can 't encode characters
很多人喜欢用多御安全浏览器,竟是因为这些原因
thinkphp漏洞总结
Deliver cloud-native microservices applications with Zadig
Programmer is still short of objects? A new one is enough
DOM 基础操作
Various Joins of Sql
LeetCode_279_完全平方数
根本上解决mysql启动失败问题Job for mysqld.service failed because the control process exited with error code
@Transactional注解在类上还是接口上使用,哪种方式更好?
Win10安装DBeaver连接MySQL8、导入和导出数据库详细教程
几道关于golang并发的面试题
学习英语的网站与资料
架构基本概念和架构本质
为什么要使用MQ消息中间件?这几个问题必须拿下
类型“FC<Props>”的参数不能赋给类型“ForwardRefRenderFunction<unknown, Props>”的参数。 属性“defaultProps”的类型不兼容。 不