我´m 了异步 EMIF、并且观察到了一些关于写入使能信号的行为、这是我不理解的。
问题基本上是在连续的文章之间发现的。 WE (写入使能)信号生效之间的时间出奇的高(大约为450 nseg @ EMIF 时钟为50 MHz)、但也是可变的。
通常、我使用用于16位(也是 EMIF 接口配置的宽度)元素的循环的来传输数据。 处理器以100 MHz 的频率工作、因此我不会期望这种延迟会像上述循环的连续延迟。
for (i = 0; i < 12U; i++)
{
*(Destination + i) = *(Origin + i); //Destination and origin are memory pointers (Uint16_t*).
}
另外值得一提的是、每4次传输我们的转换都非常短(标记为绿色)、与其他传输(标记为蓝色)相比非常短。

我们还试图使用连续的著作,而不进行任何修改…。
观察到的唯一一个似乎具有某种效果的东西是订购更大的事务(例如使用强制转换)、尽管 EMIF 总线的宽度仍然是16位。
for (i = 0; i < 3U; i++)
{
*((uint64*) Destination + i) = *((uint64*) origin + i); //Destination and origin are memory pointers (Uint16_t*).
}

在这种情况下,我们观察到,在前文提到的连续的我们断言之间有所减少。 观察到的这种减少通常分为四个事务块(每个16位)、然后是一个更大的事务(开始时除外、在"慢速"事务之前只有两个"快速"事务。
我猜这种行为可能与 EMIF 外设的内部 FIFO 有关、但我认为所提到的延迟非常高、并限制了接口的可能吞吐量。 事务之间的"缓慢"时间几乎与事务本身相同。
如果有人能就如何改善这方面的问题向我提供一些解释或指导,我会很感激:)
提前感谢。

