历史上的今天
今天是:2025年04月18日(星期五)
2020年04月18日 | 2440裸机-12-1内存控制器与SDRAM_内存接口
2020-04-18 来源:eefocus
1.内存接口介绍
1.1.内存控制器的引入
1.1.1 引入
2440是一个SOC,其中外设分为多种类型:
门电路类:GPIO
协议类接口: UART I2C SPI
内存类设备:nor flash ,SDRAM,NET DM9000
但是对于CPU来说,并不直接控制外设,只需要将值写给相关外设模块的寄存器,CPU通过地址来区分不同的寄存器,因此就需要引入另一个控制单元——内存控制器。

除NAND外,以上外设都是CPU统一编址。
NAND FLASH和外接的存储器不是同一类型的,片内有一个专门的NAND控制来对外接的NAND FLASH硬件进行控制,所以NAND FLASH又属于另外一部分。
nand启动时,cpu认为的0地址是片内内存;nor启动时,cpu认为的0地址是nor flash.
1.1.2 作用
根据CPU发出的地址来选择不同的模块,把数据发送给模块,或者取出数据并且返回给CPU。
1.2.内存接口
通常ARM芯片内置的内存很少,要运行Linux,需要扩展内存。ARM9扩展内存使用SDRAM内存,ARM11使用 DDR SDRAM。S3C2440通常外接32位64MBytes的SDRAM,采用两片16位32M的SDRAM芯片,SDRAM芯片通过地址总线、数据总线、若干控制线与S3C2440芯片相连。
特性:
支持大/小端(通过软件选择)
每个BANK的地址空间为128M,总共1GB(8 BANKs)
可编程控制的总线位宽(8/16/32bit),不过BANK0只能选择两种位宽(16/32bit)
总共8个BANK,BANK0-BANK5可以外接ROM,SRAM等,BANK6-BANK7除可以支持ROM, SRAM外还支持SDRAM等
BANK0-BANK6共7个BANK的起始地址是固定的
BANK6,BANK7的地址空间大小是可编程控制的
每个BANK的访问周期均可编程控制
在外接SDRAM时,支持自刷新和省电模式
1.CPU发出的信号并不会直接输出到外部电路去,但是凡事都有例外,例如内存接口
2.对于内存接口,CPU发出的地址可以直接传给内存类设备(NOR,网卡,内存)
3.在内存芯片上有地址总线,数据总线,可以直接接收CPU发出的地址,数据
4.对于内存类设备会共用地址总线,因此引入片选引脚cs(chip select)以此可以得以区分当前地址线和数据线的外接模块。
5.只有当某个片选引脚输出低电平是对应的设备才被选中,可以向CPU提供数据
1.2.1 片选引脚

1.2.2 谁来控制片选引脚?
(CPU只发出地址信号)
内存控制器根据CPU发出的地址来决定发出不同的片选信号,不需要再人为的去控制引脚。
地址与片选信号关系如下图:

1.2.3 如何确定数据传输方向
对于SDRAM、DM9000、NOR芯片上都有读写信号来表示数据传输方向.
外接存储器处于写入或读取状态,要根据外接存储器的特性进行对引脚的操作,有的需要一个根W引脚,一个R引脚,有的只需要一根引脚控制W/R。
1.2.4 关于32位CPU的疑惑
其中每块地址范围为128M=2^27,因此至少需要A0,A1-A26,共27条地址线,但是cpu是32位的,却只用了27条地址线?
CPU发出32位的addr给内存控制器,内存控制器再来发出片选信号和addr0-addr26的地址信号.
CPU确实发出了32位的地址,但是内存控制器只用到了0-26.
1.2.5 特殊的NAND
对于GPIO、UART、I2C、SDRAM、DM9000、NOR都是CPU统一编制的,但是对于NAND原理图如下:

并没有地址总线,不属于CPU的统一编址,
但是Nand的数据信号仍然接到总线上,因此肯定会有片选信号,NAND的片选信号来自于NAND FLASH控制器发出
2 其他
SRAM 静态随机存储器
SROM 静态只读存储器
RAM 随机存储器
ROM 只读存储器
DRAM 动态随机存储器
SDRAM 同步动态随机存储器
NOR FLASH, NAND FLASH 非易失闪存技术
史海拾趣
|
LCD图形显示_菜单管理_PCF8583_TWI_SPI所有C代码公开 现将2006在一家公司做的一个产品的仿真部分所有源码资料公布,供大家学习和参考!包括参菜单管理算法。菜单翻页可像手机菜单一下,可滚动翻页,并有进度条指示。另还有TWI读写PCF8563的程序。不多说大家看看就知道。以前只公布过protues和hex,反映 ...… 查看全部问答> |
|
发一个外包项目贴!请有实力有精力的工程师速与我联系!!斑竹请鼠标下留帖!先谢谢啦 2440手持机外包项目: 1、背光驱动 2、电源管理 3、自定义键盘驱动 4、LP3913驱动 5、EEPROM驱动 6、NANDFLASH分区及海量存储 注意:目前BSP为WINCE42下的 要求: 有实力做出以上6个驱动(具体详见需求) 时间价钱面议 地点限北京 QQ: ...… 查看全部问答> |
|
大家有没有用过profilestart和profilestop? 我想测试一个程序的效率, 我有通过pb平台测试这个效率(如果没有嵌入到这个平台中,它不会显示这个程序的名字,取代的是unknown),但就是要在pb中output输出结果(定制平台时加入了我的程序). 1.怎么把unknown变成我们进程名称 2.我想把它的结果存在 ...… 查看全部问答> |
|
散分!终于明白AHDL和VHDL的语法了!! AHDL和VHDL是一种接口描述语言。不是计算语言。也不是逻辑设计语言。 至于可以用软件生成芯片逻辑。那要看软件功能了。硬件的逻辑结构是你的设计是你个人的艺术。… 查看全部问答> |
|
我使用stm32F103RBT6,用来作一个读卡器。发现报告描述符的配置会影响产品的适应性。我开始时把报告描述符中的输入输出报告长度定义为64字节,基本上在所有电脑上都能正确识别,并能正确操作。但为了提高传传输速度,我把输入和输出的报告长度 ...… 查看全部问答> |
|
大虾们好! 俺们菜鸟,下面的例化引用好像有问题,请救救俺们吧 reg clkb,rdb,wrb;reg [11:0]datab;wire[11:0]qb;assign qb = ( channelout == 0 ) ? q0 : (( channelout == 1 ) ? q1 : (( channelout == 2 ) ? q2 :(( channelout == 3 ...… 查看全部问答> |




