Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: cyclon V в режиме PS не грузится, подозреваюсгоревшие cfg pin-ы
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
yes
по JTAG ПЛИСина грузится

при попытке загрузить в PS ничего не происходит -
то есть на nCONFIG nSTATUS реагирует, но попытки загрузить имидж или рандоиный мусор не приводят ни к чему: nSTATUS остается в 1, CONF_DONE в 0

предполагаю, что либо DCLK, либо MSEL* выгорели и внутрь ПЛИС не доходят

вот хотелось бы посмотреть через JTAG любым способом, наиболее простым
соответствуют ли внутри ПЛИС эти ножки тому, что на них подано снаружи

как я понял - signal tap-ом (то есть через пользовательскую логику) не посмотришь,
если через BST - то каким тулом это сделать?


Stewart Little
Какая именно плисина?
Как именно подключены MSEL'ы - накороть в землю/питание или через резисторы?
iosifk
Цитата(yes @ Aug 11 2016, 21:18) *
по JTAG ...
если через BST - то каким тулом это сделать?

Напрмер УниверсалСкан... Должен быть на этом ФТР...
yes
Цитата(Stewart Little @ Aug 11 2016, 23:08) *
Какая именно плисина?
Как именно подключены MSEL'ы - накороть в землю/питание или через резисторы?



5CEFA9F23

MSEL* часть накоротко, часть через резисторы - можно выбрать еще FPP16 резисторами и/или fast/standart.
уточню завтра, но что то типа 2 накоротко (MSEL3 например - во всех режимах 0), 3 резисторами



Цитата(iosifk @ Aug 11 2016, 23:26) *
Напрмер УниверсалСкан... Должен быть на этом ФТР...


спасибо,

а какие железки/кабели он понимает? byteblaster, jlink и т.п?
и если есть альтеровский BSDL файл для этой плисины, то достаточно такой информации? или надо руками этот bsdl обрабатывать?

я собирался на UrJTAG посмотреть, но, подозреваю, там нужно повозиться, чтобы начало работать
iosifk
Цитата(yes @ Aug 12 2016, 00:01) *
5CEFA9F23


а какие железки/кабели он понимает? byteblaster, jlink и т.п?
и если есть альтеровский BSDL файл для этой плисины, то достаточно такой информации? или надо руками этот bsdl обрабатывать?

я собирался на UrJTAG посмотреть, но, подозреваю, там нужно повозиться, чтобы начало работать


Посмотрите альтеровский BSDL файл. Там в перечне входов должны быть и MSEL'ы...
Файл ищите, наверняка он или в квартусах или на сайте альтеры должен быть... А вот железки - это зависит от версии софта....
Но сейчас много есть бесплатных программ. Вот у джитаг-текнолоджи есть Лайт бесплатный...
IL-76
Цитата(yes @ Aug 12 2016, 00:01) *
MSEL* часть накоротко, часть через резисторы - можно выбрать еще FPP16 резисторами и/или fast/standart.
уточню завтра, но что то типа 2 накоротко (MSEL3 например - во всех режимах 0), 3 резисторами


Вроде у Альтеры была настоятельная рекомендация присоединять их напрямую к gnd либо vccpgm, без доп сопротивлений, для корректного определения режима загрузки после подачи питания. Попробуйте резистор на 0 Ом.
Jury093
Цитата(IL-76 @ Aug 12 2016, 11:17) *
Вроде у Альтеры была настоятельная рекомендация присоединять их напрямую к gnd либо vccpgm, без доп сопротивлений, для корректного определения режима загрузки после подачи питания. Попробуйте резистор на 0 Ом.

подтверждаю, выдержка из доки:
Код
To select a configuration scheme, hardwire the MSEL pins to VCCPGM or GND without pull-up or
pull-down resistors.
Note: Altera recommends connecting the MSEL pins directly to VCCPGM or GND. Driving the MSEL pins
from a microprocessor or another controlling device may not guarantee the VIL or VIH of the MSEL
pins. The VIL or VIH of the MSEL pins must be maintained throughout configuration stages.


зы в схеме заложил 24R на MSEL и долго скакал вокруг платы в поисках неисправности, пока не поменял на 0R..
Stewart Little
Цитата(yes @ Aug 12 2016, 00:01) *
MSEL* часть накоротко, часть через резисторы - можно выбрать еще FPP16 резисторами и/или fast/standart.

