_sda 0 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 3 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба 6 hours ago, _sda said: После переназначения пинов (DQ,DQS,DM) Насколько я знаю, ассайнменты нужно делать через TCL скрипт, который создается мастером. 6 hours ago, _sda said: p.s. Забыл сказать что это запаяна вторая плата, на первой плате всё работает замечательно. Это намекает, что проблема аппаратная, разве нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба 1 час назад, pavlovconst сказал: Насколько я знаю, ассайнменты нужно делать через TCL скрипт, который создается мастером. Ну да, для младшей микросхемы я так и делал. Только как вы предлагаете использовать этот скрипт для старшей? 1 час назад, pavlovconst сказал: Это намекает, что проблема аппаратная, разве нет? Да, очень на то похоже, ведь проект на первой плате работает. После JTAG-тестирования могу с уверенностью сказать что со стороны FPGA контакты линий с ножками обеспечены. Насчёт микросхемы DDR3 такой уверенности нет(жаль что у них нет JTAG), но перепайка микросхемы ничего не дала. Вот и завис... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 3 21 июля, 2020 Опубликовано 21 июля, 2020 (изменено) · Жалоба Был у меня какой-то косяк с Квартусом - он не развел один сигнал как положено (связанный с ним блок не работал), при этом ошибок в отчете не было. Был рабочий проект, потом понадобилось перенести его на другую микросхему. Сделал так - убрал свои присвоения ног, пропустил через Квартус, он назначил свои ноги, потом исправил на те, котрые мне были нужны (на точно те же самые, что уже было, т.к. плата уже была разведена) - и заработало. Изменено 21 июля, 2020 пользователем Yuri124 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба 48 минут назад, Yuri124 сказал: Был у меня какой-то косяк с Квартусом - он не развел один сигнал как положено (связанный с ним блок не работал), при этом ошибок в отчете не было. Был рабочий проект, потом понадобилось перенести его на другую микросхему. Сделал так - убрал свои присвоения ног, пропустил через Квартус, он назначил свои ноги, потом исправил на те, котрые мне были нужны (на точно те же самые, что уже было, т.к. плата уже была разведена) - и заработало. Спасибо! У меня ещё несколько мыслей есть, как не останется - проверю ваш вариант. 15 часов назад, _sda сказал: Да, очень на то похоже, ведь проект на первой плате работает. Кстати, на первой плате проект калибруется, но как то странно. mem_status_local_init_done = 0mem_status_local_cal_success = 1mem_status_local_cal_fail = 0 Как такое может быть не понимаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба Пободавшись с старшей микросхемой и не получив собравшегося проекта начал собирать новый маленький тестовый проект для двух микросхем(данные 32 бита). Проект собрался, но скрипт назначил пины совсем не те, с которыми разведена плата и с которыми собран основной проект. Это что, в пин-планнере каждый сигнал переназначать ручками? А если опять упрётся рогом, как со старшей микросхемой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 23 июля, 2020 Опубликовано 23 июля, 2020 · Жалоба 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 = 1mem_status_local_cal_success = 1mem_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 Вот так выглядит картинка на рабочей плате: А вот так на новой: Как её теперь растолковать? Видно что младшая микросхема работает нормально, со старшей непонятки. Почему-то полностью отсутствует старший байт, не только на картинке но и во всех репортах. Я ожидал увидеть какой-то сбойный бит в старшей микросхеме(например от непропая), но если сбоит всё слово то похоже проблемы или с сигналами управления или с питанием. Сталкивались ли вы с такой ситуацией, как действовали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 23 июля, 2020 Опубликовано 23 июля, 2020 · Жалоба 1 hour ago, _sda said: Как её теперь растолковать? Видно что младшая микросхема работает нормально, со старшей непонятки. Почему-то полностью отсутствует старший байт, не только на картинке но и во всех репортах. А банальную неисправность старшей микросхемы памяти вы не рассматривали в качестве варианта? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 23 июля, 2020 Опубликовано 23 июля, 2020 · Жалоба 6 минут назад, Raven сказал: А банальную неисправность старшей микросхемы памяти вы не рассматривали в качестве варианта? последняя строчка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 23 июля, 2020 Опубликовано 23 июля, 2020 · Жалоба Вы проверили соединение с чипом (да и то не совсем понятно, что означает ваше сожаление об отсутствии JTAG в чипе памяти). Так проверили, или нет? И как это было сделано при отсутствии JTAG в чипе памяти? Тестером на ножках чипа смотрели? Или как? Поясните, пожалуйста. Но это только половина вопроса. Я имел в виду неисправность внутренностей чипа памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 23 июля, 2020 Опубликовано 23 июля, 2020 · Жалоба 4 минуты назад, Raven сказал: Вы проверили соединение с чипом (да и то не совсем понятно, что означает ваше сожаление об отсутствии JTAG в чипе памяти). Так проверили, или нет? И как это было сделано при отсутствии JTAG в чипе памяти? Тестером на ножках чипа смотрели? Или как? Поясните, пожалуйста. Но это только половина вопроса. Я имел в виду неисправность внутренностей чипа памяти. Виноват, по ссылке я писал что "перепайка чипа ничего не дала" нужно читать "замена чипа ничего не дала". С помощью JTAG всегда можно проверить целостность связи между чипами. А соединение с пинами чипа памяти как проверить без рентгена? Тестером звонятся параллельно включённые диоды внутри FPGA и DDR3. При обрыве одного из диодов напряжение на оставшемся должно быть чуть больше чем на линии с двумя диодами. Насколько больше - неизвестно, а когда я звонил например шину адреса разброс напряжений был +-2мв, посчитал что контакт есть с обоих сторон. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 23 июля, 2020 Опубликовано 23 июля, 2020 · Жалоба 2 hours ago, _sda said: А соединение с пинами чипа памяти как проверить без рентгена? Тестером звонятся параллельно включённые диоды внутри FPGA и DDR3. При обрыве одного из диодов напряжение на оставшемся должно быть чуть больше чем на линии с двумя диодами. JTAG и тут вам поможет. Я как раз и имел в виду проверку прохождения лог. 0/1 от FPGA к DDR3 с его помощью. На стороне FPGA уровень выставляется с помощью JTAG, на стороне DDR3 смотрите подручными средствами (тестер, осциллоскоп). Есть отличный инструмент, который поможет в этом: Universal Scan. Он есть в закромах. У него хороший Help, да там ничего особо сложного и нет. Подключаете к интересующим выходам FPGA виртуальные генераторы и по очереди их активируете с просмотром осциллоскопом соответствующих ног DDR3. Но если что, составить представление о принципах его работы можно по статье Каршенбойма. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 23 июля, 2020 Опубликовано 23 июля, 2020 · Жалоба 8 минут назад, Raven сказал: JTAG и тут вам поможет. Я как раз и имел в виду проверку прохождения лог. 0/1 от FPGA к DDR3 с его помощью. На стороне FPGA уровень выставляется с помощью JTAG, на стороне DDR3 смотрите подручными средствами (тестер, осциллоскоп). Есть отличный инструмент, который поможет в этом: Universal Scan. Он есть в закромах. У него хороший Help, да там ничего особо сложного и нет. Подключаете к интересующим выходам FPGA виртуальные генераторы и по очереди их активируете с просмотром осциллоскопом соответствующих ног DDR3. Но если что, составить представление о принципах его работы можно по статье Каршенбойма. Интересно, как вы предлагаете осуществить "просмотр осциллоскопом соответствующих ног DDR3" которая в корпусе BGA? На дорожках вблизи ножек DDR3 я уже давным-давно всё обсмотрел с помощью JTAG, но так можно проверить только наличие связей дорожек с ножками FPGA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 3 23 июля, 2020 Опубликовано 23 июля, 2020 · Жалоба 12 minutes ago, _sda said: осуществить "просмотр осциллоскопом соответствующих ног DDR3" которая в корпусе BGA так ведь микру перепаивали - сделать это еще раз, но вначале на пятачках проверить сигналы. Еще может быть плохая пайка - например, на плате золочение, при этом некоторые технологии допускают плохой контакт (видел раньше такие платы, но у нас с таким не сталкивался, хотя может быть хз - в серийных платах с БГА процем бывают непонятки, грешу на проц. Пару раз перепаивал процы, чтобы убедиться, что с платой порядок - изделие запускалось). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться