Спрашивал уже в ветке для начинающих, но с ответом пока глухо. Поэтому, да простят меня модераторы, задам вопрос здесь.
Контроллер 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 раз.