реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> EMC в LPC2468
toweroff
сообщение Feb 20 2010, 18:15
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



доброго времени всем

используется интерфейс static memory
не пойму что откуда берется...
итак:

просто чтобы что-то писалось и читалось (для удобочитаемости всю начальную настройку Clock, MAM и т.д. убрал)

Код
int main()
{
volatile unsigned int* mem;
unsigned int n;

EMCStaticConfig = 0x00000082;  // 32bit, BLS low for read & write, NO buffer, page mode, extended wait
EMCStaticWaitOEen = 0;
EMCStaticWaitRD = 6;
EMCStaticWaitWR = 6;
EMCStaticWaitTurn = 0;

  while(1)
  {
    mem = (volatile U32*)0x80000000;
    n = 1;
      while (mem<(volatile U32*)0x84000000)
    {
        n = *mem++;
        n = n * 4;
        *mem++ = n;
    }
  }

}


скомпилировалось вот во что:

Код
0x0000043C  E3A00102  MOV       R0,#0x80000000
0x00000440  E5901000  LDR       R1,[R0]
0x00000444  E1A01101  MOV       R1,R1,LSL #2
0x00000448  E5A01004  STR       R1,[R0,#0x0004]!
0x0000044C  E2800004  ADD       R0,R0,#0x00000004
0x00000450  E3500321  CMP       R0,#0x84000000
0x00000454  3AFFFFF9  BCC       0x00000440
0x00000458  EAFFFFF7  B         0x0000043C



далее, руководствуясь даташитом на камень и "ARM PrimeCell™ MultiPort Memory Controller", получаю:

CCLK=72MHz... считаю время сигналов /RD, /CS и /WR каменюки
для чтения: (6+1)*(1/72MHz) = 97ns - RD&CS
для записи: (6+3)*(1/72MHz) = 125ns (CS), (6+1)*(1/72MHz) = 97ns (WR)

Рассчитываю общий цикл доступа к AHB:

чтение:

T0 AHB address provided to memory controller
T0-T1 AHB transaction processing
T1-T2 Arbitration of AHB memory ports
T2-T3 Memory controller processing
T3-T4 Memory controller processing
T4-T5 Static memory address, chip select, and control signals submitted to static memory
T5-T6 Read wait state 1
T6-T7 Read wait state 2
T7-T8 Read wait state 3
T9-T10 Read wait state 4
T10-T11 Read wait state 5
T11-T12 Read wait state 6
T12-T13 Read data returned from the static memory
T13-T14 Data is provided to the AHB
----------------------------------------
5+1+6+2 = 14 циклов (* 1/72MHz = 194нс)


запись:

T0 AHB address provided to memory controller.
T0-T1 AHB transaction processing.
T1-T2 Arbitration of AHB memory ports. Write data is read from the AHB memory port.
T2-T3 Memory controller processing.
T3-T4 Memory controller processing.
T4-T5 Static memory transfer 0, address, chip select, and control signals submitted to
static memory. Write enable inactive.
T5-T6 Write enable taken active. Write data submitted to static memory.
T6-T7 Wait state 1.
T7-T8 Wait state 2.
T8-T9 Wait state 3.
T9-T10 Wait state 4.
T10-T11 Wait state 5.
T11-T12 Wait state 6.
T12-T13 Static memory writes the data. Write enable taken inactive.
T13-T14 Static memory control signals taken inactive.
--------------------------------------------------------
5+1+1+6+1+1 = 15 (* 1/72MHz = 208нс)

теперь апофеоз smile.gif

фактическое измерение осциллографом:

/RD = 180ns
/WR = 102ns

получается, что запись, практически, с учетом всяких округлений, совпатает с расчетными, а вот чтение отличается практически в два раза
так как Page mode не используется, сломал мозг в раздумьях smile.gif

Подскажите, откуда берется такой длинный /RD ?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016