• 08-SDRAM:汇总


    前言

    推荐阅读:孤独的单刀 - SDRAM汇总篇

    正文

    一、SDRAM概念

    1.1 含义

    SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器
    同步:
    动态:不断刷新保证数据的可靠性(电容存储电荷)
    随机:

    1.2 版本

    1. SDR SDRAM:即常说的SDRAM,采用单端时钟信号,在时钟上升沿采样
    2. DDR SDRAM
    3. DDR2 SDRAM
    4. DDR3 SDRAM
    5. DDR4 SDRAM
      时钟信号:差分信号(抗干扰)
      采样模式:时钟上升沿和下降沿都要采样

    1.3 存储阵列

    SDRAM中4个区域用存储,即4个Bank
    在这里插入图片描述
    SDRAM 存储容量计算
    在这里插入图片描述

    1. 找到芯片手册中对应的行地址、列地址的位宽,下面图中Bank的行数=13,列数=9
      在这里插入图片描述
    2. 假设每个存储单元可以存16bit的数据
    3. 计算公式:(2^13) * (2^9) * 16 bit * 4 Bank = 256M bit (单位是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     ;   //模式寄存器设置指令
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    2.1.2 地址

    init_addr = {3'd0,1'b0,2'b00,3'b011,1'b0,3'b111};
    
    • 1

    在这里插入图片描述

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

    SDRAM自动刷新代码

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    2.3 写操作(页突发)

    写操作(页突发)代码

    突发模式:不带自动充电的页突发模式

    页突发的长度 : 一行包含的存储单元的个数

    在这里插入图片描述
    在这里插入图片描述

    2.4 读操作(页突发)

    读操作(页突发)代码

    突发模式:不带自动充电的页突发模式

    设置潜伏期

    在这里插入图片描述

    在初始化模块部分设置的3个潜伏期

    于是在读数据部分,就需要用突发长度+3来表示读数据的使用的周期

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    从SDRAM中读取的数据需要进行打拍,因为SDRAM的工作时钟和当前模块的系统时钟频率相同、相位不同

    2.5 仲裁模块

    仲裁模块代码

    优先级:自动刷新>写操作>读操作
    在这里插入图片描述
    在这里插入图片描述

    2.6 SDRAM控制模块

    SDRAM控制模块代码

    在这里插入图片描述

    2.7 FIFO控制模块

    FIFO控制模块代码

    需要配置读写FIFO的IP核:FIFOIP核配置步骤

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    java-php-python-ssm-学校图书资源交易平台-计算机毕业设计
    全球首个?竟在中国
    项目生命周期
    【Vue-Demo】倒计时3秒后返回首页
    基于java的考研自习室音视频通话APP设计
    初识Monorepo
    Vue一些小技巧
    日常问题: 上线确认
    短路语法 [SUCTF 2019]EasySQL1
    mysql高手进阶优化篇
  • 原文地址:https://blog.csdn.net/m0_46830519/article/details/125873848