|
FPGA configuration from PCI bus |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 22)
|
Dec 3 2005, 21:11
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 4-01-05
Пользователь №: 1 799

|
>Я думаю, что такое возможно. Насколько я понял, Вам хотелось бы изменять прошивку FPGA >максимально просто (для обычного пользователя устройства). Если использовать Cyclon + EPCS >конфигуратор, то с помощью ASMI контроллера можно получить доступ EPCS, который как известно >является простой SPI флешкой. Тогда софт через PCI передает новую прошивку на Cyclon, он ее >заливает в EPCS. После перезагрузки Cyclon загрузится с новой прошивкой. Примерно так.
Mogno sdelat' i tak , tol'ko est' vopros nadegnosti. Neobhodimo budet imet' neskol'ko "FPGA images". Inache predstavte chto budet esli v moment "update" flash kto-to vykluchit pitanie. Plata ne podnimetsja.
Ja obdumyval neskolko drugoe reshenie - ispolsovat' nechto vrode CPLD ("Nonvolatile FPGA"), naprimer Lattice XP, kotoraja imeet flash na bortu i moget vmestit' PCI core. CPLD moget po "komande" PC pereconfigurirovat' FPGA. Eto reshenie bolee nadegnoe.
No.. Vsegda hochetsja nemnogo bol'shego.
Dl'ja zagruzki FPGA vprincipe nugno tol'ko neskolko GPIO (General Purpose Input Output) pinov, kotorymi moget upravljat' processor. Ja nadejalsja chto ih mogno kakim to obrazom poluchit' s PCI bus.
No vidimo etogo sdelat' nel'zja.
|
|
|
|
|
Dec 5 2005, 10:16
|

Местный
  
Группа: Свой
Сообщений: 224
Регистрация: 18-06-04
Пользователь №: 54

|
Цитата(DeadMoroz @ Dec 5 2005, 10:26)  Ну вроде как на шине PCI есть JTAG пины, может (теоретически) их можно использовать... JTAG пины задействованы не на всех материнках, а только, если не ошибаюсь на серверных.
--------------------
Электроника - наука о контактах.
|
|
|
|
|
Dec 8 2005, 19:11
|
Участник

Группа: Свой
Сообщений: 68
Регистрация: 11-06-05
Из: М. О.
Пользователь №: 5 926

|
Для этого FPGA должен иметь конфигурационный порт, доступный по PCI. Этот порт должен быть энергонезависимым и конфигурироваться отдельно от основного FPGA. Проект по таким правилам был реализован, но на VME. Контроллер VME, контроллер локального интерфейса и конфигурационный порт сделаны на CPLD, они практически не меняются. Конфигурация FPGA загружается центральным процессором системы через VME и конфиг. порт из файла. Микросхем flash-памяти на модуле вообще нет. Проект существует около 5 лет, за это время внесены десятки изменений, в систему они вводятся простой заменой файла конфигурации. Для PCI, скорее всего CPLD не подойдет, потребуются FPGA и конфигурационное ПЗУ. Так же, как и CPLD, его можно будет зашить через JTAG после изготовления модуля. Эта часть изменяется редко. А конфигурацию основного FPGA может из файла закачивать процессор системы, например при загрузке драйвера. Для Virtex например, алгоритм примитивный. Удачи.
|
|
|
|
|
Dec 8 2005, 22:07
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 4-01-05
Пользователь №: 1 799

|
Цитата(v_mirgorodsky @ Dec 8 2005, 12:18)  Есть еще интересная идея - назывется SMBus. Ставим небольшой контроллер с I2C интерфейсом и на новых Intel'овских материнках получаем все просто и без всякого гемороя. При этом работа по SMBus не зависит от того имеется ли прошивка в FPGA или нет. Единственный минус - нужны НОВЫЕ Intel'овские мамки  Spasibo, Deistvitelno interesnaja ideja. Mogno postavit' I2C bus GPIO ot Philips naprimer i gruzit' cherez nego. A ne podskagete kak osushestvljaetsja dostup k etoj SMBus so storony processora? Net li tam kakih to zamorochek?
|
|
|
|
|
Dec 9 2005, 05:17
|

Местный
  
Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894

