Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB Blaster V2
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
rat
День добрый. На новом месте работы озаботился USB Blaster-ом для работы с Альтеровскими ПЛИС. По цене приемлимо выглядит http://www.waveshare.com/usb-blaster-v2.htm . Кто-нибудь юзал? Можно такой брать?
Dima_G
Цитата(rat @ Oct 20 2016, 11:00) *
День добрый. На новом месте работы озаботился USB Blaster-ом для работы с Альтеровскими ПЛИС. По цене приемлимо выглядит http://www.waveshare.com/usb-blaster-v2.htm . Кто-нибудь юзал? Можно такой брать?


С большой вероятностью внутри или FT245, или МК с USB интерфейсом.
JTAG организуется софтово, больших скоростей (и надежности работы) вряд ли удастся достичь (сужу по китайским клонам).
Если покупаете для работы, рекомендую UBR Iso (клон оригинального альтеровского программатора + гальваноразвязка), он на порядок дороже, но на два порядка лучше.
Stewart Little
И таки да, "V2" в названии сего изделия может ввести в заблуждение. Это клон обычного USB Blaster'а (а не USB Blaster II).
А хотелось бы иметь именно клон USB Blaster II - это машинка куда как посерьезнее означенного поделия.
Ну, даст Бог - сделаем sm.gif

Цитата(Dima_G @ Oct 20 2016, 09:29) *
С большой вероятностью внутри или FT245, или МК с USB интерфейсом.

Если глянуть по указанной ссылке, то там написано "FT245 + CPLD". Т.е. вариант штатный.
Raven
О разнообразии внутреннего мира китайских USB Blaster'ов можно судить по следующим линкам:
Link 1
Link 2
После того, как немец Коля и японский человек Satoshi сделали свои варианты этого бластера, и алгоритм работы ушел в народ, каких только вариантов не делают! sm.gif
Flood
Цитата(Stewart Little @ Oct 20 2016, 16:29) *
И таки да, "V2" в названии сего изделия может ввести в заблуждение. Это клон обычного USB Blaster'а (а не USB Blaster II).
А хотелось бы иметь именно клон USB Blaster II - это машинка куда как посерьезнее означенного поделия.

А чем хорош (оригинальный) USB Blaster II по сравнению с (оригинальным) USB Blaster?
Stewart Little
Цитата(Flood @ Oct 20 2016, 23:11) *
А чем хорош (оригинальный) USB Blaster II по сравнению с (оригинальным) USB Blaster?

1. Быстрый (USB 2.0 High Speed)
2. Позволяет управлять частотой TCK.
3. Позволяет прошивать в ПЛИС ключи для дешифровки криптованной прошивки (ekp-файлы).
+ для совместной отладки SoC'ов рекомендуют именно его.
dvladim
Цитата(Stewart Little @ Oct 20 2016, 23:49) *
3. Позволяет прошивать в ПЛИС ключи для дешифровки криптованной прошивки (ekp-файлы).

Если можно, поясните пожалуйста этот пункт. Просто я всегда считал, что JTAG это DRSCAN и IRSCAN, а всё остальное дело команд и их интерпитации. Т.е. от железа не зависит.
jks
Цитата(dvladim @ Oct 22 2016, 17:00) *
Если можно, поясните пожалуйста этот пункт. Просто я всегда считал, что JTAG это DRSCAN и IRSCAN, а всё остальное дело команд и их интерпитации. Т.е. от железа не зависит.


Цитата
After issuing the VOL_KEY_LOCK instruction, the controller cycles the JTAG state machine to the RTI state
and waits in this state for 10 μs. After a minimum of 10 μs in RTI, the controller cycles the JTAG state
machine to test logic reset. The device must be reconfigured for the volatile key lock fuse to take effect.

After issuing the VOL_KEY_SECURE instruction, the controller cycles the JTAG state machine to the RTI
state and waits in this state for 10 μs. After a minimum of 10 μs in RTI, the controller cycles the JTAG
state machine to test logic reset. You must reconfigure the device for the volatile key secure fuse to take
effect.


Для программирования постоянных ключей (NonVolatile) и фьюзов необходимо строго выдерживать тайминги при записи, как в старых ЭСПЗУ.
В новых бластерах есть возможность менять частоту клока TCK при обмене по JTAG. Устанавливается частота 100 кГц.
Подробности в an680.


