PDA

Просмотр полной версии : Программатор микросхем программируемой логики(CPLD)



Mick
02.01.2016, 10:36
В теме, где обсуждалась моя видеокарта http://zx-pk.ru/showthread.php?t=10817&p=844672&viewfull=1#post844672 , затронули вопрос - как разлочивать заблокированный JTAG режим в микросхемах серии EPM. В частности интересен вопрос так называемой разлочки наиболее распространенных EPM7032(64) и EPM3032(64).
Поскольку данная тема является тайной за семью печатей и в открытом доступе информации совсем как бы и нет, то нет, как я считаю зазорного в том, чтобы так сказать исследовать этот вопрос на благо общества и на зло жадным "буржуям".
Так вот, в процессе обсуждения выяснили что программатор "Chipprog+" умеет разлочивать и прошивать серию EPM7032(64). Был собран соответствующий адаптер и опытная залоченная микросхема успешна выдержала испытание, т.е. JTAG снова вернулся и микросхема готова была к повторному использованию.
Конечно понятно, что этот подход интересен для тех, кто обладает этим программатором. Но что делать, у кого его нет. Тут остается казалось бы только одно, снимать эпюры происходящих процессов с реального программатора, но набрел я у себя на жестком диске на одну папку. Как то давно уже искал ответ на этот вопрос и попалась информация о программаторе Hilo-All 03. Я что смог выкачать, скачал. Так вот этот программатор тоже умеет программировать эти серии микросхем и я как понял тоже в высоковольтном режиме.
Он хоть и рассчитан на работу под DOS, но в принципе можно разобраться как и что он дергает в процессе работы с CPLD, тем более что есть схема от него.
Так вот установил что там на каждый тип микросхемы свой исполнительный модуль и файлы A70X.EXE, A70XE.EXE отвечают за работу с этими микрухами. Иными словами, если их попробовать дизассемблировать и провести соответствия со схемой, то возможно и можно получить искомый результат.

Вот ссылка на архив, то что я выкачивал. https://yadi.sk/d/LZKLwB3rmdTjY

Вообщем, тема для обсуждения кому интересно.

HardWareMan
02.01.2016, 10:47
Я тоже выкачивал здесь (http://matthieu.benoit.free.fr/hilosystem_all-07_universal_programmer.htm) все, что мог. И даже скормил Иде А7074.ЕХЕ. Но там слишком много мишуры + в программе будут команды железке, а не микросхеме. Отсюда вывод: скан процесса все же актуален.

PS ЕХЕ там запакованы PKLite'ом.

PPS А тебе еще не пришел логик? Я бы очень быстро замутил ресторер по эпюрам.

Mick
02.01.2016, 10:54
Я тоже выкачивал здесь (http://matthieu.benoit.free.fr/hilosystem_all-07_universal_programmer.htm) все, что мог. И даже скормил Иде А7074.ЕХЕ. Но там слишком много мишуры + в программе будут команды железке, а не микросхеме. Отсюда вывод: скан процесса все же актуален.

PS ЕХЕ там запакованы PKLite'ом.

Да, команды к железке. Но если поглядишь схему железки, то там нет ни одного микроконтроллера, чисто регистры, ЦАП, ключи. По крайней мере можно определить к каким он ногам долбится.
Второе, да мишуры в программе много, но там можно определить какие процедуры относятся к взаимодействию с программером, изучить так сказать сам алгоритм.
Да и на некоторые адаптеры там есть схемы.

И кстати, если правильно понимаю схему адаптера ADP7064AE и

for Altera EPM3032ALC44/TC44, EPM3064ALC44/TC44 and EPM7064AELC44/TC44
This is only for ALL07 (executable is A7064.exe) as ALL03 does NOT know any MAX7000AE nor MAX3000A.
This Adapter is necessary to program CPLDs with locked JTAG pins, so not a simple ISP Adapter.
Schematic contains pinout for all available packages.

то вроде для них не нужен сложный алгоритм для разлочки микрух.

HardWareMan
02.01.2016, 11:03
Железка тупая, согласен. Но даже тупая железка может иметь хитрожопое управление, будучи подключена к такому интерфейсу как LPT. Например, BiDi имеет 2 ВВ55, и там есть команды настройки их. Железка тупая, но управление дикое, никакой прозрачности. Посему я все же стараюсь собрать инфу со всех доступных мест.

Вот вам дизасс, чтобы не мучится с анпакерами. Использован С, так что много стандартного кода, те кто ковырял кишки С программ смогут разобраться быстрее меня.


вроде для них не нужен сложный алгоритм для разлочки микрух.
Насколько не сложный?
http://savepic.ru/8234484.png

PS В твоих доках на адаптер указан только JTAG. Т.е., он вроде как JTAGом и стирается как обычно, нужно только разблокировать его Vpp на ноге OE. Но я так пробовал через кактус - не проканывало. Либо Кактус перед стиранием делает чтение ID а оно запрещено: логично что в этом режиме микра должна принимать только стирание согласно безопасности.

Mick
02.01.2016, 11:39
Насколько не сложный?


Этот адаптер предназначен для EPM7032LC44, тоесть просто для MAX7000, а не для MAX7000S. У первого нет JTAG как и у MAX7000E, хотя китайцы могут абсолютно любую маркировку нанести.
У меня есть EPM7064LC44, которая вроде бы обычная MAX7000, а шьется как обычная EPM7064SLC44 через JTAG.

- - - Добавлено - - -



PPS А тебе еще не пришел логик? Я бы очень быстро замутил ресторер по эпюрам.

30 декабря пришлепал. Только один фиг программатор на работе.

vfiuchcikicshuusrch
02.01.2016, 12:11
блин :) у меня до сих пор валяются залоченные epm7128 там про них что нибудь есть ?

Mick
02.01.2016, 12:20
блин :) у меня до сих пор валяются залоченные epm7128 там про них что нибудь есть ?

Файл A70XE.EXE умеет 128 шить



dseg:0042 aEpm7128elc84En db 'EPM7128ELC84 (Enhanced)',0
dseg:005A aEpm7128elc84Co db 'EPM7128ELC84 (Compatibility)',0
dseg:0077 aEpm7128eqc100E db 'EPM7128EQC100 (Enhanced)',0
dseg:0090 aEpm7128eqc100C db 'EPM7128EQC100 (Compatibility)',0
dseg:00AE aEpm7160elc84En db 'EPM7160ELC84 (Enhanced)',0
dseg:00C6 aEpm7160elc84Co db 'EPM7160ELC84 (Compatibility)',0
dseg:00E3 aEpm7160eqc100E db 'EPM7160EQC100 (Enhanced)',0
dseg:00FC aEpm7160eqc160E db 'EPM7160EQC160 (Enhanced)',0
dseg:0115 aEpm7160eqc160C db 'EPM7160EQC160 (Compatibility)',0
dseg:0133 aEpm7128slc84_0 db 'EPM7128SLC84',0
dseg:0140 aEpm7128sqc10_0 db 'EPM7128SQC100',0


Я лично пока ковырялся с файлом A7064.EXE, так как хочется для начала с мелкими разобраться
Выделял там функции меню, вот одна из них Erase, по сути она небольшая.


; ---------------------------------------------------------------------------
;
; Erase
;

sub_4D5_2364: proc far
seg002:2364
seg002:2364 var_4 = byte ptr -4
seg002:2364 var_2 = byte ptr -2
seg002:2364
seg002:2364 push bp
seg002:2365 mov bp, sp
seg002:2367 mov ax, 4
seg002:236A call __aFchkstk
seg002:236F mov [bp+var_2], 0
seg002:2373 mov ax, 4Fh ; 'O'
seg002:2376 push ax
seg002:2377 mov cx, 17h
seg002:237A push cx
seg002:237B mov dx, 28h ; '('
seg002:237E push dx
seg002:237F mov bx, 0Bh
seg002:2382 push bx
seg002:2383 call sub_876_135A
seg002:2388 add sp, 8

seg002:238B mov ax, 3Fh ; '?'
seg002:238E push ax
seg002:238F mov ax, 4Fh ; 'O'
seg002:2392 push ax
seg002:2393 mov ax, 17h
seg002:2396 push ax
seg002:2397 mov ax, 28h ; '('
seg002:239A push ax
seg002:239B mov ax, 0Bh
seg002:239E push ax
seg002:239F call sub_876_14F6
seg002:23A4 add sp, 0Ah

seg002:23A7 mov ax, 1Fh
seg002:23AA push ax
seg002:23AB mov ax, 34h ; '4'
seg002:23AE push ax
seg002:23AF mov ax, 0Bh
seg002:23B2 push ax
seg002:23B3 mov cx, 2Ch ; ','
seg002:23B6 push cx
seg002:23B7 push ax
seg002:23B8 call sub_876_14F6
seg002:23BD add sp, 0Ah

seg002:23C0 mov ax, 2Ch ; ','
seg002:23C3 push ax
seg002:23C4 mov ax, 0Bh
seg002:23C7 push ax
seg002:23C8 call sub_876_1930
seg002:23CD add sp, 4

seg002:23D0 mov ax, aErase ;1AC2h
seg002:23D3 push ax
seg002:23D4 call print_string
seg002:23D9 add sp, 2
seg002:23DC
seg002:23DC loc_4D5_23DC: ; CODE XREF: sub_4D5_2364+D0j
seg002:23DC ; sub_4D5_2364+1DEj ...
seg002:23DC mov ax, 4Eh ; 'N'
seg002:23DF push ax
seg002:23E0 mov ax, 0Ch
seg002:23E3 push ax
seg002:23E4 mov cx, 29h ; ')'
seg002:23E7 push cx
seg002:23E8 push ax
seg002:23E9 call sub_876_197E
seg002:23EE add sp, 8

seg002:23F1 mov ax, 29h ; ')'
seg002:23F4 push ax
seg002:23F5 mov ax, 0Ch
seg002:23F8 push ax
seg002:23F9 call sub_876_1930
seg002:23FE add sp, 4
seg002:2401 mov ax, aReadyToEraseYC ;1ACCh
seg002:2404 push ax
seg002:2405 call print_string
seg002:240A add sp, 2

seg002:240D call sub_DD8_1296
seg002:2412 mov [bp+var_4], al
seg002:2415 cmp al, 0Dh
seg002:2417 jz loc_4D5_2421
seg002:2419 cmp al, 0Ah
seg002:241B jz loc_4D5_2421
seg002:241D cmp al, 1Bh
seg002:241F jnz loc_4D5_242A
seg002:2421
seg002:2421 loc_4D5_2421: ; CODE XREF: sub_4D5_2364+B3j
seg002:2421 ; sub_4D5_2364+B7j
seg002:2421 call sub_DD8_126E
seg002:2426 jmp loc_4D5_25C8
seg002:2429 ; ---------------------------------------------------------------------------
seg002:2429 nop
seg002:242A
seg002:242A loc_4D5_242A: ; CODE XREF: sub_4D5_2364+BBj
seg002:242A cmp [bp+var_4], 59h ; 'Y'
seg002:242E jz loc_4D5_2436
seg002:2430 cmp [bp+var_4], 79h ; 'y'
seg002:2434 jnz loc_4D5_23DC
seg002:2436
seg002:2436 loc_4D5_2436: ; CODE XREF: sub_4D5_2364+CAj
seg002:2436 mov al, [bp+var_4]
seg002:2439 sub ah, ah
seg002:243B push ax
seg002:243C call sub_876_1BE8
seg002:2441 add sp, 2

seg002:2444 mov ax, 4Eh ; 'N'
seg002:2447 push ax
seg002:2448 mov ax, 16h
seg002:244B push ax
seg002:244C mov ax, 29h ; ')'
seg002:244F push ax
seg002:2450 mov cx, 0Dh
seg002:2453 push cx
seg002:2454 call sub_876_197E
seg002:2459 add sp, 8

seg002:245C mov ax, 3Fh ; '?'
seg002:245F push ax
seg002:2460 mov ax, 4Fh ; 'O'
seg002:2463 push ax
seg002:2464 mov cx, 17h
seg002:2467 push cx
seg002:2468 mov cx, 28h ; '('
seg002:246B push cx
seg002:246C mov cx, 0Ch
seg002:246F push cx
seg002:2470 call sub_876_14F6
seg002:2475 add sp, 0Ah

seg002:2478 call sub_DD8_1398
seg002:247D dec ax
seg002:247E jnz loc_4D5_24B2
seg002:2480 call sub_0_15A6
seg002:2485 dec ax
seg002:2486 jnz loc_4D5_24B2
seg002:2488 mov ax, 29h ; ')'
seg002:248B push ax
seg002:248C mov cx, 0Dh
seg002:248F push cx
seg002:2490 call sub_876_1930
seg002:2495 add sp, 4
seg002:2498 mov ax, aThePacInsert_5 ;1AE5h
seg002:249B push ax
seg002:249C call print_string
seg002:24A1 add sp, 2

seg002:24A4 mov ax, 4Fh ; 'O'
seg002:24A7 push ax
seg002:24A8 mov ax, 4Ah ; 'J'
seg002:24AB push ax
seg002:24AC mov ax, 0Dh
seg002:24AF jmp loc_4D5_257F
seg002:24B2 ; ---------------------------------------------------------------------------
seg002:24B2
seg002:24B2 loc_4D5_24B2: ; CODE XREF: sub_4D5_2364+11Aj
seg002:24B2 ; sub_4D5_2364+122j
seg002:24B2 cmp word_1F45_3290, 0
seg002:24B7 jz loc_4D5_24C2
seg002:24B9 mov ax, 0AFh ; 'ï'
seg002:24BC push ax
seg002:24BD mov ax, aEraseNow____3 ;1B07h
seg002:24C0 jmp short loc_4D5_24C9
seg002:24C2 ; ---------------------------------------------------------------------------
seg002:24C2
seg002:24C2 loc_4D5_24C2: ; CODE XREF: sub_4D5_2364+153j
seg002:24C2 mov ax, 0F0h ; '¨'
seg002:24C5 push ax
seg002:24C6 mov ax, aEraseNow____4 ;1B15h
seg002:24C9
seg002:24C9 loc_4D5_24C9: ; CODE XREF: sub_4D5_2364+15Cj
seg002:24C9 push ax
seg002:24CA mov ax, 29h ; ')'
seg002:24CD push ax
seg002:24CE mov ax, 0Dh
seg002:24D1 push ax
seg002:24D2 call sub_876_3370
seg002:24D7 add sp, 8
seg002:24DA push cs
seg002:24DB call near ptr sub_4D5_25FE
seg002:24DE mov [bp+var_2], al
seg002:24E1 cmp word_1F45_3290, 0
seg002:24E6 jz loc_4D5_24F2
seg002:24E8 mov ax, 3Fh ; '?'
seg002:24EB push ax
seg002:24EC mov ax, aEraseNow____5 ;1B23h
seg002:24EF jmp short loc_4D5_24F9
seg002:24F1 ; ---------------------------------------------------------------------------
seg002:24F1 nop
seg002:24F2
seg002:24F2 loc_4D5_24F2: ; CODE XREF: sub_4D5_2364+182j
seg002:24F2 mov ax, 7
seg002:24F5 push ax
seg002:24F6 mov ax, aEraseNow____6 ;1B31h
seg002:24F9
seg002:24F9 loc_4D5_24F9: ; CODE XREF: sub_4D5_2364+18Bj
seg002:24F9 push ax
seg002:24FA mov ax, 29h ; ')'
seg002:24FD push ax
seg002:24FE mov ax, 0Dh
seg002:2501 push ax
seg002:2502 call sub_876_3370
seg002:2507 add sp, 8
seg002:250A mov ax, 29h ; ')'
seg002:250D push ax
seg002:250E mov ax, 0Eh
seg002:2511 push ax
seg002:2512 call sub_876_1930
seg002:2517 add sp, 4

