Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Переконфигурирование FPGA изнутри
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Anatol'
Есть много способов по ходу работы периодически менять прошивку FPGA-шки.
Самый простой - поставить рядом контроллер/ПЛИСину поменьше и прошивать ей.

Но это не всегда удобно. К примеру, если основной интерфейс для общения с внешним миром - PCI-express, и прошивки получаем по нему же, то становится интересно.
Заливать прошивку на флэш, а потом перестартовать с неё?
Довольно геморойно, флешку опять же заездить можно быстро.

Общаться с PCI-express'ом через дополнительный чип?
Есть прикольные штуки типа GN4121 - сам общается с компом, сам прошивает FPGA, но это дополнительный корпус, дополнительные деньги... Опять же внутренние PCI-express'ные блоки в ПЛИС (если есть) остаются не задействованы. Хотя в некоторых случаях вариант неплохой.

В идеале, хочется чтобы ПЛИСина сама меняла свою конфигурацию, без посторонней помощи. Желательно ещё и по частям sm.gif

Слышал, что что-то такое есть в циклонах, но в силу исторических причин работаю в основном с Xilinx.

Собственно вопрос: есть ли у Xilinx какие-либо средства для переконфигурации ПЛИС изнутри и/или по частям?

Ну и вообще, предлагаю здесь собрать всякие экзотические способы конфигурации ПЛИС. Кто как извращался? sm.gif
Methane
Цитата(Anatol' @ Mar 4 2011, 08:12) *
Но это не всегда удобно. К примеру, если основной интерфейс для общения с внешним миром - PCI-express, и прошивки получаем по нему же, то становится интересно.
Заливать прошивку на флэш, а потом перестартовать с неё?
Довольно геморойно, флешку опять же заездить можно быстро.
Про заездить флешку, это конечно круто. А геморой, то какой геморой? При отладки заливка идет через jtag. А потом при смене можно и ресет нажать.
Anatol'
Цитата(Methane @ Mar 4 2011, 12:24) *
Про заездить флешку, это конечно круто. А геморой, то какой геморой? При отладки заливка идет через jtag. А потом при смене можно и ресет нажать.

Хорошо, сформулируем для ясности задачу.
У меня две стадии вычислений, для которых нужна сильно разная конфигурация ПЛИС. Переключения между ними, в зависимости от размера блока данных, могут осуществляться как раз в несколько часов, так и несколько раз в секунду.
В последнем случае заездить флешку уже не так уж и сложно. Да и в ресет тыкать устанешь sm.gif
Methane
Цитата(Anatol' @ Mar 4 2011, 08:48) *
Хорошо, сформулируем для ясности задачу.
У меня две стадии вычислений, для которых нужна сильно разная конфигурация ПЛИС. Переключения между ними, в зависимости от размера блока данных, могут осуществляться как раз в несколько часов, так и несколько раз в секунду.
В последнем случае заездить флешку уже не так уж и сложно. Да и в ресет тыкать устанешь sm.gif

Две ПЛИС поставить, в разные сплоты. Если в одну все не влазит. А вообще, какая-то экзотика. Поставить циклон с PCIe и рядом что-то для вычислений можно?

Раз в секунду в любом случае переключать не получиться, прошивается и грузится ПЛИС довольно долго. И зачем прошивать так часто, если можно сразу несколько конфигураций хранить.
Anatol'
Цитата(Methane @ Mar 4 2011, 12:57) *
Две ПЛИС поставить, в разные сплоты. Если в одну все не влазит. А вообще, какая-то экзотика. Поставить циклон с PCIe и рядом что-то для вычислений можно?

Раз в секунду в любом случае переключать не получиться, прошивается и грузится ПЛИС довольно долго. И зачем прошивать так часто, если можно сразу несколько конфигураций хранить.

Не экзотика, просто хочется выжать максимум из уже имеющейся платы )
А там уже стоит только одна ПЛИС, и подключена она напрямую к PCIe.
Грузится ПЛИС может быстро. Ну прошить, положим, можно несколько конфигураций в одну флешку (надо будет посмотреть, хватит ли места), но как заставить ПЛИС перезагрузиться с нужной, без дополнительной обвязки? И не обидится ли комп, что у него на PCIe шине устройство пропало, а потом опять возникло? С hot-plug'ом наверняка будет куча проблем.
Eugenius
Можно и на лету перезагружать часть кристалла с PCI через ICAP порт. Создать блок, включающий в себя: контроллер PCI-E, контроллер конфигурации, ICAP модуль. Они будут работать всегда. Остальные блоки загружаются/перезагружаются по мере надобности.

Подробно в UG702 - Partial Reconfiguration User Guide
Methane
Цитата(Anatol' @ Mar 4 2011, 09:13) *
Не экзотика, просто хочется выжать максимум из уже имеющейся платы )
А там уже стоит только одна ПЛИС, и подключена она напрямую к PCIe.
Грузится ПЛИС может быстро. Ну прошить, положим, можно несколько конфигураций в одну флешку (надо будет посмотреть, хватит ли места),

А какая у вас флешка?

Цитата
но как заставить ПЛИС перезагрузиться с нужной, без дополнительной обвязки?



Цитата
И не обидится ли комп, что у него на PCIe шине устройство пропало, а потом опять возникло? С hot-plug'ом наверняка будет куча проблем.

Будет. Я отлаживался грузя PC по Ethernt. По сравнению с временем компиляции проекта, совсем не много.
Anatol'
Цитата(Eugenius @ Mar 4 2011, 13:17) *
Можно и на лету перезагружать часть кристалла с PCI через ICAP порт. Создать блок, включающий в себя: контроллер PCI-E, контроллер конфигурации, ICAP модуль. Они будут работать всегда. Остальные блоки загружаются/перезагружаются по мере надобности.

Подробно в UG702 - Partial Reconfiguration User Guide

О, а вот это уже очень сильно похоже на то, что надо, буду читать sm.gif
Спасибо!

И ведь видел уже этот документ когда-то... Забыл (

Цитата(Methane @ Mar 4 2011, 13:19) *
А какая у вас флешка?

Не помню =(
На руках сейчас ни платы, ни схемы. На днях посмотрю.

Цитата(Methane @ Mar 4 2011, 13:19) *
[img...

Клёвый рубильник, где б такой добыть? sm.gif

Цитата(Methane @ Mar 4 2011, 13:19) *
Будет. Я отлаживался грузя PC по Ethernt. По сравнению с временем компиляции проекта, совсем не много.

Попробую всё же обойтись без хотплага )
jojo
Если контроллер на Virtex-5/6 в контрольной панели Windows отключить, перешить ПЛИС, а потом обратно включить, то контроллер продолжает работать, перезагрузка не нужна.
Можно как-то этот процесс автоматизировать, а шить хоть через Impact.

>Но это не всегда удобно. К примеру, если основной интерфейс для общения с внешним миром - PCI-express, и прошивки получаем по нему же, то становится интересно.
>Заливать прошивку на флэш, а потом перестартовать с неё?
>Довольно геморойно, флешку опять же заездить можно быстро.

Вместо ПЗУ можно сделать "конфигурационное ОЗУ" параллельно ПЗУ. В это ОЗУ загружается новая прошивка, дёргается PROG, подробности можно домыслить.
Это так, просто вариант.

>Общаться с PCI-express'ом через дополнительный чип?
Можно, но стоит денег и ресурсов. Через вторую ПЛИС и Selectmap нормально получается грузить.

>В идеале, хочется чтобы ПЛИСина сама меняла свою конфигурацию, без посторонней помощи. Желательно ещё и по частям
>Собственно вопрос: есть ли у Xilinx какие-либо средства для переконфигурации ПЛИС изнутри и/или по частям?

Partial Configuration в PlanAhead, лицензия отдельная нужна на это.
Есть какой-то tuitorial на эту тему.
Anatol'
О, вот про отдельную лицензию это не очень хорошая новость (
Ладно, будем думать и читать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.