二.s3c2440接线规则:
图3
1) SDRAM接法规则,分三步(以K4S561632E为例):
1-1).需得到逻辑bank的选择IO:
图4-1
图4-2
Bank Size: 外接内存容量大小(K4S561632E是4M*16bit*4Bank*2Chips/8=64MB)
Bus Width: 总线宽度 (两片16位K4S561632E,并联成32位)
Base Component:单个芯片容量(bit)(256Mb)
Memory Configration:内存配置 ((4M*16*4banks)*2Chips )
根据K4S561632E的规格书(如图4-1,图4-2)得到一些信息.再结合图3 ,我们可以得到逻辑bank的选择I/O A[25:24]
1-2).需要得到芯片的开始pin 号:
图5
我们选择了两片的K4S561632E sdram,所以是32位的.从A2 开始,
s3c2440的ADDR2 ------------- K4S561632E 的A0
s3c2440的ADDR3 ------------- K4S561632E 的A1
如此类推...
为什么要从ADD2开始了.我们知道SDRAM的寻址原理是一个存储阵列,如图6:
图6
每一片的K4S561632E 有4个逻辑bank,每个bank有4M个存储单元,每个存储单元有16位.这就是规格书所说的 4M*16bit*4Bank = 256Mbit.
而2片K4S561632E就有4M*4Bank*32bit = 512Mbit = 64MB,(市面上很少有32位宽的单片SDRAM,一般选择2片16位SDRAM扩展到32位宽)
内存寻址一次,就是行(ROW)列(Column)交叉一次,得到一个存储单元,也就是说内存是以"存储单元(本例为4个字节,低16位与高16位合成一个存储单元)"为单位的,而不是以"字节"为单位的.但是,cpu寻址是以字节为单位的.也就是说,cpu移动到下一个才一个字节,而本例内存移动到下一个就是4个字节.所以我们写程序时常常说要字节对齐就是这个原因.下面我举例子具体说明一下:
cpu 寻址内存 内存返回给cpu
0000 0000 第0个单元(其实包含0000 0000 至 0000 0011 这4个字节)
0000 0100 第1个单元(其实包含0000 0100 至 0000 0111 这4个字节)
0000 0101 第1个单元(其实包含0000 0100 至 0000 0111 这4个字节) 因为s3c2440没接A1和A0,所以相于逻辑与0xFFFF FF00,取到内存的4个字节后再用低两位去选择
0000 1100 第3个单元(其实包含0000 1100 至 0000 1111 这4个字节)
如此类推.....
cpu 的第2位对应了内存的第0位.也就是说cpu的4,而内存看成是1,他们的单位不同而已,一个是字节,一个是存储单位,也就是位宽.
同理,16位的位宽SDRAM的A0应该接到s3c2440的ADDR1上.
结论:SDRAM的A0接到s3c2440的那一个引脚上是根据整个SDRAM的位宽决定的.
1-3).开始连接SDRAM到s3c2440:
图7
2) norflash接法规则,以EN29LV160A为例.
这个IC 位宽是通过引脚号为47的高低电平来选择BYTE/WORD,也就是有8位,16位两种模式.
图8
图9
规则大同小异,我这里就不多说了.
3.NANDFLASH接法规则,以K9FXX08为例: