Перейти к содержанию
    

Quartus v16.0 Arria 5. Коллеги, в новом проекте не проходит калибровка DDR3.

mem_status_local_init_done = 0
mem_status_local_cal_success = 0
mem_status_local_cal_fail = 1

На плате установлено две м/с - шина данных 32 бита.

Чтобы как-то локализовать дефект решил сделать отладочный проект для работы с одной микросхемой.

После компиляции контроллера на 16 бит данных и прошивки получаем:

mem_status_local_init_done = 1
mem_status_local_cal_success = 1
mem_status_local_cal_fail = 0

Т.е. младшая микросхема калибровку проходит. А вот как проверить старшую?

После переназначения пинов (DQ,DQS,DM) на другую микросхему фиттер вываливается по ошибке(см. вложение).

Сразу скажу что это первый проект с SDRAM, опыта работы с коркой практически нет. Что посоветуете?

p.s. Забыл сказать что это запаяна вторая плата, на первой плате всё работает замечательно.

 

bug_fitter.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 hours ago, _sda said:

После переназначения пинов (DQ,DQS,DM)

Насколько я знаю, ассайнменты нужно делать через TCL скрипт, который создается мастером.

6 hours ago, _sda said:

p.s. Забыл сказать что это запаяна вторая плата, на первой плате всё работает замечательно.

Это намекает, что проблема аппаратная, разве нет? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, pavlovconst сказал:

Насколько я знаю, ассайнменты нужно делать через TCL скрипт, который создается мастером.

Ну да, для младшей микросхемы я так и делал. Только как вы предлагаете использовать этот скрипт для старшей?

1 час назад, pavlovconst сказал:

Это намекает, что проблема аппаратная, разве нет? 

Да, очень на то похоже, ведь проект на первой плате работает. После JTAG-тестирования могу с уверенностью сказать что со стороны FPGA контакты линий с ножками обеспечены. Насчёт микросхемы DDR3 такой уверенности нет(жаль что у них нет JTAG), но перепайка микросхемы ничего не дала. Вот и завис...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Был у меня какой-то косяк с Квартусом - он не развел один сигнал как положено (связанный с ним блок не работал), при этом ошибок в отчете не было.

Был рабочий проект, потом понадобилось перенести его на другую микросхему. Сделал так - убрал свои присвоения ног, пропустил через Квартус, он назначил свои ноги, потом исправил на те, котрые мне были нужны (на точно те же самые, что уже было, т.к. плата уже была разведена) - и заработало.

Изменено пользователем Yuri124

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 минут назад, Yuri124 сказал:

Был у меня какой-то косяк с Квартусом - он не развел один сигнал как положено (связанный с ним блок не работал), при этом ошибок в отчете не было.

Был рабочий проект, потом понадобилось перенести его на другую микросхему. Сделал так - убрал свои присвоения ног, пропустил через Квартус, он назначил свои ноги, потом исправил на те, котрые мне были нужны (на точно те же самые, что уже было, т.к. плата уже была разведена) - и заработало.

Спасибо! У меня ещё несколько мыслей есть, как не останется - проверю ваш вариант.

15 часов назад, _sda сказал:

Да, очень на то похоже, ведь проект на первой плате работает. 

Кстати, на первой плате проект калибруется, но как то странно.

mem_status_local_init_done = 0
mem_status_local_cal_success = 1
mem_status_local_cal_fail = 0

Как такое может быть не понимаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пободавшись с старшей микросхемой и не получив собравшегося проекта начал собирать новый маленький тестовый проект для двух микросхем(данные 32 бита).

Проект собрался, но скрипт назначил пины совсем не те, с которыми разведена плата и с которыми собран основной проект.

Это что, в пин-планнере каждый сигнал переназначать ручками? А если опять упрётся рогом, как со старшей микросхемой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 hours ago, _sda said:

пин-планнере каждый сигнал переназначать ручками?

Результат работы TCL скрипта, который делает назначения ног - строчки типа

set_location_assignment PIN_D13 -to err_mem_dq[0]
set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to err_mem_dq[0] -tag __ddr3_hmc_ddr3_0_p0
set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to err_mem_dq[0] -tag __ddr3_hmc_ddr3_0_p0
set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to err_mem_dq[0] -tag __ddr3_hmc_ddr3_0_p0

в QSF файле. Открывайте QSF в текстовом редакторе и копируйте из старого проекта.

 

 

При отладке памяти также может помочь EMIF tollkit  https://www.intel.com/content/www/us/en/programmable/quartushelp/13.0/mergedProjects/program/syscon/syscon_about_emi_toolkit.htm

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 часов назад, pavlovconst сказал:

Результат работы TCL скрипта, который делает назначения ног - строчки типа


set_location_assignment PIN_D13 -to err_mem_dq[0]
set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to err_mem_dq[0] -tag __ddr3_hmc_ddr3_0_p0
set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to err_mem_dq[0] -tag __ddr3_hmc_ddr3_0_p0
set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to err_mem_dq[0] -tag __ddr3_hmc_ddr3_0_p0

в QSF файле. Открывайте QSF в текстовом редакторе и копируйте из старого проекта.

Да, спасибо, я уже запустил маленький тестовый проект на две микросхемы.

