【ARM裸板】内存控制器与SDRAM基础

1.CPU如何控制外设?

  • CPU控制相应外设的寄存器,有外设控制器发出特定的波形

2.CPU如何选择寄存器?

  • CPU通过内存控制器选择
发出地址addr
根据地址选择不同的模块
CPU
内存控制器
读写数据

3.外设共用地址、数据总线,如何互不干扰?

  • 通过片选CS引脚,选择不同的外设

4.谁控制片选引脚

发出地址addr
根据地址发出片选信号
CPU
内存控制器
使能相应的外设

  • 由芯片手册得知:当CPU发出地址是0x00000000时 nGCS0为低电平选择(有效)
    在这里插入图片描述

5.CPU如何读写数据的方向?

  • 通过外设芯片的读写引脚控制

6.CPU不同位宽设备如何连接并读取数据【内存控制器】

6.1 连接方式

  • 8bit ROM (从A0开始对应连接)
    在这里插入图片描述

  • 16bit ROM (A0不接,从A1开始)
    在这里插入图片描述

  • 32bit ROM(A0、A1不接,从A2开始)
    在这里插入图片描述

6.2 CPU读取ROM数据1个字节

  • 例如在 地址3上读取一个字节数据
mov R0.#3
LDRB R1,[R0]

过程 CPU发出的地址 ROM接收到的地址 ROM返回的数据 内存控制器挑出指定字节送给CPU
8bit 000011 000011 第3个byte 第3个byte
16bit 000011 00001 第1个16bit 根据A0=1,挑出16bit中的第1个byte给CPU(从0byte开始)
32bit 000011 00000 第0个32bit 根据A0 A1=11挑出第3个byte给CPU(从0byte开始)
  • 综上,也就是所有的地址线都会用到,内存控制器根据未接的地址线状态判断挑出指定的byte

6.3 CPU读取ROM数据4个字节

mov R0,#4
LDR R1,[R0]  ;从地址4上取出4个字节

过程 CPU发出的地址 内存控制器转发给ROM的地址 ROM返回的数据 内存控制器组装数据返回给CPU
8bit 000100 000100、000101、000110、000111(共四次) 得到地址4、5、6、7上的byte 组装给一个32bit数据给CPU
16bit 000100 00010、00011(共两次) 得到第2、3个16bit 组装给一个32bit数据给CPU
32bit 000100 0001(共一次) 得到第1个32bit 直接发送给CPU

7.如何根据原理图确定芯片访问地址

7.1 方法

7.2 Nor Flash确定访问地址

  • 例如Nor Flash芯片:用到A20~A021条线
  • 地址线21:即可访问2M内存,0x1FFFFF
  • 根据它片选信号为nGCS0可以得到基地址BASE = 0x00000000
  • 其范围为BASE+0x0000 0000 ~ BASE+0x001F FFFF,即0x0000 0000 ~ 0x001F FFFF

在这里插入图片描述

7.3 Net芯片确定访问地址

  • 例如网卡net芯片:只连接了A2,但是其A0是用来确定16bit(网卡数据线为16位)中的高8位还是低8位,因此A2 A0
  • 根据其片选引脚为nGCS4,可以得到基地址BASE = 0x2000 0000
  • 其范围为BASE+0x0000 0000 ~ BASE+0x0000 0101,即0x2000 0000 ~ 0x2000 0005
    在这里插入图片描述

8. Nor Flash时序分析

8.1 MX29LV160 读数据时序

在这里插入图片描述

在这里插入图片描述

  • Taa:发出地址信号之后多长时间数据有效
  • Tce:发出片选信号之后多长时间数据有效
  • Toe:发出读信号之后多长时间数据有效
  • Toh:数据保持时间
  • Tdf:数据浮动时间
  • Trc:读取周期时间(70ns,即读取速率最大为70ns)

8.2 S3C2440 可编程访问周期时序

  • 为了方便,使得Addr、CS、OE信号同时拉低使能,然后确保Tacc>=70ns,即可满足Nor Flash的时序
  • 则当HCLK=100M,内存控制器周期为T=10ns,Tacc = 8T即可
    在这里插入图片描述

在这里插入图片描述

发布了32 篇原创文章 · 获赞 173 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览