Резисторы - нафиг! См. подробные ответы от коллег выше.
yes
yeshe beda - sgorel PC sm.gif pishu practicheski iz tanka

rezistory ne pomogli (to est' pri peremychkah tozhe samoe)

mozhet net na plate kontakta pod BGA ili sgorela noga...

---------

BSDL Altera daet, nomera pin-ov izvestny - vopros v vybore inctrumenta...
Stewart Little
Цитата(yes @ Aug 12 2016, 20:32) *
mozhet net na plate kontakta pod BGA ili sgorela noga...

Еще надо проверить скорость нарастания питающих напряжений

Цитата
BSDL Altera daet, nomera pin-ov izvestny - vopros v vybore inctrumenta...

USB Blaster и Universal Scan для начала.
yes
не видит universal scan blaster-а. может ему что-то дополнительно нужно поставить типа libusb?
yes
universal scan запустился - все замечательно, MSEL-ы посмотрел

но очередная подстава от Альтеры - в их BSDL-ных файлах отсутствуют конфигурационные ноги (DCLK, nCONFIG и т.д.) !!!
то есть цепочка достаточно длинная, и наверняка эти ноги там есть, но как ее декодировать (в плане конфигурационных ног) не понятно
то есть universal scan опросить эти ноги не может

есть более честный BSDL файл на 5CEBA9F23 ????
iosifk
Цитата(yes @ Aug 14 2016, 16:15) *
но очередная подстава от Альтеры - в их BSDL-ных файлах отсутствуют конфигурационные ноги (DCLK, nCONFIG и т.д.) !!!
то есть цепочка достаточно длинная, и наверняка эти ноги там есть, но как ее декодировать (в плане конфигурационных ног) не понятно
то есть universal scan опросить эти ноги не может

есть более честный BSDL файл на 5CEBA9F23 ????

Так написано же:
--DEVICE_FAMILY Family-Specific Pins
MSEL0 , MSEL1 , MSEL2 , MSEL3 , MSEL4 : in bit; Это только входы


RREF_TL , nCSO , AS_DATA3 , AS_DATA2 , AS_DATA1 , DCLK ,
AS_DATA0 , CONF_DONE , nSTATUS , nCE , nCONFIG : linkage bit; а это выводы, которые не включены в цепочку тестирования.
Наверняка для всех других микросхем Альтеры сделано так же..
yes
полагаю, что более важным является описание регистра

attribute BOUNDARY_LENGTH of CYCLONE_V_5CEBA9F23 : entity is 1728;
attribute BOUNDARY_REGISTER of CYCLONE_V_5CEBA9F23 : entity is
....

в котором пропущены много полей,

а "хуман реадабле" информация типа linkage bit не имеет значения

я конечно могу предположить, что в Альтере работают идиоты, которые не внесли ключевые пины в цепочку, но скорее всего скрывают от пользователя, козлы sm.gif

-----------------------------

upd: скорее всего, в цепочке большая часть битов это неиспользуемые ножки (not-bonded io), но то что исключили из цепочки конфигурационные ножки, большая часть из которых переводится в user io - не верю sm.gif

спасибо за universal scan - программа интересная, но кроме баловства (всяких виртуальных светодиодов и т.п.) хотелось бы понять - как им pcb проверять - если две микросхемы соединены между собой ПЛИС и проц - выводы inout - как прозвонить? подскажите общий принцип, я что-то вообще не нашел док
jks
Если еще актуально, соответствие пинов индексам в BSR цепочке для 5CEBA9F23C7.
CODE

Device name : 5CEBA9F23C7
Total BSR cells : 576
----------------------------------------------------------------------------------------------------
BONDID | PAD | PINID | JTAG_BSR | MCF_NAME | DESIGN_NAME | IO_CELL_NAME | AUX_FUNCTION_NAME
----------------------------------------------------------------------------------------------------
pad: 627 | L6 | pin: 242 | bsr: 561 | X3Y115SUB_LOC3 | MSEL0 | IO_CONFIG | MSEL0
pad: 629 | J6 | pin: 244 | bsr: 562 | X3Y115SUB_LOC9 | MSEL1 | IO_CONFIG | MSEL1
pad: 632 | A2 | pin: 247 | bsr: 563 | X4Y115SUB_LOC6 | MSEL2 | IO_CONFIG | MSEL2
pad: 633 | E5 | pin: 248 | bsr: 564 | X4Y115SUB_LOC9 | MSEL3 | IO_CONFIG | MSEL3
pad: 635 | F3 | pin: 250 | bsr: 565 | X7Y115SUB_LOC3 | MSEL4 | IO_CONFIG | MSEL4
pad: 636 | C5 | pin: 251 | bsr: 566 | X119Y115SUB_LOC0 | UCLEAR | IO_CONFIG | GND
pad: 634 | A4 | pin: 249 | bsr: 567 | X7Y115SUB_LOC0 | NCONFIG | IO_CONFIG | nCONFIG
pad: 631 | G5 | pin: 246 | bsr: 568 | X4Y115SUB_LOC3 | NCE | IO_CONFIG | nCE
pad: 630 | H5 | pin: 245 | bsr: 569 | X4Y115SUB_LOC0 | NSTATUS | IO_NSTATCONDONE | nSTATUS
pad: 628 | K6 | pin: 243 | bsr: 570 | X3Y115SUB_LOC6 | CONF_DONE | IO_NSTATCONDONE | CONF_DONE
pad: 64 | V3 | pin: 12 | bsr: 571 | X9Y0SUB_LOC0 | DCLK | IO_CONFIG | DCLK
pad: 65 | AB4 | pin: 13 | bsr: 572 | X9Y0SUB_LOC3 | SPI_DATA0 | IO_CONFIG | AS_DATA0, ASDO, DATA0
pad: 63 | AB3 | pin: 11 | bsr: 573 | X7Y0SUB_LOC9 | SPI_DATA1 | IO_CONFIG | AS_DATA1, DATA1
pad: 61 | AA5 | pin: 9 | bsr: 574 | X7Y0SUB_LOC3 | SPI_DATA2 | IO_CONFIG | AS_DATA2, DATA2
pad: 59 | T4 | pin: 7 | bsr: 575 | X4Y0SUB_LOC9 | SPI_DATA3 | IO_CONFIG | AS_DATA3, DATA3
pad: 57 | R4 | pin: 5 | bsr: 576 | X4Y0SUB_LOC3 | NCSO | IO_CONFIG | nCSO, DATA4

Дальше ручками отредактировать BSDL файл в нужном месте.
Это скрипт для генерации полного списка.
Вызов dump_bsr_info <partname>, partname - полное название устройства включая "спидрейт" : 5CEBA9F23C7

CODE

load_package advanced_device

proc dump_bsr_info { part } {
if { [catch [load_device -part $part] ] } {
puts "Partname $part not exist"
} else {
puts "Device name : $part"
dump_ios
}
unload_device
}

proc dump_ios {} {
set pad_cnt [ get_pad_data INT_PAD_COUNT ]
set pin_cnt [ get_pkg_data INT_PIN_COUNT ]
set bsr_count [ get_pad_data int_jtag_bsr_count ]
set pad_name0 ""
set pad_ic_name0 ""
set pad_ic_name1 ""
set pad_ic_name2 ""
set pad_ic_name3 ""
set pad_ic_name4 ""
set pad_ic_name5 ""
set pad_pin_id ""
set pad_wire_id ""
set pad_jtag_bsr ""

puts "Total BSR cells : $bsr_count"

puts [string repeat "-" 100]
set output [format "%8s | %4s | %8s | %8s | %18s | %10s | %12s | %10s" BONDID PAD PINID JTAG_BSR MCF_NAME DESIGN_NAME IO_CELL_NAME AUX_FUNCTION_NAME]
puts $output
puts [string repeat "-" 100]

for { set i 0 } { $i < $pad_cnt } { incr i} {
set pad_jtag_bsr -1
if { [ get_pad_data -pad $i BOOL_IS_BONDED] } {
catch { set pad_name0 [ get_pad_data -pad $i STRING_USER_PIN_NAME ] } { set pad_name0 "NA" }
catch { set pad_ic_name0 [ get_pad_data -pad $i STRING_MCF_NAME ] } { set pad_ic_name0 "NA" }
catch { set pad_ic_name1 [ get_pad_data -pad $i STRING_IC_DESIGN_NAME ] } { set pad_ic_name1 "NA" }
catch { set pad_ic_name2 [ get_pad_data -pad $i STRING_IC_IO_CELL_NAME ] } { set pad_ic_name2 "NA" }
catch { set pad_ic_name3 [ get_pad_data -pad $i STRING_IC_IO_BLOCK_CELL_NAME ] } { set pad_ic_name3 "NA" }
catch { set pad_ic_name4 [ get_pad_data -pad $i STRING_AUXILIARY_FUNCTION_NAME ] } { set pad_ic_name4 "NA" }
catch { set pad_ic_name5 [ get_pad_data -pad $i STRING_IO_DECODER_NAME ] } { set pad_ic_name5 "NA" }
catch { set pad_pin_id [ get_pad_data -pad $i INT_PIN_ID ] } { set pad_pin_id -1 }
catch { set pad_wire_id [ get_pad_data -pad $i INT_WIREBOND_PAD_NUMBER ] } { set pad_wire_id -1 }
catch { set pad_jtag_bsr [ get_pad_data -pad $i INT_JTAG_BSR_INDEX ] } { set pad_jtag_bsr -1}

} else {

catch { set pad_name0 [ get_pad_data -pad $i STRING_USER_PIN_NAME ] } { set pad_name0 "NA" }
catch { set pad_ic_name0 [ get_pad_data -pad $i STRING_MCF_NAME ] } { set pad_ic_name0 "NA" }
catch { set pad_ic_name1 [ get_pad_data -pad $i STRING_IC_DESIGN_NAME ] } { set pad_ic_name1 "NA" }
catch { set pad_ic_name2 [ get_pad_data -pad $i STRING_IC_IO_CELL_NAME ] } { set pad_ic_name2 "NA" }
catch { set pad_ic_name3 [ get_pad_data -pad $i STRING_IC_IO_BLOCK_CELL_NAME ] } { set pad_ic_name3 "NA" }
catch { set pad_ic_name4 [ get_pad_data -pad $i STRING_AUXILIARY_FUNCTION_NAME ] } { set pad_ic_name4 "NA" }
catch { set pad_ic_name5 [ get_pad_data -pad $i STRING_IO_DECODER_NAME ] } { set pad_ic_name5 "NA" }
catch { set pad_pin_id [ get_pad_data -pad $i INT_PIN_ID ] } { set pad_pin_id -1 }
catch { set pad_wire_id [ get_pad_data -pad $i INT_WIREBOND_PAD_NUMBER ] } { set pad_wire_id -1 }
catch { set pad_jtag_bsr [ get_pad_data -pad $i INT_JTAG_BSR_INDEX ] } { set pad_jtag_bsr -1}
}

set output [format "pad:%4d | %4s | pin:%4d | bsr:%4d | %18s | %10s | %12s | %10s" $i $pad_name0 $pad_pin_id $pad_jtag_bsr $pad_ic_name0 $pad_ic_name1 $pad_ic_name2 $pad_ic_name4]
puts $output
}
puts [string repeat "-" 100]
}

Можно отредактировать стандартный BSDL генератор, но лень.

Подправленный BSDL генератор. ( из папки $... \tcl\internal\eda_bsd\ )
Нажмите для просмотра прикрепленного файла
BSDL с конфигурационными выводами.
Нажмите для просмотра прикрепленного файла

yes
спасибо

я экспериментальным путем нашел, что интересующие меня биты в цепочке №12 и №15

проверю попозже генератор bsdl

----------------------

но основная проблема осталась - при наличии всех сигналов отсутствует реакция у ПЛИСины в PS

сейчас хочу получить индикацию ошибки на nSTATUS

.....

что еще можно сделать?


Jury093
Цитата(yes @ Aug 11 2016, 21:18) *
то есть на nCONFIG nSTATUS реагирует, но попытки загрузить имидж или рандоиный мусор не приводят ни к чему: nSTATUS остается в 1, CONF_DONE в 0

мусор грузить бессмысленно, чип стартует только если имя камня совпадет..
попробуйте в бинарнике прошивки перед загрузкой по PS переставить биты 0<>7 1<>6 etc..
Stewart Little
Цитата(yes @ Aug 15 2016, 15:56) *
что еще можно сделать?

А источником PS-битстрима что является :
- конфигуратор (какой именно, CPLD+Flash)?
- бластер?
- внешний процессор?
yes
загружает внешний процессор.

мусор грузить хочу, чтоб увидеть вообще хоть какую-то реакцию. при загрузки имиджа не встает ни conf_done, ни соответственно init_done

>мусор грузить бессмысленно, чип стартует только если имя камня совпадет..
а где-нибудь есть описание бинарного формата? если имя не совпадает - какая реакция чипа?

собственно я предполагаю (на основании опыта работы с ПЛИС других производителей), что каждая порция конфигурационных данных сопровождается CRC и чип проверяет целостность во время загрузки.

есть какой-либо более внятный документ, кроме handbook-а?
там как-то слишком кратко you can monitor the nSTATUS pin to detect errors.
jks
Тут кратко описан алгоритм конфигурирования.
https://www.altera.com/content/dam/altera-w...cfg_cf51001.pdf

В каких-то доках было более побробно описано как происходит конфигурирование.
Но если грубо, то загрузка идет кадрами (или пакетами).
Сначала идет заголовок в котором содержатся разные служебные данные для регистра опций,
длина прошивки в битах, вектор инициализации если есть поддержка шифрования и т.д.
Затем идут кадры инициализации В/В (регистр IOCSR), потом инициализация логики.
В новых семействах можно часть логики маскировать, то есть частично обновлять (Partial Reconfig).
Но деталей не знаю. Каждый кадр имеет CRC.
Если какойт-то кадр битый, то nStatus уходит в ноль.
Если вся прошивка залилась, то устанавливается CONF_DONE.
Но если в настройках ОПЦИЙ Device initialization clock source установлен на внешний источник, то надо выдать некоторое количество тактов на DCLK или CLKUSER.
yes
спасибо

но не удается nstatus сбросить в 0 подачей случайных бит или переворачиванием порядка бит в байте
это как-то нехорошо
буду издеваться над демо-платой (DE0), но там загрузка по AS, нет внешнего контроллера - возни много, хотелось бы избежать...

--------------

c СRC_ERROR тоже непонятно - стоит сразу в 1, во время nconfig=0 и не сбрасывается до подачи фронта DCLK

--------------

может какие-то очевидные альтероводам опции в device and pin option нужно сменить???

я пробовал несколько вариантов - не помогло
yes
отчитываюсь о проделанной работе:

подпаял бластер в PS (на проводках к ножкам ПЛИС) - грузит файл (CONF_DONE встает), а если в rbf вбить мусор, то nstatus падает в 0

-----------------

буду сравнивать стартовый патерн - что-то там типа 0x6a 0x6a 0x6a, чтобы разобраться с бит/байт/ворд-эндианом, но хотелось бы почитать документ про формат битстрима, что там и как...



Stewart Little
Цитата(yes @ Aug 17 2016, 22:58) *
буду сравнивать стартовый патерн - что-то там типа 0x6a 0x6a 0x6a, чтобы разобраться с бит/байт/ворд-эндианом, но хотелось бы почитать документ про формат битстрима, что там и как...

Вот отсюда: http://quartushelp.altera.com/16.0/index.h...ary/def_rbf.htm
Цитата
When configuring a device in PS configuration scheme, send each byte of data with the LSB first.
yes
спасибо за помощь,
начало грузиться с процессора.

программист клянется, что ничего не менял, но верить в это не получается sm.gif

конечно хорошо, когда какой-нибудь STM32 и все можно осилить самому, а на такую систему у меня уже способностей не хватает - приходится применять разделение труда с его неизбежными минусами sm.gif
Realking
Цитата(yes @ Aug 18 2016, 15:57) *
спасибо за помощь,
начало грузиться с процессора.

программист клянется, что ничего не менял, но верить в это не получается sm.gif

конечно хорошо, когда какой-нибудь STM32 и все можно осилить самому, а на такую систему у меня уже способностей не хватает - приходится применять разделение труда с его неизбежными минусами sm.gif


подпаял бластер в PS (на проводках к ножкам ПЛИС) - грузит файл (CONF_DONE встает), а если в rbf вбить мусор, то nstatus падает в 0


может после подпайки контакты подпаялись?
хотя я программистам на фразу я ничего не менял тоже с трудом верю)))

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.