ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
94626
Evgeny_CD (20.07.2007 00:33, просмотров: 3793)
Совместная разработка Software + HDL: вроде все вытанцовывается. http://upload.caxapa.ru/Visio-cosimulating.pdf
http://upload.caxa …Visio-cosimulating.pdf - Картинки к тексту. Давно меня мучает эта задача. Вроде что-то в голове прояснилось. Нужно разработать FPGA сопроцессор для embedded системы. Дабы тяжелые DSP алгоритмы жили там, а все остальное - в контроллере. С точки зрения проца, FPGA - это некий struct fpga_data, да прерывания. Пишем чисто софтовый симулятор FPGA. На С. Главный FPGA_Main_Task, и подчиненные задачи для симуляции одновременно работающих блоков. Синхронизация всех FPGA процессов - средствами RTOS. При изменений данных в fpga_data FPGA_Main_Task и подчиненные задачи не отдают управление, пока не отработают все процессы внутри себя. FPGA_Main_Task вызывает эмулятор прерывания для сигнализации процессам RTOS. FPGA драйвер - это кучка макросов и функций. В реальности они будут что-то писать и читать по заданным адресам памяти. В симуляторе они будут вызывать точки входа FPGA_Main_Task. На этом этапе хорошо продумывается структура FPGA, какими данными обмениваются блоки внутри и пр. Также продумывается разбиение между софтом и хардом. Одноврменно пишется test suite для нашей FPGA. После завершения этого этапа С код выступает в качестве ТЗ для написания HDL кода. Конечно, есть всякие там автоматические трансляторы C->HDL, но я в них как-то не верю. Запускаем код на симуляторе (ModelSim, например), и каким-либо образом вытаскиваем "наружу" интерефейс из симулятора (Sockets посредством TCL, VHDL File IO через memory mapped files, еще как-нибудь - что-то да найдется. Я знаю про Verilog PLI, просто хочется все сделать максимально простыми средствами, в рамках Xilinx Webpack, например). Посредством этого интерефейса подключаем HDL код к нашему софту, прогоняем test suite и целевое приложение. Симулятор - это хорошо, но железо - лучше :). Запускаем HDL код на реальной железяке, с которой взаимодействуем посредством какого-нибудь канала связи. Пусть у нас не будет реальной скорости, но логику отработаем точно. Далее тесты целиком на готовой системе. Что мы имеем в итоге: 1. В начала разработки у нас только native host compiler со всем тулчейном и нифига более. Все предельно просто и ничего не мешается. 2. Хорош продумываем структуру FPGA. Для этого вначале вообще все симулим в Matlab (тут срабатывает та же самая симуляция, которая была описана выше), затем делаем то же самое на C. Хооршо продумываем разделение между железом и софтом. 3. Пишем test suite одновременно с разработкой модели FPGA. 4. После завершения разработки C кода он отдается HDL человеку для написания HDL кода. При этом человек имеет готовый test suite, и четко определенный интерфейс с внешним миром нашей FPGA. Хорошее разделение труда. Например, я пишу основной С код, и умею настроить и запустить симулятор HDL. Чел возится с кодом, затем пересылает его мне. Я запускаю симулятор, подключаю код, как описано выше, смотрю, что получилось. Постепенно обучаем друг друга: я учу чела поднимать софтовый симулятор (при этом он не парится тонкостями ОСи), я что-то поверхностно узнаю по HDL. Каждый при желении можут углубить свои познания до бесконечности. 5. Отладка на готовом железе происходит с минимумом софта на самом железе. Это дает массу плюсов: * сборка и запуск проекта на host машине всегда быстрее и проще * target не нужно перезагружать при пересборке проекта на машине (если только target не повиснет от глюков) * на хосте всегда под рукой куча инструментальных средств, тут и спорить не о чем. 6. Врде как все HDL можно сделать средствами Xilinx WebPack ISE. Я конечно понимаю, что на electronix все есть :), но на случай всякий надо готовиться к худшим вариантам. Вопросы: * может где ошибка в рассуждениях закралась? * как все-таки из ModelSim вытащить наружу какой интерфейс? Может, там уже все готовое есть? Sockets было бы просто замечательно. ========= Предыдущие посты по тематике =============== Dream Platform II: недостающая часть мозаики (с картинками) http://caxapa.ru/65177.html http://electronix. …ex.php?showtopic=19870 Дополнение про Dream Platform II http://caxapa.ru/65704.html http://electronix. …view=findpost&p=146180 Dream Platform: "$8, которые изменили мир" http://caxapa.ru/65085.html http://electronix. …ex.php?showtopic=19858