Перейти к содержанию
    

Поделитесь простой и понятной схемой подключения Cyclone V и/или MAX 10

Добрый день,

 

альтеровские плиски еще не разводил, не пинайте, пожалуйста, сильно. Пытался развести латтис (ice40), но с ним и по ресурсам еле-еле, и по LVDS c 100Ohm резисторами как-то разводить очень не удобно получается. Хочу взять FBGA-256 корпус, это который с 1мм шагом, то есть или

5CEBA[2-4]F17C6N циклоны, или

10M[4-50]*F256I6G максы.

 

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

 

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

 

Спасибо!

 

ИИВ

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

ищите на Альтере документ google->"cyclone passive serial", типа

https://www.altera.com/content/dam/altera-w.../cyc_c51013.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Схема для 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-м, тк судя по документации, ничего не изменилось.

Если есть вопросы - спрашивайте.

Изменено пользователем bugdesigner

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вдогонку на ту же тему...

 

MSEL=10001, Cyclone 5: 5CEBA2F17C8N

 

- пин 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 и, с маленькой вероятностью, перегретый кристалл при паянии, или есть еще что-то что можно было попробовать, чтобы установить причину?

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

похвально, что пробовали разное, но мусор лить бессмысленно - от этого точно не стартует, проверял..

более важно вот это:

Настраиваем SPI: LSB First, запись по положителтному фронту клока.

- сделали?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

похвально, что пробовали разное, но мусор лить бессмысленно - от этого точно не стартует, проверял..

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

 

LSB - сделали?

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

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

 

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

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

 

и это

 

общее для MAX10

 

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

link

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Не обязательно. Для начала в данных должен быть идентификатор начала. Если ПЛИС его не видит, то и дальнейшие данные не воспринимает. Иногда в данных может случайно встретиться идентификатор начала прошивки, тогда nSTATUS упадет в 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 iiv

помнится был моментс 3м циклоном - после того как залили все данные из RBF надо наклокать ещё сколько-то тактов тупо любых данных, и только потом взводилась CONF_DONE лапа.

Предупреждая сл. вопрос - во внутренней структуре RBF есть поле которое указывает длинну "мяса" :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

помнится был моментс 3м циклоном - после того как залили все данные из RBF надо наклокать ещё сколько-то тактов тупо любых данных, и только потом взводилась CONF_DONE лапа.

Предупреждая сл. вопрос - во внутренней структуре RBF есть поле которое указывает длинну "мяса" :laughing:

вопрос чуть в сторону - про "тактов тупо любых данных" есть какая-то официальная дока или ссылка?

дело в том, что я подключал загрузку по spi в линуксе, что Cyclone3, что Aria (или что там на дочке стояло)..

команда dd вроде передает ровно столько сколько надо, камни успешно стартовали..

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Раньше требовалось. В хендбуке на 5 циклон явное указание, что лишние такты не нужны, у него свой генератор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Раньше требовалось. В хендбуке на 5 циклон явное указание, что лишние такты не нужны, у него свой генератор.

из любопытства позже посмотрю в доку к Cyclone3 - я то ведь как-то грузил..

загрузку Cyc5 по SPI я не использовал, т.к. достаточно простейших реализаций - хоть через uboot, хоть в /dev/fpga

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Решение для MAX10. Загрузка по SPI.

схемы как таковой нет. флеш находиться внутри.

GCP_DE10.rar

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...