seg002:251A cmp [bp+var_2], 0
seg002:251E jnz loc_4D5_255A
seg002:2520 mov ax, aEraseOk_0 ;1B3Fh
seg002:2523 push ax
seg002:2524 call print_string
seg002:2529 add sp, 2

seg002:252C call sub_DD8_1246
seg002:2531 dec word_1F45_2E40
seg002:2535 js loc_4D5_2546
seg002:2537 mov bx, word_1F45_2E3E
seg002:253B mov byte ptr [bx], 7
seg002:253E inc word_1F45_2E3E
seg002:2542 jmp loc_4D5_23DC
seg002:2545 ; ---------------------------------------------------------------------------
seg002:2545 nop
seg002:2546
seg002:2546 loc_4D5_2546: ; CODE XREF: sub_4D5_2364+1D1j
seg002:2546 mov ax, 2E3Eh
seg002:2549 push ax
seg002:254A mov ax, 7
seg002:254D push ax
seg002:254E call __flsbuf
seg002:2553 add sp, 4
seg002:2556 jmp loc_4D5_23DC
seg002:2559 ; ---------------------------------------------------------------------------
seg002:2559 nop
seg002:255A
seg002:255A loc_4D5_255A: ; CODE XREF: sub_4D5_2364+1BAj
seg002:255A cmp [bp+var_2], 1
seg002:255E jnz loc_4D5_2596
seg002:2560 push word_1F45_3298
seg002:2564 push word_1F45_3296
seg002:2568 mov ax, aEraseErrorAt_0 ;1B4Ah
seg002:256B push ax
seg002:256C call print_string
seg002:2571 add sp, 6
seg002:2574 mov ax, 4Fh ; 'O'
seg002:2577 push ax
seg002:2578 mov ax, 3Eh ; '>'
seg002:257B push ax
seg002:257C mov ax, 0Eh
seg002:257F
seg002:257F loc_4D5_257F: ; CODE XREF: sub_4D5_2364+14Bj
seg002:257F ; sub_4D5_2364+262j
seg002:257F push ax
seg002:2580 mov cx, 29h ; ')'
seg002:2583 push cx
seg002:2584 push ax
seg002:2585 call sub_876_14F6
seg002:258A add sp, 0Ah
seg002:258D call sub_876_1624
seg002:2592 jmp loc_4D5_23DC
seg002:2595 ; ---------------------------------------------------------------------------
seg002:2595 nop
seg002:2596
seg002:2596 loc_4D5_2596: ; CODE XREF: sub_4D5_2364+1FAj
seg002:2596 cmp [bp+var_2], 2
seg002:259A jz loc_4D5_259F
seg002:259C jmp loc_4D5_23DC
seg002:259F ; ---------------------------------------------------------------------------
seg002:259F
seg002:259F loc_4D5_259F: ; CODE XREF: sub_4D5_2364+236j
seg002:259F mov ax, 29h ; ')'
seg002:25A2 push ax
seg002:25A3 mov cx, 16h
seg002:25A6 push cx
seg002:25A7 call sub_876_1930
seg002:25AC add sp, 4
seg002:25AF mov ax, aIncorrectDev_7 ;1B61h
seg002:25B2 push ax
seg002:25B3 call print_string
seg002:25B8 add sp, 2
seg002:25BB mov ax, 4Fh ; 'O'
seg002:25BE push ax
seg002:25BF mov ax, 3Ah ; ':'
seg002:25C2 push ax
seg002:25C3 mov ax, 16h
seg002:25C6 jmp short loc_4D5_257F
seg002:25C8 ; ---------------------------------------------------------------------------
seg002:25C8
seg002:25C8 loc_4D5_25C8: ; CODE XREF: sub_4D5_2364+C2j
seg002:25C8 mov ax, 4Fh ; 'O'
seg002:25CB push ax
seg002:25CC mov cx, 17h
seg002:25CF push cx
seg002:25D0 mov dx, 28h ; '('
seg002:25D3 push dx
seg002:25D4 mov bx, 0Bh
seg002:25D7 push bx
seg002:25D8 call sub_876_197E
seg002:25DD add sp, 8
seg002:25E0 mov ax, 7Fh ; ''
seg002:25E3 push ax
seg002:25E4 mov ax, 4Fh ; 'O'
seg002:25E7 push ax
seg002:25E8 mov ax, 17h
seg002:25EB push ax
seg002:25EC mov ax, 28h ; '('
seg002:25EF push ax
seg002:25F0 mov ax, 0Bh
seg002:25F3 push ax
seg002:25F4 call sub_876_14F6
seg002:25F9 mov sp, bp
seg002:25FB pop bp
seg002:25FC retf
seg002:25FC sub_4D5_2364 endp

aErase: db ' Erase : ',0
aReadyToEraseYC: db 'Ready to erase (Y/<CR>)?',0
aThePacInsert_5: db 'The PAC inserted is not correct !',0
aEraseNow____3: db 'Erase now ...',0
aEraseNow____4: db 'Erase now ...',0
aEraseNow____5: db 'Erase now ...',0
aEraseNow____6: db 'Erase now ...',0
aEraseOk_0: db 'Erase ok !',0
aEraseErrorAt_0: db 'Erase error ! at %04hX',0
aIncorrectDev_7: db ' incorrect Device ',0

HardWareMan
02.01.2016, 13:12
2Mick В общем, у меня на 4х EPM3032ALC44 (взятых с игрового автомата FairPlay) JTAG используется так, что на TDI имеем CLK/4. По панельке я проверил, там стандартное включение и JTAG+HV_OE. Простая подача 12В (по идее 11 надо но мне пофигу было) не прекращает генерацию на выводе TDI. Самое паскудное то, что этот TDI используется именно для передачи данных в CPLD. Если верить в восстановление JTAG (полным стиранием?) конкретно этой схемой, то получается нужна комбинация на TMS/TCK+HV_OE. Посканишь?

Tronix
04.01.2016, 09:29
Тема то интересная. Но как по мне - проще снять все-таки эпюры с программатора умеющего шить альтеры с залоченным JTAG. У меня правда нет таких альтер, все что есть - все с JTAG. Но порой не хватает 2-3 свободных пинов как раз, приходится выносить снаружи и городить на мелко-логике. То есть если бы была возможность потом такие альтеры перепрошивать, я бы сам постоянно юзал JTAG как gpio.

По поводу досовой софтины - можно в эмуляторе записать все обращения к LPT-порту. Только я не знаю, как софт отреагирует на отсутствие железки.

Mick
04.01.2016, 09:37
По поводу досовой софтины - можно в эмуляторе записать все обращения к LPT-порту. Только я не знаю, как софт отреагирует на отсутствие железки.

Он вроде при запуске определяет наличие программатора.

- - - Добавлено - - -


Тема то интересная. Но как по мне - проще снять все-таки эпюры с программатора умеющего шить альтеры с залоченным JTAG. У меня правда нет таких альтер, все что есть - все с JTAG. Но порой не хватает 2-3 свободных пинов как раз, приходится выносить снаружи и городить на мелко-логике. То есть если бы была возможность потом такие альтеры перепрошивать, я бы сам постоянно юзал JTAG как gpio.


Чтобы сделать свою железку аля программатор альтер, нужно еще и с форматом файла pof как минимум тоже разобраться. Тоесть один фиг перелопатить надо софтинку.

perestoronin
04.01.2016, 09:51
что программатор "Chipprog+" умеет разлочивать и прошивать
Сканить работу ЧипПрога48 пока не чем, да и запасного ЧипПрога48 всё ещё по прежнему нет, поэтому стрёмно лазить по выводам панельки программатора.
Но если нужно разлочить+стереть микросхемы, или прошить в параллельном режиме, собирайте до кучи и приносите, присылайте - прошью безплатно.
В целом тема очень интересна, в том числе применительно к пониманию устройства и принципов работы подобных программаторов и ПО к ним.
http://www.phyton.ru/programmers/chipprog-48

с форматом файла pof как минимум тоже разобраться
Хотелось бы разобраться в этом двоичном сериализованном формате, но с целью конвертации готовых прошивок под более новые или более ёмкие подобные микросхемы.
http://quartushelp.altera.com/15.0/mergedProjects/reference/glossary/def_pof.htm
Может кто поделится ссылочками на конверторы под различные, особенно старые микросхемы. На примере анализа устройства подобных конверторов можно восстановить и структуру этого двоичного сериализованного формата и научиться самому сериализовать свои задачи и проекты в этот формат.

Mick
04.01.2016, 09:58
Сканить работу ЧипПрога48 пока не чем, да и запасного ЧипПрога48 всё ещё по прежнему нет, поэтому стрёмно лазить по выводам панельки программатора.
Но если нужно разлочить+стереть микросхемы, или прошить в параллельном режиме, собирайте до кучи и приносите, присылайте - прошью безплатно.
В целом тема очень интересна, в том числе применительно к пониманию устройства и принципов работы подобных программаторов и ПО к ним.

Это понятно, но если допустим тебе пару байт поменять в прошивке. Тебе опять высылать, конечно это глупо.
По сути если JTAG тот же самый (в смысле формат команд) что и для AVR, то AVR по JTAGу шить я умею. Нужны только команды и их формат. Опять же надо лезть в DOS программу и разбираться :)

perestoronin
04.01.2016, 10:48
тебе пару байт поменять в прошивке.
Для хобби-прошивок залочивать микросхему нецелесообразно.
Забивать под завязку использование всех ног микросхемы в своих хобби-проектах, не оставляя свободных ног для подключения недорого бластера - тоже неудобно, придется извлекать (выпаивать) микросхему.
Я же сделал предложение для тех случаев, когда накопилось кучка микросхем, накопившиеся в ходе разбора устаревших коммерческих проектов, которые выкинуть жалко и есть новые проекты куда эти старые микросхемы можно приспособить, но денег на приобретение программатора, умеющего стирать и программировать использование всех ног микросхемы, жалко.
Да, кстати, адаптеры то я к ЧипПрогу48 пока ещё не приобрел, и приобретать (или изготавливать) их буду по мере наличия лишних денег и потребности в этих адаптерах.

Я тоже выкачивал здесь все, что мог.
Благодарю, теперь есть откуда черпать вдохновение в создании монстров аля uniprog или стерх-011, вместо использования недорого продвинутого микроконтроллера в новых разработках и репликах подобных по функциям устройств.
http://www.programmator.ru/
http://www.sterh.com/
http://www.phyton.ru/

s_kosorev
04.01.2016, 11:44
По сути если JTAG тот же самый (в смысле формат команд) что и для AVR, то AVR по JTAGу шить я умею.
JTAG он и в африке JTAG, команды, ну тут сложнее, у AVR эмулится что то вроде байтового режима с обменами команд, у CPLD чистый стрим, сохрани прошивку в формате SVF будет в текстовом файле поток для JTAG, почитай что такое SVF и в природе есть уже куча SVF плееров


Там принцип примерно такой, послать 107бит в CPLD, сравнить выдавленые 107 с маской, если ок то записать следующие 23 бита итд

HardWareMan
04.01.2016, 19:23
Вы не поверите, но сегодня мой знакомый принес мне вот это чудо (http://www.xeltek.com/universal-programmers/universal-programmers-superpro-5000e):
http://savepic.ru/8194121.jpg
И Альтер там много, вот нужные:
http://savepic.ru/8223816.png
А помимо их есть и совсем экзотические. Осталось сделать необходимый переходник и вперед и с песней. ;)

CodeMaster
04.01.2016, 19:33
Вы не поверите, но сегодня мой знакомый принес мне вот это чудо:

Иногда Дед Мороз задерживается...

HardWareMan
04.01.2016, 20:04
Иногда Дед Мороз задерживается...
Возможно. только вот нужная нам сокетка (http://www.xeltek.com/socket-adapters/cx2044-socket-adapter) стоит по конски. Даже у китайцев, а что делать? Буду заказывать. Китайцы предлагают за 85+доставка (http://www.aliexpress.com/item/mme-tech-com-Genuine-only-XELTEK-PLCC44-ZIF-Socket-Adapter-CX2044/555372840.html) либо 79 с фришиппингом (http://www.aliexpress.com/item/Syrte-SUPERPRO6100-7000-5004-programmer-IC-test-adapter-DX-EX-CX2044/32532182253.html). Первый выглядит как оригинал на сайте Xeltek'а выше, второй - голимый клон. Стоит ли экономить 16 баксов? Закажу завтра.

Mick
04.01.2016, 20:12
Вы не поверите, но сегодня мой знакомый принес мне

Ну вот, подтверждается изречение - кто ищет тот всегда находит :)
Ждем интересных результатов.

vfiuchcikicshuusrch
04.01.2016, 21:28
круто круто :) походу скоро вы подарите простым смертным простую стиралку альтер))) типо альтерадоктора :) а если и дальше заморочитесь, то и программатор будет свой ? :)

CodeMaster
04.01.2016, 21:44
Первый выглядит как оригинал на сайте Xeltek'а выше

Такое очучение, что китайцы просто фотку там скоммуниздили.

Там весь вопрос в прошивке флеша с ID переходника, а так-то можно бы самому переходник с DIP'а спаять.

AlecV
08.01.2016, 18:02
Коллеги, MAX7000S баксов по 5 с aliexpress. Стоит ли оно того ?

Mick
08.01.2016, 18:10
Коллеги, MAX7000S баксов по 5 с aliexpress. Стоит ли оно того ?

Ты примеры приводи. Их там столько.
Дык 5 баксов сейчас овер 350 руб

AlecV
08.01.2016, 22:54
Ну вот первое попавшееся
http://www.aliexpress.com/item/Free-Shipping-10pcs-lots-EPM7128SLC84-15-EPM7128SLC84-EPM7128-PLCC-84-100-New-original-IC-In-stock/32261359684.html
по 2 бакса популярные 5 вольтовые 128 ячеек PLCC-84 с JTAG
Много, да. Надо рыться.

Я думал придется заменять MAX7000S на Atmel ATF1500AS т.к. MAX7000 не выпускают, но оказалось этого не нужно. Китай выручает.
Неясно только, надолго ли ли. Я другой стороны, фирму Atmel тоже купили, неизвестно что оставят в номенклатуре.

balu_dark
09.01.2016, 07:43
Вы батенька - оптимист про джитаг!
Я такие взял 2 десятка, причем даже не с китая, а с америки. Лет 5 назад. У всех залочен джитаг. До сих пор - улыбаюсь. Думаю что и у этих китайцев - джитаг залочен будет . ибо все это БУ. Хоть и отмыто да зашлифовано все.

Mick
09.01.2016, 09:15
Думаю что и у этих китайцев - джитаг залочен будет . ибо все это БУ. Хоть и отмыто да зашлифовано все.

Не всегда. Попадаются с залоченным джитагом, но не все. Там другая беда есть - перемаркировка. В сошлифованных и с лазерной маркировкой можно напороться на мелкую емкость.
Мне реально попались 7032SLC44 с маркировкой 7064SLC - вот беда.

С другой стороны, разберемся с разлочкой JTAGа, и твои 2 десятка будут тебя заново радовать :)

Syntal
09.01.2016, 10:28
Брал 5 шт EPM7128 как раз чуть меньше 5 $/шт. Все нормально, в том месте где я брал, правда уже нет.