rat
UPD. Конкретно интересует возможность работы USB Blaster V2 с Cyclone IV.
Stewart Little
Цитата(rat @ Oct 24 2016, 04:37) *
UPD. Конкретно интересует возможность работы USB Blaster V2 с Cyclone IV.

Ну, тут все зависит от того, что подданные Поднебесной в этот бластер запихнули sm.gif
Скорее всего работать будет.
JTAG - он и в Африке в Cyclone IV JTAG.
dvladim
У этих китайских клонов есть неприятный глюк (касается клонов на SILABS):
когда подаёшь длинный DRSCAN (именно одним куском), то где-то посередине данные сбиваются. Легко проверяется на BYPASS.
Оригинальный Blaster такой проблемы не имеет.
Raven
Цитата(dvladim @ Oct 25 2016, 23:00) *
когда подаёшь длинный DRSCAN (именно одним куском), то где-то посередине данные сбиваются. Легко проверяется на BYPASS.

Вполне может также быть проявлением плохого Signal Integrity. Сбивается всегда одинаково (в одном и том же месте, искажения всегда одни и те же?)

Цитата(jks @ Oct 22 2016, 17:47) *
Для программирования постоянных ключей (NonVolatile) и фьюзов необходимо строго выдерживать тайминги при записи, как в старых ЭСПЗУ.
Цитата
After a minimum of 10 μs in RTI, the controller cycles the JTAG state
machine to test logic reset.


Строгость какая-то ... нестрогая sm.gif Поддержать подобное требование даже в фирменном USB Blaster (I) и его клонах на FT245+CPLD, где fTCK фиксированная - вопрос скорее желания [программистов и маркетинговых людей], чем физической возможности.
А за наводку на AN - спасибо (не попадало как-то в поле зрения).
jks
Цитата(Raven @ Oct 26 2016, 16:33) *
Строгость какая-то ... нестрогая sm.gif Поддержать подобное требование даже в фирменном USB Blaster (I) и его клонах на FT245+CPLD, где fTCK фиксированная - вопрос скорее желания [программистов и маркетинговых людей], чем физической возможности.
А за наводку на AN - спасибо (не попадало как-то в поле зрения).


Нажмите для просмотра прикрепленного файла
из AN556 - p9.

Сложно сказать насколько это жесткие требования.
Но если частоту фиксировать на 100кГц, то трудно будет работать с СигналТапом и прошивать долго.
Можно конечно выделить для прошивания ключей отдельный программатор.
В штатном варианте квартус меняет частоту клока динамически при конфигурации бластера.
Это надо подшаманить драйвер бластера чтобы он менял частоту.

Наводка:
jtagconfig --setparam JtagClock 1 100000 // установить
jtagconfig --getparam JtagClock 1 // получить значение параметра

У марсоходовского драйвера похоже нет такой функциональности. Но если есть желание, то можно подсобить.

ПС:
А вообще думаю, что пора уже замахнуться на USBlaster III на USB3.0.
Концептуально многопортовый JTAG до 100МГц, с возможностью прошивать FPPx8/x16.
Ну и параллельные порты или LVDS туда/сюда для подключения к плисине для закачивания/выкачивания данных.
А то по JTAG на малой скорости работать не всегда комильфо. Народный такой демократический вариант.
Raven
AN-556, p.5 содержит краткое, но емкое описание как причин текущего положения дел, так и перспектив:
Цитата
(9) USB-Blaster support only volatile key programming except in 20-nm FPGAs, where it supports both
volatile and non-volatile key programming.
(10) For non-volatile key programming, you must regulate the JTAG TCK pulse width (period) for proper
polyfuse programming.

Т.е., первые варианты исполнения (до-20nm) имеют жесткую зависимость процесса программирования от продолжительности периода TCK, а последние и, думается, все последующие (20nm FPGA - это, как я понял, Arria 10) - от этой жесткой зависимости освобождены. Внутренний контроллер, видимо, сам генерирует импульс правильной продолжительности и не рассчитывает на такую ненадежную субстанцию, как TCK period. И он прав.

