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

 
 
> LPC2214 External Memory Interface, Непонятная временная диаграмма
amw
сообщение Nov 18 2006, 09:51
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Собственно к LPC2214 подключен внешний чип (НЕ ПАМЯТЬ) по параллельной шине.
Используется EMC BANK0 в восмиразрядном режиме.

При выполнении нескольких последовательно идущих операций записи CS0 устанавливается в активный уровень и "под ним" идут несколько импульсов BLS0.
При выполнении операций чтения все нормально - на каждый импольс OE идет свой импульс CS.

Кроме того, при чередовании операций чтения и записи, независимо от порядка следования, CS захваиывает один импульс OE, при чем всегда ближайший к BLS.

Пример 1:

char C = 2;

*((char *)0x80000000) = C;
*((char *)0x80000001) = C + 1;
*((char *)0x80000002) = C + 2;
*((char *)0x80000003) = C + 3;

Приводит к появлению одного импульса CS и четырех импульсов BLS. Длительность CS перекрывает все импульсы BLS.


Пример 2:

char C = 2;
char X;

*((char *)0x80000000) = C;
X = *((char *)0x80000001) ;
*((char *)0x80000002) = C + 2;
X = *((char *)0x80000003);

Приводит к появлению двух импульсов CS. Под первым СНАЧАЛА импульс OE для адреса 0x80000001, ПОТОМ импульс BLS для адреса 0x80000000. Под вторым то-же самое для адресов 0x80000002 0x80000003.

Собственно адрес не имеет значение.

Пример 3:

*((char *)0x80000000) = C;
X = *((char *)0x80000000) ;

Или:

*((char *)0x800000E0) = C;
X = *((char *)0x80000008) ;

Приводит к тому-же результату, то есть СНАЧАЛА импульс OE, ПОТОМ импульс BLS.

И еще.
Обнаружил странную зависимость. Если перед и после оперции записи есть загрузка PC (ветвление, вызов подпрограмм) то все идет как по маслу, на каждый BLS выдается свой CS.

Прошерстил даташиты и ераты. Ничего по этому поводу не нашел.

Кто нибудь может хоть как-то покоментировать?


В догонку.

Проверить на другом CS не имею возможности ввиду занятых пинов другими функциями.

И вопрос:
Неужели это MAM такие фортели выкидывает?


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex03
сообщение Nov 22 2006, 08:47
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(zltigo @ Nov 21 2006, 21:55) *
Цитата(amw @ Nov 21 2006, 18:18) *

BCFG0 = 0;

Странно, очень странно видеть обнуленный. Сейчас не досуг разобраться, но странно. Вы уверены,
что "так надо"?


Для байтовой SRAM с минимальными ожиданиями - нормально.

Цитата(amw @ Nov 21 2006, 21:18) *
Цитата

Я эту проблему решаю вставкой nop между операциями записи. То же самое, AFAIR, и для чтения, т.к. при чтении контроллер шины может продержать СS и OE для нескольких последовательных адресов.


nop или другие команды не помогают. Помогает загрузка в PC sad.gif.


ИМХО NOP-ов надо не 1 а на всю операцию чтения/записи. Для BCFG0=0 у Вас и чтение и запись исполняются 3 или 4 CCLK-такта (см описание BCFG0.IDCY).
Т.е. нопов надо минимум 4 (ну или может 4-1=3, но врядли) а то и ещё больше. А команды переходов это частный случай этой задержки.
Это чтобы CS и OE возвращались.

А для того чтобы запись-чтение не переупорядочивались в чтение-запись возможно и одного такта задержки хватит, но это уже зависит от реализации отложенной записи, если это она, если нет то вообще не понятно! smile.gif

PS А BCFG0.IDCY не пробовали увеличивать? Мож оно будет CS отпускать?
PPS Видимо филипс о многом умолчал вот тут:
Цитата
Figure 10 and Figure 11 are showing typical read and write accesses to external memory. However, variations can be noticed in some particular cases.
For example, when the first read access to the memory bank that has just been selected is performed, CS and OE lines may become low one XCLK cycle earlier than it is shown in Figure 10.
Likewise, in a sequence of several consecutive write accesses to SRAM, the last write access will look like those shown in Figure 11. On the other hand, leading write cycles in that case will have data valid one cycle longer. Also, isloated write access will be identical to the one in Figure 11.
Go to the top of the page
 
+Quote Post



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

 


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


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