Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры |
|
||||||||||||
Обработка сигнала с помощью умножительно-аккумуляторного блока (MAC) контроллера MAXQТрадиционно микроконтроллеры и цифровые сигнальные процессоры (DSP) рассматривают как стоящие на противоположных концах спектра микрокомпьютеров. В то время как микроконтроллеры наилучшим образом подходят для приложений, требующих быстрого отклика на несинхронизированные события, DSP блестяще проявляют себя в приложениях, где необходимы интенсивные математические вычисления. Микроконтроллеры можно использовать для арифметических приложений, однако принцип работы большинства микроконтроллеров «одна операция за одну команду» делает такое использование малоэффективным. Сходным образом, DSP можно применить для приложений управления, но внутренняя архитектура большинства DSP делает эту операцию неэффективной как с программной, так и с временной точки зрения. Выбор между DSP и традиционным микроконтроллером усложняется, когда приложение, в основном ориентированное на задачи управления, все же включает некоторые операции по обработке сигнала. В таких приложениях заманчиво «впихнуть» программу DSP в микроконтроллер. Однако разработчик часто обнаруживает, что приложение затрачивает большую часть времени на выполнение вычислений DSP, из-за чего страдают функции управления.Это противоречие может быть разрешено в современной архитектуре процессоров, такой, как MAXQ. В модульной архитектуре MAXQ в состав микроконтроллера может быть добавлен умножительно-аккумуляторный блок (MAC), легко интегрируемый в архитектуру. С помощью аппаратного блока MAC можно выполнять в одном цикле операции умножения и аккумулирования 16-разрядных операндов без влияния на приложение, выполняемое процессорным ядром. В данной статье приведены примеры того, как модуль MAC можно использовать в типовом микроконтроллере MAXQ для решения реальных задач. Использование модуля MAC в MAXQ Обычное применение DSP – фильтрация аналогового сигнала. В данном приложении аналоговый сигнал подается на АЦП, и получившаяся последовательность отсчетов фильтруется в цифровом виде. Реализация фильтра в общем виде может быть описана следующей формулой: где bi и ai характеризуют прямой и обратный отклики системы. В зависимости от значений ai и bi цифровые фильтры разделяются на две основные категории – фильтры с конечной импульсной характеристикой (FIR) и фильтры с бесконечной импульсной характеристикой (IIR). Если система не содержит элементов обратной связи (все ai = 0), фильтр относится к классу FIR: Если же элементы обоих типов (ai и bi) – ненулевые, фильтр относится к классу IIR. Как видно из вышеприведенной формулы для фильтра FIR, основные математические операции в этом случае – умножение каждого отсчета на входе на постоянную величину и последующее суммирование с накоплением n раз. Ниже приводится фрагмент на языке С, иллюстрирующий этот пример: y[n]=0; for(i=0; i<n; i++) y[n] += x[i] * b[i]; Для микропроцессора с блоком умножителя тот же результат можно получить согласно следующей псевдо-ассемблерной программе:
Таким образом, даже с участием умножителя, цикл умножения и аккумулирования требует 12 команд и (полагая исполнение каждой команды за один такт) 4+8n тактов. Умножитель MAXQ является реальным умножительно-аккумуляторным блоком. При выполнении той же операции в архитектуре MAXQ кодовое пространство сокращается с 12 слов до 9 слов, а время выполнения ограничивается 4+5n тактами.
Обратите внимание, что в умножительно-аккумуляторном блоке MAXQ запрошенная операция выполняется автоматически при загрузке второго операнда в блок. Результат записывается в регистр MC. Заметьте, что размер регистра MC составляет 40 бит, поэтому в него может быть просуммировано большое количество 32-битных результатов перемножения, прежде чем наступит переполнение. Это позволяет избежать традиционного подхода, когда после каждой элементарной операции необходимо проверять переполнение. В качестве примера эффективного использования MAC при обработке сигнала, рассмотрим простой пример двухтонового мультичастотного передатчика (DTMF). Обзор DTMF DTMF – технология передачи сигнала, использующаяся в телефонной сети для передачи информации об адресе с сетевого терминала (телефон или иное устройство коммуникации) на телефонную станцию. Технология использует два набора из четырех дискретных тональных сигналов, гармонически рассогласованных, т.е. – сигналов «низкочастотной» (до 1 кГц) и «высокочастотной» (более 1 кГц) групп. Каждая цифра на клавиатуре телефона представлена одним тоном из «нижней» группы и одним тоном из «верхней». На Рис. 1 показано распределение тональных сигналов.
Кодер тональных сигналов DTMF Кодирующая часть передатчика DTMF относительно проста. Требуются два цифровых гене- ратора синусоидального сигнала, каждый из которых может быть настроен на одну из четырех частот из «нижней» или «верхней» группы. Существует несколько способов решения проблемы цифрового синтеза синусоидального сигнала. Один из методов генерирования синусоиды вообще не применяет цифровой синтез. Вместо этого осуществляется глубокая фильтрация прямоугольного сигнала на выводе порта. Хотя этот метод применяется во многих приложениях, стандарты Bellcore требуют более высокой спектральной чистоты синусоидального сигнала, чем чистота, которую можно получить таким методом. Второй метод генерирования синусоидального сигнала – табличный метод. В этом методе четверть синусоиды записывается в ПЗУ в виде таблицы, которая затем считывается с заранее вычисленной частотой для получения нужной формы сигнала. Создание такой таблицы достаточно высокого разрешения для удовлетворения требований к спектральным характеристикам сигнала может, однако, потребовать значительных ресурсов памяти. К счастью, существует лучший способ.
Для генерирования синусоиды можно использовать рекурсивный цифровой генератор1 (Рис. 2). Генератор выполнен в виде двухполюсного фильтра, описываемого следующим уравнением: где k – постоянная, определяемая как Поскольку для номеронабирателя DTMF необходим лишь ограниченный набор тональных сигналов, предварительно рассчитываются и записываются в ПЗУ только восемь значений k. Например, константа k для формирования сигнала второй строки (770 Гц) при частоте отсчетов 8 кГц вычисляется так: Следует задать еще одно значение: начальный импульс, необходимый для запуска генератора. Ясно, что если Xn-1 и Xn-2 имеют нулевые значения, то каждый последующий Xn будет равен нулю. Для запуска генератора следует установить Xn-1 равным нулю, а Xn-2 рассчитать, как Полагая амплитуду синусоиды равной единице для нашего примера, получим Перевести этот алгоритм в программные коды достаточно просто. Сначала инициализируются две промежуточные переменные Х1 и Х2: Х1 инициализируется нулем, а Х2 загружается начальным уровнем возбуждения, вычисленным по формуле, приведенной выше. Чтобы сформировать один отсчет синусоиды, выполните следующие операции: Каждое новое значение синусоиды вычисляется с использованием одной операции умножения и одной операции вычитания. С помощью однотактного MAC микроконтроллера MAXQ, синусоида формируется следующим образом:
Распознавание тонального сигнала в DTMF Поскольку подлежит распознаванию небольшое количество частот, применяется модифицированный алгоритм Герцеля2. Этот алгоритм более эффективен, чем общие методы DFT и обеспечивает надежное распознавание внутриполосных сигналов. Он может быть реализован как простой фильтр второго порядка согласно схеме на Рис.3.
Чтобы использовать алгоритм Герцеля для распознавания тонального сигнала определенной частоты, нужно предварительно рассчитать константу. В случае детектора DTMF это может быть сделано в процессе компиляции. Все частоты тонального сигнала известны. Постоянная вычисляется по следующей формуле Прежде всего, три вспомогательные переменные (D0, D1 и D2) приравниваются к нулю. Затем, для каждого полученного отсчета Х следует рассчитать: После получения достаточного количества отсчетов (обычно 205 при частоте отсчетов 8 кГц), вычислите величину Р, используя предварительно рассчитанные значения D1 и D2: Величина Р пропорциональна значению квадратичной мощности тестовой частоты входного сигнала. Для полного распознавания всех DTMF частот каждый отсчет должен быть обработан восемью фильтрами. У каждого фильтра должно быть собственное значение к и свой набор промежуточных переменных. Поскольку каждая переменная занимает 16 бит, весь алгоритм займет 48 байт промежуточной памяти.
По вычислении значений Р для различных тональных частот, значения для одного тона из «верхней» и одного из «нижней» группы будут существенно выше, чем для других тонов, обычно более чем в два раза, часто на порядок больше. На Рис. 4 показан пример входного сигнала на декодере, а на Рис. 5 – результат применения алгоритма Герцеля. Если полученный спектр не удовлетворяет этим критериям, это означает либо отсутствие DTMF-сигнала, либо наличие шума, блокирующего DTMF-сигнал.
Таблица, в которой представлен описанный алгоритм, а также пример программы для процессора MAXQ с блоком MAC представлены на сайте MAXIM по адресу www.maxim-ic.com/MAXQ_DTMF" target="_blank">www.maxim-ic.com/MAXQ_DTMF. Заключение Микроконтроллер MAXQ, оснащенный блоком MAC, закрывает пробел между традиционными микроконтоллерами и цифровыми сигнальными процессорами. Дополненные аппаратным блоком MAC, микроконтроллеры MAXQ предоставляют новые, прежде недоступные для рынка 16-битных микроконтроллеров возможности обработки сигналов. С однотактовым блоком МАС, выполняющим наиболее востребованные в аналоговых приложениях операции, обработка сигналов в реальном времени становится доступной. Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|