На рабочей плате теперь стало нормально(похоже что-то посыпалось в корке основного проекта, потом буду разбираться).

mem_status_local_init_done = 1
mem_status_local_cal_success = 1
mem_status_local_cal_fail = 0

16 часов назад, pavlovconst сказал:

При отладке памяти также может помочь EMIF tollkit  https://www.intel.com/content/www/us/en/programmable/quartushelp/13.0/mergedProjects/program/syscon/syscon_about_emi_toolkit.htm

Вот так выглядит картинка на рабочей плате:

image.thumb.png.cde2f22276af63bdf6d5e5b2b7312eb5.png

 

А вот так на новой:

image.thumb.png.e4c66a20d385a1096ebe319afaa12aeb.png

Как её теперь растолковать? Видно что младшая микросхема работает нормально, со старшей непонятки.

Почему-то полностью отсутствует старший байт, не только на картинке но и во всех репортах.

image.thumb.png.a03663547deed7b5e6a9136234aeddae.png

Я ожидал увидеть какой-то сбойный бит в старшей микросхеме(например от непропая), но если сбоит всё слово то похоже проблемы или с сигналами управления или с питанием.

Сталкивались ли вы с такой ситуацией, как действовали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, _sda said:

Как её теперь растолковать? Видно что младшая микросхема работает нормально, со старшей непонятки.

Почему-то полностью отсутствует старший байт, не только на картинке но и во всех репортах.

А банальную неисправность старшей микросхемы памяти вы не рассматривали в качестве варианта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, Raven сказал:

А банальную неисправность старшей микросхемы памяти вы не рассматривали в качестве варианта?

последняя строчка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы проверили соединение с чипом (да и то не совсем понятно, что означает ваше сожаление об отсутствии JTAG в чипе памяти). Так проверили, или нет? И как это было сделано при отсутствии JTAG в чипе памяти? Тестером на ножках чипа смотрели? Или как? Поясните, пожалуйста.

Но это только половина вопроса. Я имел в виду неисправность внутренностей чипа памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, Raven сказал:

Вы проверили соединение с чипом (да и то не совсем понятно, что означает ваше сожаление об отсутствии JTAG в чипе памяти). Так проверили, или нет? И как это было сделано при отсутствии JTAG в чипе памяти? Тестером на ножках чипа смотрели? Или как? Поясните, пожалуйста.

Но это только половина вопроса. Я имел в виду неисправность внутренностей чипа памяти.

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

С помощью JTAG всегда можно проверить целостность связи между чипами.

А соединение с пинами чипа памяти как проверить без рентгена? Тестером звонятся параллельно включённые диоды внутри FPGA и DDR3. При обрыве одного из диодов напряжение на оставшемся должно быть чуть больше чем на линии с двумя диодами.

Насколько больше - неизвестно, а когда я звонил например шину адреса разброс напряжений был +-2мв, посчитал что контакт есть с обоих сторон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, _sda said:

А соединение с пинами чипа памяти как проверить без рентгена? Тестером звонятся параллельно включённые диоды внутри FPGA и DDR3. При обрыве одного из диодов напряжение на оставшемся должно быть чуть больше чем на линии с двумя диодами.

JTAG и тут вам поможет. Я как раз и имел в виду проверку прохождения лог. 0/1 от FPGA к DDR3 с его помощью. На стороне FPGA уровень выставляется с помощью JTAG, на стороне DDR3 смотрите подручными средствами (тестер, осциллоскоп).

Есть отличный инструмент, который поможет в этом: Universal Scan.

Он есть в закромах. У него хороший Help, да там ничего особо сложного и нет. Подключаете к интересующим выходам FPGA виртуальные генераторы и по очереди их активируете с просмотром осциллоскопом соответствующих ног DDR3. Но если что, составить представление о принципах его работы можно по статье Каршенбойма.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, Raven сказал:

JTAG и тут вам поможет. Я как раз и имел в виду проверку прохождения лог. 0/1 от FPGA к DDR3 с его помощью. На стороне FPGA уровень выставляется с помощью JTAG, на стороне DDR3 смотрите подручными средствами (тестер, осциллоскоп).

Есть отличный инструмент, который поможет в этом: Universal Scan.

Он есть в закромах. У него хороший Help, да там ничего особо сложного и нет. Подключаете к интересующим выходам FPGA виртуальные генераторы и по очереди их активируете с просмотром осциллоскопом соответствующих ног DDR3. Но если что, составить представление о принципах его работы можно по статье Каршенбойма.

Интересно, как вы предлагаете осуществить "просмотр осциллоскопом соответствующих ног DDR3" которая в корпусе BGA?

На дорожках вблизи ножек DDR3 я уже давным-давно всё обсмотрел с помощью JTAG, но так можно проверить только наличие связей дорожек с ножками FPGA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, _sda said:

осуществить "просмотр осциллоскопом соответствующих ног DDR3" которая в корпусе BGA

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

Еще может быть плохая пайка - например, на плате золочение, при этом некоторые технологии допускают плохой контакт (видел раньше такие платы, но у нас с таким не сталкивался, хотя может быть хз - в серийных платах с БГА процем бывают непонятки, грешу на проц. Пару раз перепаивал процы, чтобы убедиться, что с платой порядок - изделие запускалось).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...