Задать вопрос
@Eluv

Разработчик систем на ПЛИС. Как, с чего и где начать?

В этом году получаю диплом бакалавра. Хочу быть проектировщиком встраиваемых систем и систем на ПЛИС особенно. Знаний пока не очень много, но есть большое желание это изучать и этим заниматься. Может ли кто нибудь из специалистов подобного профиля поделиться профессиональным опытом? Подсказать, как начать и где искать работу.
  • Вопрос задан
  • 3409 просмотров
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@Mirn
0. С разговорного английского, беглово с хорошим словарным запасом и умением понимать шутки и казалось бы странные фразы. Всем абсолютно плевать на Ваш опыт и знания и умения, даже устровшись задаром в корпорацию с шансом роста - его не будет как бы Вы не старались, это реальный мир а не сказочки. Высокий старт решает всё, а для этого надо выдавать бегло много красноречиво на собеседовании на остальное в 99.9999999999999999% случаев всем плевать всегда и даже проверять не будут даже выдав тестовые задания, даже если они толковые. пункты 1 и далее без этого пункта не нужны и бессмыслены.
Програмист при помощи человечьего языка работает с людьми при помощи инструментов сделаных другими людьми и опять же описанных человечьим языком. Даже код для людей а не для ПК. Запомнить и понять это надо.

1. Программирование на Си и С++. Усиленно изучать оба понимая что даже чистый си понадобится и очень часто, Вы же FPGA будете использовать не спроста - а значит шевелить огромными данными а их ввод-вывод надо организовать и нередко надо делать драйвера самому на люниксе например, а для этого они оба и понадобятся.
2. Умения ЧИТАТЬ ассемблер - ТОЛЬКО ЧИТАТЬ и умения исправлять код и параметры компилятора чтоб получить нужный дизасм с нужной скоростью или размера.
3. Никогда не писать на ассемблере. см пункт 0 (асм это нечитабельное неподдающееся правке г). Современные компиляторы на голову лучше асма делают, даже на мелочах ты продуешь, в целом разница будет и по размеру и по скорости в разы.
4. Не использовать старое гавно мамонта и не гордится им, забудтье как страшный сон авр и пик микро с чистым i51 если изучать 8051 то современные модели с одним тактом на инструкцию и с нормальным объёмом памяти с частотами 100 мегагерц и выше или в особых случаях. Аналогично забыть: например первые максы альтеры.
5. Готовиться к имиграции иначе интерес угаснет лет через 5 от такой зп в странах СНГ. Но надо понимать что по миру эта отрасль в среднем оплачивается на 50% ниже ИТ.
6. Умение работать с людьми и софт скилз. Человек и зп зависит от результативности и умения себя показать, неважно что ты делаешь, важен самопиар, я знаю отличных людей но "серых мышей" которых нафиг уволили а потом удивлялись почему всё перестало работать. Но я не знаю ниодного карьериста и балабола но весьма посредственного в технике который не смог бы обскакать всех по карьерной лестнице. [Социальные скилы при наличии тех минимума] >> [тех уровень лучше всех]. Молчуны быстро сталкиваются с тем что им дают шлак проэкты или не выделяют ресурсы и они загнивают в болоте легаси.
7. Изучать не только современное но и популярное и задвинуть подальше свои хотелки и свою лень, всем пофиг что серия А интересна если серия Б унылоге гавно но 90% проэктов на ней или она прото в полтора раза дешевле. Изучать надо то что требуется рынком а не то что ты себе внушил что требуется. Самоанализ а не "ну это статья понятная попробую я ка это" "хмм, я это знаю и поэтому дальше буду лепить на этой платформе" "блин а почему никому эта платформа не нужна?"
8. В начале надо набить ошибок на своих проэктах и потом начать изучать чужие похожие проекты а только потом теорию чтоб понять почему они так сделаны, и так рекурсивно. Не изучать неведомую теор хрень только для галочки - как изучишь так и забудешь сразу же если она без практики.
9. Изучить паттерны программирования и немного веба с бд (пригодятся и не раз - и как резерв для карьерного манёвра чтоб уйти в веб или гейм или интерпрайз если совсем всё плохо с финансами и зарплата нужна седня а не через пол года)
10. конечно же схематехнику но без переусердствований - на ардуино уровне вполне хватит

Из конкретики пример:
Ардуино на СТМ32 или голый СТМ32 (а лучше в начале ардуино стм32 а потом голый - идеально)
подключить тяжолые вещи, например: дисплей камеру память, понять ботлнеки, сделать что то годное на этом - поиск лиц например. (работать с живым видео полезно и очень интересно, даже наткнувшись на баги можно получить интересные результаты и их развить и понять причину бага, и самое главное видно сразу результат и он классный)

понять что МК вообще не годны к такому и потехоньку начать переписывать алгоритм поиска лиц на верилог
осилить Icarus Verilog или другой тулчейм симуляции
довести симуляцию до идеала - т.е. bit perfect когда результат симуляции побитово равен исходнику для СТМ32
купить ФПГА отладку или заказать свою ФПГА плату например минимум циклон 3-5 или спартан 6
замучаться с интерфейсами и изучить времянки и time constrains и иже с ними
довести до ума и до реалтайма этот проэкт с поиском лиц

примерно так
Ответ написан
@Dmitriy0111
Присоединяюсь ко всему вышеописанному, хотелось бы еще добавить, что можно просмотреть:
1) стандарт языка Verilog 2001 или SystemVerilog (про VHDL не говорю потому что не особо знаком с ним). На мой взгляд очень занимательная литература.
2) FPGA Prototyping by Verilog Examples: Xilinx Spartan-3 Version, от Pong P. Chu.
3) «Цифровая схемотехника и архитектура компьютера» Дэвида Харриса и Сары Харрис, статья по поводу данной книги https://habr.com/post/306982/
4) Advanced FPGA Design: Architecture, Implementation, and Optimization от Steve Kilts.
5) Статья на Хабре: https://habr.com/post/281525/ , от которой я отталкивался когда начинал изучение Verilog. В ней, на мой взгляд, очень много полезной информации.
Остальное это садиться и начинать воплощать что-нибудь задуманное в железе, но первоначально конечно работать в симуляторе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы