Шапка

Как следует действовать? Ниже даются некоторые рекомендации и разные pro et contra для широкого спектра вариантов чисто цифровых и смешанных проектов 29 . Советы делятся на две группы: обсуждение используемых технологий и обсуждение типов проектов.

11.4.1 Обзор используемых технологий

Стандартная логика
Pro
Рабочий вариант, если надо быстро собрать простую схему и нужные компоненты уже имеются. В такой форме удобно использовать шинные формирователи, буферы, «обвязку» в виде одновентильной логики. Такие ИМС доступны в корпусах DIP, поэтому схемы удобно собирать на универсальных платах. Не требуют для разработки программного обеспечения.
Contra
Большие схемы в таком формате совершенно неподъёмны, требуется широкая складская номенклатура, негибкое решение [* недаром её зовут «жёсткая логика» ] .
Программируемая логика ( cPLD, FPGA )
Pro
Хорошая замена стандартной логике для цифровых проектов любой сложности. Уменьшают число корпусов, позволяют легко изменить прошивку, универсальны, недороги, не перегружают склад широкой номенклатурой. cPLD имеют более предсказуемые временные параметры и удобнее для размещения небольших проектов. FPGA лучше подходят для больших задач ( хотя небольшие FPGA тоже существуют ). Самый лучший вариант для быстрой параллельной логики и машин состояний. Хорошо подходят для критичных по времени задач ( коммуникационные протоколы ), битовых операций ( CRC, Viterbi ) и проектов с большим числом линий ввода-вывода. Проекты легко переносятся между разными семействами программируемой логики и переводятся в формат заказных микросхем.
Contra
Требуется большое время, чтобы освоиться с программными инструментами ( часто закрытыми ) и их стоимостью. ИМС выпускаются только в корпусах для поверхностного монтажа [* и всё чаще в безвыводных BGA и им подобных ] , т.е. для работы потребуется печатная плата, требуют переходников, адаптеров и т.п. дополнительного оборудования, которое стоит денег. Короткий жизненный цикл ( проблемы с поставками ).

Программируемая логика - методы разработки

Схемный ввод
Pro
Лёгкость изучения, понимания и объяснения коллегам ( особенно специалистам в схемотехнике ). Самодокументируемы, параллельные схемы рисуются параллельно, аналогичны графическим программным языкам ( GPL ) LabVIEW, MATLAB® и Simulink®.
Contra
Закрытые узкоспециализированные средства разработки, цена.
Языки описания аппаратуры ( Verilog, VHDL )
Pro
Естественная миграция для программистов, способных прейти на параллельное построение логики работы. Лаконичны и стандартизованы. Имеются бесплатные средства моделирования и компиляции, удобная итеративная модификация проекта. Подходят для переноса проекта на другое семейство программируемой логики или заказные кристаллы. Хороший инструмент для сложных проектов. Доступны сторонние программные блоки ( IP ).
Contra
Время изучения, отсутствие схемной документации.
Микроконтроллеры ( см. Часть 15 )
Pro
Универсальные встраиваемые компьютеры. Идеальны для сложных машин состояний со множественными условиями переходов. Быстрое интерактивное создание и отладка ( в т.ч. внутрисхемная ) кода, набор внутренней периферии ( коммуникации 30 , интерфейсы 31 , и прочее 32 ). Знакомые языки программирования ( C, C++ ), отлично подходят под задачи управления, включая интерфейс пользователя ( индикаторы, кнопки и т.п. ).
Contra
Медленнее, чем cPLD/FPGA, не так удобны на уровне отдельных битов, последовательный поток управления.

Программные инструменты для микроконтроллеров

Язык ассемблера
Pro
Позволяет оптимизировать код вручную, например, в обработчике прерывания.
Contra
Трудоёмкий, отсутствует контроль над ошибками, сложен для исправлений, непригоден для переноса на иное семейство процессоров.
Языки Си, C++
Pro
Стандартизованы и переносимы ( хотя требуют внесения исправлений, зависящих от архитектуры ), большое количество квалифицированных специалистов, структурные языки упрощают внесение изменений и модификацию, библиотеки общеупотребительных функций, хорошо подходят для сложных задач.
Contra
Компилированный код не всегда оптимален по объёму и скорости ( но можно делать ассемблерные вставки в критичных местах ), позволяют писать трудно понимаемый код, требуют набора программных инструментов ( некоторые дорогие, некоторые бесплатные ).
Прочее ( Basic, программные средства Arduino, Java, Python )
Pro
Простота понимания, низкий порог вхождения в тему.
Contra
Ограниченное число поддерживаемых контроллеров, невозможность переноса между разными семействами процессоров, несовместимость с большими проектами.

11.4.2 Оценки по типам проектов

Для начала, в любом профессиональном сообществе есть достаточное количество специалистов, работающих с микроконтроллерами . Причины очевидны: низкая цена, простота программирования и универсальность использования. Кроме микроконтроллеров среди профессионалов популярны следующие технологии.

