|
|
  |
LPT + JTAG + ПЛИС |
|
|
|
Jul 7 2013, 10:33
|
Местный
  
Группа: Участник
Сообщений: 245
Регистрация: 15-08-07
Пользователь №: 29 795

|
Доброго времени суток! Стоит задача в которой будет присутствовать ЛПТ порт. Т. к. ЛПТ пятивольтовый (теоретически, а там как повезет), то на его выходах поставлю буферы, а вот с входами планирую ограничиться лишь резисторами. Отсюда вопрос № раз: может ли случиться так, что в каком-нибудь варианте ЛПТ порта, его входы будут подтянуты PullUP к пяти вольтам, и это может вызвать тиристорный эффект на входах ПЛИС? (в моем случае это MAX-II) И второй нюанс - так, как ЛПТ в устройстве присутствует, то я хочу использовать его же для программирования, т.е развести на плате byteblaster. Никогда ранее с плисинами работать и шить их не доводилось, соответственно, знаний в этом направлении - не густо (мягко говоря). Фрагмент схемы прилагаю, прошу помощи в предотвращении откровенных и очевидных "косяков". Заранее спасибо.
И, кстати. При переходе ПЛИС в режим программирования, все его выводы переходят в третье состояние. Но, для того, чтобы активировать режим, необходимо вЫходы "программатора" объединить с вЫходами ПЛИС (в моем случае). Насколько страшна эта коллизия в самом худшем случае и вообще будет ли воспринято "Это" адакватно со стороны и софта и харда?
|
|
|
|
|
Jul 8 2013, 10:53
|
Местный
  
Группа: Участник
Сообщений: 245
Регистрация: 15-08-07
Пользователь №: 29 795

|
Глянул я вот на эту картинку, из сего вино: 1 - перемычка вход 15 на массу 2 - перемычка вход 10 на выход 7 3 - все выходы на jtag активируются выходом №14 4 - "перемычка" вход 12 на выход 9 (вероятно для контроля наличия питания) Касательно моей версии : джампер активирует выход с jtag на лпт, а так же 1 - 15-ый вход садит на массу 2 - объединяет 10ый и 7ой выводы лпт 3 - Разрешает выводу 14 управлять буфером входов jtag 4 - объединяет 12ый и 9ый выводы лпт Вроде ничего не упустил, однако... Вот
Цитата Хотя не понятно, зачем именно ЛПТ, если... Не совсем ясна суть вопросса, но повторюсь, LPT будет задействован как основной для работы. Но так, как он имеется в устройстве, то почему бы его не использовать для прошивки.
Сообщение отредактировал Sirko - Jul 8 2013, 10:59
|
|
|
|
|
Jul 8 2013, 11:08
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Sirko @ Jul 8 2013, 14:53)  Глянул я вот на эту картинку, из сего вино: Это просто байт-бластер, на +5 Вольт... А Вам нужен "мультивольт", чтобы к +3 В, вот его и ищите!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jul 8 2013, 13:17
|
Местный
  
Группа: Участник
Сообщений: 245
Регистрация: 15-08-07
Пользователь №: 29 795

|
Цитата А Вам нужен, чтобы к +3 В На приложеном рисунке, между ЛПТ и остальной схемой, стоит преобразователь уровней SN74LVC4245A, выходы которого используются и для связи с байтбластером в том числе. Сам программатор - на микрухе SN74LVC244APWR, которая низковольтная (если верить даташиту). Питается тоже с низкой стороны. Или я чегото не доглядел? Возможно нужно уточнить, что плиська питается от 3.3В
Сообщение отредактировал Sirko - Jul 8 2013, 13:19
|
|
|
|
|
Jul 8 2013, 18:07
|
Местный
  
Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987

|
Цитата(Sirko @ Jul 8 2013, 17:17)  На приложеном рисунке, между ЛПТ и остальной схемой, стоит преобразователь уровней SN74LVC4245A, выходы которого используются и для связи с байтбластером в том числе. Не совсем понял - зачем тут еще БайтБластер? Ваша схема, вроде как, и должна сама выполнять его роль (в том числе). Может, вы его с софтом путаете? Бластер - это аппаратная составляющая, не путайте с Altera Quartus Programmer (вот это уже софт). Цитата(Sirko @ Jul 8 2013, 17:17)  Сам программатор - на микрухе SN74LVC244APWR, которая низковольтная (если верить даташиту). Питается тоже с низкой стороны.
Или я чегото не доглядел? Возможно нужно уточнить, что плиська питается от 3.3В iosifk имеет в виду, что ByteBlasterMV (MV - multi-voltage, работает c 5V & 3.3V) несколько отличается по схеме от 5-вольтового старичка ByteBlaster, и вам посмотреть на эту схему и разобраться в отличиях было бы очень полезно (особо обратите внимание на pull-up резисторы на входах со стороны LPT). Кстати, если загружать содержимое ПЛИС своим софтом, то может быть полезен сигнальчик INIT_DONE (например, для переключения буферов с JTAG на целевые IO пины для последующего рабочего обмена данными - как замена джамперу "Prog Enable").
|
|
|
|
|
Jul 9 2013, 10:15
|
Местный
  
