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

 
 
> AT91SAM9260 и работа SMC в режиме Null Setup & Hold
-=Alexey=-
сообщение Jul 1 2010, 11:12
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 8-08-08
Пользователь №: 39 490



Спрашивал уже в ветке для начинающих, но с ответом пока глухо. Поэтому, да простят меня модераторы, задам вопрос здесь.

Контроллер SMC настроен с параметрами
PULSE = 0x03030202
SETUP = 0x00000000
CYCLE = 0x00030002
MODE = 0x00001003

MCK = 100 MHz
По 16-битной шине подсоединена FPGA. В ней смотрю что приходит на момент спада NWE и на момент, когда должно приходить 2е слово.

Если использовать хотябы 1 hold в цикле записи, то все работает нормально. Проблема именно с режимом Null Setup & Hold.
В Standalone приложении выполняю
STR R0, [R1]
, где в R0 хранится 0хDDCCBBAA, R1 - 0x1000 0000
В итоге по идее должно формироваться 2 запроса к адресам 0x1000 0000 и 0x1000 0002 и значением на шине данных 0хBBAA и 0хDDCC соответственно (так в общем то и происходит при hold отличном от нуля). По факту же считанные значения на момент спада NWE и на момент, когда должно приходить 2е слово, не отличаются и равны 0хBBAA. Подумал - может где задержки не учел. Считывал значение на 5 и 10 нс позже прихода 2го слова - результат рандомный.

В общем сложилось впечатление, что указанный режим у меня настроен некорректно либо обладает какими-то не учтенными мною особенностями. Может кто подскажет в чем дело?

На последок скажу, что FPGA работает на 200 МГц, все действия по борьбе с метастабильностью предприняты, да и результаты измерений не отличаются ни на 2й, ни на 10 раз.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
-=Alexey=-
сообщение Jul 1 2010, 14:14
Сообщение #2





Группа: Участник
Сообщений: 14
Регистрация: 8-08-08
Пользователь №: 39 490



Цитата(aaarrr @ Jul 1 2010, 17:39) *
Уже все сделано - у процессора есть буфер записи на 16 слов.

Т.е. процессор станет ожидать завершения работы SMC только если в буфере все 16 слов еще не переданы? А можно ссылку на источник - хочется поподробнее узнать.

Я кстати пытался вызвать ассемблерную функцию, где 2 команды подряд - STRH. По результатам замеров FPGA между ними включается как минимум 1 hold, хотя режим - Null Setup and Hold. Т.е. выглядит как раз так, будто процессор подождал конца передачи 1го слова (при этом NWE был переведен в 1), а затем стал дожидаться нового фронта MCK для выполнения 2й команды STRH. Если бы был задействован буфер, то hold'а не вставилось бы, как мне кажется. Может быть названный вами буфер нужно как-то активировать/настраивать?

Сам же отвечу. Даташит, раздел 11.6.2.2.
Только насколько я понял (мельком пробежался) он используется только с включенным кэшем данных. Дело в том, что я еще не до конца прояснил для себя этот момент. Если, скажем, необходимо будет записать 1 пиксель, записанное значение поместиться в буфер и когда оттуда будет передано в FPGA - не понятно. Аналогично с чтением. Регистры FPGA должны читаться без всякой буферизации в кэше.
Т.е. сейчас использование кэша (и соответственно этого буфера?) зависит от того, можно ли его настроить на буферизацию чтения только по определенным адресам (исключить адресное пространство SMC) и настроить запись так, чтобы операция производилась даже при наличии только 1 измененного элемента (видимо надо читать про Write Through и т.п.). К тому же пока открыт вопрос по поводу того, как будет производиться запись при изменении только 1 слова - вся строка кэш передастся или только элементы, помеченные как измененные... В общем куча вопросов
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 12:54
Рейтинг@Mail.ru


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