реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Поделитесь простой и понятной схемой подключения Cyclone V и/или MAX 10, чтобы в них можно было загружать прошивку с МК по SPI
iiv
сообщение Dec 1 2016, 18:08
Сообщение #1


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Добрый день,

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

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

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

Спасибо!

ИИВ


Go to the top of the page
 
+Quote Post
Jury093
сообщение Dec 1 2016, 20:03
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



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

ищите на Альтере документ google->"cyclone passive serial", типа
https://www.altera.com/content/dam/altera-w.../cyc_c51013.pdf
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Dec 2 2016, 08:37
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Схема для 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 - Dec 2 2016, 08:38
Go to the top of the page
 
+Quote Post
iiv
сообщение Jun 20 2017, 13:52
Сообщение #4


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



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

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

Спасибо!
Go to the top of the page
 
+Quote Post
Jury093
сообщение Jun 20 2017, 16:36
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



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

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

- сделали?
Go to the top of the page
 
+Quote Post
iiv
сообщение Jun 20 2017, 16:48
Сообщение #6


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



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

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

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

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

Основной вопрос: если я точно понимаю, что лью не то, будет ли уходить nSTATUS в 0, или нет? Если да, то минимум у меня нет коммуникации по SPI, если не так, то возможно еще какая проблема имеется.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jun 20 2017, 19:32
Сообщение #7


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



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


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

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

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

и это

общее для MAX10

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

link


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
dvladim
сообщение Jul 1 2017, 10:57
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(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.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 2 2017, 17:00
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 iiv
помнится был моментс 3м циклоном - после того как залили все данные из RBF надо наклокать ещё сколько-то тактов тупо любых данных, и только потом взводилась CONF_DONE лапа.
Предупреждая сл. вопрос - во внутренней структуре RBF есть поле которое указывает длинну "мяса" laughing.gif
Go to the top of the page
 
+Quote Post
Jury093
сообщение Jul 2 2017, 17:27
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(Kuzmi4 @ Jul 2 2017, 20:00) *
помнится был моментс 3м циклоном - после того как залили все данные из RBF надо наклокать ещё сколько-то тактов тупо любых данных, и только потом взводилась CONF_DONE лапа.
Предупреждая сл. вопрос - во внутренней структуре RBF есть поле которое указывает длинну "мяса" laughing.gif

вопрос чуть в сторону - про "тактов тупо любых данных" есть какая-то официальная дока или ссылка?
дело в том, что я подключал загрузку по spi в линуксе, что Cyclone3, что Aria (или что там на дочке стояло)..
команда dd вроде передает ровно столько сколько надо, камни успешно стартовали..
зачем избыточно клокать? а может это из вашем практики, тогда любопытно - при каких условиях?
Go to the top of the page
 
+Quote Post
Tiro
сообщение Jul 2 2017, 18:13
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



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

Раньше требовалось. В хендбуке на 5 циклон явное указание, что лишние такты не нужны, у него свой генератор.
Go to the top of the page
 
+Quote Post
Jury093
сообщение Jul 2 2017, 19:10
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



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

из любопытства позже посмотрю в доку к Cyclone3 - я то ведь как-то грузил..
загрузку Cyc5 по SPI я не использовал, т.к. достаточно простейших реализаций - хоть через uboot, хоть в /dev/fpga
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 5 2017, 09:37
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Решение для MAX10. Загрузка по SPI.
схемы как таковой нет. флеш находиться внутри.

Сообщение отредактировал Jenya7 - Jul 5 2017, 09:40
Прикрепленные файлы
Прикрепленный файл  GCP_DE10.rar ( 563.72 килобайт ) Кол-во скачиваний: 12
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 17:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016