Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Реализация архитектуры MAXQ: представляем MAXQ2000Семейство микроконтроллеров MAXQ™ производства MAXIM®/Dallas Semiconductor – это высокопроизводительные 16-битные RISC-контроллеры, идеальные для применения в устройствах с автономным питанием и обработкой смешанного сигнала. Разработанная для малошумящих операций, архитектура MAXQ объединяет высокоточные аналоговые функции с цифровыми компонентами, что приводит к уменьшению количества используемых ИС. MAXQ использует гарвардскую архитектуру памяти для хранения данных, кодов и регистрового пространства на раздельных шинах. Основное преимущество этой архитектуры – переменная длина слова, что позволяет использовать системные и периферийные регистры шириной 8 или 16 бит. В типичном контроллере MAXQ применена 16-битная память данных, кодов и регистров. Поскольку длина командного слова в MAXQ составляет 16 бит, в микроконтроллере всегда задействована 16-битная шина команд. Другое преимущество гарвардской архитектуры заключается в том, что доступ к памяти всегда осуществляется с использованием регистров. Это позволяет реализовать прямой доступ к памяти со стороны периферийных устройств – таких как АЦП и аппаратные сопроцессоры. Архитектура MAXQ основана на очень простом принципе: все операции в конечном итоге выполняются с помощью простой операции передачи данных. Каждая команда из полного набора 33 команд сводится либо к записи литерального операнда в регистр назначения/ячейку памяти, либо к пересылке данных между регистрами и/или ячейками памяти (см. рис. 1) Простота архитектуры позволяет поставщикам инструментальных средств оптимизировать разработку кодов при минимальных требованиях к объему памяти для большинства приложений. Помимо этого, каждая инструкция в MAXQ выполняется за один такт, что обеспечивает максимально возможную скорость исполнения кода (1 MIPS/МГц) (MIPS – миллион команд в секунду).
Представляем MAXQ2000 MAXQ2000 – первый из серии продуктов семейства MAXQ. Этот микроконтроллер содержит 16-битное ЦПУ, флэш-память 64 кбайт, 2 кбайт SRAM и 132-сегментный контроллер ЖКИ. Этот контроллер генерирует сигналы для ЖКИ в соответствии с содержимым памяти дисплея. Программа пользователя устанавливает параметры конфигурации и производит запись в память дисплея. Затем контроллер ЖКИ самостоятельно вырабатывает сигналы общих шин и сегментов с заданной частотой, освобождая микроконтроллер от отслеживания состояния дисплея и прямого управления ЖКИ. Помимо этого, микроконтроллер поддерживает четыре режима дисплея:
Семнадцать байт памяти дисплея доступны для использования контроллером ЖКИ или для хранения данных общего назначения. Еще одну дополнительную функцию ЖКИ обеспечивают встроенные резисторы делителя напряжения – их можно использовать для регулировки контраста, не применяя внешние компоненты. На рисунке 2 показана конфигурация делителя напряжения драйвера ЖКИ для статического дисплея. Каждый из 36 выводов управления сегментами может быть использован для операций ввода/вывода общего назначения, если он не подключен к ЖКИ.
MAXQ2000 также предлагает пять вариантов для тактового сигнала:
Разнообразные режимы управления питанием позволяют минимизировать энергопотребление. Режим «деление на 256» позволяет нормально выполнять все операции при уменьшенной (в 256 раз) частоте высокочастотного тактового сигнала. Для дальнейшего снижения энергопотребления применяется режим, позволяющий микроконтроллеру работать от генератора 32 кГц. Все операции продолжаются в нормальном режиме, но с чрезвычайно низкой тактовой частотой (32кГц/256). Поскольку некоторые входные данные микроконтроллера требуют работы с полной скоростью, предусмотрен режим обратного переключения на максимальную тактовую частоту. Такое обратное переключение выполняется автоматически, когда требуется высокая скорость, например, при работе с UART, SPI™ или при внешних прерываниях. Высококлассные средства разработки Проектирование встроенных приложений требует ускорения сроков разработки. Для этого DALLAS® поставляет высококлассные средства для интегрированных сред разработки, инструменты эмуляции и полные внутрисхемные эмуляторы. Для разработки на языке Ассемблер с сайта MAXIM по адресу www.maxim-ic.com/microcontrollers" target="_blank">www.maxim-ic.com/microcontrollers можно загрузить бесплатное средство разработки MAXIDE. Оно содержит ассемблер, интегральную среду разработки (IDE) с цветовым выделением кодовых слов, средства поддержки интерфейса MAXQ JTAG и симулятор для каждого микроконтроллера MAXQ. Среды разработки на языке Си поддерживают партнеры по поставке инструментальных средств. Компания IAR со своим АРМ «IAR Embedded Workbench®» является основным поставщиком инструментальных средств, обеспечивающим полное решение по IDE для MAXQ (см. рис. 3). Другие партнеры также разрабатывают компиляторы и IDE.
Микроконтроллеры MAXQ имеют средства поддержки для эмуляции JTAG. Каждый микроконтроллер содержит блок эмуляции, позволяющий начать разработку встроенной программы на перепрограммируемых flash-версиях микроконтроллеров при проектировании реальных систем. Разработчики встроенных программ могут в полном объеме проектировать, писать и отлаживать свои приложения, используя реальные микроконтроллеры в реальных схемах. Предусмотрена возможность программной установки точек останова, срабатывающих при совпадении адреса регистра, программы или данных. Фоновая отладка выполняется на микроконтроллере с полной скоростью. При включении отладчика, например, при срабатывании точки останова, микроконтроллер переключается в режим отладки. В этом режиме возможно чтение/запись регистров, памяти и пошаговое исполнение программы. Заключение Инновационное исполнение команд за один такт, режимы управления питанием и широкий спектр периферийных устройств обработки смешанных сигналов делают MAXQ идеальным для современных энергосберегающих высокопроизводительных приложений. С появлением MAXQ2000 вы можете начать проектировать и испытывать интегрированные аналого-циф- ровые решения уже сегодня. Программирование в среде MAXQАрхитектура MAXQ была разработана для прикладных программистов. Каждый микроконтроллер MAXQ содержит аппаратный блок отладки, тесно интегрированный с ядром микроконтроллера. Первой из микросхем этой архитектуры стала MAXQ2000, и в данной статье приведены примеры и дополнительные сведения по использованию АРМ IAR Embedded Workbench вместе с отладочным комплектом MAXQ2000 Evaluation Kit. Внутрисхемная отладка и программно-загрузочные функции микроконтроллера MAXQ2000 в сочетании со средой разработки IAR Embedded Workbench обеспечивают разработку и тестирование приложений на языках С или Ассемблер. Аппартный блок отладки и загрузчик MAXQ2000 работают через выделенный порт JTAG, обеспечивая полный доступ к отладке при минимальном влиянии на системные ресурсы. Особенности внутрисхемной отладки Аппаратный блок отладки, тесно интегрированный с ядром микроконтроллера, управляет функциями отладки MAXQ2000. Этот блок может обращаться к сервисным утилитам встроенного ПЗУ для поддержки широкого спектра операций отладки:
Вся связь с блоком отладки в MAXQ2000 осуществляется через выделенный JTAG Test Access Port (TAP) интерфейс, отвечающий стандарту IEEE 1149 для JTAG. Этот интерфейс включает четыре сигнала, мультиплексированные с выводами портов MAXQ2000 следующим образом: TMS (выбор режима) – с Р4.2; TCK (тактовый сигнал) – с Р4.0; TDI (входные данные) – с Р4.1; TDO (выходные данные) – с Р4.3. Поскольку JTAG TAP-порт выделен для внутрисистемной отладки и внутрисистемного программирования, четыре вывода, по которым передаются сигналы JTAG TAP-порта по завершении этих операций могут быть использованы для других целей. Порт JTAG активируется по умолчанию сигналом reset, но в процессе работы прикладная программа может деактивировать порт JTAG, освобождая четыре выделенных вывода для других целей. Интерфейс JTAG и блок отладки работают асинхронно с ядром MAXQ2000. Связь по порту JTAG не требует той же тактовой частоты, с которой работает MAXQ2000. Частота TCK не должна превышать 1/8 системной тактовой частоты MAXQ2000. Установки точек прерывания можно записать и прочитать через блок отладки в то время, как MAXQ2000 выполняет код. Этот режим известен как фоновый, и в нем блок отладки работает независимо от ядра ЦПУ. При выполнении других операций, таких, как запись в и чтение из памяти и регистров, блок отладки управляет ядром MAXQ2000 и переключает его на выполнение одной из сервисных программ отладки, хранящихся в ПЗУ. Этот режим называется режимом отладки, и в нем блок отладки прерывает нормальное выполнение программ. В этих случаях работа пользовательской программы временно прерывается и возобновляется только после выполнения функции отладки, точно так же, как это происходит при обработке прерываний. Поскольку сам JTAG TAP-порт не используется для прикладных программ, выводы, присвоенные порту JTAG, могут использоваться этими программами. Все дополнительные подпрограммы, требующиеся для функций отладки, размещаются в ПЗУ, поэтому единственные системные ресурсы, потребляемые функциями отладки – небольшой объем ОЗУ и один уровень программного стека (используемый для хранения адреса возврата при вызове прграммы отладки). Старшие 19 байт ОЗУ (адреса с 0х07ED по 0x07FF) зарезервированы для использования сервисными программами отладки. Если внутрисхемная отладка не планируется, эти ячейки ОЗУ доступны для использования прикладными программами. Доступ к интегрированной программной флеш-памяти через JTAG JTAG TAP-порт также используется для дополнительной функции загрузчика, которая доступна даже в том случае, когда функции отладки не используются. Установив три конфигурационных бита через JTAG TAP интерфейс и затем отключив сигнал reset, можно передать управление встроенным программам загрузки, размещенным в ПЗУ. Биты конфигурации, которые управляют доступом к загрузчику – следующие:
Когда эти биты установлены и MAXQ2000 снят с reset, загрузчик начинает обмен данными с хост-системой по выбранному порту (JTAG или последовательный 0 UART). В любом случае используется один и то же протокол, выполняющий следующие функции:
Хотя загрузчик и может работать через последовательный 0 UART порт вместо JTAG, интерфейс JTAG необходим для переключения загрузчика в режим последовательной передачи. Однако прикладная программа также может перевести загрузчик в режим последовательной передачи, нужным образом установив биты SPE и PSS, а затем выполнив reset MAXQ2000 (позволив сработать сторожевому таймеру или с помощью внешних аппаратных средств). Метод активизации загрузчика (например, сигнал на вывод порта) определяется прикладной программой. Защита функций отладки и загрузчика с помощью пароля Схема защиты по паролю ограничивает доступ к функциям отладки и загрузчика MAXQ2000. Хост-система должна сообщить пароль, чтобы получить доступ к любой функции, которая считывает или изменяет содержимое памяти или системных и периферийных регистров. Длина пароля составляет 16 слов или 32 байта. Оригинал пароля хранится во внутренней флеш-памяти по адресам от 0x0010 до 0x001F. Эти значения можно включить в прикладную программу в виде статического массива, или это могут быть просто значения командных кодов, хранящихся по этим адресам. В любом случае, пароль записывается автоматически при загрузке прикладной программы. Если прикладная программа не загружена, то пароль формируется по умолчанию и все его слова равны 0хFFFF. Даже если пароль неизвестен, содержимое внутренней флеш-памяти MAXQ2000 всегда можно стереть с помощью загрузчика. Этот метод эффективно стирает пароль (приводя все слова к виду 0хFFFF) и позволяет работать остальным операциям программирования и отладки. Защита с помощью пароля гарантирует, что существующий код нельзя считать с MAXQ2000, не проверив предварительно соответствие значения 32-байтного пароля. Использование «COM–JTAG» адаптера Интегрированные среды разработки для микроконтроллера MAXQ2000 (такие как MAXIDE и IAR Embedded Workbench) включают библиотеки программ для поддержки связи с JTAG-интерфейсом MAXQ2000. Тем не менее, поскольку в PC, на которых установлено это программное обеспечение, обычно нет JTAG-портов, необходимо аппаратное решение для связи двух систем. Модуль адаптера «COM – JTAG», включенный в отладочный комплект для MAXQ2000, обеспечивает быстрое решение этой проблемы. (Рис. 1) Программное обеспечение для PC (такое, как IAR Embedded Workbench) связывается с модулем адаптера по стандартному последовательному COM-порту. Модуль адаптера затем подключается к JTAG-порту MAXQ2000, передавая команды загрузчику или блоку отладки. Модуль адаптера помимо этого выполняет преобразование уровней сигнала и поддерживает работу микроконтроллеров MAXQ в широком диапазоне напряжений питания, а также избавляет от необходимости использовать PC для обеспечения точной тактовой частоты с целью формирования импульсов JTAG.
Использование аппаратных средств отладочного комплекта MAXQ2000 Отладочный комплект MAXQ2000 Evaluation Kit предоставляет полную аппаратную среду разработки для микроконтроллеров MAXQ2000, включая следующие компоненты:
Установка комплекта MAXQ2000 Evaluation Kit и адаптера “COM – JTAG» весьма проста. Подключите платы, следуя приведенной ниже инструкции:
Разработка прикладных программ с использованием АРМ IAR Embedded Workbench Среда разработки АРМ IAR Embedded Workbench поддерживает разработку прикладных программ для MAXQ2000 на базе языка С или языка ассемблера. С использованием описанной выше аппаратной конфигурации, включающей комплект MAXQ2000 Evaluation Kit и модуль адаптера «COM – JTAG», IAR Embedded Workbench имеет полный доступ к основанному на JTAG загрузчику и функциям внутрисхемной отладки MAXQ2000. При разработке прикладных программ для MAXQ2000, IAR Embedded Workbench поддерживает следующие функции:
Разработка и компиляция проекта для MAXQ2000 Поскольку в состав IAR Embedded Workbench включена поддержка семейства микроконтроллеров MAXQ, разработка нового проекта для микроконтроллера MAXQ2000 требует только нескольких специфических установок. После запуска IAR выберите пункт File, затем в меню – New. В диалоговом окне New выберите Workspace и кликните OK. Введите новое имя для рабочей зоны проекта (хранится как файл с расширением .eww) и нажмите Save. После открытия рабочего окна, выберите Project, затем – Create New Project из меню. Набор инструментов для MAXQ задается для нового проекта по умолчанию. Введите имя файла для нового проекта (хранится как *.ewp) и кликните Create. Затем выберите Project и Settings из меню. Откроется диалоговое окно с установками для нового проекта, как показано на Рис.2
По вкладке General Options в диалоговом окне Options необходимо выбрать следующие установки для микроконтроллера MAXQ2000:
По вкладке C-SPY Debugger диалогового окна Options необходимо выбрать следующие установки для микроконтроллера MAXQ2000 (Рис.3):
В разделе JTAG диалогового окна Options, поле Command line options содержит наименование COM-порта PC, используемого для связи с платой «COM – JTAG». На рис. 4 показаны установки для подключения к COM-порту 1.
После установки опций для проекта, выберите Project, затем – Add Files для добавления исходного файла языка С к проекту. После добавления исходного файла (или файлов) выберите Project, затем – Make для его компилирования, после чего выберите Project, затем – Debug для запуска сеанса отладки. Эта операция загружает скомпилированный проект через интерфейс JTAG и переводит IAR в режим отладки, как показано на рис.5.
Операции отладки в IAR После начала сеанса отладки можно использовать функции Step Over (F10), Step Into (F11) и Step Out (Shift + F11) для пошагового выполнения C-программы проекта. Для запуска программы выберите Debug, затем – Go из меню, или нажмите F5. Адресные точки прерывания можно установить или удалить, поместив курсор на строку исходного кода и кликнув по кнопке Toggle Breakpoint на панели инструментов. Можно установить до четырех точек прерывания одновременно. Окно Memory можно использовать для отображения Code (внутренней флэш-памяти), Data (внутреннего ОЗУ), Hw stack (внутреннего 16-уровневого стека) и памяти ПЗУ MAXQ2000. Формат отображения данных из памяти можно выбрать в виде байтов, слов или двойных слов, как hex (для любой ширины), так и ASCII (для байтовой ширины). Окно Register отображает системные и периферийные регистры MAXQ2000. Они разделены на логические группы:
Регистры с разрешением записи можно редактировать, кликнув на строку значения и введя новое значение. Отображение индивидуальных битов или полей битов внутри регистров может быть развернуто или свернуто кликом по знаку плюса или минуса рядом с именем регистра. Заключение Среда разработки высокого уровня для IAR Embedded Workbench, основанная на языке С, в сочетании с отладочным интерфейсом низкого уровня MAXQ2000, позволяет выполнять тонкую отладку как на уровне языка С, так и на уровне ассемблера. Встроенные средства отладки и внутрисхемного программирования MAXQ2000 и их минимальное влияние на ресурсы системы позволяют использовать те же аппаратные структуры как для разработки прикладных программ, так и для окончательной доводки готового проекта. Доступ к функциям, хранящимся в ПЗУ MAXQИспользование таблиц внутри программы пользователя является обычной для программистов практикой при работе с микроконтроллерами. Из-за однотактовой природы ядра MAXQ программа не имеет прямого доступа к кодовому пространству и, следовательно, не может непосредственно считывать таблицы, размещенные внутри пользовательского кода. Чтобы устранить это затруднение, все ПЗУ в MAXQ содержат программы доступа к данным и таблицам, располженным в программной области. В дополнение к этим базовым функциям, ПЗУ каждой модификации MAXQ может содержать специфичные для данного микроконтроллера программы. Поскольку эти программы могут быть размещены в ПЗУ произвольно и их местонахождение может изменяться для каждой новой версии ПЗУ, был разработан стандартный механизм доступа к программам. Это позволяет использовать код, написанный для одной из версий ПЗУ, во всех последующих версиях без переписывания или перекомпилирования. Во всех вариантах процессора MAXQ ПЗУ включает в себя таблицу адресов для всех поддерживаемых функций. Местоположение таблицы в разных вариантах может быть различным, поэтому ссылка на нее всегда размещается по адресу 800Dh. Затем адреса используемых функций можно найти в таблице с помощью индексирования. Таблица всегда поддерживает один и тот же порядок расположения функций для всех версий определенного ПЗУ. В табл. 1 перечислены функции MAXQ2000 и адреса их вызова из таблицы. Табл. 1 Таблица пользовательских функций ПЗУ MAXQ2000
Выполнение функции ПЗУ производится за четыре шага. В первом - прочитайте указатель таблицы функций, записанный по адресу 800Dh. Во втором – прибавьте к прочитанному указателю номер нужной функции. В третьем – прочитайте указатель нужной функции, записанный по адресу, вычисленному на втором шаге. Наконец – выполните функцию путем обращения к подпрограмме по адресу, прочитанному на третьем шаге. Приведенный ниже текст на языке ассемблера демонстрирует эти четыре шага, используя функцию микроконтроллера moveDPlinc в качестве примера.
Поскольку будущие версии ПЗУ в определенном варианте MAXQ могут хранить служебные функции по разным адресам, использование служебной функции, сходной с функцией ReadDataAtDP1 гарантирует их совместимость в дальнейшем. «Ценой» этой совместимости является больший размер кода и большее время выполнения. В некоторых случаях это может быть неприемлемым, тогда лучше применить прямой вызов функций ПЗУ. Для прямого вызова служебной функции следует просто определить адрес требуемой функции и использовать его в качестве назначения в команде вызова (call). Чтение строки, размещенной в кодовом пространстве, илюстрирует обычную ситуацию, требующую использования служебных функций. Программист может поместить в программной памяти сообщения об ошибках, информационные или отладочные строки, которые будут отображаться во время выполнения программы пользователя. Приведенный ниже сегмент кода показывает один из вариантов реализации этого с использованием функции ReadDataAtDP1, уже описанной выше.
Заключение Служебные функции облегчают разработчику чтение данных, хранящихся в программной памяти. Стандартный механизм доступа к программам ПЗУ также позволяет разработчикам писать коды, которые будут работать со всеми вариантами конкретного процессора MAXQ. Библиотеки подпрограмм пользователя могут быть написаны так, что их можно будет повторно использовать с последующими версиями ПЗУ, не опасаясь несовместимости. Пример пользовательской программы с использованием отладочного комплекта MAXQ2000 Evaluation KitДоступность стандартных инструментов языка ANSI Си и сред разработки, включающих эти инструменты, значительно облегчает разработку пользовательских программ для новых или незнакомых процессоров. Инструменты для семейства процессоров MAXQ включают компилятор ANSI Си от компании IAR и интегрированную среду разработки IAR Embedded Workbench. С помощью этих программ, имея начальные знания о регистрах специального назначения MAXQ, разработчик может быстро и без усилий начать писать пользовательские программы для архитектуры MAXQ. Самый легкий способ продемонстрировать, насколько простым может быть процесс разработки для архитектуры MAXQ – пример создания пользовательской программы. Программа, описываемая здесь, использует процессор MAXQ2000 и отладочный комплект MAXQ2000 Evaluation Kit. Процессор MAXQ2000 обладает широким спектром интегрированных периферийных устройств, включая:
Описание пользовательской программы В этом примере используется контроллер ЖКИ, порт SPI в ведущем режиме, один из UARTов, аппаратный умножитель и один из таймеров. Таймер используется для генерирования периодических прерываний. В момент прерывания MAXQ2000 измеряет температуру и отправляет полученный результат на ЖКИ и один из своих последовательных портов. Порт SPI соединен с системой сбора данных (DAS) MAX1407, которая содержит АЦП. Значения температуры измеряются термистором, подключенным к АЦП, входящему в состав MAX1407. Использование контроллера ЖКИ Для использования ЖКИ следует сконфигурировать два управляющих регистра. Как только эти регистры будут установлены, сегменты ЖКИ можно будет включать установкой бита в одном из регистров данных ЖКИ. Приведенный ниже код показывает, как конфигурируется контроллер ЖКИ в описываемом примере пользовательской программы:
Связь по SPI Три регистра управляют различными режимами SPI, поддерживаемыми MAXQ2000. Для связи с MAX1407 используется приведенный ниже код для инициализации компонентов SPI и переведения их в нужный режим.
Как только установлена конфигурация регистров SPI, регистр SPIB используется для отправки и получения данных. Запись в регистр инициирует двунаправленную передачу данных между ведущим и ведомым устройствами SPI. Бит STBY в регистре SPICN сигнализирует об окончании передачи. Ниже показан код отправки и получения данных SPI.
Запись в последовательный порт В примере пользовательской программы один из последовательных портов MAXQ2000 используется для вывода текущих значений измеренной температуры. Перед записью каких-либо данных в порт, пользовательская программа должна установить значение скорости передачи (в бодах) и режим работы последовательного порта. Как и в предыдущем примере, следует инициализировать несколько регистров для обеспечения передачи через последовательный порт.
Как и в случае передачи данных через SPI, один и тот же регистр используется для приема и передачи последовательных данных. Запись в регистр SBUF0 запускает передачу. При приеме полученные данные могут быть прочитаны из регистра SBUF0. Нижеследующая функция использована в примере пользовательской программы для вывода данных через последовательный порт.
Генерирование периодических прерываний с помощью таймера Последний из компонентов, используемых в этом примере пользовательской программы – один из 16-битных таймеров. Таймер генерирует прерывания, которые запускают процесс считывания температуры дважды в секунду. Для конфигурирования таймера в этом примере, программист должен установить значение перезагрузки счетчика, задать источник тактового сигнала и запустить таймер. Приведенный ниже код отображает шаги, необходимые для инициализации таймера 0.
Использование этого таймера в качестве источника прерывания требует еще нескольких шагов. Для архитектуры MAXQ прерывания необходимо разрешить на трех уровнях: глобально, для каждого модуля и локально. Используя компилятор IAR, можно разрешить прерывания глобально, вызвав функцию _enable_ interrupt(). Это эффективно устанавливает бит Interrupt Global Enable (IGE) регистра прерывания и управления (IC). Поскольку таймер 0 размещен в модуле 3, необходимо установить бит 3 в регистр маски прерывания (IMR) чтобы разрешить прерывания для модуля 3. Разрешение локального прерывания происходит в результате установки бита разрешения таймерных прерываний (ET2) в регистре А управления таймером (T2CNA). Выполнение этих шагов в примере пользовательской программы показано ниже.
Наконец, использование прерываний требует инициализации вектора прерываний. Компилятор IAR поддерживает применение различных функций обработки прерывания для каждого модуля. Установка обработчика прерывания для конкретного модуля требует использования директивы #pragma vector. Описанию функции обработки прерывания должно также предшествовать ключевое слово _interrupt. В приводимом примере пользовательской программы обработчик прерывания для модуля 3 описывается следующим образом:
Заключение Как показано на примерах этих функций, знание особенностей нескольких периферийных регистров позволяет программистам легко разрабатывать пользовательские программы для процессора MAXQ2000 и всего семейства процессоров MAXQ. Наличие АРМ IAR Embedded Workbench ускоряет процесс разработки, позволяя писать программы на ANSI-совместимом языке Си. Полный исходный текст для этой пользовательской программы можно загрузить по адресу www.maxim-ic.com/MAXQ_code" target="_blank">www.maxim-ic.com/MAXQ_code. Прочтите описание и комментарии, помещенные в начале текста программы, касающиеся электрической схемы и подготовки к работе. Подробные сведения по использованию IAR Embedded Workbench приведены во второй статье данной публикации, озаглавленной Программирование в среде MAXQ. Обработка сигнала с помощью умножительно-аккумуляторного блока (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-битных микроконтроллеров возможности обработки сигналов. С однотактовым блоком МАС, выполняющим наиболее востребованные в аналоговых приложениях операции, обработка сигналов в реальном времени становится доступной. Документация www.dolchevito.ru/" class="sale">недвижимость новостройки | www.lejla.ru/" class="sale">недвижимость вторичный рынок | www.mysa.ru/" class="sale">загородная недвижимость | www.prometej.ru/" class="sale">коммерческая недвижимость | www.real-x.ru/" class="sale">коммерческая недвижимость Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|