|
Цитата(leevv @ Dec 9 2005, 01:07)  Spasibo, Deistvitelno interesnaja ideja. Mogno postavit' I2C bus GPIO ot Philips naprimer i gruzit' cherez nego. A ne podskagete kak osushestvljaetsja dostup k etoj SMBus so storony processora? Net li tam kakih to zamorochek? Ну это изначально мертвое решение... во первых на этой SMBus висит еще несколько системных устройств; во вторых для загрузки ПЛИС это достаточно медленный интерфейс... и не будет 100% уверенности, что в каждой материнской плате это будет... Поставьте на свою плату лучше еще одну ПЛИС и пусть она занимается конфигурированием основной ПЛИС по той-же PCI! И еще одно НО... PCI core НЕЛЬЗЯ ГРУЗИТЬ ПОСЛЕ ЗАГРУЗКИ КОМПА! он уже должен присутствовать на плате железно! Все остально можете потом подгружать, только нельзя уже PCI core трогать. Так что в Вашем случае единственным вариантом будет 2 ПЛИС: PCI core с модулем загрузки основной ПЛИС и собственно основная ПЛИС, в которую загрузите чего захотите.
Сообщение отредактировал -Al- - Dec 9 2005, 05:47
|
|
|
|
|
Dec 9 2005, 08:20
|

Местный
  
Группа: Свой
Сообщений: 224
Регистрация: 18-06-04
Пользователь №: 54

|
Цитата(-Al- @ Dec 9 2005, 07:17)  И еще одно НО... PCI core НЕЛЬЗЯ ГРУЗИТЬ ПОСЛЕ ЗАГРУЗКИ КОМПА! он уже должен присутствовать на плате железно! Ну при желании можно и перегрузить комп после загрузки FPGA... И так после каждой перегрузки FPGA...  И тот кто будет работать за этим компом будет вспоминать разработчика "нэ злым, тыхым словом", постоянно  Не надо жлобится на еще одну плисину. Абсолютно согласен с -Al-: 2 Плиски и имеете универсальную гибкую систему на которой будет удобно работать.
--------------------
Электроника - наука о контактах.
|
|
|
|
|
Dec 9 2005, 08:28
|

Местный
  
Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894

|
Цитата(DeadMoroz @ Dec 9 2005, 11:18)  Почему нельзя грузить? Я думаю, что можно, НО необходимо 1) обеспечить перевод всех ног, соединенных с ПИСИАЙ в третье состояние воизбежание конфликтов на шине 2) обеспечить перезагрузку компа для выполнения новой конфигурации устройств
Насчет SMBus\I2C думаю, что достучаться до нее трудно, проблемы с работой на разных матерях гарантированы. Даже если вырубишь все ноги в третье состояние, то кто PCI устройство будет инициализировать, ааа??? По Вашему получется надо загрузить ПЛИС, выполнить перезагрузку компа и после этого устройство начнеи работать.... да Вас заказчик точно пошлет куда подальше с такой фигней! да еще придется дополнительно разявзку на шину PCI ставить! Лучше поставьте еще одну ПЛИС и не мучайте ни себя ни тех, кто будет с этой железкой работать, а про I2C забудьте вообще!
|
|
|
|
|
Dec 9 2005, 09:25
|

Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 3-02-05
Пользователь №: 2 391

|
Вот мои соображения. У человека есть следующие требования: 1) минимальное количество элементов 2) максимально простой софт-апгрейд со стороны пользователя Конечно для выбора лучшего варианта исходных данных маловато, но я себе представляю это дело так. Для обеспечения требования 1 в схеме должна быть 1 FPGA которая с одной стороны обеспечивает интерфейс PCI, с другой - с остальными компонентами (неизвестно какими). Эта FPGA грузится конфигуратором. Обеспечение требования 2 выполняется программой, которая передает новый файл конфигурации по PCI на FPGA, FPGA перезаписывает конфигуратор, далее выполняется перезагрузка, FPGA грузится новой прошивкой, происходит конфигурация PCI устройств. Недостатки данного способа: необходимость обеспечения питания при записи новой прошивки в конфигуратор. Другой вариант - использование 2х FPGA, одна обеспечивает интерфейс PCI, связь со 2й и перезапись кофигуратора для 2й FPGA, прошивка для нее не меняется, 2я FPGA выполняет что надо. В таком случае программа по PCI передает новую конфигурацию на 1ю FPGA, она перезаписывает конфигуратор 2й FPGA и обеспечивает для нее сигнал реконфигурации. Недостаток: 2 камня.
Вообще проблема кажется надуманой. Если с платой работает разработчик, то для изменения прошивок идеально подходит например Altera ByteBlaster. Если же с платой работает пользователь, то частое изменение прошивок по меньшей мере не серьезно. Насчет ресета компа тоже проблемы не вижу. Неужели Вы не сталкивались с просьбой Win перезагрузить комп для того, чтобы изменения вступили в силу? По-моему это обычная практика. Но если это так важно, то можно и поизвращаться и сохранять параметры конфигурации во внешней памяти (той же EPCS)?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|