HardWareMan
09.01.2016, 11:10
От себя добавлю: не все MAX7000 одинаково полезны. Сам наступил на эти грабли:
http://savepic.ru/8280525.png

Mick
09.01.2016, 12:29
Ну да есть такая серия MAX7000A, у меня даже есть ее представитель EPM7512A.
Также стоит обходить стороной MAX7000E - у него JTAGа совсем нет, шьется типа каким то параллельным программатором, по всей видимости таким же как и EPM7032LC

HardWareMan
09.01.2016, 14:43
Ну да есть такая серия MAX7000A, у меня даже есть ее представитель EPM7512A.
Также стоит обходить стороной MAX7000E - у него JTAGа совсем нет, шьется типа каким то параллельным программатором, по всей видимости таким же как и EPM7032LC
Есть еще MAX7000B, она 2,5в.

AlecV
09.01.2016, 16:46
Через JTAG можно прочитать тип микросхемы, воспользоваться Dispute сервисом Aliexpress и вернуть денежку.
Совсем отстой продавать не рискуют даже китайцы, если что - возвращают деньги.
Перешлифованные, хехе куда уж -15 дальше перешлифовыть ? -7 стоят дорого и сильно на любителя.

Вобщем мне не попадалось пока бракованых. Царапаные - каждая третья, особенно по таким ценам.


Кстати, насчет высоковольтного программатора, вот тут сидит энтузиаст. Давно сидит...
http://www.digital-circuitry.com/Projects.htm
в конце. Собирает инфу.
и тут
http://www.digital-circuitry.com/MyLAB_CPLD_PROG.htm

HardWareMan
09.01.2016, 20:58
А я даже состою в Yahoo группе (https://groups.yahoo.com/neo/groups/AlteraMAX7000/info), упомянутой по выше указанным ссылкам и они мне помогли получить Altera MPU. LP6, правда, я купил на стороне.

HardWareMan
22.01.2016, 09:11
Хорошие новости: пришел переходник и я даже стер все свои EPM3032ACT44-10N!
http://savepic.ru/8333940.jpg
Плохие новости: 2шт не стерлись и выдают "плохой ID". Походу я их убил своими варварскими экспериментами с высоким напряжением. Однако, +10шт рабочих это определенно успех! Ну что, го я создал?

Tronix
22.01.2016, 09:35
Дык это... Потыкать бы в него стрелкой осциллографа в момент стирания...

HardWareMan
22.01.2016, 10:00
Спасибо, Кэп!

balu_dark
22.01.2016, 20:26
Гхмы - так это собсно - железный человек, капитан очевидность!
Ждем осциллограмм!

HardWareMan
28.01.2016, 18:43
Я закончил с монитором и перехожу к CPLD. Предварительный скан показал, что задействовано достаточно много ног (практически как на картинке в моем посте на первой странице), но не понятно какие именно используются при стирании, т.к. программатор сначала считывает сигнатуру. Более того, вот как работает Vpp на ножке 44 OE1:
http://savepic.ru/8432220.png
Используется 3в для чтения ID и 11,5в для стирания. Теперь нужно подцепить логик, питающую ножку для синхры и посканить все это безобразие.

Программатор еще проверяет контакт в панельке и я не знаю, как он отреагирует на левое подключение.

- - - Добавлено - - -

Итак, первый подход. Это запись (программатором, все кликабельно):
http://savepic.ru/8454558m.png (http://savepic.ru/8454558.png)
Это установка защиты:
http://savepic.ru/8459678m.png (http://savepic.ru/8459678.png)
И стирание:
http://savepic.ru/8514961m.png (http://savepic.ru/8514961.png)
Видно, что все операции программатор делает под 11,5в. Я сделал делитель, что логик схватывает лог.1 на 34 канале только если там 11,5в. Питание включается раньше, конечно. Микросхема оторвана от массы, поэтому сначала все в лог.1. Затем программер подрубает микру к массе и начинает тест соединения. Как он делает - я хз,скорее надеясь что микра будет тянуть все вниз, в общем это те пики которые по середине большого провала. Затем он финально включает питание (ноги на него не хватило, но включение совпадает с подъемом всех ног после провала) и выставляет некоторые ноги статично + приводит JTAG к начальному состоянию. И да, основной обмен идет все же по JTAG, а значит все намного проще. Так вот, он включает 11,5в и после небольшой задержки начинает маслать JTAG, выжидая паузы.
http://savepic.ru/8514961m.png (http://savepic.ru/8514961.png)
Конкретно для стирания есть 4 пачки разной длительности:
http://savepic.ru/8501649m.png (http://savepic.ru/8501649.png)
Прелюдия короткая:
http://savepic.ru/8518033m.png (http://savepic.ru/8518033.png)
Далее идет основная команда:
http://savepic.ru/8517009m.png (http://savepic.ru/8517009.png)
Затем две маленькие, первая:
http://savepic.ru/8504721m.png (http://savepic.ru/8504721.png)
И завершающая:
http://savepic.ru/8507793m.png (http://savepic.ru/8507793.png)
Еще не расшифровывал JTAG, но где-то тут есть команда чтения ID. Жалко я выкинул плохие микры, можно было бы сравнить эпюры.

Теперь надо делать эксперименты: лочить JTAG, делать блокировку выходов и смотреть как изменятся не JTAG выводы, возможно они не все имеют значение. Подключал каналы по кругу от 1 пина на все I/O выводы (в том числе и JTAG). Всего 34 вывода, ровно сколько в моем логике каналов. Все это безобразие:
http://savepic.ru/8459667.jpg

- - - Добавлено - - -

Странно. Нажимаешь стирание пишет ОК, но по факту не стирает. Однако JTAG разблокировал у последней и я ее стер уже байтбластером. Сейчас в другую записал все 0 и они не стираются. Логик отключен на стороне логика. Нужно попробовать отпаять провода и попробовать стереть без них. Может наводка какая.

- - - Добавлено - - -

Вот что твориться на житаге. Направление бит может быть обратным, надо почитать букварь на CPLD. Но повторяю: бездумная подача высокого напряжения убивает микросхему! Требуются определенные условия, которые предстоит вычислить.

ram_scan
05.02.2016, 18:34
Други, я тему прочел, но так и не увидел.

MAX7000 и MAX7000S (и большинство других буквенных) разные микросхемы. Они совместимы на уровне прошивок, по внутренней логике, корпусам и пин в пин, но разные с точки зрения программирования.

Классическая 7000 программируется мутными высоковольтными движняками которые толком не расписаны нигде, 7000S в этом плане чистая TTL и шьется как обычная флешка, надо только правильно ее за нужные ноги подергать. Учитывая что 7000 меняется на 7000S пин в пин, 7000 в отличие от 7000S как найти так и запрограммировать практически невозможно, есть ли смысл с ними морочиться вообще ? Единственное для чего это может быть нужно - считать родную 7000 (без S). Если она не залочена, что маловероятно.

А семитонники с буквой S параллельно программирует китайский MiniPro за 50 енотов.

Xeltek очень матерый и дорогой программатор, но очень дремучий, и если попытаться им шить-тереть 7000S как 7000 то можно сжечь ее к жукам майским, а то что он умеет 7000S сильно не факт.

HardWareMan
05.02.2016, 21:24
Никто не хочет прошивать 7000е самопально. Люди хотят восстанавливать жытаг на тех, у которых он есть. Залоченный житаг можно получить при покупке или залочить самому: если не хватает 1го пина то лучше пожертвовать жытагом, чем ставить более громоздкую CPLD, верно? А в случае ошибки опять же получаем кирпич, который неплохо бы вернуть к жизни.

blackmirror
05.02.2016, 23:01
Еще не расшифровывал JTAG, но где-то тут есть команда чтения ID. Жалко я выкинул плохие микры, можно было бы сравнить эпюры.
Если рассматривать 4 картинки процесса стирания, то похоже, что:
1я: через TMS был сброшен JTAG, выбран командный регистр, туда было записано что-то вроде 99h, в ответ получено 55h и затем через TMS команда была отправлена на исполнение, может это команда разрешения программирования или просто проверка связи.
2я: здесь команд отправляется три, в ответ всегда приходит 55h, может это просто подтверждение, а может в случае ошибок код будет другим. Возможно первая команда была включением режима программирования, а какая-то активность на линии TMS после выдачи команды это переключение на регистр состояния, который через TDO сообщает, что команда в процессе выполнения, затем TDO переходит в низкий уровень и дополнительная активность на линии TMS отключает регистр состояния от TDO перед следующей команды. После второй команды опять есть дополнительная активность на линии TMS и очень похоже, что на TDO после этого выдаётся ID. Ну а последняя команда это видимо сама команда стирания, так как на общем графике пауза после неё самая длительная.
3я: здесь скорее всего просто команда проверки всё стёрлось или нет
4я: тут через TDI либо вообще никакой команды не подаётся, либо команда с кодом 00 это сброс или чтение результата предыдущей операции

HardWareMan
06.02.2016, 08:22
А вот, для сравнения, как это делает кактус. Быть может получится найти схожие моменты?

blackmirror
06.02.2016, 12:19
Похожие моменты есть, но есть много и того, чего не картинках со стиранием не было:
55894

blackmirror
08.02.2016, 12:11
Попался вот такой файл: ftp://ftp.altera.com/outgoing/download/bsdl/3032at44_1532.bsd,
и в нём вроде как команды для программирования расписаны.
attribute INSTRUCTION_LENGTH of EPM3032AT44 : entity is 10;
attribute INSTRUCTION_OPCODE of EPM3032AT44 : entity is
"BYPASS (1111111111), "&
"EXTEST (0000000000), "&
"SAMPLE (0001010101), "&
"IDCODE (0001011001), "&
"USERCODE (0000000111), "&
"ISC_ENABLE (1100110010), "&
"ISC_DISABLE (0000000110), "&
"ISC_PROGRAM (0000010010), "&
"ISC_ERASE (0000001010), "&
"ISC_ADDRESS_SHIFT (0000001110), "&
"ISC_READ (0000010110), "&
"ISC_READ_H (0000011010), "&
"ISC_READ_L (0000011110), "&
"ISC_NOOP (0011111111)";

attribute INSTRUCTION_CAPTURE of EPM3032AT44 : entity is "0101010101";

attribute IDCODE_REGISTER of EPM3032AT44 : entity is
"0001"& --4-bit Version
"0111000000110010"& --16-bit Part Number (hex 7032)
"00001101110"& --11-bit Manufacturer's Identity
"1"; --Mandatory LSB
attribute USERCODE_REGISTER of EPM3032AT44 : entity is
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
attribute REGISTER_ACCESS of EPM3032AT44 : entity is
"DEVICE_ID (IDCODE), "&
"ISC_DEFAULT[1] (ISC_ENABLE, ISC_DISABLE, ISC_NOOP, ISC_ERASE), "&
"ISC_PData[183] (ISC_PROGRAM), "&
"ISC_RData[183] (ISC_READ_L, ISC_READ_H, ISC_READ), "&
"ISC_Address[95] (ISC_ADDRESS_SHIFT)";
В общем получается, что при стирании выполнялись следующие команды: ISC_ENABLE, ISC_ADDRESS_SHIFT, ISC_READ, ISC_ERASE, ISC_DISABLE. Прочитать ID похоже нужно после сброса JTAG, а чем кактус занимался после этого, и зачем читал чего-то 10 раз - не ясно.

HardWareMan
08.02.2016, 17:56
А если подсмотреть в предыдущем логе с Хелтека?

blackmirror
08.02.2016, 18:54
А если подсмотреть в предыдущем логе с Хелтека?
Если имеется ввиду cpld_erase.rar, то там чтения ID нет вообще, может оно было в большом провале. В файле только сброс JTAG(но ID не считывается), и далее ISC_ENABLE, ISC_ADDRESS_SHIFT, ISC_READ(видимо проверка чтобы не стирать пустую микросхему), ISC_ERASE, ISC_DISABLE. Ну а последняя команда с кодом 0 на исполнение видимо вообще не отправляется. У кактуса всё аналогично за исключением того, что ISC_ADDRESS_SHIFT и ISC_READ он выполняет по 10 раз, после сброса JTAG ID он всё же считывает, но что еще за 5 обменов до ISC_ENABLE сказать сложно, на исполнение они вроде не отправляются.

HardWareMan
08.02.2016, 19:07
Просто у убитых он говорит что не может получить ID. Поэтому, я подумал что он его считывает. Получается, нам нужно орагнизовать правильный анлок JTAG через правильный вход в HV режим, подать те же команды и выйти.

bigral
11.02.2016, 01:44
хм, на сколько я вижу эту картину то смысл тут в том что:
1. микросхема переживает подачу 11.5v на вывод vpp (ранее считалось что это верная смерть);
2. при подаче "высокого" на vpp залоченный jtag разлачивается и начинает принимать команды так же как и в разлоченном состоянии;

Т.е. проблема как бы видится схожей с той проблемой где tl886cs или willem учили прошивать РФ2 которой надо повышенное напряжение программирования. Тогда там предложили поставить диод и транзистор и как токо программатор подавал vpp открывался транзистор и подавал свое "высокое" вместо vpp. Не помню проверенна ли была схема в действии, но если на отогнутую ногу подавали 22в то всетаки прошивалась рф2

omercury
13.02.2016, 14:17
Всем привет!

Разлочивал J-Tag на ATF1504, декларируемых как аналог MAX7k.
На единственный пин без защитного диода (по странному совпадению им оказался OE1 ) через резистор на 240 ом подал 12 вольт и шил через J-Tag как обычно.
12 вольт нужно для принудительного переключения выводов в режим J-Tag, не забыть снять/поставить галочку об использовании порта в режиме стандартных IO.
MAX3k/MAX7k с убиенным J-Tag пока не попадались,

vfiuchcikicshuusrch
13.02.2016, 15:04
всё оказалось элементарно))))
а через что шил ?

т.е. я так понял, возьму свою altera epm7000s с залоченным jtag подам через резюк 12в на ОЕ1 и подключу как обычно подключаю через программатор usb byteblaster к компу, дальше в квартусе сделать прошить новой прошивкой и всё ок должно быть ? :)

omercury
13.02.2016, 16:00
а через что шил ?
Шил через упрощённый до разъёмов и проводов ATF15xx JTAG ISP Download Cable))) Прога у них своя.


всё ок должно быть ?По-хорошему должно, но голову на отсечение не дам, так как сам не проверял.
Кошки подходящей нет...

vfiuchcikicshuusrch
13.02.2016, 16:14
у меня 2 шт max 7128 :) залоченных.
попробую сегодня. прям интрига))) вдруг сработает :)))

кстати, а как определил что пин этот без защитного диода ?

omercury
13.02.2016, 16:32
Тестером от пина на VccIO, у Атмела стоят оба обратных защитных диода, в отличие от Альтер...

vfiuchcikicshuusrch
13.02.2016, 17:12
не. у меня не срабатывает такая фишка.
сигнал ОЕ1 так же как и все звонится на vccio
пробовал 12в давать и на ое2 и на гклрн %) всё так же, дейвас не определяется.

значит всё гораздо сложнее :)

omercury
13.02.2016, 17:38
значит всё гораздо сложнее :)

Это точно, я даже не знаю, как её залочить. ;)

bigral
15.02.2016, 06:02
не. у меня не срабатывает такая фишка.
сигнал ОЕ1 так же как и все звонится на vccio
пробовал 12в давать и на ое2 и на гклрн %) всё так же, дейвас не определяется.

значит всё гораздо сложнее :)

судя по самой первой картинке высокое подается на vpp ножка 44

