1.存储器扩展地址、数据线的衔接办法要点拜见2440手册,首要触及地址对齐问题,较简单了解,此处不作论说。
2. nWE, nWBE, nBE三者之间的联系
(1)nWE为写使能信号。
(2)nWBE为“写字节使能(write byte enable)”信号,而nBE 为高/低字节挑选信号。nWBE与nBE共用引脚,能够经过对相关寄存器设置来进行功用挑选。
(3)什么时分需求nWBE而不是nWE?
nWE和nWBE都带有写使能的功用。但已然有nWE,为什么还需求nWBE?这是由于,当运用几片贮存芯片进行数据位扩展时,有时需求对芯片分隔写数据,此刻可运用nWBE。
在图5-4中,仅有一片8bit的ROM,因而仅需求nWE,而不需求nWBE。而在图5-5中,用了2片8bit的ROM,假如不运用nWBE,则写操作是对2片ROM一同进行的,这样,当碑文写字节指令时可能会损坏另一芯片中的数据。(留意nWBE的信号是主动发生的。)从这个视点来说,nWBE有字节数据屏蔽的功用。
后边咱们也会看到,SDRAM中有DQM信号也是用来进行数据屏蔽效果的,那么它们之间差异安在?
(4)nWBE, nBE有什么差异?什么时分应该装备成nBE?
依据手册描绘“nBE[3:0] is the AND signal nWBE[3:0] and nOE”,即nBE是nWBE和nOE的“与”信号,这句话给了咱们非常重要的启示,应该说深入提醒出了nWBE, nBE之间的实质、内在。
首要看一下真值表:
nWBE |
nOE |
nBE |
阐明 |
1 |
1 |
1 |
nWBE, nOE均无效(低电平有用),所以nBE无效 |
0 |
0 |
0 |
nWBE, nOE恣意一个有用(低电平有用),则nBE有用 |
1 |
0 |
0 |
|
0 |
1 |
0 |
留意到nWBE[3:0],nOE仅一根信号线。由此可见,nBE便是字节选通信号(读、写选通)。读的时分,多片均选通,写的时分,分片进行选通。其实质,nBE可看作字节片选信号。
那么,能不能把上图5-5中nWBE换成nBE?
假如这样衔接,咱们考虑一下有什么问题:留意表格暗影行,当nWBE无效而nOE有用,nBE有用,这会使存储器的nWE有用,致使读写信号紊乱,明显不可。
事实上,终究用什么,应该依据存储器芯片来决议。
终究什么时分需求nBE呢?手册上给出的SRAM衔接图5-8,5-9给出了示例。相同咱们要问,图5-8中能不能把SRAM的nWE接nWBE?
假如这样接,芯片的nBE信号就无法处理,由于nBE和nWBE不能一同作业,这样就无法独自操控片内的高字节与低字节读写。这儿的nBEx就像是片内的高字节与低字节的片选信号。
再问,能否将图5-8中nBE信号换成nWBE信号(硬件衔接不变,寄存器装备改动)?
当按字节写芯片,没有问题,这时分能够发生有用的nWBE信号,以挑选U/L字节;而当需求按字节读芯片时,nWBE无效,无法供给正确的nUB/nLB挑选信号,就无法读出数据,可见行不通。留意,好像无法真实做到按字节读芯片,由于只需nOE有用,nBE必定有用,这样必然形成nBE0,nBE1一同有用。即便如此,应该不会有什么费事,大不了将不需求的字节数据丢掉即可。
3.
(1)ROM
(2)SDRAM
留意nSCS[1:0]便是nGSC[7:6],参看三星官方评价板电路图。
这儿要点重视DQM[3:0]。经查2440手册,DQM与nWBE引脚是复用的。参阅友善之臂供给的mini2440手册中所供给的SDRAM电路(同三星官方):
可见,DQM正是衔接到了nWBE。又参阅SDRAM的数据手册,对DQM的描绘:“Controls output buffers in read mode and masks input data in write mode(即:在读形式下操控输出缓冲;在写形式下屏蔽输入数据。)”。
咱们的问题是:为什么DQM连的是nWBE而不是nBE?能不能为nBE?
下图是SDRAM的数据手册中截取的真值表,从中能够发现,读写操控和DQM毫无联系。DQM首要在读、写时起屏蔽效果。读-写是经过nWE的电平状况来操控的。
假使DQM连nBE,需求写字节屏蔽信号,则与nWBE没有别离;读的时分,若nWBE无效,nBE是否有用取决于2440的nOE——假如nOE无效,那么nBE彻底与nWBE共同,而此处的确不需求nOE,所以我个人的序幕以为它连nBE也是可行的(不知道对否?需经过写程序验证)。
别的还有个问题:nWBE是什么时分有用的?读SDRAM时,需求操控的仅仅使nWE为高,但这时分nWBE会主动有用吗?需求程序操控吗?(较简单想象的是nWE为低时nWBE主动依据读写字宽确认是否有用)。这个问题看看2440的时序图就了然了。
附2440时序图(早没发现它;早发现它早清楚了J):
别的,ROM/SRAM的时序图:
附网友帖子(讲得太浅薄):
这个一点也不杂乱。 内存的这种接法,使它能够以8位拜访,也能够16位拜访,也能够32位拜访 那4个信号nWBE3~0,正是字节选通操控。 按8位拜访,也便是代码中若有: *(unsigned char *) 0x30000000 = 0x78; 便是一个字节写,这时只要nBWE0信号有用 假如是0x30000001,则只要nBWE1有用(低),其它无效(高)。 再举个例,假如是按16位拜访呢? 假如是16位拜访,代码一般便是: *(unsigned short *)0x30000000 = 0x1978; 这是一个16位写。但此刻要留意,最低位有必要是0,而不能是1,比方地址0x30000001就会使CPU反常,由于有必要16位对齐! dat16 = *(unsigned short *)0x30000002; 这是一个16位读 在16位拜访时,0x30000000地址写操作中,nWBE1, 0 = 低,nWBE3, 2 = 高。当0x30000002时,则是nWBE3,2为低,nWBE1,0为高(无效) 32位时则是4字节对齐,也便是最低的两个地址位A1,A0有必要为0,即关于32位拜访,0x30000001, 0x30000002, 0x30000003都会导致反常(犯错) 关于32位拜访,0x30000000的下一个地址是0x30000004,由于这个地址是字节地址,但一会儿就拜访了0x30000000~0x30000003四个字节,也便是nWBE3~0四个信号一同反响!!! 不同的CPU拜访的机制是不一样的,这要详细看手册了,是分隔片选的