Сектор высоких объёмов производства 33
Здесь критична стоимость компонентов и скорость вывода результата на рынок. При больших объёмах можно сэкономить, используя заказные микросхемы специального применения ( ASIC ) и стандартные микросхемы специального назначения ( ASSP ). Время выхода на рынок можно сократить, используя вместо заказных ИМС FPGA. Высокие объёмы выпуска диктуют необходимость использования корпусов для поверхностного монтажа высокой плотности ( BGA и им подобные ), многослойные печатные платы и продвинутые технологии сборки.
Сектор сложных прототипов и небольших объёмов 34
Здесь трудно использовать преимущества ASIC и корпусов высокой плотности, поэтому основными технологиями становятся cPLD и FPGA, микроконтроллеры, внешняя аппаратная периферия. По-прежнему используются технологии поверхностного монтажа и многослойные печатные платы 35 .
Сектор лабораторного и уникального оборудования (“1-Off”) 36
Здесь важно получить работающий прибор относительно быстро и иметь возможность быстро поправлять и дополнять схему. Удобнее всего макетные платы под монтаж в отверстия. Для них нужны соответствующие корпуса компонентов или переходники под SMT варианты 37 . Такие платы ограничивают выбор стандартной логикой, скромным набором микроконтроллеров и совсем простыми PLD, плюс простыми аналоговыми компонентами ( ОУ и т.п. ). Задействовать FPGA в такой конфигурации можно, взяв какую-нибудь из отладочных плат таких компаний, как Digilent, DLP Design или Opal Kelly. Они выпускают как компактные варианты ( FPGA + ROM + USB + JTAG ), так и достаточно сложные модели с индикаторами, интерфейсом Ethernet и т.п. 38 . Точно такие же отладочные комплекты выпускаются и под микроконтроллеры. Туда часто ставят PLD и добавляют участок обычной макетной платы под пять-десять дополнительных микросхем.
Любительская деятельность 39
Эти ребята стараются развлечься занедорого, используя отдельные микроконтроллеры или уже готовые отладочные платы 40 . Бывают проекты под макетный монтаж и даже с расчётом на самостоятельное изготовление печатных плат 41 . В этой области удобнее всего использовать компоненты под монтаж в отверстия, а программируемую логику и микроконтроллер часто объединяют в отдельный узел [* а сейчас они всё чаще идут в виде единой микросхемы, которую, впрочем, всё равно полезно выделять в самостоятельный мезонинный модуль ] .

29 Отметим, однако, что эти советы могут затруднить знакомство с темой, если вы пытаетесь овладеть методами, используемыми в ближайшем окружении. Опытные товарищи помогут изучить предмет и отладить программу быстрее, даже если новый приём сулит некоторые преимущества. <-

30 UART, SPI, I2C, CAN, USB, Ethernet, IrDA, WiFi, цифровое audio/video, Bluetooth, ZigBee и т.д. <-

31 Клавиатура, мышь, PCI, PCIe, PWM, SIM и Smart Card, GPS, PCMCIA/CF и т.д. <-

32 Внешняя DRAM/SDRAM, MMU, GPS, CCD/CMOS камеры, LCDs, графические дисплеи и т.п. <-

33 Сотовые телефоны, TV приставки, и т.п. <-

34 Океанографические и научные инструменты, ЯРМ томографы, экспериментальные образцы и т.д. <-

35 Если вам требуется использовать BGA или другие корпуса с большим числом выводов, полезно знать о сервисах для монтажа прототипов, например, Advanced Assembly™. Они могут монтировать BGA с высокой плотностью выводов, проводить инспекцию на рентгеновской установке и даже самостоятельно закупать нужные компоненты, причём, самое приятное, не отказываются даже от пары плат. <-

36 Первые NMR, MRI, STM; ионные ловушки, лазерное охлаждение, управление астрофизическим оборудованием. <-

37 Например, Aries Electronics или Bellin Dynamic Systems. <-

38 Если есть желание использовать FPGA в качестве строительных элементов в разнородных проектах, а найти нужное в указанных фирмах не удаётся, можете поступить следующим образом. Надо собрать небольшую плату под требуемую FPGA, поставить на неё конфигурационную память, генератор, регулятор напряжения ( чтобы можно было работать от +5V ), разъём JTAG и вывести ножки на отверстия для однорядных штырей 1×20 . Такую мезонинную плату можно ставить куда требуется. <-

39 Роботы, дистанционное управление, осветительные системы, аудио- видеоаппаратура и т.п. <-

40 Их поставляют как производители кремния, так и сторонние фирмы, подобные Parallax, Digilent, DLP Design или проект Arduino. Полезно бывает прогуляться по сайтам sparkfun.com и adafruit.com. <-

41 Существуют свободные версии такого ПО, например, Eagle ( CadSoft ), а также проекты с открытым кодом. Наконец, существуют фирмы, делающие недорогие печатные платы. Одной из них является Advanced Circuits ( www.4pcb.com ). Она же предлагает свободное ПО для рисования плат “PCB Artist” ( формат файлов закрыт ). <-

Previous part:

Next part: