Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поделитесь простой и понятной схемой подключения Cyclone V и/или MAX 10
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
iiv
Добрый день,

альтеровские плиски еще не разводил, не пинайте, пожалуйста, сильно. Пытался развести латтис (ice40), но с ним и по ресурсам еле-еле, и по LVDS c 100Ohm резисторами как-то разводить очень не удобно получается. Хочу взять FBGA-256 корпус, это который с 1мм шагом, то есть или
5CEBA[2-4]F17C6N циклоны, или
10M[4-50]*F256I6G максы.

В циклонах, убей не понимаю, как без jtag. В макс - вроде можно как-то залить прошивку, которая потом перегрузит вторую прошивку по любому доступному интерфейсу.

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

Спасибо!

ИИВ


Jury093
Цитата(iiv @ Dec 1 2016, 21:08) *
В циклонах, убей не понимаю, как без jtag. В макс - вроде можно как-то залить прошивку, которая потом перегрузит вторую прошивку по любому доступному интерфейсу.
Поделитесь, пожалуйста, если у кого есть, ссылки или схемы как подключать и можно ли обойтись без JTAG программатора, я как-то читал-читал, и ничего разумного не вычитал.

ищите на Альтере документ google->"cyclone passive serial", типа
https://www.altera.com/content/dam/altera-w.../cyc_c51013.pdf
bugdesigner
Схема для Cyclone следующая
- пины MSEL[x] нужно установить согласно документации в режим Passive Serial Programming
- пин DATA0 - последовательные данные (MOSI)
- пин DCLK - клок данных (SCLK)
- пин nCONFIG - вход управления режимом конфигурирования - поключите к любому GPIO MK в режиме выхода
- пины nSTATUS и CONF_DONE - выходные сигналы - подключите к входам MK. Эти сигналы требуют подтяжки к VCCIO.

Алгоритм следующий:
Настраиваем SPI: LSB First, запись по положителтному фронту клока. Я использую частоту клока 10МГц, хотя можно и выше (см. документацию). Можно соорудить и программный SPI - "ногодрыгом".
DCLK = 0; nCONFIG = 0; Delay(1uS); nCONFIG = 1; // начало конфигурирования
читаем nSTATUS и ждем пока он не станет =1, теперь можно посылать данные

заливаем данные через SPI ( используем данные файла в формате .rbf )

время от времени проверяем nSTATUS - если он стал=0 - это ошибка, конфигурирование нужно начать с начала.
когда все данные будут отправлены, проверяем CONF_DONE - если он =1, значит все прошло успешно, если нет - произошла ошибка.

Этот алгоритм использовался мной многократно на циклонах 1,3 и 4. Должен работать и на 5-м, тк судя по документации, ничего не изменилось.
Если есть вопросы - спрашивайте.
iiv
вдогонку на ту же тему...

MSEL=10001, Cyclone 5: 5CEBA2F17C8N

Цитата(bugdesigner @ Dec 2 2016, 14:37) *
- пин DATA0 - последовательные данные (MOSI)
- пин DCLK - клок данных (SCLK)
- пин nCONFIG - вход управления режимом конфигурирования - поключите к любому GPIO MK в режиме выхода
- пины nSTATUS и CONF_DONE - выходные сигналы - подключите к входам MK. Эти сигналы требуют подтяжки к VCCIO.


nSTATUS=1, CONF_DONE=1 // начал работать
nSTATUS=1, CONF_DONE=1 // nCONFIG<-1
nSTATUS=0, CONF_DONE=0 // nCONFIG<-0
nSTATUS=0, CONF_DONE=0 // nCONFIG<-1
nSTATUS=1, CONF_DONE=0 // nCONFIG<-1

далее залил по SPI содержимое побайтово RBF, который сделал в квартусе, но нога CONF_DONE в 1 не поднялась.

Пробовал эту прошивку, пробовал заливать мусор с /dev/urandom, пробовал менять скорость SPI в диапазоне от 16МГц до 2МГц - одинаковое поведение. Удивительно, что nSTATUS в 0 не уходит (если заливать откровенную лажу)! Программный ногодрыг вместо SPI тоже попробовал, не помогло.

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

Потребление десятки милиампер. Питание ядра 1.1В, все остальное 2.5В.

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

Спасибо!
Jury093
Цитата(iiv @ Jun 20 2017, 16:52) *
далее залил по SPI содержимое побайтово RBF, который сделал в квартусе, но нога CONF_DONE в 1 не поднялась.
Пробовал эту прошивку, пробовал заливать мусор с /dev/urandom, пробовал менять скорость SPI в диапазоне от 16МГц до 2МГц - одинаковое поведение. Удивительно, что nSTATUS в 0 не уходит (если заливать откровенную лажу)! Программный ногодрыг вместо SPI тоже попробовал, не помогло.

похвально, что пробовали разное, но мусор лить бессмысленно - от этого точно не стартует, проверял..
более важно вот это:
Цитата
Настраиваем SPI: LSB First, запись по положителтному фронту клока.

