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

Вопрос пока чисто теоретический и комплексный. Не знаю к какому разделу ближе.

Есть задача подключить коммуникационный процессор PowerQUICC, например, MPC8313E к FPGA Spartan-3(A,E).
FPGA помимо процессора загружен своими задачами. В текущей разработке коэфф. использования ресурсов процентов 75%, почти задействованы все блоки памяти. Грозит заменой на FPGA (завидую тем кто работает с Virtex-5,6). Но при серьезной переделке логики можно сильно освободить блоки памяти, заменив на очереди.

Определяюсь по какой шине вести взаимодействие с процессором.
1. У процессора есть шина PCI. Процессор будет работать в хост режиме. Для моих задач в 33/66 МГц пропускной способности шины будет достаточно.
2. Использовать шину eLBC. Шина однонаправленная со стороны процессора. Т.е. при получении данных FPGA должен сгенерировать прерывание на какой-либо линии процессора, и процессор сам забирает данные в UPM режиме пакетами по 32 слова. Во-вторых на этой шине будет также загрузка кода процессора через FPGA из SPI флеш-памяти.

Взаимодействие вижу следующим образом. Может меня кто поправит, если что не так.
1. FPGA забирает данные из хост памяти по PCI Express шине своим каналом DMA и направляет их в FIFO буфер, сигнализирует процессору о получении данных.
2. Процессор обрабатывает прерывание и запускает свой канал DMA для забора данных. Извлекает все данные из FIFO.
3. Процессор какое-то время обрабатывает данные.
4. При передачи данных обратно процессор запускает DMA в другую очередь в FPGA.
5. FPGA по PCI Express складывает данные в хост память.

Вопросы:
1. С PCI пока не довелось пока работать, т.е. есть возможность это попробовать sm.gif. Применим ли LogiCore PCI для данной задачи? И задача кажется сложнее чем с eLBC, но более универсальна.

2. C eLBC несколько проще, но после беглого прочтения пока сложно дается понимание настройки UPM режима. Но вроде в CodeWarrior есть визард. Нужно создать простой SRAM интерфейс. Кто-нибудь работал с такой задачей?

3. На данном этапе можно отказаться от этого процессора и навесить какой-то другой, без встроенного контроллера памяти c какой-нибудь нормальной процессорной шиной. Сложнее ли это? У кого какие варианты?
vitan
Цитата(demonizer @ Jun 24 2011, 14:36) *
2. C eLBC несколько проще, но после беглого прочтения пока сложно дается понимание настройки UPM режима. Но вроде в CodeWarrior есть визард. Нужно создать простой SRAM интерфейс. Кто-нибудь работал с такой задачей?

Ну я работал. Ничего там сложного нет, программируете UPM и все. Я не знаю что конкретно есть в упомянутой модели проца, но если есть UPM, то, скорее всего, есть и GPCM, его-то и надо испольовать для "обычной" памяти. Там вообще ничего программировать почти не надо.

Остальное, извините, "ниасилил, многабукав".
Выразите мысль яснее.
XVR
Цитата
У процессора есть шина PCI

Цитата
FPGA забирает данные из хост памяти по PCI Express

Так PCI или PCI Express? Это 2 большие разницы
В любом случае и PCI и PCIe довольно навороченные шины. Если процессор может обращаться с очень custom устройством на PCI (которое не будет соответствовать PCI спецификации в плане PnP), то можно сделать довольно простой контролер для PCI Target
demonizer
Цитата(vitan @ Jun 24 2011, 14:49) *
Ну я работал. Ничего там сложного нет, программируете UPM и все. Я не знаю что конкретно есть в упомянутой модели проца, но если есть UPM, то, скорее всего, есть и GPCM, его-то и надо испольовать для "обычной" памяти. Там вообще ничего программировать почти не надо.

Остальное, извините, "ниасилил, многабукав".
Выразите мысль яснее.


vitan:
Если через FPGA сделать доступ к SPI флеш, шину можно придержать на много N-тактов пока произойдет чтение с SPI?
vitan
Цитата(demonizer @ Jun 24 2011, 14:56) *
vitan:
Если через FPGA сделать доступ к SPI флеш, шину можно придержать на много N-тактов пока произойдет чтение с SPI?

Уже всех подробностей я не помню. Настройка длительности циклов, естественно, есть, а вот про сигнал готовности не помню, возможно тоже есть. Только это не выход, не надо держать шину (если только она не от DMA работает, да и то плохо это).
demonizer
Цитата(XVR @ Jun 24 2011, 14:55) *
Так PCI или PCI Express? Это 2 большие разницы
В любом случае и PCI и PCIe довольно навороченные шины. Если процессор может обращаться с очень custom устройством на PCI (которое не будет соответствовать PCI спецификации в плане PnP), то можно сделать довольно простой контролер для PCI Target


FPGA уже висит на PCI Express. А PowerQUICC будет висеть на PCI, и будет подключен к плисине. Т.е. FPGA в неком роде является бриджем между PCI Express и PCI, и будет гонять данные между между хостом и памятью PowerQUICC.
vitan
Цитата(demonizer @ Jun 24 2011, 15:01) *
FPGA уже висит на PCI Express. А PowerQUICC будет висеть на PCI, и будет подключен к плисине. Т.е. FPGA в неком роде является бриджем между PCI Express и PCI, и будет гонять данные между между хостом и памятью PowerQUICC.