vfiuchcikicshuusrch
15.02.2016, 09:11
я хз где у epm7128slc84 vpp :)))

HardWareMan
15.02.2016, 10:32
Это точно, я даже не знаю, как её залочить. ;)
Достаточно задействовать в проекте хоть один пин, относящийся к JTAG.

vfiuchcikicshuusrch
15.02.2016, 16:20
HardWareMan, есть какие нибудь новости по поводу алгоритма разлочки жтага ?

omercury
16.02.2016, 03:08
The OE1 pin (high–voltage pin during programming)Этого они как бы не скрывают.
В пинауте дают такую ремарку
This JTAG pin applies to MAX 7000S devices only and this pin may function as either a JTAG port or a user I/O pin. If the
device is configured to use the JTAG ports for boundary-scan testing or for ISP, this pin is not available as a user I/O pin.
У себя на сайте вот это (https://www.altera.com/support/support-resources/knowledge-base/solutions/rd02212005_950.html)

Буржуи (http://www.alteraforum.com/forum/search.php?searchid=87097&pp=) похоже тоже не победили ещё)))

HardWareMan
16.02.2016, 08:40
http://savepic.ru/8689858.png
И таки да, мы говорим об А. А про S я не в курсе, ребят. (с)

vfiuchcikicshuusrch
16.02.2016, 10:20
блин. значит мне ничего не светит =\

Mick
22.04.2016, 09:47
Немного поковырялся в файлах программатора All-03 на предмет разлочки, вообщем кому интересно, то продолжение темы тут - http://tslabs.info/forum/viewtopic.php?f=10&t=661

krotan
22.04.2016, 10:43
Немного поковырялся в файлах программатора All-03 на предмет разлочки... Для какого процессора код в файле erase_7064AE.asm ? И по какой схеме он подключен?

Tronix
27.12.2017, 22:14
Поднимем темку. Появилась кучка EPM3032ALC44, скорее всего залочены... Чем дело кончилось? У кого-то получилось разлочить хоть что-то?

Tronix
28.12.2017, 09:53
У меня результатов никаких. Сделал тумблер +12V на OE (44 нога). Смотрю осцылом ногу TDO. При включении от стандартного питания там то 0 (в большинстве случаев), то 1, в некоторых случаях. Когда пытаюсь в куктусе нажать Jtag Chain Debugger кнопку Start на TDO есть попытки посыла, но CPLD просаживает сигнал если она в 0 или не просаживает если в 1. На +12V поданные на OE никак не реагирует вообще.

HardWareMan
28.12.2017, 10:10
1. Не 12В, а 11.5В Это прнципиально важно.
2. Беспорядчная подача HV на ОЕ убивает CPLD. Я убил уже пяток. Ее потом программатор и не видит.

Tronix
28.12.2017, 12:46
Пробовал и 5 вольт и 11.5 и 12.5 - разницы не заметил, в смысле ничего не меняется. Ток кстати HV при этом не идет, либо идет но микроамеры.

- - - Добавлено - - -

Попробовать не запитывать VCCIO? Я с полностью подключенной пробовал. Запитать только VCCINT?

- - - Добавлено - - -

Подключил только 3-ю ногу VCCINT 3.3V, 42 ногу GND и JTAG 4 провода. OE пока не трогал. Какие-то шевеления на JTAG пошли, jtag debugger пишет "too many devices".

- - - Добавлено - - -

Нет, конечно без VCCIO и всех GND оно не взлетает, а когда подключаешь их - все.

IgorR76
28.12.2017, 12:52
Mick, а как у Вас дела с разлочкой? Ссылка выше на тему на tslabs не работает.
Ссылка теперь такая: http://forum.tslabs.info/viewtopic.php?f=40&t=661
Выходит, epm3032a может быть разлочена через jtag, а 3032(64)s, 7032(64)s - не могут.
Значит, будем разбираться с параллельным программатором...

Tronix
28.12.2017, 16:20
Выходит, epm3032a может быть разлочена через jtag

Как?!

CodeMaster
28.12.2017, 16:26
Как?!

Теоррретически ;-)

Mick
28.12.2017, 16:33
Mick, а как у Вас дела с разлочкой?

Пока никак, у меня все теперь волнами идет. Есть интерес - делаю, нет интереса - забиваю. :(


Выходит, epm3032a может быть разлочена через jtag, а 3032(64)s, 7032(64)s - не могут.

Приблизительно так, я уже приводил алгоритм, если пройти по ссылке и даже вроде фрагмент кода от программатора All-03 приводил.

Tronix
28.12.2017, 19:01
Приблизительно так, я уже приводил алгоритм, если пройти по ссылке и даже вроде фрагмент кода от программатора All-03 приводил.

Так вот прямо сегодня пробовал по вашему алгоритму - подать питание на микросхему, подать OE 12V, программировать - не работает.

Mick
28.12.2017, 19:06
Так вот прямо сегодня пробовал по вашему алгоритму - подать питание на микросхему, подать OE 12V, программировать - не работает.
Там кажется написано

Алгоритм вкратце такой.

Тоесть это означает только сам алгоритм, а подробности какое напряжение и какие команды, в какой последовательности - смотреть исходник от All-03. А лучше еще анализируя схему самого программатора.

А то типа подать напряжение и прицепить через Байт бластер - и все должно работать. Вот тут я думаю и не должно работать.

HardWareMan
28.12.2017, 20:25
А то типа подать напряжение и прицепить через Байт бластер - и все должно работать. Вот тут я думаю и не должно работать.
И не работает - я проверял. :)

Mick
28.12.2017, 20:28
И не работает - я проверял.

Я и написал с иронией. Если было бы так все просто, уже давно бы все так делали.

HardWareMan
28.12.2017, 20:44
Я и написал с иронией. Если было бы так все просто, уже давно бы все так делали.
Ты не понял. Речь о том, что это не просто не работает, но и те ЕРМки, что пробовали на себе такой метод после не работают и в программаторе. Не определяются и не стираются.

Mick
28.12.2017, 21:01
Ты не понял. Речь о том, что это не просто не работает, но и те ЕРМки, что пробовали на себе такой метод после не работают и в программаторе. Не определяются и не стираются.

Ну собственно, каждый может поглядеть исходник и там увидите сами алгоритм. Но я нигде не писал каким должно быть подключение.
И да я тут поглядел. Микрухи EPM30xx и EPM70xxA появились в программаторе ALL-07, в ALL-03 их не было

Вот что было написано в описании на адаптер
for Altera EPM3032ALC44/TC44, EPM3064ALC44/TC44 and EPM7064AELC44/TC44
This is only for ALL07 (executable is A7064.exe) as ALL03 does NOT know any MAX7000AE nor MAX3000A.
This Adapter is necessary to program CPLDs with locked JTAG pins, so not a simple ISP Adapter.

Сама схема адаптера - http://matthieu.benoit.free.fr/all03/adp/HiLo_ADP-7064AE.PDF

Посмотрите сами что в основном используются JTAG ноги и OE.

Материалы по ALL-07 - http://matthieu.benoit.free.fr/hilosystem_all-07_universal_programmer.htm

Tronix
28.12.2017, 21:04
Посмотрите что в основном используются JTAG ноги и OE.

Медитировал на эту схему сегодня пол дня. Просветления не дало, к сожалению. Все вроде бы так, но не работает.

Mick
28.12.2017, 21:06
Медитировал на эту схему сегодня пол дня. Просветления не дало, к сожалению. Все вроде бы так, но не работает.

Видимо ее надо рассматривать в купе с со схемой ALL-07.

Да уж, как бы не пришлось ALL-07 воспроизводить в реальном масштабе :)

Tronix
28.12.2017, 21:13
А может оно и на этом Hi-Lo ALL-07 не работает? Чистые с jtag шьет, а лоченые никто и не пробовал шить. Success story то нет, отзывов, пруфов.
Да, заявлено, но работает в реале или нет - хз?

HardWareMan
29.12.2017, 05:16
У меня на Xeltek'е работает (http://zx-pk.ru/threads/25998-programmator-mikroskhem-programmiruemoj-logiki(cpld).html?p=854044&viewfull=1#post854044). Но сэйфпик убил все, однако можно назаписать еще.

Mick
29.12.2017, 06:50
А может оно и на этом Hi-Lo ALL-07 не работает? Чистые с jtag шьет, а лоченые никто и не пробовал шить. Success story то нет, отзывов, пруфов.
Да, заявлено, но работает в реале или нет - хз?

Навряд ли. Контора выпускающая столько лет свои программаторы будет лапшу вешать. Я думаю что именно надо смотреть, как она это делает. Курить схему, сопоставлять с программой.
То что подается HV на OE это факт.

- - - Добавлено - - -


У меня на Xeltek'е работает. Но сэйфпик убил все, однако можно назаписать еще.

Вот и надо поглядеть какие еще ноги дергаются. Еще раз запиши.

Tronix
29.12.2017, 07:59
Вот и надо поглядеть какие еще ноги дергаются. Еще раз запиши.

Присоединяюсь к просьбе.

EvgenRU
23.02.2018, 01:39
Есть какие-нибудь успехи? А то у меня уже более 10-и таких накопилось... один добрый чен прислал мне таких 9 из 10-и...
OE1 11.5 я так понимаю никому не помогло... печаль... может его еще клокать надо?

Если что, готов всячески помочь посильно...

IgorR76
23.02.2018, 01:58
Как маркированы микросхемы? Может они просто нерабочие?

HardWareMan
23.02.2018, 04:17
Теперь только через полгода смогу. Не раньше июня.

CodeMaster
23.02.2018, 09:31
один добрый чен

Буква "л" пропущена или перепутана с "н"? Не кореец же он?

EvgenRU
23.02.2018, 10:46
На всякий случай приложу фотку нерабочих, как видите, разные партии, анализ JTAG говорит, что у каких-то TDO на земле, а у каких-то на VCC, это значит, что эти пины запрограммированы на какую-то логику, а не на JTAG
https://cdn1.savepice.ru/uploads/2018/2/23/15cb27dcfa1e3481ee56ed1b9bcf74cb-full.jpg

IgorR76
23.02.2018, 12:25
У меня есть одна сгоревшая 7128S (вынималась из программатора с включенным питанием), так у неё точно такой же симптом: TDO на земле. Поглядите осциллографом, что на других IO. Если одинаково на всех, то скорей всего микруха не запрограммирована на логику, а JTAG сдох.

Tronix
03.03.2018, 14:26
У меня есть одна сгоревшая 7128S (вынималась из программатора с включенным питанием), так у неё точно такой же симптом: TDO на земле. Поглядите осциллографом, что на других IO. Если одинаково на всех, то скорей всего микруха не запрограммирована на логику, а JTAG сдох.

Да нет же, у всех таких EPM30xx полно, из тех же игровых автоматов Игрософта надерганных или еще откуда. Все не определяются. Только если разрабы специально пины TDO TCK выжигали огнем?

Tronix
24.09.2018, 21:38
Теперь только через полгода смогу. Не раньше июня.

Прошел июнь вроде бы.... А тема по прежнему интересна.

Tronix
25.09.2018, 11:34
Кстати, тут есть фото вскрытой EPM7032: http://radiopicture.listbb.ru/viewtopic.php?p=9092#p9092 Может как-то поможет в понимании что там с OE и 11 вольтами...
HardWareMan

HardWareMan
25.09.2018, 12:14
Посмотрим!

- - - Добавлено - - -


Прошел июнь вроде бы.... А тема по прежнему интересна.
Да я тока приехал, как люди попросили Xeltek на что-то экзотическое. Еще не вернули, на днях заберу. Тему не бросил еще.

Tronix
04.12.2018, 21:04
Прошел июнь вроде бы.... А тема по прежнему интересна.



Да я тока приехал, как люди попросили Xeltek на что-то экзотическое. Еще не вернули, на днях заберу. Тему не бросил еще.

А "на днях заберу" - это сколько примерно в десятках или тысячах дней? :v2_dizzy_christmas:

HardWareMan
05.12.2018, 14:11
Забрал месяц назад. Всё некогда сделать новый подход...

electroscat
14.12.2019, 11:24
Дорогие друзья, доброго времени ! Заказал из китая уже две альтерки, микросхемы Altera Max 3000S вроде... EPM7128SL84 для комбо девайса.. Первая не определилась, вернул средства с али, заказал еще одну, и она тоже залоченная, не определяется программатором. У китайцев наверное лишние деньги, посылать залоченные микросхемы за свой счет и потом возвращать мне средства... Можно ли что то с этими микросхемами сделать ? Мне посоветовали вариант с программатором чиппрог, который стоит под 600$ - как то очень расточительный вариант... Может есть способы по дешевле ? Посоветуйте пожалуйста что нибудь ? Бегло пробежался по форуму, вроде решения нет особо... Может что то пропустил.. Направьте пожалуйста ?

Mick
14.12.2019, 14:17
, который стоит под 600$ - как то очень расточительный вариант...

Если не пугает наличие у программатора LPT порта, то авито тебе в помощь. Там эти чиппроги можно купить и за 5 тыс руб, а если повезет то дешевле. Правда потом всеравно надо будет адаптер городить

Вот к примеру - https://www.avito.ru/eysk/tovary_dlya_kompyutera/professionalnyy_programmator_1835398349?slocation= 621540
https://www.avito.ru/tyumen/tovary_dlya_kompyutera/programmator_phyton_chipprog-2_1553649365?slocation=621540

electroscat
14.12.2019, 23:01
Если не пугает наличие у программатора LPT порта, то авито тебе в помощь.
Спасибо огромное за Ваш ответ !!!

Ком порт не пугает....
Меня в целом пугает наличие у меня программатора, даже за 5 т.р. на котором я разлочу 2 микросхемы за 100 рублей с али, и потом он будет лежать у меня просто пыль собирать... )))

Может есть кто нибудь из Ростова на Дону, и он мне за некоторое разумное вознаграждение и вкусняхи разлочит две микросхемы ?

Я предполагал, что может есть способ разлочить альтерку при помощи макетной платы, пары резисторов и метра мгтф )))))

Ну или почтой к кому нибудь могу отправить, и переводом вознаграждение и обратный билет ))) может кто то найдется с оборудованием ? Программатор дома это конечно круто, но вряд ли я его буду использовать куда нибудь кроме этого случая... После того как микросхемы будут разлочены, мне хватит "usb-blaster" а...

HardWareMan
15.12.2019, 06:37
Причём тут COM порт (https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D 0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0 %BF%D0%BE%D1%80%D1%82), если речь за LPT порт (https://ru.wikipedia.org/wiki/IEEE_1284)? Если ты их не различаешь, то бросай это дело или подтягивай знания в этом направлении.

electroscat
15.12.2019, 10:30
Если ты их не различаешь, то бросай это дело или подтягивай знания в этом направлении.
Я их различаю, просто спешил отписаться и перепутал... Специально для этого у меня даже есть комп, с COM и LPT портом и даже флопом, для работы с дискетами CP\M.... Суть не в этом...
Суть в том, что мне всего лишь хочется прокачать комп своего детства, а для этого нужна незалоченная микросхема.. хотя бы одна. вот и все. А мои знания тут не при чем.

Xrust
15.12.2019, 14:35
electroscat, а сейчас что за программатор используете? Мне вот ещё ни разу залоченная EPM-ка не попадалась.

electroscat
15.12.2019, 15:18
electroscat, а сейчас что за программатор используете? Мне вот ещё ни разу залоченная EPM-ка не попадалась.

usb-blaster

xolod
15.12.2019, 15:20
У меня тоже кучка залоченых 7000. Может кто даст на время Chipprog+ для изучения механизма разблокировки Alter?

electroscat
15.12.2019, 15:56
Как я уже писал, может кто то живет в Ротове на Дону, или в области, или где то в пределах 300 рублей почтой россии водну сторону ? За разумное вознаграждение кто то может возьмется ? Реально, мне не очень это в жизни пригодится, но очень хочется )))