- сделали?
iiv
Цитата(Jury093 @ Jun 20 2017, 21:36) *
похвально, что пробовали разное, но мусор лить бессмысленно - от этого точно не стартует, проверял..

проверял все подряд, чтобы если лить мусор, то увидеть nSTATUS=0, его-то я не увидел и как раз возникли подозрения, что где-то ошибка в коммуникации.

Цитата(Jury093 @ Jun 20 2017, 21:36) *
LSB - сделали?

да, в SPI эдисона эта хрень не работает (в софте баг и разработчики так и не исправили и уже не исправят), посему ручками переставлял, но, к сожалению, пока не помогло. Также экспериментировал с ногодрыгом, там вроде ошибиться сложно.

Основной вопрос: если я точно понимаю, что лью не то, будет ли уходить nSTATUS в 0, или нет? Если да, то минимум у меня нет коммуникации по SPI, если не так, то возможно еще какая проблема имеется.
Maverick
Цитата(iiv @ Jun 20 2017, 19:48) *
проверял все подряд, чтобы если лить мусор, то увидеть nSTATUS=0, его-то я не увидел и как раз возникли подозрения, что где-то ошибка в коммуникации.


да, в SPI эдисона эта хрень не работает (в софте баг и разработчики так и не исправили и уже не исправят), посему ручками переставлял, но, к сожалению, пока не помогло. Также экспериментировал с ногодрыгом, там вроде ошибиться сложно.

Основной вопрос: если я точно понимаю, что лью не то, будет ли уходить nSTATUS в 0, или нет? Если да, то минимум у меня нет коммуникации по SPI, если не так, то возможно еще какая проблема имеется.

посмотрите это

и это

общее для MAX10

+ когда-то давно собрал материал... там в папке альтера сохраненная вебстраница - обратите внимание...

link
dvladim
Цитата(iiv @ Jun 20 2017, 16:52) *
Скажите, пожалуйста, правильно ли я понимаю, что баг однозначно в ногах SPI и, с маленькой вероятностью, перегретый кристалл при паянии, или есть еще что-то что можно было попробовать, чтобы установить причину?

MSEL должны стоять в режиме PS (ваше значение не проверял), данные захватываются ПЛИС по переднему фронту, т.е. изменять их желательно по заднему фронту DCLK. На один фронт клока должен быть один бит данных, т.е. никаких стартовых бит, битов четности и т.п. nCE дожен быть в 0. Проверьте LSB/MSB в байте rbf.

Цитата(iiv @ Jun 20 2017, 19:48) *
Основной вопрос: если я точно понимаю, что лью не то, будет ли уходить nSTATUS в 0, или нет? Если да, то минимум у меня нет коммуникации по SPI, если не так, то возможно еще какая проблема имеется.

Не обязательно. Для начала в данных должен быть идентификатор начала. Если ПЛИС его не видит, то и дальнейшие данные не воспринимает. Иногда в данных может случайно встретиться идентификатор начала прошивки, тогда nSTATUS упадет в 0.
Kuzmi4
2 iiv
помнится был моментс 3м циклоном - после того как залили все данные из RBF надо наклокать ещё сколько-то тактов тупо любых данных, и только потом взводилась CONF_DONE лапа.
Предупреждая сл. вопрос - во внутренней структуре RBF есть поле которое указывает длинну "мяса" laughing.gif
Jury093
Цитата(Kuzmi4 @ Jul 2 2017, 20:00) *
помнится был моментс 3м циклоном - после того как залили все данные из RBF надо наклокать ещё сколько-то тактов тупо любых данных, и только потом взводилась CONF_DONE лапа.
Предупреждая сл. вопрос - во внутренней структуре RBF есть поле которое указывает длинну "мяса" laughing.gif

вопрос чуть в сторону - про "тактов тупо любых данных" есть какая-то официальная дока или ссылка?
дело в том, что я подключал загрузку по spi в линуксе, что Cyclone3, что Aria (или что там на дочке стояло)..
команда dd вроде передает ровно столько сколько надо, камни успешно стартовали..
зачем избыточно клокать? а может это из вашем практики, тогда любопытно - при каких условиях?
Tiro
Цитата(Jury093 @ Jul 2 2017, 20:27) *
зачем избыточно клокать? а может это из вашем практики, тогда любопытно - при каких условиях?

Раньше требовалось. В хендбуке на 5 циклон явное указание, что лишние такты не нужны, у него свой генератор.
Jury093
Цитата(Tiro @ Jul 2 2017, 21:13) *
Раньше требовалось. В хендбуке на 5 циклон явное указание, что лишние такты не нужны, у него свой генератор.

из любопытства позже посмотрю в доку к Cyclone3 - я то ведь как-то грузил..
загрузку Cyc5 по SPI я не использовал, т.к. достаточно простейших реализаций - хоть через uboot, хоть в /dev/fpga
Jenya7
Решение для MAX10. Загрузка по SPI.
схемы как таковой нет. флеш находиться внутри.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.