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

Не стартует ПЛИС (особенности DriveDone xc6slx9)

Добрый день!

Последние сутки я потратил на запуск прошивки на плате и нашел в чем было дело абсолютно случайно. Хотел бы поделиться данной тонкостью с новичками и спросить у профессионалов, почему так происходит.

Моя плата (самодельная) прошивается через 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 и так подтянут через резистор к питанию и по моим представлениям установленная "галочка" ничего изменить не должна, однако оказалось, что именно в ней и было дело. В приложении скрины описанной проблемы. Если кто-то может объяснить почему так происходит, объясните пожалуйста, очень интересно.

3.png

1.png

2.png

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


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

Это норма! (c)

Всегда ставьте подтягивающий резистор, как требует Xilinx - т.е. 330 Ом. А не кОм, как на вашей схеме. И всегда когда возможно используйте DriveDone.

 

Дело в кривоватой реализации сигнала DONE в S6 и других ранних сериях - перед выводом наружу он не проходит через дополнительный регистр. Т.е. то, что снаружи - то же самое принимается внутренней логикой. Для корректной работы внутренней логики требуется, чтобы на Done был чистый и быстрый фронт. Поэтому в документации есть требование на сильный подтягивающий резистор (330 Ом).

 

В сериях, где Done выходит на внешний пин через дополнительный регистр, требование на резистор 330 Ом убрано.

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


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

7 часов назад, Flood сказал:

Это норма! (c)

Всегда ставьте подтягивающий резистор, как требует Xilinx - т.е. 330 Ом. А не кОм, как на вашей схеме. И всегда когда возможно используйте DriveDone.

 

Дело в кривоватой реализации сигнала DONE в S6 и других ранних сериях - перед выводом наружу он не проходит через дополнительный регистр. Т.е. то, что снаружи - то же самое принимается внутренней логикой. Для корректной работы внутренней логики требуется, чтобы на Done был чистый и быстрый фронт. Поэтому в документации есть требование на сильный подтягивающий резистор (330 Ом).

 

В сериях, где Done выходит на внешний пин через дополнительный регистр, требование на резистор 330 Ом убрано.

Спасибо за понятное объяснение!

Я попробовал запаять 330Ом результат был тем же, но вот 150 Ом сделали свое дело.

Единственное, что я еще не понимаю, светодиод DONE на моей схеме после уменьшения сопротивления резистора R12 при включении стал тускло гореть (до этого горел ярче). Что означает что npn транзистор оказался в более закрытом состоянии. Но ведь я подтяжку уменьшил, чем увеличил ток база-эмитер. Почему так произошло?

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


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

40 минут назад, v_crys сказал:

Я попробовал запаять 330Ом результат был тем же, но вот 150 Ом сделали свое дело.

Попробуйте удалить транзистор (хоть слабый, но pulldown) и оставить 330 Ом - должно работать. Если не заработает, надо разбираться, т.к. 150 Ом - уже слишком, это симптом, что что-то не так.

Если заработает - можно попробовать транзистор без резистора база-эмиттер. А еще лучше полевик. 

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


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

58 минут назад, Flood сказал:

Попробуйте удалить транзистор (хоть слабый, но pulldown) и оставить 330 Ом - должно работать. Если не заработает, надо разбираться, т.к. 150 Ом - уже слишком, это симптом, что что-то не так.

Если заработает - можно попробовать транзистор без резистора база-эмиттер. А еще лучше полевик. 

Убрал транзистор и вернул 330 Ом. Все заработало. Запаяю полевик, проверю. Но это позже, т.к. полевиков в этом корпусе сейчас на руках нету.

Большое спасибо!

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


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

13 hours ago, v_crys said:

после уменьшения сопротивления резистора R12 при включении стал тускло гореть

у указанного на схеме "цифрового транзистора" 7-13 кОм по даташиту должно быть в цепи базы. Поэтому добавочных что 330, что 150 - ему как бы без разницы.

Вполне вероятно, что с транзистором что-то не так. Или где-то что-то подкорачивает на плате. Или утечка (например, из-за флюса).

У полевика может оказаться значительная входная емкость - если затвор соединять напрямую с выводом микросхемы, может затянуть фронт (ну это я так, на всякий случай )))  )

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

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


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

Запайка mosfet N-типа решило проблему. Теперь при резисторе 330 Ом все работает. Спасибо!

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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