Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Digilent программатор Xilinx
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Страницы: 1, 2
iosifk
Цитата(rloc @ Jan 21 2014, 09:50) *
Получается UM232H-B - самая дешевая альтернатива внешним программаторам от 15 уе.

У меня вот какой вопрос.
По исходному, когда в памяти FTDI "родная" прошивка, то чип работает с "родными" драйверами...
А вот после того, как Вы прошивку поменяли и запущена ISE, можно ли при этом запустить самодельную программу с драйверами как при исходном состоянии... Или же теперь будут работать только Ксайлинсовские драйвера... Или надо выключать ISE и только после этого включать свою программу???

rloc
Цитата(iosifk @ Jan 22 2014, 13:55) *
У меня вот какой вопрос.

Xilinx работает с Digilent через plugin, который в свою очередь обращается через D2XX. Поэтому если своя программа тоже работает через D2XX, то одновременная работа возможна. Т.е. закрывать ничего не надо, но работать с микросхемой желательно поочередно, принцип такой: handle открыл - поработал - handle закрыл - передал управление другой программе. Так у меня сейчас и работает: FT_PROG, Impact и UserProg одновременно. Одновременность доступа не отслеживаю, не силен в программировании на С.
iosifk
Цитата(rloc @ Jan 22 2014, 14:55) *
Xilinx работает с Digilent через plugin, который в свою очередь обращается через D2XX. Поэтому если своя программа тоже работает через D2XX, то одновременная работа возможна. Т.е. закрывать ничего не надо, но работать с микросхемой желательно поочередно, принцип такой: handle открыл - поработал - handle закрыл - передал управление другой программе. Так у меня сейчас и работает: FT_PROG, Impact и UserProg одновременно. Одновременность доступа не отслеживаю, не силен в программировании на С.

Понял, спасибо!
Тогда жду результатов, чтобы тоже попробовать.. У меня есть JTAG на 2232... И осталось поменять прошивку, так?

rloc
Цитата(iosifk @ Jan 22 2014, 15:16) *
У меня есть JTAG на 2232...

Зачем перепрошивать? Через него и работать своей программой.
iosifk
Цитата(rloc @ Jan 22 2014, 15:28) *
Зачем перепрошивать? Через него и работать своей программой.

Своей давно опробовано. Теперь хочется и Импакт научить...
Maverick
Цитата(rloc @ Jan 22 2014, 11:10) *
Не пойму, зачем ZedBoard отдельный программатор, когда на плате есть интегрированный на FT232H? У Вас точно ZedBoard? Присланный файл соответствует HS1.

я знаю что программатор есть на плате, просто было любопытство проделать и запрограммировать c помощью другой платы с FTDI
ADA007
Статья по это теме была опубликована в журнале Компоненты и технологии №3 2014 г.. Процедура клонирования там расписана подробно, а так же в рамках статьи расписал назначение полей памяти и возможные способы ее использования. rolleyes.gif
rloc
iosifk помог?
ADA007
Цитата(rloc @ Mar 5 2014, 09:24) *
iosifk помог?

Да...iosifk и Maverick помогли, за что большое и человеческое им спасибо.
kleverd
Недавно у меня оказался в руках программатор Digilent HS2. Выглядит очень достойно. Компактен и стоит сравнительно недорого.
Плисы шьет быстро. Spartan3e с 500 киловентилями прошивает за несколько секунд.
Пользуясь случаем решил его немного поисследовать.

Пытался его укротить UrJtag-ом и OpenOCD.
Проги девайс видят, но при детекте возникает ошибка - Warning: TDO seems to be stuck at 1.
Эксперименты проводил с UrJtag 0.1 и OpenOCD версии 0.5-0.8. Притом Версия 0.8 не смогла получить доступ к устройству FTDI.

Как-то давно писал прогу для дерганья пинами ft232rl. Решил проверить как она будет дружить с 232HQ. И прога подружилась с микросхемой.
В результате выяснилось, что соответствие пинов микросхемы и выходов программатора следующее:
ADBUS5 - TMS
ADBUS6 - TDI
ADBUS7 - TCK