Группа: Участник
Сообщений: 245
Регистрация: 15-08-07
Пользователь №: 29 795

|
Цитата iosifk имеет в виду, что ByteBlasterMV несколько отличается... ...обратите внимание на pull-up резисторы на входах... Глянул я на вроде бы как альтеровский документ байтбластера MV. Pullup есть только на пятнадцатом входе, который ничем не управляется и служит, вероятно, для идентификации наличия программатора. Замечание существенное. Спасибо. Наверняка не заметил бы. (Исправил) Цитата Не совсем понял - зачем тут еще БайтБластер? Ваша схема, вроде как, и должна сама выполнять его роль Под понятием ByteBlaster я подразумеваю фрагмент в моей схеме собранный на 244-ом буфере. У него две задачи: прошить микруху, когда мне это нужно (джампер установлен), и не мешать обмену данными между плисиной и ЛПТ, когда мне программатор не нужен. Можно добавить еще одно свойство - быть стандартным "прошивальщиком" для драйверов квартуса. Свой софт для прошивки мне не нужен. Использовать дополнительные сигналы от порта ЛПТ не имею возможности, т.к. в рабочем режиме он целиком задействован, т.е. будет дергать программатор. Собственно и вопрос мой к тем, кто знаком с протоколом программирования - насколько "правильный" мой программатор для квартуса с учетом конкретно этого исполнения. Так, как при установке джампера программирования ноги плисины останутся некоторое время активны активны. Или нет!???
|
|
|
|
|
Jul 9 2013, 16:47
|
Местный
  
Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987

|
Цитата(Sirko @ Jul 9 2013, 14:15)  Pullup есть только на пятнадцатом входе, который ничем не управляется и служит, вероятно, для идентификации наличия программатора. Комментарии, как говорят, излишни! Как только на 15-м? А как же подключение входов #2G, 1A1, 2A1, 2A2, 2A3? Везде ж pull-up'ы!! Цитата(Sirko @ Jul 9 2013, 14:15)  Под понятием ByteBlaster я подразумеваю фрагмент в моей схеме собранный на 244-ом буфере. У него две задачи: прошить микруху, когда мне это нужно (джампер установлен), и не мешать обмену данными между плисиной и ЛПТ, когда мне программатор не нужен. Можно добавить еще одно свойство - быть стандартным "прошивальщиком" для драйверов квартуса. Свой софт для прошивки мне не нужен. Использовать дополнительные сигналы от порта ЛПТ не имею возможности, т.к. в рабочем режиме он целиком задействован, т.е. будет дергать программатор.
Собственно и вопрос мой к тем, кто знаком с протоколом программирования - насколько "правильный" мой программатор для квартуса с учетом конкретно этого исполнения. Так, как при установке джампера программирования ноги плисины останутся некоторое время активны активны. Или нет!??? Сигнал INIT_DONE - это сигнал FPGA, а не LPT! И он как раз сигнализирует об успешном завершении процесса конфигурирования ПЛИС. И мог бы в вашей схеме быть использован как подсобный сигнал для переключения линий от LPT между JTAG'ом (во время конфигурирования) и IO пинами ПЛИС (в основном рабочем режиме). Вот в чем идея-то. А джампер в работающей системе дергать - это идея плохая. И уж если вам она все-таки нравится, то хотя бы предусмотрите борьбу с дребезгом контактов, что-ли. А то как бы логика в ПЛИС не нахватала пичков/фронтов в процессе переходного процесса, и не зашла бы в ненужное вам состояние. Кстати, что у вас на данный момент со схемой получилось?
|
|
|
|
|
Jul 11 2013, 07:17
|
Местный
  
Группа: Участник
Сообщений: 245
Регистрация: 15-08-07
Пользователь №: 29 795

