Evgeny_CD, Архитектор (30.01.2010 14:04, просмотров: 5743)
Spartan™-3E XC3S500E-4VQG100I: FPGA как SPI сопроцессор :). Случайно на DigiKey наткнулся на XC3S500E в корпусе 100-VQFP. 66 IO пинов - не разгуляешься, но есть Ind варианты, да и цена $23.88 за такой Ind камень (ком - $20.66) - супер!!! С учетом грядущего нашествия 100 МГц+ Cortex'ов с быстрыми SPI (30 МГц и более в режиме мастер) получается ну очень занятно.
66 пинов - это 16 битный DDR SDRAM + SPI на хост процессор. Ну и еще 1 пин на запрос прерывания :)
Что это дает? На самом деле, очень многое. Это можно использовать как просто расширитель памяти, но не только.
На FPGA можно скинуть часть алгоритмов, которые хорошо подходят для жесткой логики. Всякие фильтры, корреляторы, но не только. Наример, пришел Ethernet пакет, в котором, как мы знаем, даже IP по границе не выровнен. Скинули его в FPGA по DMA, его там разложили по полям C структуры, всосали в проц управляющую часть С структуры, и решаем, что с этим делать. Данные из пакета пусть пока поживут в FPGA.
Обработали управляющую часть пакета (в реальности происходит очень быстро), решили, пришедшие данные надо поместить в окно данных сокета. Дали команду FPGA, и она прилинковала наши данные к связному списку окна сокета.
Отправилит все, что надо, в очередь отправки, взвели все таймера - все, можно оставить IP стек в покое до наступления событий.
Реализация сокета устроена аналогично. При этом в основной памяти проца хранится очень мало данных, так что стандартных 64 K SRAM хватит надолго :)
Аппаратная реализация связных списков, деревьев поиска в FPGA сулит очень большие преимущества и перенос в микроконтроллеры алгоритмов, которые ранее только на больших камнях с мегабайтами SDRAM были доступны.
Новый виток развития начинается на наших глазах :)