Начал заниматься новой для себя тематикой - системами на кристалле.
Соответственно, помимо, чисто технических вопросов, возникли и идеологические проблемы-вопросы.
С fpga работаю давно и реализовывал достаточно не простые проекты. Разработки были в области
цифровой обработкой видео: фильтрация, пороговая обработка, сегментация, всевозможные интерфейсы
как стандартизированные, так и свои собственные. Подход был следующий: работал в Active-HDL, соответственно
начинал с нуля, с разработки общего алгоритма работы схема и далее по порядку, заточенные под конкретные задачи,
шины, автоматы-арбитры, вычислительные блоки и все межблочные механизмы взаимодействия. В общем получалась
схема под выполнение определенной задачи.
В первом ознакомлении с системами на кристалле, натыкаешься на EDK как основной инструмент разработки.
Соответственно, предлагается принять данный подход как истину и дальше от него отталкиваться. Взять в нагрузку
использование предлагаемой архитектуры межблочного взаимодействия CoreConect ( тут хоть есть альтернатива, например,
wishbone, но все же). Принять, что центром в системе является процессор, хотя иногда это не всегда оправдано. Смирится с тем что,
используя предлагаемый в EDK подход подсоединения user logic, не одно действие в системе не происходит без ведома
поцессора (а что если от одного интерфейсного блока до другого мне надо Гбиты данных перекачивать)
и то что свою схему нужно обязательно сжать на PLB (иначе не понятно как ее подтянуть к проекту), да и вообще что нутря проекта максимально
отдаленны от разработчика (это как главный принцип работы винды, максимально защитится от действий юзира) приступить к разработке конечного продукта.
Есть конечно и свои преимущества у EDK, например, визарды для подключения к поцу внутренней и внешней памяти, хотя для опытного
разработчика, кто делал контроллеры памяти в системах без всяких там PPC, и это не вопрос. Ну и конечно главный плюс это волшебная утилита
на входе которой Си и hdl, а на выходе файл конфигурации.
Для Active-hdl есть библиотека, где PPC идет прямо отдельным библиотечным элементом. Данный путь разработки полностью своей системы на кристалле будет
конечно тернист и сложен, но зато тут сам себе хозяин. И главный вопрос как тут быть с программированием процессора?
В общем, хотелось бы порассуждать на данную тему, услышать мнение опытных разработчиков и вообще кто что по этому поводу думает.