Если посмотреть на любую серьёзную embedded‑систему через пару лет после старта проекта, она больше похожа на живой организм, чем на аккуратный чертёж из первого block diagram. В документации всё логично и линейно, а в реальном устройстве правят бал компромиссы, обходные пути и странные эффекты, которые никто до конца не понимает.
Между целенаправленным дизайном и естественным развитием пролегает не только инженерная, но и философская граница.
MCU как план, FPGA как среда обитания
Классический подход: берём микроконтроллер, читаем datasheet, выписываем:
- тактовую частоту, объём flash и RAM,
- количество UART, SPI, ADC,
- допустимые токи по ногам и по шинам питания.
Дальше строим архитектуру: какой timer на PWM, какой на захват, какие прерывания критичны по латентности, какие можно отдать в RTOS‑очереди. Это целенаправленный дизайн в чистом виде: инженер заранее принимает ключевые решения.
У FPGA картина иная. Вы описываете поведение на Verilog/VHDL, задаёте ограничения по частоте, вводите constraints на пины — и отпускаете ситуацию. Как именно synthesis и разложат вашу логику по LUT, флип‑флопам и маршрутам, решает инструмент. Вы не рисуете каждый вентиль, вы задаёте , в которой конфигурация кристалла как бы "самоорганизуется".





