Внимательный взгляд на Spartan-6, навеянный -> Все нужные для понимания смысла поста доки внутри. http://caxapa.ru/309699.html
http://caxapa.ru/486508.html
Цены дижикея.
Итак, рассмотрим сводную таблицу в корпусе BGA 384 0.8мм
Кристалл XC6SLX9-2CSG324C XC6SLX16-2CSG324C XC6SLX25-2CSG324C XC6SLX45-2CSG324C
IO пинов 200 232 226 218
Slices 1430 2278 3758 6822
SLICEMs 360 544 916 1,602
SLICELs 355 595 963 1,809
SLICEXs 715 1,139 1,879 3,411
6-Input LUTs 5,720 9,112 15,032 27,288
Flip-Flops 11,440 18,224 30,064 54,576
LE 9152 14579 24051 43661
BRAM (18 кбит) 32 32 52 116
DSP48A1 16 32 38 58
Цена розн.,$ 20.75 27.93 39.37 52.00
Цена -40°C ~ 100°C 23.87 35.31 45.29 59.78
Теперь рассмотрим подходящую память
LPDDR 128 Мбит
W947D6HBHX5E Winbond Electronics IC LPDDR SDRAM 128MBIT (8M x 16) 60VFBGA 200 MHz -25°C ~ 85°C 100 - $2.33
W947D6HBHX5I Winbond Electronics IC LPDDR SDRAM 128MBIT (8M x 16) 60VFBGA 200 MHz -40°C ~ 85°C 312 - $2.32
DDR2 256 Mbit - 128 не поддерживается
W9725G6KB-25 Winbond Electronics IC DDR2 SDRAM 256MBIT(16M x 16) 84-TWBGA (8x12.5) 2.5NS 0°C ~ 85°C 100 - $2.09
W9725G6KB25I Winbond Electronics IC DDR2 SDRAM 256MBIT(16M x 16) 84-TWBGA (8x12.5) 2.5NS -40°C ~ 95°C 209 - $2.46
Каждый чип несет на борту 2 контроллера памяти, каждый из которых может быть 4, 8 и 16 битный по чипу памяти, и каждый имеет до 6 32 битных портов на внутреннюю шину. Дока приложена.
Если делать проект классическим путем - навороченное 32 битное ядро, мощная многослойная шина с коммутатором, навороченные IP ядра со встроенным контроллером DMA и большими локальными буферами, то ничего хорошего не выйдет.
Идти надо другим путем.
Нужно делать центральный проц, ориентированный на работу с SDRAM, с простой внутренней шиной, и развитой системой сигналов, заведенных на контроллер прерывания.
А всю периферию делать на основе PicoBlaze и всяких микросеквенсеров, которые отрабатывают команды от основного проца - сделай то и положи в память по адресу такому то. + система сигнализации о выполнении и готовности.
PicoBlaze для Spartan-6 требует всего 26 слайсов (KCPSM6 версия) и половину 2кб блока памяти для ROM команд.
Также ксилы залудили специальную версию MicroBlaze Micro Controller System с очень малым расходом ресурсов - в Virtex-6 собирается 546...882 LUT. Правда, работает только из блочной памяти, но можно использовать всего 1 блок и под код, и под данные. 100 Мгц у него получится, судя по всему, на самых медленных чипах.
http://www.xilinx.com/tools/mb_mcs.htm
Вопрос возникает только в одном - в наличии средств разработки, которые поддерживают иерархические дизайны. PicoBlaze со всей подключенной к нему на IO логикой надо на поведенческом уровне симулировать как один блок. И в это средство разработки вставить кучу таких блоков, центральный проц, контроллер DDR, саму память и проч, чтобы проверить совместную работу всего хозяйства.
Разрабатывать надо сверху. Писать модели для блоков, проверять на уровне совокупного моделировать блоков, что все ок, а потом детальную модель блока верифицировать по модели верхнего уровня этого блока.
В общем, это идеология SuystemC, или SystemVerilog. Про последний ничего сказать не могу - по нему крайне мало книг.
И ксилы это тоже поняли, и залудили чудную штуковину - Vivado High-Level Synthesis
http://www.xilinx. …n/esl-design/index.htm
Которая С, С++, SystemC, управляется Tcl (и вроде как еще и Perl?), сама генерит Verilog|VHDL и RTL.
Дальше начинаются детали, которые мне уже не видны (насколько хорошо этот Vivado работает), но тенденция понятная.
Выводы.
1. На Spartan-6 можно собрать основу продвинутого микроконтроллера за $25 (FPGA + 16 или 32 Мбайт DDR* SDRAM, все -40), который будет обладать большой гибкостью по сравнению с готовыми чипами.
2. По сравнению с другими семействами FPGA, Spartan-6 отличается:
-- хорошей масштабируемостью в пределах одного корпуса. Можно делать линейку устройств с разными фичами, для отладки ставить в ту же плату более мощный кристалл и т.д.
-- встроенным аппаратным контролером памяти с поддержкой всех нужных типов памяти и множественным доступом внутри ПЛИСки
-- разумной ценой для заданной конфигурации
3. Основной идеологии такого контроллер становится memory hub - CPU общается только с памятью (ну ладно, GPIO оставим), а периферийные контроллеры сами таскают в основную память и обратно блоки данных. Это позволяет сильно снизить частоту переключений контекста и повысить эффективность кеша при скромной его организации.
4. 32Мбайта, если не фапать на линух, позволяют сильно упростить структуру периферийных контролеров (например, все блоки памяти кратны 512 байт, все блоки имеют стандартизованный дескриптор и т.д.)
5. Оставшиеся несколько мбайт ОЗУ :) + всякие приятные фишки MicroBlaze типа регистры защиты стека (минимум и максимум) позволяют построить хорошую вытесняющую RTOS.
6. Tcl рулит --> :)