|
|
  |
Поделитесь простой и понятной схемой подключения Cyclone V и/или MAX 10, чтобы в них можно было загружать прошивку с МК по SPI |
|
|
|
Dec 1 2016, 18:08
|
вопрошающий
    
Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436

|
Добрый день,
альтеровские плиски еще не разводил, не пинайте, пожалуйста, сильно. Пытался развести латтис (ice40), но с ним и по ресурсам еле-еле, и по LVDS c 100Ohm резисторами как-то разводить очень не удобно получается. Хочу взять FBGA-256 корпус, это который с 1мм шагом, то есть или 5CEBA[2-4]F17C6N циклоны, или 10M[4-50]*F256I6G максы.
В циклонах, убей не понимаю, как без jtag. В макс - вроде можно как-то залить прошивку, которая потом перегрузит вторую прошивку по любому доступному интерфейсу.
Поделитесь, пожалуйста, если у кого есть, ссылки или схемы как подключать и можно ли обойтись без JTAG программатора, я как-то читал-читал, и ничего разумного не вычитал.
Спасибо!
ИИВ
|
|
|
|
|
Dec 1 2016, 20:03
|
Знающий
   
Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 2 2016, 08:37
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 20 2017, 13:52
|
вопрошающий
    
Группа: Свой
Сообщений: 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 и, с маленькой вероятностью, перегретый кристалл при паянии, или есть еще что-то что можно было попробовать, чтобы установить причину? Спасибо!
|
|
|
|
|
Jun 20 2017, 16:36
|
Знающий
   
Группа: Участник
Сообщений: 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, запись по положителтному фронту клока. - сделали?
|
|
|
|
|
Jun 20 2017, 16:48
|
вопрошающий
    
Группа: Свой
Сообщений: 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, если не так, то возможно еще какая проблема имеется.
|
|
|
|
|
Jun 20 2017, 19:32
|

я только учусь...
     
Группа: Модераторы
Сообщений: 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Jul 1 2017, 10:57
|
Знающий
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Jul 2 2017, 17:27
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(Kuzmi4 @ Jul 2 2017, 20:00)  помнится был моментс 3м циклоном - после того как залили все данные из RBF надо наклокать ещё сколько-то тактов тупо любых данных, и только потом взводилась CONF_DONE лапа. Предупреждая сл. вопрос - во внутренней структуре RBF есть поле которое указывает длинну "мяса"  вопрос чуть в сторону - про "тактов тупо любых данных" есть какая-то официальная дока или ссылка? дело в том, что я подключал загрузку по spi в линуксе, что Cyclone3, что Aria (или что там на дочке стояло).. команда dd вроде передает ровно столько сколько надо, камни успешно стартовали.. зачем избыточно клокать? а может это из вашем практики, тогда любопытно - при каких условиях?
|
|
|
|
|
Jul 2 2017, 19:10
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(Tiro @ Jul 2 2017, 21:13)  Раньше требовалось. В хендбуке на 5 циклон явное указание, что лишние такты не нужны, у него свой генератор. из любопытства позже посмотрю в доку к Cyclone3 - я то ведь как-то грузил.. загрузку Cyc5 по SPI я не использовал, т.к. достаточно простейших реализаций - хоть через uboot, хоть в /dev/fpga
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|