marinovsoft
15.12.2019, 16:38
Москвичи, я так думаю, могут попробовать с perestoronin этот вопрос решить https://zx-pk.com/forum/viewtopic.php?f=11&t=3729

electroscat
15.12.2019, 17:26
Москвичи, я так думаю, могут попробовать с perestoronin этот вопрос решить https://zx-pk.com/forum/viewtopic.php?f=11&t=3729

В целом, где то в середине января я тоже буду в Москве, по этому вполне смогу тоже этот вопрос попробовать решить там, спасибо за контакт! Тем не менее, если вдруг кто то раньше найдется, из Ростова-на-Дону или области, желающий помочь, в обмен на разумное вознаграждение и вкусняхи, пожалуйста пишите !

Mick
16.12.2019, 10:07
Хочу напомнить, тем кто ищет людей с Chipprog и прочих. Как правило для этих микрух нужен адаптер. Без него вы ничего не сделаете. Адаптер либо самодельный , либо покупной. Так что уточните для начала есть ли у людей адаптер к программатору, а потом уж везите разлочивать.

Xrust
16.12.2019, 10:21
electroscat, я думаю, проще выслать вам незалоченную 7128, их есть у меня. А вы уверены, что правильно подключали микросхему? Я несколько раз подключал неправильно и в результате она или не определялась вовсе или не хотела прошиваться. Еще могу дать ссылки на проверенных продавцов, у которых приходилось брать EPMки. Хотя это, конечно, не гарантия. Например, разок заказывал светодиоды на Али, и прислали фирменные Cree вперемешку с подделкой, т.е. продавец может и сам не знать, чем торгует :)

electroscat
22.12.2019, 17:18
я думаю, проще выслать вам незалоченную 7128, их есть у меня.

Да, как вариант, так тоже подойдет.


А вы уверены, что правильно подключали микросхему? Я несколько раз подключал неправильно и в результате она или не определялась вовсе или не хотела прошиваться.

Да, я правильно все вставлял, когда снимал видео на возврат средств китайцам, после их микросхемы вставлл свою, точно также, и она определялась.


Еще могу дать ссылки на проверенных продавцов, у которых приходилось брать EPMки. Хотя это, конечно, не гарантия. Например, разок заказывал светодиоды на Али, и прислали фирменные Cree вперемешку с подделкой, т.е. продавец может и сам не знать, чем торгует :)

И это как вариант, давайте ссылки, тем не менее, все же я бы у вас приобрел разлоченные, это быстрее было бы и надежнее, мне надо то 2 штуки всего..

Serg6845
16.01.2020, 21:41
Видимо ее надо рассматривать в купе с со схемой ALL-07.

Да уж, как бы не пришлось ALL-07 воспроизводить в реальном масштабе :)

я его тут спаял за праздники ;)
http://sksb3.no-ip.org:8085/all07.jpg
в урезанном виде, большей части силовых ключей нету. в таком виде умеет GAL, ATF, PALCE, EPM7032 (на другие схем адаптеров нет), флешки всякие, 27 серию.

кстати, может кто подскажет чем генерить прошивку для MACH 110, 120,210?

Tronix
16.01.2020, 22:03
EPM7032

Так умеет он разлочивать их, если пины JTAG переназначены были под I/O? Если умеет, то сделайте доброе дело - снимите эпюры с этой несчастной EPM7032 в момент разлочки каким-нибудь лог анализатором или еще как.
PS: А EPM3032 - не умеет он? (трехвольтовая?)

Serg6845
16.01.2020, 22:45
Так умеет он разлочивать их, если пины JTAG переназначены были под I/O? Если умеет, то сделайте доброе дело - снимите эпюры с этой несчастной EPM7032 в момент разлочки каким-нибудь лог анализатором или еще как.
PS: А EPM3032 - не умеет он? (трехвольтовая?)

не знаю, проверить не могу по причине отсутствия у меня этих 7032S (которые с JTAG), у меня есть только обычные 7032.
но в списке поддерживаемых 7032SLC44 есть, так что должен. еще проблема в том что лог. анализатора у меня тоже нет :(

3032 - в списках не значится, по крайней мере в том софте что у меня есть.

поправка - 3032ALC в списках есть.

HardWareMan
17.01.2020, 06:23
Tronix, я же снимал эпюры с Xeltek'а. Всё никак не доходят руки дожать эту тему, завал по работе.

IanPo
17.01.2020, 15:44
Нашел на форуме Интела:
After checking many documents and spend several time i can
program the chip with a simple jtag programer(non high voltage).
Both of high voltage programing and non high voltage programing,
algorithm and hardware is same, but in high voltage programing
pin OE(pin 44 in EPM3032) must be connected to 11 volts.
I disconnect it from anywhere and connect it to the 12 volts in
circuit with a 1k ohm resistor to programing and reprograming
the chip completely and verify, when jtag is disabled.
After programing is done, the resistor must be disconnected.

Это правда или нет?

Tronix
17.01.2020, 15:48
Это правда или нет?
У меня не получилось.

- - - Добавлено - - -


Tronix, я же снимал эпюры с Xeltek'а. Всё никак не доходят руки дожать эту тему, завал по работе.

Дык картинки то все канули в лету, к сожалению. Если они остались - выложите куда-нибудь...

HardWareMan
17.01.2020, 16:12
Нашел на форуме Интела:
After checking many documents and spend several time i can
program the chip with a simple jtag programer(non high voltage).
Both of high voltage programing and non high voltage programing,
algorithm and hardware is same, but in high voltage programing
pin OE(pin 44 in EPM3032) must be connected to 11 volts.
I disconnect it from anywhere and connect it to the 12 volts in
circuit with a 1k ohm resistor to programing and reprograming
the chip completely and verify, when jtag is disabled.
After programing is done, the resistor must be disconnected.

Это правда или нет?
Правда, что:
1. Вывод ОЕ действительно высоковольтный (на нем не звонится защитный диод).
2. Подавать надо 11в. Не 12, а 11. И, скорее всего, через резистор.
3. Подавать надо в/на определённое время относительно, потому как подавание просто так у меня убило 4шт залоченных ЕРМ3032, которые перестал брать Xeltek.

Tronix
19.01.2020, 11:10
3. Подавать надо в/на определённое время относительно, потому как подавание просто так у меня убило 4шт залоченных ЕРМ3032, которые перестал брать Xeltek.

А может будет возможность осцылом тыкнуться на OE пин, разлочить EPM3032 и глянуть, на сколько примерно подается 11 вольт?

IanPo
19.01.2020, 17:13
Вот еще похожую тему нашел:
https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=54918&do=findComment&comment=496690

Serg6845
19.01.2020, 19:50
А может будет возможность осцылом тыкнуться на OE пин, разлочить EPM3032 и глянуть, на сколько примерно подается 11 вольт?

вобщем нашел у себя epm3064a, поигрался.
общая картина мира при стирании:
http://sksb3.no-ip.org:8085/erase_all_1s.png
1 сек в клетке, пурпурный - Vpp (10.5-11В, 2В/клетку), голубой - питание, желтый - TCK (1В/клетку)

что происходит на JTAG
http://sksb3.no-ip.org:8085/erase.rar
архив - 12 метров, внутри - csv на 235 метров. мне трейсить JTAG нечем.
1 канал - TCK, 2 - TMS, 3 - TDI, 4 - TDO.
стирание работает, специально залил проект с заблокированным JTAG, если Vpp отключить - говорит incorrect device. с подключенным vpp - читается, стирается, пишется.
3032 у меня нету, сорри.

- - - Добавлено - - -


Нашел на форуме Интела:
After checking many documents and spend several time i can
program the chip with a simple jtag programer(non high voltage).
Both of high voltage programing and non high voltage programing,
algorithm and hardware is same, but in high voltage programing
pin OE(pin 44 in EPM3032) must be connected to 11 volts.
I disconnect it from anywhere and connect it to the 12 volts in
circuit with a 1k ohm resistor to programing and reprograming
the chip completely and verify, when jtag is disabled.
After programing is done, the resistor must be disconnected.

Это правда или нет?

по косвенным данным - это работает только для серий 7000AE и 3000А. 7000S требует полноценного параллельного программатора.

Tronix
19.01.2020, 21:18
архив - 12 метров, внутри - csv на 235 метров. мне трейсить JTAG нечем.

Я дико извиняюсь за тупой вопрос, но в каких значениях записи в CSV? Как я понял, в милливольтах. Набросал простенький конвертер, отсекаю по >3 вольт - это единица, меньше - ноль. Пробовал по 2.4V отсекать - ерунда получается какая-то. Скормил это PulseView, там есть декодер JTAG:

https://i.ibb.co/SK9dMwq/altera.png (https://ibb.co/y8bYZFL)

Получил расшифровку всех действий на JTAG, она в прикрепленном файле. Но я не уверен, что правильно сам файл CSV сконвертил.

Serg6845
19.01.2020, 22:05
Я дико извиняюсь за тупой вопрос, но в каких значениях записи в CSV? Как я понял, в милливольтах. Набросал простенький конвертер, отсекаю по >3 вольт - это единица, меньше - ноль. Пробовал по 2.4V отсекать - ерунда получается какая-то. Скормил это PulseView, там есть декодер JTAG:
Получил расшифровку всех действий на JTAG, она в прикрепленном файле. Но я не уверен, что правильно сам файл CSV сконвертил.

вроде в вольтах.
3999997,2.46E-1,0.00E+0,0.00E+0,3.15E+0 TCK = 0.246В
3999998,2.01E+0,0.00E+0,0.00E+0,3.15E+0 TCK = 2.01В
3999999,3.73E+0,0.00E+0,0.00E+0,3.15E+0 TCK = 3.73В
4000000,3.73E+0,0.00E+0,0.00E+0,3.15E+0 TCK = 3.73В

как работает JTAG на уровне команд - для меня по большому счету темный лес... но по картинке по крайней мере TCK похож на правду.

Tronix
22.01.2020, 14:41
Не прошло и десять лет, но получилось разлочить EPM3032ALC44-10N !!!!

Собрал такой нехитрый прибор:

https://i.ibb.co/SNJYYYD/P00122-140339-resize.jpg (https://ibb.co/zsN999W)

На плате линейный стабилизатор AMS1117 TO-220, за ним единственный 0,1 мкФ керамика 104 выводной и светодиодик через резистор 300 ом. Панелька PLCC44 для EPM'ки, подключены все VCC и GND у нее по даташиту на 3.3V после линейника. JTAG без всяких подтяжек напрямую выведен на разъемчик JTAG, к которому подключен обычный китайский левый клон USB Blaster'а. На 44 пин OE через резистор 1 ком выведена красная кнопка, подключенная к входному напряжению на плату. Входное напряжение 10.5 вольт ровно:

https://i.ibb.co/VWDr61g/P00122-140414-resize.jpg (https://ibb.co/7JV8hfn)

Изначально кнопка выключена (цепь разорвана, на OE ничего не подается - висит в воздухе). Вставляем EPM в панельку, даем на плату входное питание 10.5 вольт, которое просто линейником понижается до 3.3 вольт. Подключаем USB-blaster. Заходим в Кактусе в Programmer и пробуем определять микросхему - не определяется:

https://i.ibb.co/3rhwhPV/error.png (https://imgbb.com/)

Нажимаем "No". Нажимаем кнопку Add Device, выбираем нужную CPLD, в моем случае EPM3032A:

https://i.ibb.co/80ZCDBQ/add.png (https://ibb.co/Vt41WNk)

Далее появляется выбранная микруха, есть возможность поставить галочку Erase:

https://i.ibb.co/XCQhBwv/erase.png (https://ibb.co/mcjLsxM)

Далее почти одновременно жмем БОЛЬШУЮ КРАСНУЮ КНОПКУ и в компе кнопку Start. Микра стирается, о чем в логе видим зеленые сообщения, выключаем красную кнопку:

https://i.ibb.co/YDYNNkw/success.png (https://ibb.co/7g8SSWL)

Далее даже без передергивания питания уже проверяем без красной кнопки как читается ID. Нажимаем Auto Detect - совершенно свободно определяется как EPM3032A, все, микросхема разлочена, можно тут же прямо ее и прошить своей прошивкой какой нужно.

Проверил на Кактусе 9.1 и на 13.0 - поведение не отличается.

Вот такая SUCCESS STORY. Из замеченного - когда микросхема еще залочена, идет довольно приличное потребление тока по 3.3 вольта, порядка 50-60 мА, и линейник в корпусе TO-220 ощутимо греется, хотя и не критично, потому что большая разница между входным и выходным напряжениями (10.5 вольт -> 3.3 вольт). Когда подается высокое и после разлочки потребление снижается до примерно 20 мА.

Уже разлочил две EPM'ки. Всего у меня их около 15 вроде, некоторые из них уже испытали на себе ужасы прошлых экспериментов, но надеюсь я запорол не так много. По результатам отпишусь, сколько восстановил из скольких, если интересно.

IgorR76
22.01.2020, 14:56
Tronix, поздравляю! Есть возможность попробовать epm7xxxs?

Tronix
22.01.2020, 15:17
Есть возможность попробовать epm7xxxs?

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

HardWareMan
22.01.2020, 20:15
Надо будет попробовать мои две так же разлочить. Это которые 7128 в большом корпусе. По сути, стирание там команда простая по JTAG, надо в какую-нибудь мегу оформить с кнопкой "стереть". Кстати, возможно при 10,5в даже чтение ID проканает. В общем, надо играться.

Tronix
22.01.2020, 20:23
Кстати, возможно при 10,5в даже чтение ID проканает. В общем, надо играться.

Пробовал. Включать кнопку High Voltage и нажимать Auto Detect. Определяется, но криво - UNKNOWN_Dчетотам3032четотам, после этого не дает поставить галочку Erase, да и вообще все галочки в действиях серые. Поэтому не заморачивался, и просто указывал вручную с помощью кнопки Add Device, как и описал выше.


о сути, стирание там команда простая по JTAG, надо в какую-нибудь мегу оформить с кнопкой "стереть".
А надо-ли? Мне лично без разницы, автономный это девайс или с прицепкой к компу в виде USB-Blaster. И там и там по сути действие сводится к нажатию одной кнопки...

siemensC35
22.01.2020, 20:29
По сути, стирание там команда простая по JTAG, надо в какую-нибудь мегу оформить с кнопкой "стереть"
помойму есть готовые проэктики из юсб асп ,
Есть куча 7032 с игрософта, повод свисток достать но будет как у Троникса , лет через 10 токо займусь....

HardWareMan
22.01.2020, 20:47
Есть куча 7032 с игрософта
Именно оттуда они родимые. Однако, я свои все хелтеком затёр. Но их много, поиграться можно без проблем. ;)

Tronix
23.01.2020, 10:34
Вообщем, сегодня разлочил все свои EPM3032. У меня их оказалось чуть больше, чем 15, а именно 35 штук.

https://i.ibb.co/1qwfNdt/P00123-102042-resize.jpg (https://ibb.co/7W6JDRd)

Когда начал стирать массово, то некоторые микрухи не хотели с первого раза стираться, либо же вовсе отказывались определяться с надписью "Can't aceess JTAG chain". Где-то примерно через одну - одна нормально, вторая - не хочет. Немного подумав, просто добавил конденсатор 100 мкФ x 10В за линейником на 3.3В. Все, после этого как рукой сняло - стопроцентный результат.

