v_crys 0 5 февраля, 2020 Опубликовано 5 февраля, 2020 · Жалоба Добрый день! Последние сутки я потратил на запуск прошивки на плате и нашел в чем было дело абсолютно случайно. Хотел бы поделиться данной тонкостью с новичками и спросить у профессионалов, почему так происходит. Моя плата (самодельная) прошивается через jtag. В цепочке прошивки только одна плис xc6slx9. При прошивке я получал сообщение о том, что все успешно зашито (в программе iMPACT), но при этом ничего не начинало работать. На что я только не грешил, пока не заметил, что статус выглядит следующим образом: Спойлер [0] CRC ERROR : 0 [1] IDCODE ERROR : 0 [2] DCM LOCK STATUS : 1 [3] GTS_CFG_B STATUS : 0 [4] GWE STATUS : 0 [5] GHIGH STATUS : 1 [6] DECRYPTION ERROR : 0 [7] DECRYPTOR ENABLE : 0 [8] HSWAPEN PIN : 1 [9] MODE PIN M[0] : 1 [10] MODE PIN M[1] : 1 [11] RESERVED : 0 [12] INIT_B PIN : 1 [13] DONE PIN : 0 [14] SUSPEND STATUS : 0 [15] FALLBACK STATUS : 0 То есть GTS_CFG_B STATUS и GWE STATUS находятся в нуле. Немного поигравшись с настройками Generate Program FIle->Process Properties обнаружил, что если во вкладке Startup Option поставить галочку на DriveDone, то проблема решается и прошивка начинает работать. Замечу, что DONE и так подтянут через резистор к питанию и по моим представлениям установленная "галочка" ничего изменить не должна, однако оказалось, что именно в ней и было дело. В приложении скрины описанной проблемы. Если кто-то может объяснить почему так происходит, объясните пожалуйста, очень интересно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 5 февраля, 2020 Опубликовано 5 февраля, 2020 · Жалоба Это норма! (c) Всегда ставьте подтягивающий резистор, как требует Xilinx - т.е. 330 Ом. А не кОм, как на вашей схеме. И всегда когда возможно используйте DriveDone. Дело в кривоватой реализации сигнала DONE в S6 и других ранних сериях - перед выводом наружу он не проходит через дополнительный регистр. Т.е. то, что снаружи - то же самое принимается внутренней логикой. Для корректной работы внутренней логики требуется, чтобы на Done был чистый и быстрый фронт. Поэтому в документации есть требование на сильный подтягивающий резистор (330 Ом). В сериях, где Done выходит на внешний пин через дополнительный регистр, требование на резистор 330 Ом убрано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v_crys 0 5 февраля, 2020 Опубликовано 5 февраля, 2020 · Жалоба 7 часов назад, Flood сказал: Это норма! (c) Всегда ставьте подтягивающий резистор, как требует Xilinx - т.е. 330 Ом. А не кОм, как на вашей схеме. И всегда когда возможно используйте DriveDone. Дело в кривоватой реализации сигнала DONE в S6 и других ранних сериях - перед выводом наружу он не проходит через дополнительный регистр. Т.е. то, что снаружи - то же самое принимается внутренней логикой. Для корректной работы внутренней логики требуется, чтобы на Done был чистый и быстрый фронт. Поэтому в документации есть требование на сильный подтягивающий резистор (330 Ом). В сериях, где Done выходит на внешний пин через дополнительный регистр, требование на резистор 330 Ом убрано. Спасибо за понятное объяснение! Я попробовал запаять 330Ом результат был тем же, но вот 150 Ом сделали свое дело. Единственное, что я еще не понимаю, светодиод DONE на моей схеме после уменьшения сопротивления резистора R12 при включении стал тускло гореть (до этого горел ярче). Что означает что npn транзистор оказался в более закрытом состоянии. Но ведь я подтяжку уменьшил, чем увеличил ток база-эмитер. Почему так произошло? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 5 февраля, 2020 Опубликовано 5 февраля, 2020 · Жалоба 40 минут назад, v_crys сказал: Я попробовал запаять 330Ом результат был тем же, но вот 150 Ом сделали свое дело. Попробуйте удалить транзистор (хоть слабый, но pulldown) и оставить 330 Ом - должно работать. Если не заработает, надо разбираться, т.к. 150 Ом - уже слишком, это симптом, что что-то не так. Если заработает - можно попробовать транзистор без резистора база-эмиттер. А еще лучше полевик. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v_crys 0 5 февраля, 2020 Опубликовано 5 февраля, 2020 · Жалоба 58 минут назад, Flood сказал: Попробуйте удалить транзистор (хоть слабый, но pulldown) и оставить 330 Ом - должно работать. Если не заработает, надо разбираться, т.к. 150 Ом - уже слишком, это симптом, что что-то не так. Если заработает - можно попробовать транзистор без резистора база-эмиттер. А еще лучше полевик. Убрал транзистор и вернул 330 Ом. Все заработало. Запаяю полевик, проверю. Но это позже, т.к. полевиков в этом корпусе сейчас на руках нету. Большое спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 6 февраля, 2020 Опубликовано 6 февраля, 2020 (изменено) · Жалоба 13 hours ago, v_crys said: после уменьшения сопротивления резистора R12 при включении стал тускло гореть у указанного на схеме "цифрового транзистора" 7-13 кОм по даташиту должно быть в цепи базы. Поэтому добавочных что 330, что 150 - ему как бы без разницы. Вполне вероятно, что с транзистором что-то не так. Или где-то что-то подкорачивает на плате. Или утечка (например, из-за флюса). У полевика может оказаться значительная входная емкость - если затвор соединять напрямую с выводом микросхемы, может затянуть фронт (ну это я так, на всякий случай ))) ) Изменено 6 февраля, 2020 пользователем Yuri124 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v_crys 0 6 февраля, 2020 Опубликовано 6 февраля, 2020 · Жалоба Запайка mosfet N-типа решило проблему. Теперь при резисторе 330 Ом все работает. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться