2410提供对外部存储器的存储管理;
1、大小端的存储
2、间可以寻址到1GB,共分为8块bank,每块的大小为128MB,主要是由CPU的输出Pin脚nGCSn来进行决定,前六bank只能接一些ROM,SRAM, bank6\bank7可以接ROM,SRAM,也可以用于SDRAM。
3、bank6\bank7可以用编程的方法改变它的大小。
知识点:
1、系统启动时总是从0X0000-0000地址开始执行,所以初始时必须用硬件电路告诉CPU入口的数据的位数,在2410中初始时用OM端来确定数据的位宽。
2、由于ARM的体系结构把存储器看作是从0地址开始的顺序结构,以致在2410接入外部存储器时,如果是数据为8位,则是CPU的A0接存储器的A0;另一种情况是数据为16位,则CPU的A0接存储口器的A1,这样可以使地址加2之后才访问的是下一个单元。
3、CPU地址空间的分配为8个Bank时,在地址上的解释为,地址的位数我们从看到的依然是32位,比如0X0000-0000,因为2410的实际地址线为26根,则地址的A29,A28,A27,在CPU内部按照三-八译码的方式产生nGCS的信号,比如:地址为0X1800-0000,其中A29,A28,A27为011则译码为3,得此地址在Bank6即nGcs3为1。
4、SDRAM与2410的连接,主要有nRAS,nCAS,nWE,DQM,nSCS,A,D,sCKE,sCLk, SDRAM与一般的SRAM的区别是SDRAM是以块为最小逻辑存储单元,这样可以达到比较大的存储容量。SDRAM是行地址与列地址是复用的,以致在SDRAM上的地址线会其它的存储器的地址线要少,但是可寻址的范围却大,比如下图:<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
图一
从上图可以得到以下信息,地址线为A2-A13,并且用A22、A23进行内部Bank的选择,地址线分时到达行地址、列地址,数据线为32位,所以CPU的A2与SDRAM的A0相连,在每一片SDRAM来说,内部为1Mb*16bit*4banks,即每一个逻辑存储单元为1Mb,数据位数为16bit,内部共有4banks,从地址线上可知为16*<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />4M个存储单元,因为此SDRAM为8MB的容量,可知每一个逻辑存储单元的大小为1Mb。
5、 2410的对SDRAM的存储时序,SDRAM为同步动态随机存储器,在使用是必须有定时刷新的设置,一般为64ms刷新一次,在对SDRAM进行读操作之前要对SDRAM进行预充电,此时在存取的第一个周期进行,时间是可以用软件进行设定的,这一周期同时用nGCS变低有效时对将要有存取操作的行进行充电,如果不进行充电就必须在下一个周期同时写入行地址,同时对对应的行充电,这样容易产生错误。下一周期NRAS信号有效,这时地址线上的行地址信号已准备好,此时写入行地址。下一周期写入列地址,过程与上一同期相同,只是nCAS信号要比nRAS信号有效的时间晚一个同期。下一个周期就可以读入数据,如果SDRAM用的是页模式,则会连续存取几列。下一周期所有信号恢复原来的状态。存取时序中的相对时间都是可以用软件设置来改变。
6、 SDRAM并不是所有的cpu接上就可以用的,SDRAM它需要专门的控制器,像2410里面就集成有SDRAM的控制器,如果要外加一个SDRAM控制器的话,作起来是比较麻烦的。
一般的CPU同期是分为四个相同的周期,如果外设的速度比较慢的情况下,CPU就有可能收到一些错误的信号,因此要进行必要的方法来解决这一问题。对于CPU来说可以加一些有等待周期,但是不能让CPU无限的等待下去,必须在加入的等待时间上有所限制,2410处理器中的信号端nWIAT就有这个作用,就相当于一般的CPU中的READY信号端。
在电路设计方面入手的方法是可以加入匹配电路。CPU与外部数据的传送方式有:无条件传送方式,查询方式,中断方式等,其中中断方式可以实现调整CPU与低速外设之间的矛盾,首先CPU把控制信号发送给外设,让外设做一些动作,此时外设较慢不能够立即产生应答,CPU没有必要在这一直等待,可以去做其它的工作,等到外设的应答信号到来时,当作中断信号使CPU放下正在进行的动作,转去处理此外设的响应信号。
另一种方法是加上一些适配器,比如DMA控制器,在CPU要访问低速外设时,就把总线控制权让出来,让适配器去完成读写,这样CPU可以调用其它的工作进行。
低速外设并不是数据传输的速度低,而是指它能够响应CPU的控制信号的时间短,就像串口通信,网线通信这些的速度是与具体的协议有关,并不与外设有关。LCD屏是一个快速设备,因为它在显示时要不断地向它写入数据,而且还要不断进行重发,它响应的时间是非常及时的。
而对于外设的速度比较快CPU的速度比较慢的情况下,是不能用CPU来满足外设的要求的,必须的外设来同步CPU的频率,这种情况下是可以运行的,只不过是没有达到外设的最佳工作状态。在现实中是很少出现这种情况的。
缓冲器与锁存口器的电路如下图:
图二 | 图三 |
从图二缓冲器的结构上看,有三种状态分别是1、0、高阻态。作用是增加驱动能力,在前后级电路进行电平转换。其中一个最重要的应用是作为隔离作用,比方说A端接入是键盘,在CPU不访问按键时A处的信号应是高阻状态,如果不加缓冲器的话,A处的信号就会直接加在CPU端子上,如此就会在这一线上产生错误的信号,影响正常的工作。加上缓冲器之后可以在CPU不访问按键时在OE无效,输出呈现高阻,当检测按键时再打开OE。
从图三锁存器的结构上看,一般是由D触发器组成,这样可以锁存一位的数据,当CPU在这一端上把信号撤去后,在输出端仍有信号保持。锁存器多用于地址的锁存。
处理器在地址分配上有两种方式,即统一编址和独立编址,对于51系列的单片机来说,采用的独立编址,即程序空间与数据空间是分开的。比如说,16根地址线,要访问64KB的ROM,还要访问50个I、O设备。从计算上看2^16为64KB刚好可以把ROM寻址完成,没有多的地址访问IO设备,事实不是这样的,单片机程序地址和数据地址是可以重合的,在进行程序存取时,单片机有一IO/M端用来判断是对程序存储器操作还是对外部IO操作,这一过程发生在指令的译码周期中,CPU可以判断出这一指令是对哪一部分进行操作,然后执行周期中把对应的信号调整好。比如使用ROM时用到的信号有IO/M,PSEN,RE,ALE。
而对于2410来说是统一编址,即所有的CPU能访问的都有唯一的地址,包括寄存器,IO外设,以及存储器。
在地址线不够用的时候,要接64KB的RAM,又要外接一些IO设备,此时就要把地址分为页,有的页是经常要停留的,在地址分配时有一个原则,一定不要外加CPU不能理解的信号,在外加片选时一般要用高位地址线作为片选,这个问题主要考虑在外设与内存到底有什么关系,从它们的配合上去考虑问题。
用户88433 2009-8-19 14:51