|
Цитата А как же подключение входов #2G, 1A1, 2A1, 2A2, 2A3? Везде ж pull-up'ы!! Сказать по правде, не представляю, каким образом эти "пуллапы" могут оказывать влияние на работу схемы. Первый вариант, это если ЛПТ сконфигурирован в двунаправленном режиме. Но это крайне маловероятно. Второй вариант, когда байтбластер отсоединен физически от порта, он не должен оказывать влияние на работоспособность устройства. Но т.к. это к режиму программирования не относится, то этот нюанс тоже можно не рассматривать. Касательно моего случая ЛПТ с остальной схемой связан через буфер, поэтому подтяжка со стороны входов программатора не актуальна в режиме программирования. А когда устройство в рабочем режиме, то байтбластер отключается от схемы полностью. Непосредственно на JTAG ногах подтяжка есть. Цитата Сигнал INIT_DONE - это сигнал FPGA Вот "ноги" плиськи. Если не сложно, ткните носом. У меня чето не выходит. Я был бы не против запускать "прог" кнопкой. Цитата предусмотрите борьбу с дребезгом контактов Емкости хватит? Или нужно что-то "посущественнее" Цитата что у вас на данный момент со схемой получилось? Вот надергал кусочков с разных листиков
Сообщение отредактировал Sirko - Jul 11 2013, 07:42
|
|
|
|
|
Jul 12 2013, 11:00
|
Местный
  
Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987

|
Цитата(Sirko @ Jul 11 2013, 11:17)  Сказать по правде, не представляю, каким образом эти "пуллапы" могут оказывать влияние на работу схемы. Первый вариант, это если ЛПТ сконфигурирован в двунаправленном режиме. Но это крайне маловероятно. Второй вариант, когда байтбластер отсоединен физически от порта, он не должен оказывать влияние на работоспособность устройства. Но т.к. это к режиму программирования не относится, то этот нюанс тоже можно не рассматривать. Эти пуллапы позволяют использованному в оригинальном ByteBlaster HC244 (CMOS) правильно воспринимать своими входами TTL лог.1. Про используемый вами LVC4245 не читал, может, это и не требуется. Цитата(Sirko @ Jul 11 2013, 11:17)  Касательно моего случая ЛПТ с остальной схемой связан через буфер, поэтому подтяжка со стороны входов программатора не актуальна в режиме программирования. А когда устройство в рабочем режиме, то байтбластер отключается от схемы полностью. Непосредственно на JTAG ногах подтяжка есть. В рабочем режиме - да, но не в режиме байтбластера. Конфликты типа "выход с выходом" могут быть. Цитата(Sirko @ Jul 11 2013, 11:17)  Вот "ноги" плиськи. Если не сложно, ткните носом. У меня чето не выходит. Я был бы не против запускать "прог" кнопкой. Могу ошибаться, но в моем сознании ПЛИС соответствует FPGA, т.е., я думал, что у вас како-нибудь Cyclone используется, а не MAX-II, которая есть CPLD (что соответствует, кажется, нашему ПЛМ). Недопонимание, в общем. Здесь, конечно, INIT_DONE, нету, но идея все равно могла бы сработать, если предусмотреть, скажем, схему со счетчиком внутри СPLD, и выделить выход для управления буферами. Что-то в этом роде. Но для MAX-II я все-таки всю эту сложность не советую делать из-за особенностей его работы. Вполне достаточно и ручного управления джампером. Ведь гарантируемое число перепрошивок конфигурационного FLASH у него всего 100, так что не стоит особо увлекаться. Цитата(Sirko @ Jul 11 2013, 11:17)  Емкости хватит? Или нужно что-то "посущественнее" Вообще-то я предполагал что-то вроде классической схемы на RS-триггере. Но ввиду вышеизложенного, думаю, возню вокруг дребезга лучше свернуть (C30 убрать), тем более, что она до конца все равно вам не гарантирует непрохождение каких-то фронтов по управляющим сигналам (т.к. это вдобавок зависит еще и от сигнала по другую сторону буфера, и может произойти нежелательное переключение 0->1 или наоборот). А вместо этого лучше иметь среди сигналов вашего рабочего интерфейса сигнал RESET. Кстати, в режиме бластера его можно удерживать в активном состоянии, не давая системе в PLD баловать. Ну, и при начале работы всегда можно привести систему в известное состояние, убрав все наведенные эффекты. Цитата(Sirko @ Jul 11 2013, 11:17)  Вот надергал кусочков с разных листиков
1) Есть пара ошибок. Тщательно перепроверьте все-таки на соответствие схеме ByteBlasterMV. Вот примеры проблем: - для активации проключения TCK, TMS TDI к чипу в оригинале используется сигнал LPT.14, а у вас LPT.7; - соответственно, и ваш LPT.14 идет не туда, куда надо; - JTAG.TDO должен приходить на LPT.11, а у вас - на LPT.10; - loopback LPT.7 => LPT.10 вообще отсутствует; - да и с LPT.15 вы не очень корректно поступили. В оригинале в случае отсутствия VCC на 15 входе LPT будет лог.0, а у вас - 3-е состояние. 2) Я бы все-таки вам порекомендовал добавить еще один корпус LVC244. Тогда можно было бы его половину использовать на корректную доразводку сигналов бластера и управление переключением, а вторую, на изоляцию 4 сигналов рабочего режима, соперничающих с выходными сигналами бластера (соответствующих LPT 10, 11, 12 и 15). И все было бы супер корректно.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|