Цитата
А вообще думаю, что пора уже замахнуться на USBlaster III на USB3.0.

Э-э-х, батенька, это как раз тот случай, когда не надо бежать впереди паровоза (то бишь, Alter'ы). Программную совместимость с Кактусом как вы думаете всему этому добру обеспечивать? Вот если бы Altera выпустила бы что-нибудь наподобие XVCD protocol specification, как у Хилых, тогда.... Мечты, мечты... :-)
jks
Цитата(Raven @ Oct 26 2016, 18:39) *
AN-556, p.5 содержит краткое, но емкое описание как причин текущего положения дел, так и перспектив:
Т.е., первые варианты исполнения (до-20nm) имеют жесткую зависимость процесса программирования от продолжительности периода TCK, а последние и, думается, все последующие (20nm FPGA - это, как я понял, Arria 10) - от этой жесткой зависимости освобождены. Внутренний контроллер, видимо, сам генерирует импульс правильной продолжительности и не рассчитывает на такую ненадежную субстанцию, как TCK period. И он прав.

Э-э-х, батенька, это как раз тот случай, когда не надо бежать впереди паровоза (то бишь, Alter'ы). Программную совместимость с Кактусом как вы думаете всему этому добру обеспечивать? Вот если бы Altera выпустила бы что-нибудь наподобие XVCD protocol specification, как у Хилых, тогда.... Мечты, мечты... :-)

20нм и 14нм архитектура видимо "слишком другая", там похоже все сложно достаточно с безопасностью.
Еще одна причина перехода на низкую частоту это защита от неправильной записи NonVolatile ключа. На сколько я понял протокол записи ключа ключ обратно не вычитывается и если при записи произойдет сбой, то получится кирпич. Можно прочитать только регистр состояния.
По-поводу программной совместимости с кактусом, то протокол условно открытый за исключением авторских прав, сейчас не-понятно кому принадлежащих.
Возможно Интел что-то приоткроет laughing.gif. А если нет, то существует демократический способ. Тут вопрос надо ли это кому-то.
Сейчас есть шаблон драйвера под win64/win32, под linux не проверял еще.
_pv
Цитата(Raven @ Oct 26 2016, 22:39) *
Цитата
А вообще думаю, что пора уже замахнуться на USBlaster III на USB3.0.

Э-э-х, батенька, это как раз тот случай, когда не надо бежать впереди паровоза (то бишь, Alter'ы). Программную совместимость с Кактусом как вы думаете всему этому добру обеспечивать?

ну на http://marsohod.org вон свой программатор mbftdi как-то в кактус запилили.
и там тупо ft2232h, без дополнительной цплд, ибо преобразовывать USB в последовательный интерфейс сама умеет в отличии от ft245 в оригинальном первом бластере.

и толку от USB3? ограничения на частоту TCK начнутся гораздо раньше чем закончится пропускная способность high speed USB2.
даже для FPP, 30-40МБайт/с не особо-то ограничение
jks
Тут идея состоит в том чтобы аппаратный JTAG использовать только при начальной конфигурации или каких-то аппаратных вещей типа граничного сканирования.
А для отладочных вещей типа SignalTap использовать выделенные линии LVDS.
Снаружи в ПК эмулятор SLD_HUB и внутри ПЛИС такой-же ответный но выведенный не на аппаратный JTAG а на выделенный интерфейс.
Потому-как VirtualJtag подсистема USER0/USER1 очень медленная и не удовлетворяет современным требованиям.

Как вариант можно использовать как логический анализатор или подключать внешние АЦП/ЦАП.
Такая мини система сбора данных. Можно еще подключить открытое ПО типа GTKwave итд.
Raven
Цитата(jks @ Oct 26 2016, 19:14) *
Еще одна причина перехода на низкую частоту это защита от неправильной записи NonVolatile ключа. На сколько я понял протокол записи ключа ключ обратно не вычитывается и если при записи произойдет сбой, то получится кирпич. Можно прочитать только регистр состояния.

Вот поэтому в Альтере и сообразили, что негоже такую чувствительную вещь ставить в зависимость от TCK period'а, генерируемого устройством, зависящим от USB (который далеко не верх надежности). Пользователь, хоть, может, и сам виноват в сбое, и даже сам это понимает, но понесет по жизни негатив об Альтере (если чип стоимостью несколько килобаксов превратился в кирпич). Оно Альтере нужно? Когда можно добавить небольшой контроллер на N килогейт, и решить проблему.

Цитата(jks @ Oct 26 2016, 19:14) *
По-поводу программной совместимости с кактусом, то протокол условно открытый за исключением авторских прав, сейчас не-понятно кому принадлежащих.
...
Сейчас есть шаблон драйвера под win64/win32, под linux не проверял еще.

А вот это что-то новенькое. Протокол аппаратной части действительно хорошо известен со времен немца Коли, а вот API DLL'ки, более или менее задокументированного, я пока не встречал. Не поделитесь?

Цитата(_pv @ Oct 26 2016, 19:44) *
ну на http://marsohod.org вон свой программатор mbftdi как-то в кактус запилили.
и там тупо ft2232h, без дополнительной цплд, ибо преобразовывать USB в последовательный интерфейс сама умеет в отличии от ft245 в оригинальном первом бластере.

Свою DLL-ку написали, предварительно похатчив оригинал. Это, конечно, самый правильный путь, т.к. открывает самые широкие перспективы (потому у меня и возник интерес - см. выше). Вопрос только в точности вскрытия API. Кстати, а они где-нибудь этой информацией с широкой общественностью делились?
_pv
Цитата(jks @ Oct 27 2016, 01:16) *
А для отладочных вещей типа SignalTap использовать выделенные линии LVDS.
Снаружи в ПК эмулятор SLD_HUB и внутри ПЛИС такой-же ответный но выведенный не на аппаратный JTAG а на выделенный интерфейс.
Потому-как VirtualJtag подсистема USER0/USER1 очень медленная и не удовлетворяет современным требованиям.

а вот тут как раз имхо и будут грабли с инеграцией этого велосипеда (не через JTAG), в квартус, хотя, возможно, и решаемые.
Raven
Цитата(_pv @ Oct 26 2016, 21:27) *
а вот тут как раз имхо и будут грабли с инеграцией этого велосипеда (не через JTAG), в квартус, хотя, возможно, и решаемые.

Само собой, для такой масштабной задумки плясать следует от программного интерфейса. Когда я говорил про бег впереди паровоза, именно это я и имел в виду. Что не может быть поддержано в рамках известного API - лучше без особой нужды не мутить.
jks
Выкладывать исходники пока рано, надо причесать в нормальный вид.
Могу выложить примерный драйвер - эмулятор. Пока под Win64.
Скопировать dll в папку bin64.
Нажмите для просмотра прикрепленного файла
Добавить драйвер
jtagconfig --add JTAG-Blaster JDBG9
Удалить
jtagconfig --remove <N>, N индекс устройства

В Quartus открыть окно программатора и выбрать устройство JTAG-Blaster.
В автодетекте должен появиться CycloneIII/IV EP3C6/10. Можно его прошить какой-нибудь прошивкой.
В меню tools выбрать Sources&Probes и запустить. Должны появиться виртуальные кнопки/индикаторы.

Тестировал в QUA 13.0 - 15.1 64bit.
_pv
исходники-то ладно,
а вот описание того, что должна вернуть get_supported_hardware() вы где взяли?
jks
Цитата(_pv @ Oct 26 2016, 22:53) *
исходники-то ладно,
а вот описание того, что должна вернуть get_supported_hardware() вы где взяли?

Начиная где-то с 11 версии лежит в папке исполняемыми файлами.
Не совсем в открытом виде, но разобраться можно и Альтера этому способствует.
как-то так.
Нажмите для просмотра прикрепленного файла
dvladim
Цитата(Raven @ Oct 26 2016, 16:33) *
Вполне может также быть проявлением плохого Signal Integrity. Сбивается всегда одинаково (в одном и том же месте, искажения всегда одни и те же?)

Да вот нет sad.gif
Где-то в процессе буфер переполняется/сбивается.
Raven
Цитата(jks @ Oct 26 2016, 23:05) *
Начиная где-то с 11 версии лежит в папке исполняемыми файлами.
Не совсем в открытом виде, но разобраться можно и Альтера этому способствует.

Похоже, я далеко не в танке sm.gif Под рукой Q13SP1, ничего похожего на файл с таким или подобным именем не нашел во всем поддереве. Видимо, совсем не в открытом виде :-) Или это только в Q11 было?
jks
Цитата(Raven @ Oct 27 2016, 16:47) *
Похоже, я далеко не в танке sm.gif Под рукой Q13SP1, ничего похожего на файл с таким или подобным именем не нашел во всем поддереве. Видимо, совсем не в открытом виде :-) Или это только в Q11 было?

Этот файл это продукт интерпретации. Я имел ввиду файлы с расширением *.pdb для 32 битной версии. Там информации более чем достаточно.
Надеюсь что не открыл страшной тайны. Вообще я был уверен, что эна инфа уже давно находится Центральном Хранилище Артефактов, раз на марсоходе драйвера с 2011 года лежат.
Я доступа туда не имею пока пэтому не знаю что там и как.
_pv
Цитата(jks @ Oct 27 2016, 02:05) *
Начиная где-то с 11 версии лежит в папке исполняемыми файлами.
Не совсем в открытом виде, но разобраться можно и Альтера этому способствует.

за файлик спасибо.

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

не так давно разбирался с использованием jtag-uarta из своей программы, а не через nios2-terminal (через него как-то всё настолько медленно и печально было).
осталась масса "положительных" эмоций, хотя там оно ещё относительно незакрыто и даже исходники кое-какие найти можно.
jks
Я вобще сначала пытался на TCL что-то делать, но потом плюнул и решил поискать что-то побыстрее.
Надо было найти какой-нибудь универсальный пограмматор для зоопарка для ARM/MIPS/FPGA.
В результате сейчас пользую blaster через Альтеровскую либу jtag_client.
Там есть полный функционал. И можно писать переносимое ПО под Win/Linux.


Была идея JLink с родным драйвером подключить, чтобы разъемы не переставлять каждый раз.
Не знаю насколько имеет смысл выкаладывать в открытый доступ либу и описание работы с ней?
Raven
Цитата(jks @ Oct 27 2016, 17:04) *
Этот файл это продукт интерпретации. Я имел ввиду файлы с расширением *.pdb для 32 битной версии. Там информации более чем достаточно.
Надеюсь что не открыл страшной тайны.

Так и есть - не в танке я :-). Ну, не занимался я пока всерьез программным RE,- потому про *.pdb и не в курсе. Теперь уже поспрашивал у знающих людей и стало ясно, что это такой, можно сказать, эксгибиционизм Altera. Формально вроде документы/исходники не выкладывали, но для понимающих (тех, кто "в танке", уж извините, закончу с этим идиоматическим выражением :-)) они содержат массу информации о внутреннем устройстве программных модулей. Тем не менее, за вашим маленьким файликом стоит большая работа, так что - респект и большое спасибо.

