这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » LPC2220外部存储器接口速度

共2条 1/1 1 跳转至

LPC2220外部存储器接口速度

菜鸟
2007-04-14 00:47:11     打赏

LPC2220外部存储器接口速度:
买了一个ZLG的SmartArm2200开发套件。开始做基础实验。
它的速度好象真的很慢啊。

芯片是LPC2220(ARM7TDMI-S),内部64K SRAM,外部接口总线接了PSRAM和FLASH。都是16位访问。
它的PSRAM的速度据说在80ns左右,FLASH的速度应该也差不多。
它有一个测外部存储器访问速度的实验,拿来做。一做吓一跳。

dly = 80;
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
大概是上面这段代码,用定时器测执行时间。
定时器的时钟是PCLK,就是VPB总线的时钟。系统时钟CCLK是4倍速的PCLK。PCLK是11.0592MHz。

外部存储接口的寄存器BCFG0可设置访问速度,我调整了总线空闲时间和读等待时间。
设置后,总线空闲时间为1个CCLK(这是最小值)。读等待时间为5个CCLK(3是最小值,但3和4都会跑飞)。

上面的循环程序,每个小循环在反汇编后是4条指令(包括一个条件跳转)。
可以理解成4条指令的小循环,执行40万次。
在以下3种情况下对代码执行速度进行测试。
程序在内部RAM执行,执行时间是600190个PCLK,每个小循环是1.5个PCLK,即6个CCLK。这个和理想结果很接近。
程序在外部PSRAM执行,执行时间是5401196个PCLK,每个小循环是13.5个PCLK,即54个CCLK。每条指令大概是13.5个CCLK。是内部SRAM执行时间的9倍。
程序在外部FLASH执行,BCFG0与使用PSRAM时设置相同,结果也相同。

这个实验的目的,是通过修改BCFG0,调整访问外部存储器的最佳配置。
如果设置得太快,程序就会跑飞。
按照我的配置,我猜想:读一次,要5个等待+1个总线空闲,就是6个CCLK。
由于是16bit访问,1条指令要读两次,也就是12个CCLK。和上面的13.5个CCLK也差不多。

关键是,在这个板子上我无法把读等待设得更小了,并且最小只能设置为3个等待。
所以我即使使用更快的SRAM,结果也好不到哪里去。

也就是说,代码在外部PSRAM或FLASH的执行速度,是内部SRAM的1/9。
也就是说,在这种情况下,处理器的速度大概是5MHz。

飞利浦(NXP)难道不觉得应该做个CACHE吗?!




关键词: LPC2220     外部     存储器     接口     速度    

菜鸟
2007-04-21 19:32:00     打赏
2楼

仔细看了一下,这个器件是Micron的MT45W4Mx16,叫异步CellularRAM。提供SRAM和PSRAM接口。随机访问时间70ns、85ns。

楼上说的很对,数据段放在片内SRAM,程序在FLASH执行。但是我的程序有点大,可能还是要加一点外部RAM。

没有CACHE有一个好处:对程序的执行时间估算会比较精确,呵呵。如果这也算好处的话。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]