TDO найти таки не удалось. Как и говорил UrJtag - TDO seems to be stuck at 1.
Проверял только шину ADBUS. AСBUS моя прога дергать не умела.
Вывод - либо TDO подключен через буфер, который по умолчанию переведен в третье состояние, либо он заведен на AСBUS (маловероятно, нестандартная разводка?).


Вот содержимое EEPROM, считанное прогой Mprog:

Read EEPROM successful Device 0
0000 : 01 00 03 04 14 60 00 09 80 FA 08 00 00 00 A0 12 .. .. `. .. .. .. .. ..
0010 : B2 28 DA 1A 00 00 00 00 00 00 00 00 00 00 56 00 .. .. .. .. .. .. .. .V
0020 : 01 00 C7 92 6A 35 52 01 90 30 4A 74 61 67 48 73 .. .. 5j .R 0. tJ ga sH
0030 : 32 00 00 00 00 00 00 00 00 00 00 44 69 67 69 6C .2 .. .. .. .. D. gi li
0040 : 65 6E 74 20 4A 54 41 47 2D 48 53 32 00 00 00 00 ne .t TJ GA H. 2S .. ..
0050 : 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 .. .. .. .. .. .. .. ..
0060 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .. .. .. .. .. .. ..
0070 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .. .. .. .. .. .. ..

А вот содержимое того же еепрома, считанное прогой FTPROG
Read EEPROM Device 0
Word
0000: 0100 0304 1460 0009 80FA 0800 0000 A012
0008: B228 DA1A 0000 0000 0000 0000 0000 5600
0010: 0100 C792 6A35 5201 9030 4A74 6167 4873
0018: 3200 0000 0000 0000 0000 0044 6967 696C
0020: 656E 7420 4A54 4147 2D48 5332 0000 0000
0028: 0000 0000 0000 0000 1100 0000 0000 0000
0030: 0000 0000 0000 0000 0000 0000 0000 0000
0038: 0000 0000 0000 0000 0000 0000 0000 0000
0040: 0000 0000 0000 0000 0000 4800 0000 0000
0048: 0000 0000 0000 0000 0000 0000 0000 0000
0050: 1203 4400 6900 6700 6900 6C00 6500 6E00
0058: 7400 2803 4400 6900 6700 6900 6C00 6500
0060: 6E00 7400 2000 5500 5300 4200 2000 4400
0068: 6500 7600 6900 6300 6500 1A03 3200 3100
0070: 3000 3200 3400 3900 3900 3100 3800 3600
0078: 3100 3200 0203 0000 0000 0000 0000 902C

Последний вариант по всей видимости более актуален.

Vid - 0403 Pid - 6014
kleverd
По всей видимости пины ADBUS5 ADBUS6 ADBUS7 - это управление буферами соответствующих каналов, т.к сигнал на них инвертирован.
А распределение информационных линий стандартное (ADBUS0 - ADBUS3). Ну и методом исключения - буфер TDO управляется ADBUS4.
kleverd
Опытным путем подобрал содержимое файла с конфигурацией для JTAG HS2


interface ftdi
ftdi_vid_pid 0x0403 0x6014
adapter_khz 6000
ftdi_layout_init 0x20e8 0x3feb
ftdi_layout_signal nSRST -data 0x2000
ftdi_layout_signal GPIO2 -data 0x2000
ftdi_layout_signal GPIO1 -data 0x0200
ftdi_layout_signal GPIO0 -data 0x0100

Теперь вроде как сканирует цепь устройств.
Но ошибка выдается
Error: auto0.tap: IR capture error; saw 0x0000 not 0x0001
rloc
Цитата(kleverd @ Apr 30 2014, 02:02) *
Ну и методом исключения - буфер TDO управляется ADBUS4.

TDO - это вход, для него нет буфера с третьим состоянием, а ADBUS4 соединяется с ADBUS0 напрямую (возможно ранее была задумана адаптивная частота для ARM и цепочка замыкалась соответственно через процессор). Помимо буферов есть еще пара мультиплексоров. Один мультиплексор управляет выбором сигнала для выхода TMS: либо ADBUS1 (ACBUS6=0), либо ADBUS3 (ACBUS6=1). Другой мультиплексор управляет выбором источника для входа ADBUS2: либо сигнал обратно заворачивается с TMS (ACBUS7=0), либо берется со входа TDO (ACBUS7=1).
bloody-wolf
Форумчане, особенно rloc, я извиняюсь за "воскрешение" так сказать темы, но хотелось бы прояснить один момент, а именно распиновку JTAG SMT2 касательно части GPIO0..2 и ADBUS6/7
rloc некоторое количество постов назад написал:
"Отвечаю на вопросы:
1) Замкнуты ADBUS0 и ADBUS4.
2) EEPROM есть на всех платах - 93LC56BT (для HS2 и SMT2 VID_PID=0403_6014).
3) ADBUS7 можно управлять третьим состоянием буферов JTAG-выходов (0 - третье состояние).
4) ACBUS5 используется для сброса Zync, либо как GPIO2, ACBUS4 переводит выходной буфер в третье состояние, либо меняет направление (1 - выход, 0 - вход или третье состояние).
5) ACBUS0/ACBUS1 в SMT2 дополнительно используются для GPIO0/GPIO1, ACBUS3/ACBUS4 - для управления направлением соответствующих буферов GPIO (1 - выход, 0 - вход или третье состояние).
6) ADBUS5/ADBUS6 в HS2 и SMT2 дополнительно используются для режима SPI (подробности опускаю).

"
смущает в пунктах 4 и 5 наличие одной и тойже ноги ACBUS4, это ошибка или так и есть? хочеться повторить девайс, однако в наличии на предмет "пощупать" есть только SMT1, а хотелось бы SMT2.
возможно ли уточнить еще раз, на какие ноги ft232H какие функции назначены?


(по моему мнению скорее всего должно быть так, но могу ошибатьсяsm.gif
ACBUS0 = GPIO.0
ACBUS1 = GPIO.1
ACBUS2 = GPIO.0.ENABLE 1=out 0=in
ACBUS3 = GPIO.1.ENABLE 1=out 0=in
ACBUS4 = GPIO.2.ENABLE 1=out 0=in
ACBUS5 = GPIO.2
я так понимаю, что буферы на этих ногах что-то типа sn74lvc1t45


по мультиплексорам и тому, что digilent попытались сделать "2 wire JTAG", я так понимаю, что мультиплексоры что-то типа 74lvc1g157,
правда несколько непонятно по ADBUS5..7 (или ACBUS5..7) что чем управляет.

и остаются еще просто буферы на TCK ADBUS0 и TDI ADBUS1, что-то типа 74lvc1g125

и с резетом чет не сходится, он тупо на ACBUS5 генерится, или как то отдельно заведен.
rloc
Логика - из серии TinyLogic, типа NC7SZ125 с питанием от 1.65 В до 5.5 В. По соединениям - ближе к вечеру.
bloody-wolf
Цитата(rloc @ Dec 9 2014, 08:08) *
Логика - из серии TinyLogic, типа NC7SZ125 с питанием от 1.65 В до 5.5 В. По соединениям - ближе к вечеру.


жду с нетерпением wink.gif пасибы
rloc
Напоследок проверил, должно быть так:



HS2 - тоже самое, но без GPIOx. В ZedBoard - мультиплексоров нет, третье состояние TCK, TDI и TMS контролируется одним сигналом - AD7. И еще раз напомню, AD0 и AD4 соединяются вместе только потому, что раньше на AD4 возвращался тактовый сигнал через ARM и адаптивно выбиралась частота.
bloody-wolf
Цитата(rloc @ Dec 9 2014, 23:09) *
Напоследок проверил, должно быть так:


ВАХ! я у себя на листочке, так сказать, примерно тоже самое изобразил, непонятно было только с управленией OE буферов.
Я премного благодарствую вам, rloc. Пойду рисовать кусок схемы и платы )

А соответственно по памяти подойдет тот дамп, что здесь выкладывался, я правильно понял? 93LC56B... 16bit wide 2kbit
rloc
Да
dima2640
Digilent JTAG-HS2 + Программатор MBFTDI в среде Altera Quartus:

Pcb+schematic+eeprom

eeprom ept file:

[Basic Details]
Device Type=9
VID PID Type=1
USB VID=0403
USB PID=6010
[USB Power Options]
Bus Powered=1
Self Powered=0
Max Bus Power=500
[USB Serial Number Control]
Prefix=21
Use Fixed Serial Number=0
Fixed Serial Number=210249854606
[USB Remote WakeUp]
Enable Remote WakeUp=0
[Windows Plug and Play]
Enable Plug and Play=0
[USB String Descriptors]
Manufacturer=Digilent
Product=Digilent USB Device
[Programming Options]
Only Program Blank Devices=1
[BM Device Specific Options]
USB Version Number=0
Disable Serial Number=0
IO Pin Pull Down in Suspend=0
[Dual Device Specific Options A]
RS 232 mode=1
245 FIFO mode=0
245 CPU FIFO mode=0
OPTO Isolate mode=0
High Current Drive=0
[Dual Device Specific Options B]
RS 232 mode=1
245 FIFO mode=0
245 CPU FIFO mode=0
OPTO Isolate mode=0
High Current Drive=0
[Dual Device Driver Options A]
Virtual Com Port Driver=1
D2XX Driver=0
[Dual Device Driver Options B]
Virtual Com Port Driver=1
D2XX Driver=0
[R Device Specific Options]
Invert TXD=0
Invert RXD=0
Invert RTS#=0
Invert CTS#=0
Invert DTR#=0
Invert DSR#=0
Invert DCD#=0
Invert RI#=0
C0 Signal=-1
C1 Signal=-1
C2 Signal=-1
C3 Signal=-1
C4 Signal=-1
Enable Ext Osc=0
High Current I/O=0
Load D2XX Driver=0
In EndPoint Size=0
[DualHS Device Specific Options]
IFAIsFifo7=1
IFAIsFifoTar7=0
IFAIsFastSer7=0
AIsVCP7=0
IFBIsFifo7=0
IFBIsFifoTar7=0
IFBIsFastSer7=0
BIsVCP7=1
IOPinDriveDual=0
UTMIDrive=0
UTMIVendor=0
SuspendOnD7Low=0
[QuadHS Device Specific Options]
AIsVCP8=1
BIsVCP8=1
CIsVCP8=1
DIsVCP8=1
ARIisTXDEN=0
BRIisTXDEN=0
CRIisTXDEN=0
DRIisTXDEN=0
IOPinDriveQuad=0
rloc
Цитата(dima2640 @ Mar 29 2015, 20:07) *
Digilent JTAG-HS2 + Программатор MBFTDI в среде Altera Quartus:

Поясните, что Вы хотели этим сказать.
dima2640
Цитата(rloc @ Mar 29 2015, 20:18) *
Поясните, что Вы хотели этим сказать.


программатор Xilinx и программатор Альтеры
в одном флаконе
Архив смотрели?
rloc
Цитата(dima2640 @ Mar 29 2015, 21:28) *
программатор Xilinx и программатор Альтеры
в одном флаконе
Архив смотрели?

Где об этом в архиве сказано? Программатор поддерживается средой Quartus без дополнительных драйверов? С Altera не работаю, не в курсе.
dima2640
Цитата(rloc @ Mar 29 2015, 21:34) *
Где об этом в архиве сказано?

папка "Программатор MBFTDI в среде Altera Quartus".

Есть сайт marsohod.org по Альтере
там сделали плагин под Quartus
и программатор MBlaster на ft2232h mpsse
аналог "Digilent программатор"
А я развёл плату и слил дамп в файлы
для ftprog и Mprog может кому пригодиться.
Всё проверено и работает.
rloc
Почему нельзя было статично прилинковать ftd2xx.dll?
dima2640
Цитата(rloc @ Mar 29 2015, 21:51) *
Почему нельзя было статично прилинковать ftd2xx.dll?


Все вопросы к разработчикам(российским) на сайт Марсоход.
Я отвечаю только за схему, плату и слитые дампы с еепром.
toshas
Кто-нибудь знает в чем отличие "новых" SMT2 и HS3 ?
Все сводится к одному доп. пину сброса ?
Какая ножка FT2232 им управляет ?

http://store.digilentinc.com/all-products/jtag-programmers/

"The Xilinx Tools occasionally require the processor core of the Zynq-7000 to be reset during debug operations. The
Zynq platform processor has a pin dedicated for this purpose (PS_SRST_B). Driving the PS_SRST_B pin low causes
the processor to reset while maintaining any existing break points and watch points. The JTAG-HS3 is capable of
driving this pin low under the instruction of Xilinx’s SDK during debugging operations. In order for this to work, pin
14 of Xilinx JTAG header on the target board must be connected to the PS_SRST_B pin of the Zynq (see Figs. 3 & 4).

The JTAG-HS3 uses an open drain buffer to drive pin 14 of the Xilinx JTAG header (see Fig. 5). This allows the HS3 to
drive the PS_SRST_B pin when VCC_MIO1 is referenced to a different voltage than VCCO_0 (see Fig. 6).

Should an accidental short occur between pin 14 and GND, the 100 ohm series resistor protects the buffer from
being damaged. While this resistor protects the buffer from being damaged, it also limits the drive strength of the
buffer. Therefore, it is necessary for the pull-up resistor (RPU) used to establish the voltage level on PS_SRST_B to
be greater than or equal to 1.5K ohms. At the time of writing, Xilinx ZC702, Xilinx ZC706, and Avnet® MicroZed™ all
feature 10K pull-ups on pin 14 of the their respective Xilinx JTAG headers. For compatibility with other evaluation
platforms, please consult the manufacturer’s schematic."


Спасибо!
Zig
Цитата(toshas @ Jan 23 2017, 11:48) *
Кто-нибудь знает в чем отличие "новых" SMT2 и HS3 ?

Есть вскрытый HS3 (с растянутой и снятой термоусадкой).
В нем как и в HS2 не FT2232, а FT232.
Могу под микроскопом посмотреть с какой ноги идет ресет и снять дамп (если научите как).
rloc
Цитата(toshas @ Jan 23 2017, 11:48) *
Кто-нибудь знает в чем отличие "новых" SMT2 и HS3 ?
Все сводится к одному доп. пину сброса ?
Какая ножка FT2232 им управляет ?

Для кого рисовал?

В SMT2 есть дополнительный режим 2-проводного JTAG (или 2-wire интерфейса), на который отводится несколько дополнительных буферов и еще есть пара дополнительных GPIO (пользовательских, двунаправленных). С точки зрения программирования Xilinx особой разницы нет. 2-проводный интерфейс сделан на будущее, под новый стандарт, можно использовать для ARM (SWD) - официальной поддержки нет, но поле для творчества есть.
toshas
Гляжу в книгу, вижу цветочек)
rloc, Спасибо!
usserr
Немного поделюсь и своим опытом на эту тему, т.к. в безуспешных (до текущего момента) попытках провел неделю точно.

Мною был заказан и успешно получен комплект с Алиэкспресс под названием ALINX, содержащий отладку на базе Spartan6 xc6slx9 и программатор следующего вида:



Как потом выяснилось, такой программатор больше нигде кроме ALINX не применяется, однако тогда я это не проверил и понадеялся на добросовестность китайцев. Ну и в итоге, естественно, по закону подлости в ISE 14.7 он не завелся sm.gif Вот тогда я начал копать всю эту тему, вышел на этот форум и другие источники. Выяснилось, что программатор этот на основе FT232H (а значит закос под Digilent HS2), хотя непосредственно с чипа как-будто были стерты все обозначения и тип был установлен через FT_Prog. Через него же было установлено, что китайцы все же записали в EEPROM некоторые нужные байты, но, видимо, что-то напутали и программатор никак в iMPACT не определялся. Дальнейшие разборки показали, что требуется шить именно User Area и тут уже начали опускаться руки, т.к. инфы по этому поводу мало, она часто путает, а скудные образцы кода были почти никак не комментированы (не в обиду @ADA007 sm.gif ).

Здесь я решил уйти немного в сторону и присобачить к злосчастному программатору UrJTAG и/или OpenOCD. В общем под Виндой (проверял на 7ке, т.к. версию ISE для 10ки у меня не тянет проц в следствие отсутствия виртуализации) достаточно установить официальный установочник драйверов VCP/D2XX (https://www.ftdichip.com/Drivers/VCP.htm или https://www.ftdichip.com/Drivers/D2XX.htm, там одно и то же, нажимать на ссылку в разделе Comments), возможно потребуется немного поиграть с заменой драйверов в Zadig, если уже были установлены какие-либо драйвера до этого или успели уже что-то понаустанавливать. В конце концов UrJTAG научится определять программатор:
Код
cable ft2232
(да, ft2232, даже если у вас, как и у меня, 232h). Далее, чтобы работала команда
Код
detect
нужно предварительно сказать UrJTAG где ему искать конфигурацию. Для этого с сайта Xilinx качаем BSDL файлы, распаковываем и прописываем команду
Код
bsdl path C:\Users\Chufyrev\Xilinx\xc6s-2014
и теперь можно детектировать chain (в папке можно оставить только bsdl-файлик для вашей ПЛИСины). Вместо прошивки непосредственно bitstream я генерировал в iMPACT svf-файл:
  1. Жмем Output - SVF File - Create
  2. Выбираем наш сгенерированный ранее bit-файл
  3. Появляется картинка чипа, жмем на него, слева Program
  4. Из того же меню Output говорим Stop SVF

Теперь у нас есть SVF, который мы можем скормить UrJTAG. После пары десятков прошивок рука набьется в этих действиях до автоматизма sm.gif Все команды UrJTAG можно запилить в отдельный скриптик для ускорения процесса:
Код
cable ft2232
bsdl path C:\Users\User\Xilinx\xc6s-2014
detect
svf C:\Users\User\Xilinx\projects\project_1\project_1.svf

Под линуксами UrJTAG заводиться решительно не хотел, а OpenOCD не принимал программатор вообще нигде. Проблема была в драйверах, UrJTAG по умолчанию пользуется libftdi, в то время как оказались нужны ftd2xx. Для решения следует вручную скомпилировать UrJTAG с ftd2xx, используя соответствующую опцию. Процесс описан в доках и на просторах сети, однако там есть свои нюансы, если кто заинтересуется, могу изложить подробнее. Скажу только, что в итоге UrJTAG заработал и под пингвином. OpenOCD я с тех пор не тестировал, однако есть подозрения что подобный трюк может завести и его.

Тут решено было вернуться к баранам попыткам подружить все-таки программатор и iMPACT напрямую, а для этого, как мы знаем, нужно прошивать User Area. Вот здесь мы возвращаемся к D2XX, поскольку именно этот драйвер умеет это делать. Берем исходники по ссылке выше, на этот раз не из секции Comments. В версии для Linux находим примеры на все случаи жизни, в т.ч. Read/Write UA. Нужное содержание этого самого UA взял из этой ветки, скомпилировал программу, прошило и ... лажа. Не смотря на отсутствие ошибок работы функции FT_EE_UAWrite() вся EEPROM затерлась 0xFF, даже то, что было "в наличии". Определяемый размер UA тоже изменился, возможно это связано с тем, что на размер UA влияет строка Manufacturer/Model/SerialNumber. Но вообще какое-то странное поведение. Решил уже проверить то же самое под Windows, установил Visual Studio, слинковал ftd2xx.lib (внимание, берите тот файл, который весит ~20кБ, я долго разбирался со второй версией на 1МБ) (либу можно взять все по той же ссылке выше). Результат тот же - 0xFF. Ну в общем фиг знает, я накосячил, или драйвер, но вернулся я еще раз к методу ADA007 и его статье в КиТ. После конфигурации FT_Prog'ом и запуска FTDI_User_Area_Writer.exe программатор распознался и iMPACT'ом! Повезло, по всей видимости, что размер EEPROM у нас оказался одинаковым, 128Б (EEPROM 93C56). Если что, UrJTAG воспринимает FT232H в любом виде, вне зависимости от содержания EEPROM в принципе, так что как запасной вариант остается всегда.

Под Linux новопрошитый программатор не распознался, но это скорее всего из-за отсутствия Digilent Plugin, который в Ubuntu, как я понял, поставить надо еще постараться.
usserr
UPDATE: Под Ubuntu 18 также программатор увиделся, нужно было поставить Digilent Plugin.
rloc
В чем вопрос? Happy story?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.