Цитата(jks @ Oct 27 2016, 17:04) *
Вообще я был уверен, что эна инфа уже давно находится Центральном Хранилище Артефактов, раз на марсоходе драйвера с 2011 года лежат.

Может, даже и лежит. Но там столько всего, и не всегда оно лежит в очевидном именно для вас месте... Так что аналогия с Хранилищем из "Индианы Джонса" вполне обоснованна :-).

Цитата
В результате сейчас пользую blaster через Альтеровскую либу jtag_client.
Там есть полный функционал. И можно писать переносимое ПО под Win/Linux.

Еще бОльшая уважуха и респект.

Цитата
Была идея JLink с родным драйвером подключить, чтобы разъемы не переставлять каждый раз.
Не знаю насколько имеет смысл выкаладывать в открытый доступ либу и описание работы с ней?

В открытый ли доступ - это, конечно, вам решать. Но лично мне это было бы интересно.
jks
Не стал создавать отдельную тему. Но правильней наверное было бы разместить куда-нибудь в раздел САПР. Undocumented Quartus?
Исходный код модуля драйвера под Win32/Win64 и небольшой пример по использованию библиотеки jtag_client.
Компиилируется под MSVS.
Нажмите для просмотра прикрепленного файла
Raven
Только сегодня заметил. Большое спасибо! Буду разбираться.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.