Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загрузка прошивы из Xilinx flash
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
ADA007
Здравствуйте. При проектировании устройства у меня возник такой вопрос, может ли Xilinx FPGA сконфигурироваться из flash, которая объемом больше, чем целевая FPGA. Например: XC3S1500 сконфигурировать при помощи XCF16P . Возможно ли? ... Спрашиваю потому, что у меня не получилось это сделать...хотя для меня это абсурдно. Кто-нибудь может мне объяснить почему так получилось? Почему Xilinx пишут, что XC3S1500 соответствует только тип XCF08P? В моем понимании, если ПЛИС можно залить с любого контроллра, или cpld, то ей должно быть все равно какого объема flash, главное чтобы не меньше объема FPGA... wacko.gif
ЗЫ: я так думаю, может там че-то с ревизиями надо шаманить?
jojo
Например, XC5VLX50T можно загрузить из XCF32P. Xilinx лишь рекомендует конфигураторы с минимально избыточной ёмкостью.
Вы можете взять любое подходящее ПЗУ, в который влезет конфигурационный файл.
У вас XC3S1500 не грузится из XCF16P?
VladimirB
Цитата(ADA007 @ May 10 2011, 16:07) *
Спрашиваю потому, что у меня не получилось это сделать...

косяг у вас где-то

ноги M0,M1,M2 соответвуют режиму конфигурирования?
Bad0512
Цитата(ADA007 @ May 10 2011, 19:07) *
Здравствуйте. При проектировании устройства у меня возник такой вопрос, может ли Xilinx FPGA сконфигурироваться из flash, которая объемом больше, чем целевая FPGA. Например: XC3S1500 сконфигурировать при помощи XCF16P . Возможно ли? ... Спрашиваю потому, что у меня не получилось это сделать...хотя для меня это абсурдно. Кто-нибудь может мне объяснить почему так получилось? Почему Xilinx пишут, что XC3S1500 соответствует только тип XCF08P? В моем понимании, если ПЛИС можно залить с любого контроллра, или cpld, то ей должно быть все равно какого объема flash, главное чтобы не меньше объема FPGA... wacko.gif
ЗЫ: я так думаю, может там че-то с ревизиями надо шаманить?

По умолчанию (если Вам это не нужно) ничего с ревизиями шаманить не надо. Прицепите осцил или логгер к ногам CCLK,DIN,PROG, и DONE. И поглядите что там происходит. Ещё рекомендую поглядеть на ногу INIT во время конфигурации. Если она падает в 0 - видимо битстрим во флэшке у Вас некорректный. Проверьте ноги, задающие режим (M0,M1,M2) как Вам уже советовали. Ну уж если и это не поможет - тогда садитесь изучать документ под названием Configuration Guide - в нём много интересного написано. Правда, как всегда, по-буржуйски...
Флэшка, кстати, может работать в разных режимах (byte-wide or serial, external CLK or internal CLK, different CLK frequency, etc.). Проверьте правильность выбранного режима.
ADA007
Цитата(VladimirB @ May 10 2011, 22:52) *
косяг у вас где-то


Если быть точным у нас произвели платы (совершенно идентичные) ... на одни поставили XC6SLX150T а на другие поставили XC6SLX45T...Сравнивал по Spartan-6 FPGA Packaging and Pinouts .... оба чипа в корпусе FG(G)484 Package.... нашел отличие только в трех служебных пинах VFS, RFUSE, VBATT (они NA для XC6SLX45T) .... И собственно сам парадокс. XC6SLX150T зашилась с пол оборота.... и та же прошивка, пересобранная под XC6SLX45T и залитая в флэш никак не хочет конфигурировать FPGA ... +. INIT_B торчит в '0', и DONE в '0'...флэш соединены по схеме XCF32P+XCF08P ... bit файл, из которого генерирую прошивку конфигурирует ПЛИС на раз два ... Почему не работает - понять не могу никак...может есть у кого какие идеи?
Bad0512
Цитата(ADA007 @ May 11 2011, 12:34) *
Если быть точным у нас произвели платы (совершенно идентичные) ... на одни поставили XC6SLX150T а на другие поставили XC6SLX45T...Сравнивал по Spartan-6 FPGA Packaging and Pinouts .... оба чипа в корпусе FG(G)484 Package.... нашел отличие только в трех служебных пинах VFS, RFUSE, VBATT (они NA для XC6SLX45T) .... И собственно сам парадокс. XC6SLX150T зашилась с пол оборота.... и та же прошивка, пересобранная под XC6SLX45T и залитая в флэш никак не хочет конфигурировать FPGA ... +. INIT_B торчит в '0', и DONE в '0'...флэш соединены по схеме XCF32P+XCF08P ... bit файл, из которого генерирую прошивку конфигурирует ПЛИС на раз два ... Почему не работает - понять не могу никак...может есть у кого какие идеи?

Когда вы прошиваете флэшку (я та понимаю с помощью IMPACT софта через JTAG?) у флэшки есть несколько рулилок (кроме имени файла для прошивки), которые влияют на способ загрузки. Проверьте что в обоих проектах для IMPACT (для 150 чипа и для 45 чипа) все настройки идентичны.По умолчанию при открытии нового проекта там может быть что угодно.Ещё проверьте параметр startup clock при генерации битстрима. Он отличается для битстримов загружаемых через JTAG и с флэшки. ISEшный софт в последних версиях учитывал эту особенность и менял этот параметр "на лету", однако проверить всё равно не мешает.
ADA007
Цитата(Bad0512 @ May 11 2011, 11:38) *
у флэшки есть несколько рулилок

