Как выбрать микроконтроллер для приложений цифровой обработки сигналов, исходя из требований к периферийным модулям
Данная статья продолжает обсуждение возможностей и характеристик микроконтроллера, которые особенно важны, когда речь идет о цифровой обработке сигналов (ЦОС).
Микроконтроллеры могут быть удобным и экономически эффективным средством внедрения цифровой обработки сигналов в носимые устройства, медицинское оборудование, аудиооборудование и другие различные продукты и системы. Тем не менее, микроконтроллеры предназначены в первую очередь (и не удивительно) для управления устройствами, поэтому, если мы хотим, чтобы микроконтроллер был эффективным сигнальным процессором, нам стоит подойти к его выбору более тщательно.
Предыдущая статья была посвящена характеристикам процессора, а именно: разрядность, тактовая частота, тактовые циклы на инструкцию и возможности работы с плавающей запятой. В этой статье мы рассмотрим периферийные модули и функции, которые делают микроконтроллер более подходящим для выполнения цифровой обработки сигналов (ЦОС, DSP, Digital.Signal Processing).
Поддержка процессора
Некоторые аппаратные модули занимают промежуточное положение между процессором и обычными периферийными устройствами, такими как таймеры и компараторы. Типовым примером является аппаратный множитель.
Аппаратное умножение
Аппаратный мультипликатор (умножитель) - это особенность, которая может отличать успех от неудачи в DSP-системе реального времени. Важные приложения цифровой обработки сигналов, такие как цифровая фильтрация и спектральный анализ, требуют многочисленных операций умножения, и они должны выполняться достаточно быстро, чтобы получить результаты за разумное время (с точки зрения пользователя) или (и это когда всё действительно может стать сложным) со скоростью, равной или превышающей скорость, с которой данные поступают из внешней системы.
Поскольку большая часть приложений микроконтроллеров не требует продвинутых возможностей умножения, обычно включать умножитель в ядро процессора не имеет смысла. Таким образом, аппаратный умножитель является дополнительным модулем, который получает данные от центрального процессора (CPU), выполняет с высокой эффективностью умножение, а затем делает полученные данные доступными для CPU.
Аппаратные умножители на самом деле выходят за рамки простого умножения. Процедуры цифровой обработки сигналов часто требуют процесса, известного как умножение и накопление (MAC, multiply-and-accumulate), который (как вы, возможно, догадались) включает в себя многократное умножение чисел и суммирование, или накопление, результатов операций умножения. Аппаратный модуль MAC предлагает еще больший потенциал для повышения производительности DSP.
Прямой доступ к памяти (DMA, Direct Memory Access)
Я впервые узнал о DMA, когда работал над программно-определяемой радиосистемой, которая должна была быстро выполнять алгоритм декодирования с оцифрованными демодулированными сигналами (в основной полосе частот), и этот опыт навсегда впечатлил меня значением DMA в чувствительной ко времени цифровой обработке сигналов.
Модуль DMA – это, по сути, отдельный процессор, который выполняет одну задачу: перемещение данных. Эта задача проста, поэтому включение функциональности DMA в ваш проект не сильно увеличивает его сложность, а мощность DSP системы резко возрастает, поскольку центральный процессор может сосредоточиться на обработке чисел вместо тасования данными между памятью и периферийными устройствами. Если вашему приложению требуются интенсивные вычисления цифровой обработки данных в реальном времени, контроллер DMA может стать особенно ценным дополнением к возможностям вашего микроконтроллера.
Связь
Цифровая обработка сигналов требует не только процессора, как обработчика, но и самих цифровых данных, которые нужно обработать. В большинстве случаев эти цифровые данные будут создаваться вне микроконтроллера, а это означает, что передача данных является критически важным звеном в цепи цифровой обработки сигналов.
Параллельная передача данных
Мне нравятся параллельные интерфейсы, потому что они простые, по крайней мере, теоретически, но они встречаются реже, чем вы думаете. Передача восьми или даже шестнадцати битов одновременно кажется гораздо более эффективной, чем отправка одного бита за раз, но последовательные интерфейсы широко используются даже в высокоскоростных системах. Если выбор параллельной передачи данных предпочтительнее для вашей системы, и вы хотите попробовать этот вариант, ищите микроконтроллер с «интерфейсом внешней памяти» (EMI или EMIF, external memory interface), «интерфейсом внешней шины» (EBI, external bus interface) или чем-то в этом роде.
Последовательная передача данных
I2C не является высокоскоростным интерфейсом, а стандартный UART обычно используется на низких или средних скоростях передачи данных. Ищите периферийные устройства, которые демонстрируют высокие максимальные тактовые частоты и которые используют дополнительный сигнал для синхронизации между приемником и передатчиком (это позволяет сигналу данных полностью использоваться для передачи реальных данных).
«USART» – это довольно стандартная аббревиатура для модуля последовательной связи, который я предлагаю использовать («S» означает «синхронный»). В основном, я рекомендую микроконтроллер с аналогом «многоканального буферизованного последовательного порта» от TI – сокращенно McBSP (multichannel buffered serial port, аббревиатура произносится как mic-BSP, как будто модуль из Ирландии). Модуль, который надолго мне запомнился, и будет постоянно ассоциироваться в моем разуме с высокоскоростной последовательной передачей данных.
Проверка на ошибки
Приложения, которые требуют надежного обнаружения ошибок, могут извлечь выгоду из аппаратного модуля CRC.
Заключение
Я действительно считаю, что микроконтроллеры предпочтительнее цифровых сигнальных процессоров во многих приложениях цифровой обработки сигналов низкой и средней интенсивности, и я надеюсь, что эта статья поможет вам найти микроконтроллеры, которые могут надежно выполнять задачи DSP, которые требуются вашим проектам.