Пару слов о микросхемах на фотографии с надписью "BAD" - одна была точно спалена во время предыдущих экспериментов, я ее помню, так как МГТФ к ней паял прямо на ноги. Что я с ней делал точно не помню, но вроде подавал 50 вольт на пин OE -) Поэтому сейчас при подаче 10.5 вольт на тот же пин она никак не реагирует - ток потребления не уменьшается, JTAG не видит. Про вторую точно сказать не могу, не помню, но возможно так же пала жертвой предыдущих экспериментов.

Итого, из 35 штук две оказались в помойке, да и то, не потому что так было, а потому что я их специально уничтожил. Остальные все разлочились, можно использовать. На всю жизнь хватит :)

EvgenRU
31.01.2020, 21:17
Есть такая кучка залоченных (точно не уверен, но не шьются и ID не определяется)
https://i.ibb.co/j40nGwW/epm.jpg

Как будет возможность, обязательно проверю, или могу отдать парочку Tronix'у для тестов, т.к. не знаю, когда руки дойдут :)

JV-Soft
01.02.2020, 02:56
И у меня платки игрософта есть ,и бластер на PIC ,попробую на выходных )
Tronix, респект !:smile:

HardWareMan
05.02.2020, 09:19
В общем, Я расчехлил Xeltek и провёл пару часов записывая что и как. Сначала, я записал как происходит стирание самим Quartus Programmer:

0x1FFFFFFFFFFFFFFFF0FECC0FF170320DD
^^^^^^^^ - ID EPM3032ALC44

/// Исходный лог:

ID,Time[s],JTAG: Bitstring (TDI) (TDO)
0,1.15138,DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFF0FECC0FF170320DD), 129 bits
1,1.15245,IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits
2,1.15663,IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits
3,1.16158,DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFFFE1FD981FE), 129 bits

4,1.16667,IR TDI: (0x3FF), 10 bits, TDO: (0x155), 10 bits
5,1.17166,IR TDI: (0x3FFFE), 18 bits, TDO: (0x3F955), 18 bits

6,1.17701,IR TDI: (0x332), 10 bits, TDO: (0x155), 10 bits
7,1.1823, IR TDI: (0xE), 10 bits, TDO: (0x155), 10 bits
8,1.18245,DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x7FFFFFFFFFFFFFF), 95 bits

9,1.18664, IR TDI: (0x16), 10 bits, TDO: (0x155), 10 bits
10,1.18682,DR TDI: (0x36A5F800002AA0000000000000000000000000000005540 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x1F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF) , 366 bits

11,1.19199,IR TDI: (0xE), 10 bits, TDO: (0x155), 10 bits
12,1.19214,DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

13,1.19634,IR TDI: (0x16), 10 bits, TDO: (0x155), 10 bits
14,1.19651,DR TDI: (0x15501F6758CEB987210C6237FFFFFF00000000000000000 00000000000000000000000000000), 366 bits, TDO: (0x1F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF) , 366 bits

15,1.20192,IR TDI: (0xE), 10 bits, TDO: (0x155), 10 bits
16,1.20208,DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

17,1.20628,IR TDI: (0x16), 10 bits, TDO: (0x155), 10 bits
18,1.20644,DR TDI: (0x3AE61C843188DFFFFFFCB74FDB52B4B57BDB52FC0000150 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x1F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF) , 366 bits

19,1.21175,IR TDI: (0xE), 10 bits, TDO: (0x155), 10 bits
20,1.2119, DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

21,1.21609,IR TDI: (0x16), 10 bits, TDO: (0x155), 10 bits
22,1.21625,DR TDI: (0xAD2D5EF6D4BF00000554000000000000000000000000000 00000000000000000000000000000000000000000000), 366 bits, TDO: (0x1F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF) , 366 bits

23,1.22177,IR TDI: (0xE), 10 bits, TDO: (0x155), 10 bits
24,1.22192,DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

25,1.22611,IR TDI: (0x16), 10 bits, TDO: (0x155), 10 bits
26,1.22627,DR TDI: (0x2AA03ECEB19D730E4218C40000000000000000000000000 000000000000000000000), 366 bits, TDO: (0x1F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF) , 366 bits

27,1.23176,IR TDI: (0xE), 10 bits, TDO: (0x155), 10 bits
28,1.23192,DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

29,1.2361, IR TDI: (0x16), 10 bits, TDO: (0x155), 10 bits
30,1.23627,DR TDI: (0xFB3AC675CC39086311BFFFFFF96E9FB6A5696AF7B6A5800 0000000000000000000000000000000000000000000), 366 bits, TDO: (0x1F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF) , 366 bits

31,1.24166,IR TDI: (0xE), 10 bits, TDO: (0x155), 10 bits
32,1.24182,DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

33,1.24601,IR TDI: (0x16), 10 bits, TDO: (0x155), 10 bits
34,1.24617,DR TDI: (0x25BA7EDA95A5ABDEDA97E00000AA8000000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x1F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF) , 366 bits

35,1.25177,IR TDI: (0xE), 10 bits, TDO: (0x155), 10 bits
36,1.25193,DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

37,1.25611,IR TDI: (0x16), 10 bits, TDO: (0x155), 10 bits
38,1.25628,DR TDI: (0x2A00000000000000000000000000000055407D9D633AE60 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x1F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF) , 366 bits

39,1.26169,IR TDI: (0xE), 10 bits, TDO: (0x155), 10 bits
40,1.26185,DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

41,1.26603,IR TDI: (0x16), 10 bits, TDO: (0x155), 10 bits
42,1.2662, DR TDI: (0x15501F6758CEB987210C6237FFFFFF2DD3F6D4AD2800000 0000000000000000000000000000000000000000), 366 bits, TDO: (0x1F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF) , 366 bits

43,1.27171,IR TDI: (0xE), 10 bits, TDO: (0x155), 10 bits
44,1.27186,DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

45,1.27603,DR TDI: (0x3FE5BA7EDA95A5ABDEDA97E00000AA80000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x55400000000000000000000000000000000000000000000 00000000000000000200000000000000000000000), 366 bits

46,1.28176,IR TDI: (0xA), 10 bits, TDO: (0x155), 10 bits
47,1.41664,DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFF0FECC0FF170320DD), 129 bits

48,1.42128,IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits
49,1.42627,IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits
50,1.43124,DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFFFE1FD981FE), 129 bits

51,1.43625,IR TDI: (0x3FF), 10 bits, TDO: (0x155), 10 bits
52,1.44125,IR TDI: (0x3FFFE), 18 bits, TDO: (0x3F955), 18 bits
53,1.4467, IR TDI: (0x6), 10 bits, TDO: (0x155), 10 bits


//// Чистые команды:


DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFF0FECC0FF170320DD), 129 bits
IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits
IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits
DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFFFE1FD981FE), 129 bits

IR TDI: (0x 3FF), 10 bits, TDO: (0x 155), 10 bits
IR TDI: (0x3FFFE), 18 bits, TDO: (0x3F955), 18 bits

IR TDI: (0x332), 10 bits, TDO: (0x155), 10 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x0000000007FFFFFFFFFFFFFF), 95 bits

IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x36A5F800002AA0000000000000000000000000000005540 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits

IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x000000000000000015501F6758CEB987210C6237FFFFFF0 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits

IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x3AE61C843188DFFFFFFCB74FDB52B4B57BDB52FC0000150 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits

IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x0AD2D5EF6D4BF0000055400000000000000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits

IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x0000000000000000000000002AA03ECEB19D730E4218C40 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits

IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x00FB3AC675CC39086311BFFFFFF96E9FB6A5696AF7B6A58 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits

IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x25BA7EDA95A5ABDEDA97E00000AA8000000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits

IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x2A00000000000000000000000000000055407D9D633AE60 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits

IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x0000015501F6758CEB987210C6237FFFFFF2DD3F6D4AD28 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits

IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

DR TDI: (0x3FE5BA7EDA95A5ABDEDA97E00000AA80000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00005540000000000000000000000000000000000000000 000000000000000000000200000000000000000000000), 366 bits

IR TDI: (0x00A), 10 bits, TDO: (0x155), 10 bits

DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFF0FECC0FF170320DD), 129 bits
IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits
IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits
DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFFFE1FD981FE), 129 bits

IR TDI: (0x3FF), 10 bits, TDO: (0x155), 10 bits
IR TDI: (0x3FFFE), 18 bits, TDO: (0x3F955), 18 bits
IR TDI: (0x006), 10 bits, TDO: (0x155), 10 bits


//// Группировка команд:

DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFF0FECC0FF170320DD), 129 bits
IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits
IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFFFE1FD981FE), 129 bits
IR TDI: (0x 3FF), 10 bits, TDO: (0x 155), 10 bits
IR TDI: (0x3FFFE), 18 bits, TDO: (0x3F955), 18 bits
IR TDI: (0x332), 10 bits, TDO: (0x155), 10 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x0000000007FFFFFFFFFFFFFF), 95 bits
IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x36A5F800002AA0000000000000000000000000000005540 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x000000000000000015501F6758CEB987210C6237FFFFFF0 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x3AE61C843188DFFFFFFCB74FDB52B4B57BDB52FC0000150 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x0AD2D5EF6D4BF0000055400000000000000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x0000000000000000000000002AA03ECEB19D730E4218C40 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x00FB3AC675CC39086311BFFFFFF96E9FB6A5696AF7B6A58 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x25BA7EDA95A5ABDEDA97E00000AA8000000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x2A00000000000000000000000000000055407D9D633AE60 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x0000015501F6758CEB987210C6237FFFFFF2DD3F6D4AD28 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
DR TDI: (0x3FE5BA7EDA95A5ABDEDA97E00000AA80000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00005540000000000000000000000000000000000000000 000000000000000000000200000000000000000000000), 366 bits
IR TDI: (0x00A), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFF0FECC0FF170320DD), 129 bits
IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits
IR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFC3FB303FD55), 129 bits DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFFFE1FD981FE), 129 bits
IR TDI: (0x3FF), 10 bits, TDO: (0x155), 10 bits
IR TDI: (0x3FFFE), 18 bits, TDO: (0x3F955), 18 bits
IR TDI: (0x006), 10 bits, TDO: (0x155), 10 bits


//// Просто сопоставление цифр в командах:


DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFF0FECC0FF170320DD), 129 bits
DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFFFE1FD981FE), 129 bits

DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x0000000007FFFFFFFFFFFFFF), 95 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x100000000000000000000000), 95 bits