Я, конечно, извиняюсь, но зачем такие сложности? Вы же сами сказали, что можете выбрать другой процессор. Ну и выберите такой же, только с PCI Express, там они есть. Или на худой конец поставтье покупной мост PCI-PCIE. Не видя Вашей схемы сложно что-то советовать, просто пока складывается впечатление, что Вы данные собрались пускать по маршруту (OЗУ)-(нечто на PCI-E)-(FPGA c PCIE)-(FIFO)-(нечто на PCI)-(CPU). При этом Вам еще надо куда-то впихнуть флеш на SPI? Не слишком ли мудрено? Что мешает поставить нормальный проц с контроллером ОЗУ и SPI, подключить туда ОЗУ и флеш и радоваться7
demonizer
Цитата(vitan @ Jun 24 2011, 14:59) *
Уже всех подробностей я не помню. Настройка длительности циклов, естественно, есть, а вот про сигнал готовности не помню, возможно тоже есть. Только это не выход, не надо держать шину (если только она не от DMA работает, да и то плохо это).


Сигнал готовности есть - это LFRB#, он FMC режиме используется, пока NAND читает страницу. Пока не выяснил используется ли он в GPCM и UPM режиме, говоря вашими словами слишком "многабукв" в доке sm.gif
Пока грузится прошивка процессора на шине никого не будет, так что думаю удерживать шину меня устроит.
Вообще по загрузке прошивки вижу несколько вариантов:

1. Идеально процессору свой собственный NOR флеш. Для меня не вариант так как слишком много JTAGoв на плате и операций прошивания.
2. Тянуть последовательный интерфейс от процессора через FPGA на SPI флешку, и выделить в SPI область для прошивки процессора.
3. Воспользоваться eLBC.

Цитата(vitan @ Jun 24 2011, 15:13) *
Я, конечно, извиняюсь, но зачем такие сложности? Вы же сами сказали, что можете выбрать другой процессор. Ну и выберите такой же, только с PCI Express, там они есть. Или на худой конец поставтье покупной мост PCI-PCIE. Не видя Вашей схемы сложно что-то советовать, просто пока складывается впечатление, что Вы данные собрались пускать по маршруту (OЗУ)-(нечто на PCI-E)-(FPGA c PCIE)-(FIFO)-(нечто на PCI)-(CPU). При этом Вам еще надо куда-то впихнуть флеш на SPI? Не слишком ли мудрено? Что мешает поставить нормальный проц с контроллером ОЗУ и SPI, подключить туда ОЗУ и флеш и радоваться7


Я рассматривал вариант с MPC8308, у него встроен контроллер PCI Express. Но есть два важных ограничения:
1. Не поддерживается ROM BAR (как и в остальных процессорах семейства MPC83xx, MPC85xx). Это для меня критично.
2. Никак не организовать скоростной доступ к блоку NAND флеш. Конечно здесь можно поставить недорогой CPLD или самый дешевый FPGA и возложить на него эту задачу.

Остальные коммуникационные процессоры имеют другой уровень цен. Если кто подскажет недорогой процессор с PCI Express 1x-4x, с поддержкой ROM BAR буду премного благодарен.
Koluchiy
Цитата
В текущей разработке коэфф. использования ресурсов процентов 75%, почти задействованы все блоки памяти.

Это в общем уже означает, что для существенного изменения функциональности надо менять плисину.

Цитата
С PCI пока не довелось пока работать, т.е. есть возможность это попробовать

Может, и не надо уже? sm.gif

Цитата
Я рассматривал вариант с MPC8308, у него встроен контроллер PCI Express. Но есть два важных ограничения:

Как вариант - поставить на процессор железный мост PCI-to-PCIE.
И не заниматься организацией такого моста в и так забитой ПЛИСине в условиях, когда опыта работы с PCI нет.
demonizer
Цитата(Koluchiy @ Jun 24 2011, 15:48) *
Это в общем уже означает, что для существенного изменения функциональности надо менять плисину.


Согласен, к тому и идет.

Цитата(Koluchiy @ Jun 24 2011, 15:48) *
Может, и не надо уже? sm.gif


Может и не надо. Но не думаю, что на освоение уйдет много времени.

Цитата(Koluchiy @ Jun 24 2011, 15:48) *
Как вариант - поставить на процессор железный мост PCI-to-PCIE.
И не заниматься организацией такого моста в и так забитой ПЛИСине в условиях, когда опыта работы с PCI нет.


Пытаюсь продумать минимальное бюджетное решение.
Не понял чем поможет мост?
Мост поможет мне расшарить ROM Bar и перенаправить на другой адресный регистр процессора?
Koluchiy
Цитата(demonizer @ Jun 24 2011, 16:04) *
Пытаюсь продумать минимальное бюджетное решение.
Не понял чем поможет мост?
Мост поможет мне расшарить ROM Bar и перенаправить на другой адресный регистр процессора?

Мост поможет подключить на PCI Express тот проц, который Вам больше нравится.
Дальнейший обмен с плисиной и прочими девайсами - через PCI-E.
demonizer
Цитата(Koluchiy @ Jun 24 2011, 16:22) *
Мост поможет подключить на PCI Express тот проц, который Вам больше нравится.
Дальнейший обмен с плисиной и прочими девайсами - через PCI-E.


Не кажется это вариантом. Так как у меня уже в плисине задействовано ядро PCI Express, которое занимает около 6000 Slices, точно не помню. Вторую кору точно не потянет, и тем более что Spartan3 использует еще железный физический уровень.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.