Все выставлял аналогично что для 45Т , то для 150Т .... пробовал менять способы загрузки, мастер-слейв...пробовал держать в ресете xcf08p и работать только с xcf32p , пробовал в xcf32p создавать две ревизии....и все безуспешно.... crying.gif
буду еще осциллом смотреть.
ADA007
Посмотрел осциллом...с 12-й ноги clk идет (2 Mhz)...данные какие-то по шине данных с флэш в ПЛИС загружаются .... почему не проходит конфигурация?.... ну прям мистика какая-то.....
Grumbler_2002
Цитата(ADA007 @ May 11 2011, 09:34) *
+. INIT_B торчит в '0', и DONE в '0'...


INIT_B не должна стоять в нуле. Проверьте, есть ли резисторы на питание с этой ноги и с ноги Program_B. Посмотрите внимательно на поведение сигналов и сравните его с картинкой из ug380.pdf.
ADA007
Цитата(Grumbler_2002 @ May 11 2011, 21:01) *
INIT_B не должна стоять в нуле. Проверьте, есть ли резисторы на питание с этой ноги и с ноги Program_B. Посмотрите внимательно на поведение сигналов и сравните его с картинкой из ug380.pdf.


Возможно немного неправильно выразился...конечно..процесс происходит в динамике...пока PROG_B корочу на GND - INIT_B висит в нуле, отпускаю PROG_B(подтянут к VCC) INIT_B переходит в '1' на ~200мс, затем (видимо после неудачной конфигурации) переход в '0'....На здоровой плате INIT_B после отпускания PROG_B - не скачет - железно в '1' и всё....отсюда вопрос - от чего скачет INIT_B ? (к питанию он естественно подтянут через 2.7КОм)

ЗЫ : буду дальше сравнивать с ДШ поведение...
ADA007
Выпаял одну флэш xcf08p..походу нашел закоротку между D4 и D5 ногами на шине....FPGA - прошилась.... Есть предположение, что конфигурировать ПЛИС можно с флэш, которая рекомендована в ДШ или которая имеет размер кратный рекомендованной...
MrYuran
Цитата(ADA007 @ May 12 2011, 16:31) *
Есть предположение, что конфигурировать ПЛИС можно с флэш, которая рекомендована в ДШ или которая имеет размер кратный рекомендованной...

Не знаю... Я ставил на первом спартанчике XCS10 и XCS20 атмеловскую флешь AT17LV256 вместо рекомендованной XCxxxx - ни разу никаких проблем не было. Более того, можно несколько плисок загрузить по цепочке daisy chain - тогда прошивки нескольких кристаллов суммируются в одной флешке.

Скорее всего, что-то у вас не так сделано.
superpriz
Здравствуйте, чтоб не заводить новую тему, напишу про совю проблему здесь, смысл тотже - не прошивается Flash.
Может кто работал с такой картой? http://www.hitechglobal.com/Boards/PCIExpress_SFP+.htm
Или может кто работал с подобной структурой соединения ПЛИС и флешки.
На сколько я понял из даташита к этой карте, то соеднинение между микрухами такое

|---> Platform Flash XL
ПЛИС <-> CPLD <-|
|---> Platform Flash XL

У флешек шина адреса общая, подключена к CPLD, а из нее в FPGA
У каждой флешки шина данных отдельно подлючена к CPLD
Набор управляющих сигналов отдельный для каждой флешки и оба набора подключены к CPLD

Странно то, что CPLD <-> Flash шина данных 32 бита, а вот из CPLD в FPGA выходит только 16 бит.

Пытался прошить как написано в мануале UG438.pdf. Не заработало. Impact выдает ошибку

INFO:iMPACT - Failed to query common flash interface.

У меня по этому поводу такие соображения. Так как между флешкой и FPGA стоит CPLD, которая никогда не прошивалась, то цепь соответственно разорвана, флешка не отвечает и импакт ругается. Предполагаю, что решением моей проблемы будет прошивка CPLD, в которой я просто соединю соответствующие шины напрямую от FPGA к одной из флешек. Правильно ли я думаю? Это моя единственная плата, другого опыта прошивки плис не имею, поэтому не знаю прошилось бы у меня если б фпжа и флеш были бы соеденены напрямую.
Спасибо.
VladimirB
Цитата(superpriz @ May 13 2011, 21:51) *
Здравствуйте, чтоб не заводить новую тему, напишу про совю проблему здесь, смысл тотже - не прошивается Flash.
...
Спасибо.


Если CPLD не прошита - то грузиться ничего естественно не будет.
Надо в CPLD подключить общую шину адреса флешек и шину данных + шину управления одной из флешек к виртексу - тогда должно заработать.

Для конфигурирования виртекса хватит и одной флешки, вторая добавлена для хранения пользовательских данных или для хранения другой версии прошивки.

А вы вообще в курсе, что у вас только виртекс весит 10 килобаксов? Прикольная платка для начинающего sm.gif

superpriz
VladimirB, спасибо большое, попробую, очень надеюсь, что так и есть. А платка действительно не из дешевых, но это контора оплачивала, мое дело только заствавить ее песни с плясками устраивать)
superpriz
Здравствуйте, решил написать про результат моих стараний. Создал я прошивку для cpld, в которой соеденил одну из флешек с fpga напрямую, чистый assing и никаких других примочек, но не заработало. Буду писать в супорт конторе-разработчику платы, пускай рассказывают в чем секрет. Очень надеюсь, что я где-то накосячил, а то читал в инете бывает такое, что плохо припаяно, очень не хотелось бы чтоб было так. Хотя может у кого все-таки есть другие идеи, а лучше бы опыт?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.