DR TDI: (0x36A5F800002AA0000000000000000000000000000005540 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
DR TDI: (0x000000000000000015501F6758CEB987210C6237FFFFFF0 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
DR TDI: (0x3AE61C843188DFFFFFFCB74FDB52B4B57BDB52FC0000150 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
DR TDI: (0x0AD2D5EF6D4BF0000055400000000000000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
DR TDI: (0x0000000000000000000000002AA03ECEB19D730E4218C40 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
DR TDI: (0x00FB3AC675CC39086311BFFFFFF96E9FB6A5696AF7B6A58 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
DR TDI: (0x25BA7EDA95A5ABDEDA97E00000AA8000000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
DR TDI: (0x2A00000000000000000000000000000055407D9D633AE60 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
DR TDI: (0x0000015501F6758CEB987210C6237FFFFFF2DD3F6D4AD28 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00000000000000000000000000000000000000000000001 F6758CEB987210C6237FFFFFF2DD3F6D4AD2D5EF6D4BF), 366 bits
DR TDI: (0x3FE5BA7EDA95A5ABDEDA97E00000AA80000000000000000 000000000000000000000000000000000000000000000), 366 bits, TDO: (0x00005540000000000000000000000000000000000000000 000000000000000000000200000000000000000000000), 366 bits

DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFF0FECC0FF170320DD), 129 bits
DR TDI: (0x1FFFFFFFFFFFFFFFFFFFFFFFF0FECC0FF), 129 bits, TDO: (0x1FFFFFFFFFFFFFFFFFFFFFFFE1FD981FE), 129 bits

А вот что делает Xeltek:

//// Полный лог:

ID,Time[s],JTAG: Bitstring (TDI) (TDO)

1,2.67683,IR TDI: (0x332), 10 bits, TDO: (0x155), 10 bits

2,2.6979, IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
3,2.69793,DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x0000000007FFFFFFFFFFFFFF), 95 bits

4,2.69814,IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
5,2.69817,DR TDI: (0x0000000000000000000000000000000000000000000000) , 183 bits, TDO: (0x1F6758C6F987210C6237FFFFFF2DDBB6D4AD2D5EF6D4BF) , 183 bits

6,2.69863,IR TDI: (0x00A), 10 bits, TDO: (0x155), 10 bits

7,2.8037, IR TDI: (0x006), 10 bits, TDO: (0x155), 10 bits

8,2.85624,IR TDI: (0x000), 10 bits, TDO: (0x155), 10 bits


//// Чистые команды:


IR TDI: (0x332), 10 bits, TDO: (0x155), 10 bits

IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x0000000007FFFFFFFFFFFFFF), 95 bits

IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits
DR TDI: (0x0000000000000000000000000000000000000000000000) , 183 bits, TDO: (0x1F6758C6F987210C6237FFFFFF2DDBB6D4AD2D5EF6D4BF) , 183 bits

IR TDI: (0x00A), 10 bits, TDO: (0x155), 10 bits

IR TDI: (0x006), 10 bits, TDO: (0x155), 10 bits

IR TDI: (0x000), 10 bits, TDO: (0x155), 10 bits


//// Группировка команд:

IR TDI: (0x332), 10 bits, TDO: (0x155), 10 bits
IR TDI: (0x00E), 10 bits, TDO: (0x155), 10 bits, DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x0000000007FFFFFFFFFFFFFF), 95 bits
IR TDI: (0x016), 10 bits, TDO: (0x155), 10 bits, DR TDI: (0x0000000000000000000000000000000000000000000000) , 183 bits, TDO: (0x1F6758C6F987210C6237FFFFFF2DDBB6D4AD2D5EF6D4BF) , 183 bits
IR TDI: (0x00A), 10 bits, TDO: (0x155), 10 bits
IR TDI: (0x006), 10 bits, TDO: (0x155), 10 bits
IR TDI: (0x000), 10 bits, TDO: (0x155), 10 bits


//// Цифры в командах:


DR TDI: (0x200000000000000000000000), 95 bits, TDO: (0x0000000007FFFFFFFFFFFFFF), 95 bits
DR TDI: (0x0000000000000000000000000000000000000000000000) , 183 bits, TDO: (0x1F6758C6F987210C6237FFFFFF2DDBB6D4AD2D5EF6D4BF) , 183 bits

Как итог - Xeltek использует ровно те команды, которые необходимы для стирания. И он не использует автодетект. Есть мнение, что команды стирания одинаковые для всего семейства MAX3000А и это есть хорошо.

Что происходит с пином OE1. Он устанавливается после всех тестов контактов программатором, непосредственно перед первой команды и снимается после последней. При любой команде, не только при стираниии.
OE при стирании:
https://jpegshare.net/images/7a/1d/7a1d4a17d529931526fbe2c0d896f642.png
ОЕ при чтении:
https://jpegshare.net/images/fb/4f/fb4f63f4c2dafc37f7a88b0444ac8b31.png
Т.е., это происходит вот так:
https://jpegshare.net/images/4e/2e/4e2eea47052b324114d659c1579dd141.png

В общем, этой информации достаточно для изготовления автономного стирателя для семейства MAX3000A. В букваре на MAX3000A вход OE1 чётко заявлен как высоковольтный вход. А вот в букваре на MAX7000S об это ничего не сказано. Я попробую записать ОЕ1 для EPM7032, если найду этот чип. Но я думаю, что в нём этого не было реализовано. Так что го, я создал.

HardWareMan
08.02.2020, 17:08
Ммм, кому-то всё же это нужно...

IgorR76
16.03.2020, 12:49
Провёл первые эксперименты с epm7064s. Выявил зависимость от типа корпуса. 44-ногий при подаче 10в на OE сразу открыл jtag и дал стереть. То есть работает также, как 3000.
Корпус на 84 ноги при 10в на OE тоже переходит в программирование, но jtag не открывает. Работает какой-то другой интерфейс, сигналы TCK и TMS (из jtag) работают на вывод и управляются ногой 6.
Поскольку алгоритм стирания зависит от корпуса, а не от серии МС, при описании ваших опытов указывайте его.
Продолжаю исследования.

IgorR76
16.03.2020, 20:25
Предварительные выводы.
При подаче 10.5в на вход OE в корпусах 44pin включается интерфейс программирования - jtag. В корпусах 84pin-параллельный интерфейс неясной структуры. Несколько выводов работают на вывод, сколько на ввод-установить трудно. Единственный быстрый вариант разобраться с этим протоколом обмена - снять шину лог.анализатором. Для этого нужен таки программатор. Возможно, есть какая то комбинация, включающая jtag. Но она не такая простая, как в случае 44pin корпуса.
Исследования приостанавливаю, пока не найдётся параллельный программатор.

HardWareMan
17.03.2020, 06:59
https://jpegshare.net/images/c6/df/c6df79bf029e84fa0772edd675c51280.jpg
https://jpegshare.net/images/e0/e8/e0e8056f56e028f8f4b886325dee878d.jpg
https://jpegshare.net/images/43/5d/435db0f02492521eea0e0fa29b547ac4.jpg
https://jpegshare.net/images/2f/e5/2fe51118fe444a5fefec31bf0ece7002.jpg

Правда, у меня нет головы на PLCC84. Но зато есть такая под Xeltek 5000, который должен их уметь. И ещё логик многолапный есть. Можно и там посканить.

sinchuk
29.04.2020, 23:47
Tronix, как думаешь , можно по твоей методике прям в плате zxm-videocard попробовать стереть EPM7064SLC44? Просто отдельно панельки еще такой нет чтобы макетку собрать.

valerium
03.10.2020, 12:29
Провёл первые эксперименты с epm7064s. Выявил зависимость от типа корпуса. 44-ногий при подаче 10в на OE сразу открыл jtag и дал стереть. То есть работает также, как 3000.
.
А можно подробнее, как на 7064s выполнялось стирание ? Я воткнул 7032slc44, открыл квактус программер, микросхема, естественно, не детектится, потом как на 3032a хотел выбрать ее из списка устройств и прожать кноопку HV, но обнаружил, что ни у одной из 7хххS, выбираемых вручную, нельзя поставить галку 'erase'. Ее как другой тип надо выбирать перед стиранием ?

valerium
04.10.2020, 00:01
Откопал три безмолвные китайские EPM3032ALC44-10N. Разлочка прошла как по нотам, все прекрасно - тут все по написанному, выбираем устройство вручную. ставим галку Erase - все затирается и дальнейшая работа как с чистой микросхемой.
Потом вернулся к своим 7032. Итак, они не детектятся, если выбирать 3032, включать erase и запускать процесс с кнопкой "высокого напряжения"- ничего не отрабатывает.
А вот если руками выбрать EPM7032S, выставить галку "blank check" и с высоким напряжением запустить, то бланк чек обломается, но после этого JTAG работает и микросхема детектится.
А вот потом начинается мракобесие. Любые попытки ее программировать файлом для EPM7032SLC44, верифицировать или сделать бланк чек приводят к следующему


Info (209060): Started Programmer operation at Sun Oct 04 01:53:19 2020
Info (209006): Unrecognized device
Error (209001): JTAG ID code specified in JEDEC STAPL Format File does not match any valid JTAG ID codes for device
Error (209012): Operation failed
Info (209061): Ended Programmer operation at Sun Oct 04 01:53:19 2020


Попытка прочитать JTAG ID в дебаггере (команда вроде как 0x006) возвращает из регистра данных 0.
Но вот если открыть .pof, собранный под другую clpd (например, 3032), то получаем вот что:


Info (209060): Started Programmer operation at Sun Oct 04 01:57:07 2020
Error (209015): Can't configure device. Expected JTAG ID code 0x170320DD for device 1, but found JTAG ID code 0x070320DD.
Error (209012): Operation failed
Info (209061): Ended Programmer operation at Sun Oct 04 01:57:07 2020

где 0x070320DD - это валидный JTAG ID для EPM7032S.

Я мало понимаю, что я проделал и что произошло. И теперь вопрос к знающим: а, собственно, что с чем у него не совпадает-то в первом случае, когда "JTAG ID code specified in JEDEC STAPL Format File does not match any valid JTAG ID codes for device" ?
Больше сделать с этими 7032 ничего не смог. Добился работающего JTAG и они по прежнему бесполезны )

Кстати, только что проверил, переставил перемычку в 3,3в (это положение для 3032 сделано) - тоже детектятся. Не знаю, могут ли 7032 шиться на этом напряжении, но JTAG работает (ID читается).

Еще у меня есть несколько нечитаемых 7128SLC84 и кровать под них, которую еще не припаял. Я их тоже заготовил на эксперименты, хотя особо многого от них не жду. Расскажите, кто пробовал, чего с ними НЕ НАДО делать, чтобы не окирпичить полностью ?

valerium
05.10.2020, 00:17
Припаял кровать под PLCC84, поставил EPM7128SLC84, подключил кнопку HV на пин 84 - и ничего. Чуда не произошло.
Как и у всех предшественников. Так что с корпусами PLCC84 предыдущий трюк действительно не проходит ((

Идем дальше.
Пытаюсь сравнивать то, что видно в квактусе на живой 3032A и кривой 7032S

Выполняем blank check на корректно определяемой 3032A:

Info (209060): Started Programmer operation at Mon Oct 05 01:46:27 2020
Info (209018): Device 1 silicon ID is ALTERA99 (1)
Info (209020): Blank-checking device 1
Info (209011): Successfully performed operation(s)
Info (209061): Ended Programmer operation at Mon Oct 05 01:46:28 2020


Теперь детектим полуразблокированную 7032SLC44:


Info (209060): Started Programmer operation at Mon Oct 05 01:48:29 2020
Info (209006): Unrecognized device
Error (209001): JTAG ID code specified in JEDEC STAPL Format File does not match any valid JTAG ID codes for device
Error (209012): Operation failed
Info (209061): Ended Programmer operation at Mon Oct 05 01:48:29 2020


Разница, как мы видим, в некоем "Device 1 silicon ID is ALTERA99 (1)".
Внимание, вопрос: что это и где оно хранится ? Может достаточно пропатчить какой-нибудь справочник в Квактусе, чтобы он согласился программировать эту недораспознаваемую cpld ?

Еще эксперимент.
Запускаю UrJTAG. Выбираю кабель UsbBlaster. Выполняю detect.

Вот что вижу на epm7032alc44:


jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000111000000110010000011011101 (0x00000000070320DD)
Manufacturer: Altera


А вот что вижу на epm7032slc44:


jtag> detect
IR length: 10
Chain length: 1
Device Id: 00010111000000110010000011011101 (0x00000000170320DD)
Manufacturer: Altera


В обоих случаях детектится корректный Device ID. Что же тогда есть "Silicon ID" в Квактусе, если он не является частью Device ID ?

Serg6845
05.10.2020, 19:34
Еще эксперимент.
Запускаю UrJTAG. Выбираю кабель UsbBlaster. Выполняю detect.

Вот что вижу на epm7032alc44:


jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000111000000110010000011011101 (0x00000000070320DD)
Manufacturer: Altera


А вот что вижу на epm7032slc44:


jtag> detect
IR length: 10
Chain length: 1
Device Id: 00010111000000110010000011011101 (0x00000000170320DD)
Manufacturer: Altera


В обоих случаях детектится корректный Device ID. Что же тогда есть "Silicon ID" в Квактусе, если он не является частью Device ID ?

Manufacturer: Altera как бы намекает.
может не в тему, но прошелся по граблям с Xilinx 9536 - тоже не хотела стираться/шиться. оказалось что у ревизии 1 совершенно другие алгоритмы стирания/записи чем у более новых, пришлось ставить софт аж 3 версии (древний как рога мамонта). с ним все стирается/прошивается. может здесь похоже?

valerium
05.10.2020, 23:08
у ревизии 1 совершенно другие алгоритмы стирания/записи чем у более новых, пришлось ставить софт аж 3 версии (древний как рога мамонта). с ним все стирается/прошивается. может здесь похоже?
Ого, вот это новость... даже предположить не мог, что у мамонтов были рога )
Перепробовал квартус 13.0, программер от 13.1, квартус 6, все это с усб и с lpt-байтбластером. Все одинаково (
Еще пытался запустить max+plusII и в нем программер через lpt вообще ничего не обнаружил.
Надежда была на UrJTAG, что я смогу в режиме svf-плеера им вкатать прошивку, но там нет файлов параметров для 7032s, я пытался сделать аналогичный из 3064a и 7128ae, но у них разные номера регистров и ничего не вышло из этого.

IgorR76
06.10.2020, 01:44
7064-44 у меня стиралась штатным способом: подключаю программатор, подаю 5в на плис, подаю 10в на OE. Открывается jtag, чип детектится стандартно в квартус программере. Стираю, отключаю 10в. Jtag остается рабочим.

2 Hardwareman : поделитесь уже, пожалуйста, лог. диаграммами стирания 7128-84. Всё-таки кому то это надо...

valerium
06.10.2020, 05:16
7064-44 у меня стиралась штатным способом: подключаю программатор, подаю 5в на плис, подаю 10в на OE. Открывается jtag, чип детектится стандартно в квартус программере. Стираю, отключаю 10в. Jtag остается рабочим.

"Стираю" - это значит, что у нее чекбокс "erase" был активным ? У меня на 7032 активен только blank check. И если открываю .pof, собранный под эту плис, то доступны еще program и verify, но они не отрабатывают из-за несоответствия "Silicon ID" (сам не знаю, что это).



2 Hardwareman : поделитесь уже, пожалуйста, лог. диаграммами стирания 7128-84. Всё-таки кому то это надо...
А диаграммы все-таки были сняты ? Было бы здорово из увидеть.
Тут у знакомого обнаружился Xeltek 3000, но нету адаптеров под plcc44 и plcc84. Цена у них крайне негуманная, причем "s416t" для plcc84 требует еще промежуточного переходника "PEP" - видимо это то, что раскидивает длинный DIP на панели на два ряда PBD.
Может кто срисовывал распиновки переходников для кселтеков, чтоб реализовать его в мгтф-е ?
(фото в интернете смотрел, не обнаруживал там ничего кроме сокета и платы, т е eeprom, идентификационных и ограничивающих время жизни в них нет (а такое есть у Xeltek 6000 - сам был в шоке)

IgorR76
06.10.2020, 11:30
Не совпадает ID - нерабочий/нестандартный/контрафактный чип. Я такие выкидывал.

valerium
06.10.2020, 22:36
Не совпадает ID - нерабочий/нестандартный/контрафактный чип. Я такие выкидывал.
Вот до этого допетрить и не могу - что с чем не совпадает ?
JTAG ID ведь правильный и даташиту соответствует. А вот что за Silicon Id ? Как его считать, чтоб узнать, что в нем ?
У других ПЛИС квартус пишет, что там нечто вроде AĹTERA99 (97, 00, еще что-то - год разработки, видимо) - оно откуда читается, прямо с TAP-контроллнра в ASCII что ль?

IgorR76
06.10.2020, 22:39
Если Квартус жалуется на несоответствие - работать с таким чипом он не будет. Меняйте плис.

valerium
07.10.2020, 22:33
Эх, жаль. Две 7032s и обе в мусорку... Хотя JTAG по "кнопке высокого напряжения" легко открылся у обеих.

valerium
10.10.2020, 14:41
Эх, жаль. Две 7032s и обе в мусорку... Хотя JTAG по "кнопке высокого напряжения" легко открылся у обеих.

Еще немного информации к размышлению. Или "копаемся в мусорном бачке дальше".
Информация для таких же как я непрофессионалов. Возможно, гуру будут сдерживать смех. ну да ладно.

Заказывал однажды у китайца 7064SLC44, приехала красивая микросхема в ячеистой ленте, писалась, верифицировась отменно. Не помню, делал ли тогда blank check, но тогда осталась полная уверенность, что получил новую ПЛИС в заводской упаковке. Более того, у него была дешевая нормальная доставка (не Cainiao super economy, где процент потерь моих посылок под 70% после пересечения таможни РФ).
Обрадовался, заказал у него же еще три штуки. Вчера получил, все такие же новые и красивые. Расклад такой:
#1. В квартусе детектится, blank check не выполняется (шитая), но шьется и верифицируется нормально.
#2. В квартусе не детектилась, выполнил ей blank check с подачей высокого на OE1 - задетектилась. Но после этого не шьется из-за "неподдерживаемой ревизии устройства" (в логе ошибка Info (209006): Device #1 Silicon ID is ALTERA_7(01), а у нормальной было ALTERA97(01) - то есть при проверке Silicon ID читается байт 0x19 вместо 0x39 - ошибка в одном бите, а уже облом.
#3. В квартусе не детектилась, выполнил ей blank check с подачей высокого на OE1 - задетектилась, но не проходит проверку Silicon ID, потому что там читается откровенный мусор (как выяснилось далее, в фрагменте проверки SILICON ID важно, чтоб считалось именно "ALTERA", тогда последующее воспринимается как номер ревизии). В общем, непригодная - не выброс. Вроде бы.

То есть Silicon ID или искажается при высоковольтном стирании, или просто он изначально испорчен и микросхема действительно продавалась из заводской отбраковки.

Наткнулся вот на эту (https://marsohod.org/11-blog/183-mbftdi11) статью, где на 7032s ничего не шилось также из-за криво проверяемого Silicon ID. Они шьют своим программатором и своим же софтом, но используют как сценарий полученный из кактуса .svf-файл, это развернутый в линию набор команд JTAG, который просто проигрывается SVF-плеером в указанное устройство (программатор).

ОК, берем микросхему #3, экспортируем в .svf свой любимый проект, собранный для 7064S, из того же кактус-программера. Если выбираем при экспорте опцию "program", то внутри svf будут блоки команд
!CHECKING SILICON ID - проверка нашего непонятного Silicon ID
!BULK ERASE - стирание
!PROGRAM - программирование
!VERIFY - верификация
Если выбираем при экспорте только верификацию, получим два блока - CHECKING SILICON ID и VERIFY.

Подключаем программатор и микросхему в подопытном устройстве, выбираем квартусом программатор, если нужно.
Запускаем JTAG chain debugger. На вкладке JTAG chain integrity можно выполнить Test jtag chain - это позволит убедиться, что микросхема видна по JTAG.
На вкладке JTAG Chain debugger жмем Open JTAG chain log и пытаемся открыть сформированный ранее svf-файл. Он, разумеется, ломается на какой-то из команд блока !CHECKING SILICON ID, поэтому безжалостно выстригаем этот блок текстовым редактором. Получается, что выполняется только bulk erase, program и verify. Но под известный нам и заведомо правильный тип ПЛИС.


!Info: JTAG chain connection is good. Detected 1 device(s)
!Info: Device 1: EPM7064S (USERCODE: 0x00000000)

!Info: Parsing Progress: 100 %
!Info: Execution progress: 100 %
!Warning: Current hardware doesn't suppport TCK frequency setting
!Info: Success to execute file: C:/test/7064-p_nocheck.svf
!Info: Total time is: 19 seconds;

!Info: Parsing Progress: 100 %
!Info: Execution progress: 100 %
!Warning: Current hardware doesn't suppport TCK frequency setting
!Info: Success to execute file: C:/test/7064-v_nocheck.svf
!Info: Total time is: 1 seconds;


Здесь первые две строки - проверка цепи JTAG (с первой вкладки), затем 5 строк - отработка сценария с опцией program (программирование/верификация), последние 5 строк - отработка сценария с опцией verify, из него тоже уже убрана проверка silicon ID.

Слово SUCCESS означает в обоих случаях успешное завершение верификации. Микросхема из мусорного бачка все-таки успешно прошилась.

Сразу скажу, что микросхема #2 сломалась на 19% сценария прошивки и я с ней ничего не добился.
И ранее замученные 7032S тоже рвут выполнение программирования на 17%. Так что это не выход, но вывод из этого такой: микросхемы с кривым Siilcon ID могут быть исправны.
А неисправными могут оказаться и микросхемы, которые проходят все тесты успешно - мы не знаем, какой хлам могут прислать наши китайские друзья.

Моя статистика по китайским ПЛИС из того, что покупалось.
3032ALC44 - все приходили заблокированными, но приводятся в чувство кнопкой HV и работают без ошибок.
7032SLC44 - все приходили заблокированными, JTAG открыл, ни с одной ничего полезного не сделал.
7064SLC44 - половина купленных не заблокирована, шьется и проверяется норм, остальные дают открыть JTAG, но шьются через дебаггер и пока только одна успешно.
7128SLC84 - ну эти все молчали и молчат, даже JTAG не открывается.

ЗЫ: воскрешенную 7064SLC44 толком не тестировал в более-менее сложной схеме. Все, что под сейчас рукой - оно на 3032. Чуть позже переделаю питание на 5в на какой-нибудь плате, отцепив ноги 36 и 17, потестирую с пристрастием.

HardWareMan
10.10.2020, 16:47
valerium, внезапно, да (https://zx-pk.ru/threads/25998-programmator-mikroskhem-programmiruemoj-logiki(cpld).html?p=1042597&viewfull=1#post1042597)?

valerium
10.10.2020, 17:10
valerium, внезапно, да (https://zx-pk.ru/threads/25998-programmator-mikroskhem-programmiruemoj-logiki(cpld).html?p=1042597&viewfull=1#post1042597)?

Что именно ? Про разлочку MAX3000 именно оттуда все и почерпнул, это перечитано на много раз, спасибо всем авторам.
Но до этого нигде не нашел, что делать с ПЛИС с кривым Silicon ID.
Про сколько-нибудь удачную разлочку MAX7000 раньше ничего не видел, поэтому написал про свой эксперимент.

IgorR76
10.10.2020, 17:25
valerium, jtag в дебаггере не дает ли сбоев? Подтяжки, кондюр стоят?
Если с обвязкой всё идеально — то да, бывают полудохлые плисы.

- - - Добавлено - - -

HardWareMan,


2 Hardwareman : поделитесь уже, пожалуйста, лог. диаграммами стирания 7128-84. Всё-таки кому то это надо...

Соберём стиратель, будем стирать ! :)

valerium
10.10.2020, 17:27
valerium, jtag в дебаггере не дает ли сбоев? Подтяжки, кондюр стоят?
Если с обвязкой всё идеально — то да, бывают полудохлые плисы.

А вот про это поподробнее, pls.
Если сбои в дебаггере, это "то работает, то нет" - то тут все стабильно. Либо всегда работает, либо (другая плис) всегда сбоит на одном месте.
Блокировочные кондеры на питаниях ПЛИС стоят, электролит 100мкф после стаба тоже стоит.
Подтяжек нет и до этого их не было. Но одни ПЛИС шьются всегда и прекрасно, другие - не шьются.

7128SLC подключал с подтяжками в плате sizif128 (TCK - 10к к земле, TMS, TDI - 10к к +5в, TDO - без подтяжки), пробовал и без подтяжки - там все одинаково глухо.

IgorR76
10.10.2020, 17:44
Мой программатор собран так:
73685
1я нога не обязательно на землю. Это чтоб остановить шевеление до программирования.
А источник +5/+10в надо хороший, стабильный. Как писал Tronix, скачки потребления присутствуют.
Не панацея, но всё работает. При isp подтяжки рекомендуют по-другому.

HardWareMan
10.10.2020, 20:10
valerium, обвёл действительно важное.
https://jpegshare.net/images/de/e0/dee0ba6c89b226cf4b6f22fdf0d5a567.png
Вы вот там кнопочками балуетесь, а надо бы чтобы контроллер выставлял HV в строгие моменты времени. Хоть ардуина.

- - - Добавлено - - -

IgorR76, TCK принято тянуть на землю, почитайте уже буквари на EPMки.

valerium
10.10.2020, 21:39
valerium, обвёл действительно важное.
...
Вы вот там кнопочками балуетесь, а надо бы чтобы контроллер выставлял HV в строгие моменты времени. Хоть ардуина.


1. Подавал 10,5в, получая их на отдельном стабилизаторе, через резистор 1к. Ровно так, как было на стенде у Tronix
2. Насчет определенных моментов подачи HV - безусловно, это важно, но я пока нигде не смог обнаружить того, что можно было бы назвать "алгоритмом". Пока есть эпюры, где видно, что HV подается прямо перед началом "сеанса" JTAG, а снимается сразу после. В тактах TCK или временных единицах я эти условия не увидел. Или еще не увидел, если ответ где-то есть. Ну и строить свой Xeltek я пока не намеревался - стоимость решения намного превышает стоимость цели. Я просто пытался расшевелить микросхемы, уже признанные мусором.

И ремарка: по "кнопочному алгоритму" Tronix с 3032alc пока осечек не было, а для 7000й серии пока нету даже примерной инфы. Им нельзя из квартуса дать команду "Erase", потому что для них она там недоступна. Именно поэтому я выбирал наугад "blank check" и подавал HV перед сеансом с "blank check" и выключал "после". Варвар я. Так бывает )


PS: В разлоченную микросхему 7064SLC с кривым Silicon ID сейчас прошил "триггер трдос-а" от эмулятора флопа+ВГ на ардуине (by Helbr). Гоняю.
Однако, работает.
Под задачи примерно такой сложности использование этого хлама и задумывалось.

alvis
12.10.2020, 13:59
Вы вот там кнопочками балуетесь, а надо бы чтобы контроллер выставлял HV в строгие моменты времени. Хоть ардуина.
На сайте Intel написано, что при работе с микросхемами MAX3000A высокое напряжение на выводе OE не используется. Оно используется только для отключения JTAG, после чего вся операции с ними выполняются в Serial режиме.

Does the OE1 pin drive High when the MAX 3000A device is being programmed?
Description
No, the OE1 pin does not drive high when the MAX® 3000A device is being programmed. The OE1 pin is the VHJ pin during programming mode which must be set to 11 volts to override the "disable JTAG pins" bit on the device to start the In-System Programming (ISP) operation. If the "disable JTAG pins" bit is not set in the programming files (POF) nor in the device, there is no need to bring VHJ to 11 volts.

HardWareMan
12.10.2020, 15:15
alvis, спасибо, Кэп! Только не для отключения а наоборот, для включения. Я то игрался со своими EPM3032 именно заблокировав JTAG Enable, к тому же назначал на эти пины альтернативные функции (всё по канону от дядюшки Ляо или Игрософта!). И вот тут, если тебе надо стереть этот чипс, HV и нужен. Я устанавливал HV в разные моменты времени и чипс дох с вероятностью 50%. А в Хелтеке ни разу не сдох (пара десятков итераций). Так ЧЯДНТ?

alvis
12.10.2020, 17:56
Только не для отключения а наоборот, для включения
Согласен, описочка вышла. Но в остальном все правильно. После изменения состояния режима JTAG, дальнейшая работа в обычном режиме. В прочем официальное заявление интел я привел выше.

marinovsoft
09.05.2021, 00:03
Имеются четыре EPM7032SL44 с залоченным JTAG. Попробовал разлочить. Для разлочки достаточно на секунду подать 10.5В перед нажатием кнопки Detect в квартусе.
Для статистики: разлочилить удалось все микросхемы. Из них:
1 шт успешно проходит программирование и верификацию.
1 шт успешно проходит программирование, верификацию не проходит.
2 шт ругаются на некорректный ID, не программируются. Начал рыть как происходит программирование, оказалось, что есть файл сценария jam2.jam (в моем случае он лежит по адресу C:\intelFPGA_lite\18.1\quartus\bin64\jam2.jam), его можно немного пропатчить и тогда он перестает ругаться на некорректный ID. После этого из этих двух одна программируется и верифицируется, одна программируется, но не верифицируется.

https://i.ibb.co/Mydj396/1-1.png (https://ibb.co/Mydj396)
https://i.ibb.co/d2sWhhM/3-1.png (https://ibb.co/d2sWhhM)

Когда проверю, как они работают в устройстве - отпишусь. Во вложении оригинальный и пропатченный файл jam2.jam

marinovsoft
09.05.2021, 10:55
Установил микросхему с кривым ID в SMUC. Немного погонял, на первый взгляд проблем не наблюдается.

valerium
09.05.2021, 11:17
marinovsoft, спасибо за способ, но можете ли пояснить, в чем суть этого патча jam2.jam ?
У меня кактус 13.1, там эти файл другой и вряд ли будет корректным просто подменить его на выложенный в последний пост.
Файлы сравнением посмотрел и увидел некие безликие переменные


Сравнение файлов jam2.jam и JAM2.JAM.ORIGINAL
***** jam2.jam
(A16[5] != 65))
THEN V42 = 0;
IF (V42 != 0) THEN GOTO L261;
***** JAM2.JAM.ORIGINAL
(A16[5] != 65))
THEN V42 = 6;
IF (V42 != 0) THEN GOTO L261;
*****

***** jam2.jam
IF (V73 > V38) THEN V38 = V73;
IF (!V40) THEN V42 = 0;
L261:
***** JAM2.JAM.ORIGINAL
IF (V73 > V38) THEN V38 = V73;
IF (!V40) THEN V42 = 7;
L261:
*****

Переведите на язык нашей планеты, пжл )

marinovsoft
09.05.2021, 11:34
Идея следующая: в окно сообщений выводятся сообщения об ошибках, например


Unrecognized device

и


Device revision is not supported


В этом файле есть кусок кода


IF (V42 == 6) THEN
PRINT "Unrecognized device";
IF (V42 == 7) THEN
PRINT "Device revision is not supported";


соответственно, делаем вывод, что в какой-то момент данные переменные принимают указанные значения. Надо сделать так, чтобы не принимали. Методом последовательного перебора и замены всех вхождений V42 = 6 на V42 = 0 и V42 = 7 на V42 = 0 находим нужные места замены и оставляем только их.

valerium
09.05.2021, 14:12
соответственно, делаем вывод, что в какой-то момент данные переменные принимают указанные значения. Надо сделать так, чтобы не принимали. Методом последовательного перебора и замены всех вхождений V42 = 6 на V42 = 0 и V42 = 7 на V42 = 0 находим нужные места замены и оставляем только их.
ОК, то есть по выводимым комментам ищем кусок кода, где проверяется переменная с кодом результата (сейчас посмотрел, в 13-м квартусе это тоже V42) и не даем ей принимать неподходящие значения. Спасибо.

PS: осталось добить только 7128S, они одни остались непобежденными )

Romych
15.12.2021, 13:33
Спасибо, коллеги! По Вашим технологиям удалось разлочить JTAG на 7-ми EPM7032SLC44 и 2-х 7064SLC44, питал их при этом от 5В (в даташите указано: VCCISP Supply voltage during ISP min 4.75, max 5.25) на OE1 подавал 10,5 как и рекомендовано.
Ни одна из микросхем не разлочилась с первого раза, видимо все же важен момент подачи HV на OE1. На некоторых просто пришлось практически рандомно тыкать кнопку и запускать BlankCheck, бывало, что приходилось это около минуты делать. Из 10-ти микросхем, только одна в итоге не работает. С ней работает Автодетект, правильно причем, но шиться она отказывается.
И еще момент, я работаю под Linux, делал это в программере Quartus 20.1, почему-то в Quartus 13.1 не получалось разлочить, возможно, у них чуть разные тайминги. USBBlaster обычный китайский rev. C с кварцем и преобразователями уровня внутри. Есть похожий, но без кварца и с затертыми чипами, с тем не прокатило.

Serg6845
02.01.2022, 15:57
Всем привет и с Новым Годом!
кому-то еще интересна тема разлочки JTAG на серии 7000S? тогда вот протокол стирания 7064S в "параллельном" режиме:
http://sksb3.no-ip.org:8085/7064se.sr
открывать PulseView (https://sigrok.org/wiki/Downloads)
номера контактов указаны для панельки программатора (ALL07). схема переходника - здесь (http://matthieu.benoit.free.fr/all03/adp-7064S-PL84/ADP-EPM7064S-PL84%20Esquema.pdf)
Vpp - 1 и 4 включение - 11.7В, 2 и 3 - 10.5В
/read - чтение софтом программатора ответа от платы
Vcc/sync 1,2,3 - один и тот же сигнал, анализаторов 3шт, нужен для синхронизации
vcc7064 - питание собственно 7064.
подозреваю чо собственно стирание - это первое включение, 2 и 3 - идентификация, 4 - blank check.
да, 1 отсчет = 500нс

в наличии из 7000S есть только 7064S, так что для других снять протокол не смогу. переходник есть еще для 7032. но в софте для 7032 баги со стиранием нет, так что без девайса не выйдет.

P.S.
Подтверждено - стирание - первое включение питания. в софте присутствует бага, он сначала стирает, а потом детектит - "а того ли вобще надо стирать?"

Gesha86PK
03.01.2022, 18:06
Vpp - 1 и 4 включение - 11.7В
Недопонял. 1 и 4 это номера контактов в 84-контактной панельке ПЛИСки или в 40-пиновом ZIF программатора❓

Serg6845
03.01.2022, 20:13
Недопонял. 1 и 4 это номера контактов в 84-контактной панельке ПЛИСки или в 40-пиновом ZIF программатора❓

там питание и Vpp включается 4 раза. вот 1 и 4 раз - 11.7В, 2 и 3 - 10.5В
во всех случаях Vpp подается на 84 ногу ПЛИС (если корпус PLCC84), см. схему переходника.

electroscat
11.03.2022, 22:13
Доброго времени !
Подскажите, 7128S так и не удалось разлочить ?

Mor-Da
04.11.2022, 08:35
Спасибо, открывателям. Повторил, успешно разлочил все четыре EPM3032 с платы игрософта, пустая CPLD потребляет 10-12 мА.

bychkov
04.02.2023, 07:26
Спасибо! Получилось разлочить 5 из 5 epm3064alc44 и 9 из 10 epm7064slc44. Все plcc44 package. Правда с 7064 пришлось побольше раз потыкать на кнопку, видимо там тайминг сложнее. Есть ли прогресс с разблокировкой 7128 чипов?