2016-08-04 1 views
0

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

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

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

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

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

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

Благодаря

+0

Более подходящее место для этого вопроса было бы [Электротехническая стековая биржа] (http://electronics.stackexchange.com/). Мы получаем некоторые вопросы HDL о переполнении стека, но в основном те, которые сосредоточены на логике, а не на низкоуровневых аппаратных деталях, подобных этому вопросу. – duskwuff

+0

Хорошо, что это хорошо знать. Большое спасибо. – Shane

ответ

2

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

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

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

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

  4. Целостность сигнала. Получали ли вы свои резисторы сопротивления и являются ли они правильными значениями? Не думайте, что у вас активный зонд?
  5. Вы получили правильную память DDR. Иногда они используют разную скорость, и это может вызвать всевозможные проблемы.
  6. Замедление интерфейса обычно помогает элементам 4 и 5. поэтому, если вы просто пытаетесь выполнить работу, вы можете попросить новое изображение FPGA с более медленными часами.
+0

Большое спасибо за ваш подробный ответ. Я рассмотрел все эти предложения, ни одна из них не была ответственна, но линия расследования показала ошибку в оборудовании. Выбор чипа на плате был привязан к минимуму, а не к минимуму. Однажды я решил, что все подошло. – Shane

Смежные вопросы