第6课,SDRAM

本文详细介绍了SDRAM的访问方法,包括其结构和内存控制器的执行流程。内容涵盖SDRAM的4个BANK组成,16位数据存储方式,以及内存控制器如何通过片选信号、BANK地址、行地址和列地址进行数据读取。同时,文章还阐述了内存控制器中如BWSCON、BANKCON6、REFRESH、BANKSIZE和MRSRB6等寄存器的设置步骤和逻辑,以确保SDRAM的正常工作和数据刷新。
摘要由CSDN通过智能技术生成

注:以下内容学习于韦东山老师arm裸机第一期视频教程

如果想要完全了解SDRAM,参考: 高手进阶,终极内存技术指南-完整/进阶版

    一.SDRAM的访问方法

        1.1 SDRAM结构图
            
            a.由4个BANK组成,可以看作是表格
            b.里面的每个格子有16位数据(2440接有两片SDRAM,每一片提供16位数据)
            c.访问时,需要先发出片选信号选中SDRAM,然后发出BANK信号选中哪个BANK,最后发出行地址和列地址(这些信号都是由内存控制器发出)
            

        1.2 内存控制器执行流程

            假设当CPU执行 ldr r0, =0x30000000

                          ldr r1, [r0] /* 读内存的数据 */

                          
            1.2.1 CPU将地址发送给内存控制器
            1.2.2 内存控制器根据地址发出片选信号nGCS6
            1.2.3 根据接的类型是SDRAM,拆分地址
                    a.BANK地址
                    b.发出行地址
                    c.发出列地址
                    (需要去设置每个地址有多少地址条,设置内存控制器中的相关寄存器)
            1.2.4 读取数据
        

    二.内存控制器中相关寄存器的设置

        2.1 设置BWSCON寄存器,如下图        (最终设置为0x22000000)

         

            我们只需要设置BANK6    

            2.1.1 DW6 [25:24] Determines data bus width for bank 6(决定bank6的位宽)
                              00 = 8-bit 01 = 16-bit, 10 = 32-bit 11 = reserved

                  我们使用两个16位的芯片拼接成32位的,因此设置为10

            2.1.2 WS6 [26] Determines WAIT status for bank 6.(决定bank6的等待信号)
                           0 = WAIT disable, 1 = WAIT enable                  
                  假设CPU的读写速度很慢,CPU发出读写命令后,内存芯片没有在规定时间准备好数据,可以向CPU发出wait信号,请求CPU宽限一点时间,我们用不到
                  设置为0

            
            2.1.3 ST6 [27] Determines SRAM for using UB/LB for bank 6.(决定SRAM是否使用UB/LB引脚)
                            0 = Not using UB/LB (The pins are dedicated nWBE[3:0)(nWBE表示写某个字节的时候是否真正写进去)
                            1 = Using UB/LB (The pins are dedicated nBE[3:0])(读/写字节的时候都可以使用nBE[3:0]这个引脚来决定是否使用这个byte)

        我们的内存是32位的,如果我们想要修改某个字节,仍然需要提供4个字节的数据,这时便需要通过nWBE[3:0](SDRAM中的L_nWBE[3:0])

         当想要读一个字节的时候,仍然会读到32位的数据,会从中挑出需要的字节(具体方法在上一节中提到过).因此不需要nBE来屏蔽某一个字节

          因此对于SDRAM,我们选择为0       


            

        2.2 设置BANKCON6寄存器,如下图   (最终设置为0x18001)

                
            设置该寄存器对照时序图如下:    
                
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值