Как я могу исследовать сбой калибровки на Spartan 6 MIG DDR

У меня возникли проблемы с интерфейсом памяти Spartan 6 (XC6SLX16-2CSG225I) и DDR (IS43R86400D) на некотором нестандартном оборудовании. Я пробовал на плате разработчика SP601, и все работает, как и ожидалось.

Используя пример проекта, когда я включаю soft_calibration, он никогда не завершается, а calib_done остается низким.

Насколько я вижу, если я отключу калибровку, я смогу отлично писать в память. Но когда я пытаюсь читать из него, я получаю переменное количество успешных команд чтения, прежде чем контроллер памяти Xilinx перестанет выполнять команды. Как только это происходит, командный fifo заполняется и остается полным. Количество успешных команд варьируется от 8 до 300.

Я совершенно убежден, что это проблема синхронизации, вероятно, связанная с центрированием DQS. Но поскольку я не могу завершить калибровку, когда она включена, у меня нет непрерывной настройки DQS. Поэтому я предполагаю, что он работает с отключенной калибровкой до тех пор, пока время не сдвинется.

Есть ли какие-то очевидные места, которые я должен искать, почему калибровка не удалась?

Я знаю, что это не типичный вопрос о переполнении стека, поэтому, если это неподходящее место, я уйду.

Спасибо


person Shane    schedule 04.08.2016    source источник
comment
Более подходящим местом для ответа на этот вопрос будет обмен стеками по электротехнике. Мы получаем некоторые вопросы HDL о переполнении стека, но в основном те, которые сосредоточены на логике, а не на низкоуровневых деталях оборудования, таких как этот вопрос.   -  person    schedule 06.08.2016
comment
Хорошо, это хорошо знать. Большое тебе спасибо.   -  person Shane    schedule 08.08.2016


Ответы (1)


К сожалению, процесс калибровки просто пытается последовательно записывать и считывать контент, одновременно настраивая касания внутри устройства. Он находит один конец успеха, затем идет в другом направлении и идентифицирует этот успешный ответ, а затем окончательно останавливается где-то посередине.

Это, вероятно, также больше ориентировано на HW, поэтому я публикую то, что думаю, и позволяю кому-то другому перемещать тему.

  1. Только эта доска? Или это все так делают? Вы проверили? Если это одна плата, а оперативная память выполнена в стиле BGA, это может быть плохой работой. Слегка надавите пальцем на чип и посмотрите, получите ли вы другие результаты... После этого он станет более HW-ориентированным.
  2. Может ли образ FPGA, который вы запускаете на своей пользовательской плате, работать с вашим devkit? Я знаю, что во многих случаях это непрактично, но я решил спросить, поскольку это исключает, что образ, который вы используете в наборе для разработки, имеет ограничения FPGA, которых вы не получаете в своем пользовательском образе.

  3. Проверьте допуски по длине на дорожках. Должно быть ограничение по длине. Плюс-минус 50 милов что-то в этом роде. Никому не нравится слышать, что им нужно повторное вращение доски, но если их нет, это многое объясняет.

  4. Целостность сигнала. Вы установили согласующие резисторы и соответствуют ли они номиналам? Разве у вас не должно быть активного зонда?
  5. Вы получили правильную память DDR. Иногда они используют другой класс скорости, и это может вызвать всевозможные проблемы.
  6. Замедление интерфейса обычно помогает в пунктах 4 и 5, поэтому, если вы просто пытаетесь выполнить работу, вы можете попросить новый образ FPGA с более медленными часами.
person Rich Maes    schedule 05.08.2016
comment
Большое спасибо за ваш подробный ответ. Я изучил все эти предложения, ни одно из них не было ответственным, но линия расследования выявила ошибку в оборудовании. Выбор чипа на доске был привязан к высокому, а не к низкому уровню. Один раз исправил, все подошло. - person Shane; 08.08.2016