H8S/2239 – недорогое решение недорогой задачи: микроконтроллер компании Renesas

№ 9’2003
PDF версия
Микроконтроллер H8S/2239 компании Renesas предназначен для построения недорогих систем реального времени и имеет для этого все необходимое, начиная от 16-разрядного ядра с достаточно высокой производительностью и заканчивая большим набором периферийных устройств.

Микроконтроллер H8S/2239 компании Renesas предназначен для построения недорогих систем реального времени и имеет для этого все необходимое, начиная от 16-разрядного ядра с достаточно высокой производительностью и заканчивая большим набором периферийных устройств.

Микроконтроллер H8S/2239

В предыдущих статьях мы рассказывали о микроконтроллерах семейств H8/300H Tiny и SuperH. Эти семейства представляют собой «фундамент» и «крышу» серии высокопроизводительных микроконтроллеров от фирмы Renesas. Так, H8/300H Tiny начинает 16-разрядную сеть, а SuperH — завершает 32-разрядную. Если семейство Tiny в основном применяется в простеньких системах управления двигателем, где не требуется большого количества ШИМ-таймеров или мощного высокопроизводительного АЛУ, то SuperH ориентировано на системы реального времени, где требуются высокая скорость вычислений и обработки информации. А что же делать, если требуется построить недорогую систему реального времени с достаточно хорошей производительностью, и в то же время необходимо иметь возможность подключения большого количества устройств без использования внешних портов и интерфейсов? Выход есть. У Renesas в его огромном арсенале микроконтроллеров есть семейство H8S, которое удовлетворяет всем вышеперечисленным требованиям. Об этом семействе, а именно о его представителе H8S/2239, и пойдет речь в данной статье.

Характеристика ядра H8S

Ядро H8S является логическим продолжением и усовершенствованием серии H8/300H, которое говорит само за себя и не нуждается в особой рекламе. Собственно ядро H8/300H выполнено по передовой технологии 0,18 мкм (высшие его части), и,соответственно, микроконтроллеры семейства H8S также производятся по этой технологии. Формально H8S является 16-разрядным ядром, хотя, судя по его структуре, оно, конечно же, 32-разрядное.

В отличие от таких ядер, как 8051 или х86, которые имеют аккумуляторную структуру, ядро H8S более продвинуто и имеет модульный принцип построения. Что же это значит? Для выполнения львиной доли арифметических или логических операций в ядрах аккумуляторной структуры требуется сначала загрузить требуемое значение в аккумулятор, затем произвести над этим числом желаемые действия, и только потом уже сохранить в каком-либо регистре общего назначения полученный результат. В модульном ядре, каким является ядро H8S, все иначе. Практически все регистры (за исключением специализированных) имеют равные права. Таким образом, операция сдвига значения регистра R0 в ядре 8051 запишется в три операции:

Микроконтроллер H8S

Mov A,R0 ; копирование значения регистра R0 ваккумулятор
RL A ; сдвиг влево на один разряд
Mov R0,A ; запись обновленного значения обратно в регистр.

При этом каждая команда выполняется за 12 тактов; получаем 36 тактов. В то время как та же операция на ядре H8S выполняется всего за такт.

SHAL ER0; сдвиг влево на один разряд

Удивительно, но эта операция действительно выполняется всего за такт. Этот факт делает ядро H8S еще более привлекательным. Как известно, по производительности нет равных RISC-ядрам. Суть их состоит в том, что на кристалле выполнен очень широкий дешифратор команд, благодаря которому, собственно, команда дешифрируется за один такт и достигается максимальное быстродействие. Это обычно сопровождается уменьшением количества самих команд, что может вызвать увеличение объема кода. При проектировании ядра H8S пошли по похожему пути, но несколько иначе. Дешифратор команд здесь сложный и организован таким образом, что команды, работающие с фиксированными значениями (например, регистры) дешифрируются за один такт. Что же касается абсолютных значений, то здесь все как в остальных продвинутых ядрах: от 2 до 4 тактов за счет применения конвейеров команд.

Рис. 1 Регистры микропроцессорного ядра
Рис. 1. Регистры микропроцессорного ядра

Ядро содержит шестнадцать 16-разрядных регистров общего назначения, которые для совместимости с предыдущими моделями (H8/300 и H8/300H) могут быть использованы как 8-разрядные регистры общего назначения, а могут быть и сгруппированы парами, образующими восемь 32-разрядных регистров общего назначения. Регистры микропроцессорного ядра показаны на рис 1. Для манипулирования данными ядро включает 65 инструкций, которые делятся на 8/16/32-разрядные арифметические и логические инструкции, инструкции умножения и деления, а также мощные инструкции для манипуляции с битами. Процессорное ядро поддерживает восемь различных режимов адресации; ширина внешних шин (как адреса, так и данных) составляет 24разряда, что позволяет адресовать до 16 Мбайт внешней памяти. Наконец, о быстродействии: небольшой пример приведен выше, теперь немного общих слов и цифр: команда, не требующая передачи непосредственного значения, выполняется за такт. Если же надо передать это значение или обратиться к памяти, то это займет два такта (чем не RISC-производительность?). Операции умножения и деления выполняются, конечно же, дольше, в этом и есть разница с RISC-ядром. 8-разрядные операции умножения и деления выполняются за 12 тактов, а 16-разрядные за 20 тактов. Следует отметить, что вядрах серии H8S/26xx команды умножения иделения выполняются в 3–4 раза быстрее.

Микропроцессорное ядро может работать в двух режимах: нормальном и расширенном. В нормальном режиме микропроцессор работает с линейной структурой памяти до 64 кбайт. При этом используются старшие половинки 32-разрядных регистров общего назначения, таблица исключений располагается с адреса 0H, словом, здесь ядро H8S функционирует как быстродействующее ядро H8/300. В расширенном режиме доступны все «преимущества» этого микроконтроллера: использование 32-разрядных регистров и операций, расширенное адресное пространство, более гибкое формирование таблицы исключений. Более подробную информацию по структуре микропроцессорного ядра H8S можно найти в техническом описании.

Особенности микроконтроллера H8S/2239

Когда речь заходит о выборе микроконтроллера, то первый вопрос звучит так: чем же данный контроллер отличается от остальных? А отличие одного микроконтроллера отдругого заключается, как правило, в разнообразии периферийных устройств и в объемах памяти. Опции памяти составляют 384кбайт постоянной и 32 кбайт оперативной памяти, причем есть выбор между Flash-версией имаской, что при больших объемах, в которых обычно эти микроконтроллеры потребляются, выходит на порядок дешевле.

Рис. 2 Микроконтроллеры H8S отличаются от других высокой интеграцией различных периферийных устройств
Рис. 2 Микроконтроллеры H8S отличаются от других высокой интеграцией различных периферийных устройств

Семейство H8S отличается от других высокой интеграцией различных периферийных устройств, что собственно, и иллюстрирует рис.2. Начнем с контроллера прерываний, так как без этого устройства говорить о чем-либо еще просто не имеет смысла.

Контроллер прерываний обеспечивает обработку девяти внешних источников прерывания, среди которых одно немаскируемое прерывание. Процедуры обработки прерываний, а точнее сказать, адреса, по которым они находятся, собраны в один вектор прерываний, расположенный, как водится, в начале адресного пространства. Маски прерываний (кроме немаскируемого прерывания) также собраны в один вектор, кроме того, существует специальный регистр IPR, позволяющий установить приоритет каждого прерывания (кроме немаскируемого, которое имеет наивысший приоритет). Управляет контроллер прерываний также и контроллером передачи данных (DTC — data transfer controller), и контроллером прямого доступа к памяти (DMAC — direct memory access controller). Остальные периферийные устройства, встроенные в микроконтроллер H8S/2239, тоже имеют свои биты в регистрах контроллера прерываний, позволяя маскировать результаты работы того или иного устройства. Вообще, контроллер прерываний микроконтроллера 2239 очень гибко конфигурируется. Он имеет различные режимы работы, может переключаться между ними в процессе выполнения программы, обеспечивая полную свободу для пользователя.

PBC (program break controller) — это некоторое подобие JTAG. Он обеспечивает останов процессора в заданном месте, что позволяет производить отладку программы и мониторинг состояния процессора. Этот контроллер может управлять остановом по различным критериям (запись, чтение данных), причем либо на шину контроллера, либо в режиме передачи данных по периферийным интерфейсам.

Встроенный контроллер шины (bus controller) управляет внешней адресацией, а также контролирует состояние внутренних шин процессора, связанных с контроллером прямого доступа к памяти (DMAC) и контроллером передачи данных (DTC). Что касается внешней шины, то здесь с помощью контроллера шины можно достаточно гибко управлять подключенными внешними устройствами. Например, контроллером шины управляются восемь внешних сигналов CS (chip select), для которых задается свое адресное пространство (16 Мбайт всего, поэтому по 2 Мбайта на один chip select). К шине адреса подключается параллельно до 8 устройств, а далее, при желании обратиться к какому-либо из них, достаточно выполнить обращение командой по адресу, выделенному под заданное устройство. Нужный сигнал CS (chip select) сработает сам, выбрав, таким образом, желаемое устройство.

Контроллер передачи данных (DTC — data transfer controller) встроен в микроконтроллер H8S/2239 для управления механизмом передачи данных. Он позволяет вести прием и передачу одновременно по нескольким каналам, причем количество этих каналов неограниченно. Есть возможность организовывать передачу в нормальном режиме, с повторением, а также блоками. Единицами передачи могут быть как байты, так и слова, причем можно специфицировать прямой 24-разрядный адрес. Контроллер может быть запущен по прерыванию от внешнего устройства, от какого-либо внутреннего сегмента микроконтроллера, либо программным путем, либо… можно продолжать еще долго говорить о возможностях этого контроллера передачи данных. Достаточно только сказать, что есть возможность организовывать цепные пересылки, где один пакет порождает другой ит.д. Получается такой маленький TCP/IP…

SCI (serial communication interface) — последовательный интерфейс передачи данных, который в микроконтроллере H8S/2239 имеет 5 каналов и может работать в асинхронном режиме (UART) и синхронном режиме, а также в режиме интерфейса смарт-карты. Асинхронный и синхронный режимы практически не отличаются от встроенных в другие микроконтроллеры, за исключением того, что один из каналов UART может быть сконфигурирован как «быстрый», что позволяет значительно повысить скорость передачи данных. Существует возможность выбора режимов передачи, установки стартового и стопового битов, коррекция ошибок передачи битом четности. Наибольший интерес представляет режим интерфейса смарт-карты. При работе со смарт-продуктами важно обеспечить надежность передачи данных и незамедлительно отреагировать на сообщение об ошибке. Функции обработки ошибок обычно возлагаются на центральный процессор смарт-продукта, а вот обнаружение ошибок передачи и сигнализирование может выполнить микроконтроллер H8S/2239. При приеме в режиме интерфейса смарт-карты микроконтроллер автоматически генерирует сигнал ошибки, а также может поймать ошибку внешнего устройства в режиме передачи и заново отослать последовательность. Обнаружение ошибок производится на основе проверки бита четности.

Естественно, микроконтроллер H8S/2239 включает и стандартный набор периферии. Это 6-канальный 16-разрядный таймер, 4-канальный 8-разрядный таймер, два сторожевых таймера (один на основе 8-разрядного счетчика, другой на основе 16-разрядного), последовательный синхронный интерфейс IIC, имеющий 2 канала, дополнительный генератор на 32768 кГц — для организации часов реального времени.

Помимо цифровой части, микроконтроллер H8S/2239 также оснащен и аналоговой частью для измерения, обработки и вывода аналоговой информации. Аналого-цифровой преобразователь имеет 8 входных каналов, разрядность 10 бит и скорость преобразования 9,6 мкс на канал. Как обычно, встроенный в микроконтроллер АЦП имеет мультиплексную структуру, то есть каналы поочередно коммутируются и с них по очереди записывается в регистр преобразованное значение. Есть возможность единичного запуска преобразования (считывается один канал, затем останов), либо режим сканирования (считываются до 4 каналов последовательно). Принцип преобразования последовательный, то есть при помощи сравнения с напряжением, которое выдает внутренний ЦАП. Другой составляющей частью аналогового блока является двухканальный цифроаналоговый преобразователь, имеющий разрядность 8 бит и работающий в диапазоне напряжения от нуля до аналоговой единицы.

На этом, наверное, описание периферии кристалла можно бы и закончить, если только не извечный вопрос: куда это можно применить? А применений ему можно найти много. Семейство микроконтроллеров H8S восновном позиционируется как семейство микроконтроллеров универсального применения. Возьмем, например, охранную систему. Есть и аналоговые входы для подключения датчиков, и ЦАП для вывода обработанной информации, интерфейсы для организации master-slave, сети, даже часы реального времени можно организовать для синхронизации. Или, например, телекоммуникации: в качестве коммутатора простых телефонных линий он тоже вполне сгодится. Системы контроля реального времени, такие, как контроль параметров устройств или автомобильная система впрыска топлива также будет весьма и весьма благосклонна к этому микроконтроллеру за счет наличия мощного ядра для хранения и обработки данных по сложным алгоритмам и наличия большого количества линий ввода-вывода для контроля периферийных устройств. В предыдущей статье, посвященной микропроцессору SH7709, был приведен пример коррекции голоса. Так вот с коррекцией 8-разрядного голоса справится и H8S/2239. А это можно применить в синтезаторах речи, которые часто устанавливаются на вокзалах и в аэропортах, или в цифровых фильтрах речи в системах, работающих в сложной акустической обстановке. Применений можно найти еще массу, как говорится, было бы желание…

Средства разработки для микропроцессора H8S/2239

Что же нужно для нормальной полноценной и комфортной работы с любым микроконтроллером? Сначала хочется увидеть, что этот микроконтроллер, собственно, может. Для этого требуется оценочный набор. Затем захочется что-нибудь изменить самому в уже готовой написанной программе. Для этого необходимо иметь компилятор с языка высокого уровня, например C/C++, транслятор ассемблера, причем желательно, чтобы все это было бы вместе и в удобной красивой оболочке. После этого пора уже делать свою собственную систему «с нуля». Тут требуется плата разработчика. Ну и наконец, когда все сделано и написано, приходит время отладчика реального времени. Микроконтроллер H8S/2239 обеспечен всеми четырьмя позициями.

Оценочный набор для микроконтроллера H8S/2239 вообще бесплатен, и его можно взять в аренду в фирме «ГАММА Санкт-Петербург», официального дистрибьютора Renesas. Оценочная плата имеет минимум возможностей, но программировать контроллер позволяет, что уже несколько расширяет ее возможности. Все оценочные наборы называются EDKxxxx, а в данном случае это будет EDK2239. EDK2239 позволяет пользователю оценить возможности микроконтроллера, поиграть с периферией, попрограммировать Flash ит.д. Строго говоря, для разработки больше ничего и не надо. ПО поставляется вместе с оценочным набором, периферийные слоты есть (подключай что угодно, главное, по току не перебери), память прошивать можно (пиши свое ПО), связь по последовательному интерфейсу есть (делай отладчик по прерыванию UART) — вот ивсе. Если есть идея недорогого проекта, то это выход. Если же проект очень серьезный исложный, то… продолжим описание средств разработки.

Компиляторы и трансляторы обычно используются «родные», а именно написанные самими программистами из Renesas. Это известный HEW (High-performance Embedded Workshop) различных версий. HEW имеет привлекательный интерфейс от Visual C++ с многооконным режимом, работой с проектами, генерацией необходимых выходных файлов, симулятором для программной отладки кода, автоматической генерацией кода запуска для любых процессоров и т. д. Этот программный продукт по праву признан лучшим для программирования микроконтроллеров от Renesas, несмотря на обилие конкурентов. HEW устанавливается на любую Windows-платформу. Версии HEW до второй не могли самостоятельно производить отладку, а это необходимо. Приходилось использовать отдельную программу под названием HEW Debugger, что доставляло определенные трудности. Теперь, начиная совторой версии HEW, эти программы объединены вместе и отладка реального времени может производиться прямо «на лету». Существуют также и другие компиляторы C++, например IAR — только компилятор C, или GNU — UNIX-подобный бесплатный компилятор C/C++ без оболочки. Следует отметить, что сейчас GNU входят в состав HEW Очень удобна и красива программа для программирования Flash-контроллеров от Renesas под названием FDT. Функции программирования и тестирования памяти там выполнены на 100 процентов, но отсутствует разработка и отладка кода. Существуют также генераторы драйверов под контроллеры Renesas, в частности под H8S/2239. Наиболее распространены MakeApp от IAR и Codelines Так что если есть необходимость писать драйвера, то здесь тоже все поставлено на«высший» уровень.

Плата разработчика называется DB2239. Она позволяет произвести полную разработку системы «с нуля» и при этом фактически является расширением демонстрационной платы. В эту плату, в отличие от демонстрационной, микроконтроллер не впаян, а вместо этого оставлено для него место. Это позволяет как разрабатывать систему на реальном кристалле, так и использовать внутри схемные эмуляторы.

Внутрисхемным эмуляторам обычно уделяется особое внимание не только из-за того, что эта «штука» стоит немалых денег, но и потому, что без нее построить полноценную отлаженную систему практически невозможно. Эмуляторы по стоимости различаются следующим образом: чем универсальнее эмулятор, тем дороже он стоит. Эмулятор E6000 позволяет производить отладку любого микроконтроллера или микропроцессора от Renesas. При этом доступны все функции: просмотр памяти, точки останова, изменение значений в ходе выполнения программы и т. д. Также E6000 можно использовать вместе с реальным кристаллом, при этом есть возможность распределения функций и памяти между ними. Есть возможность использовать свой тактовый генератор или генератор целевой системы (в случае совместной работы), также задается последовательность событий и определенная реакция на них. Другим, более дешевым эмулятором является E10A. Он позволяет производить эмуляцию устройства в реальном времени, расставлять точки останова, производить трассировку, а также читать и программировать Flash-память.

Фирма Lauterbach также производит программные и аппаратные средства разработки и отладки для микроконтроллеров и микропроцессоров от фирмы Renesas. В большинстве своем по функциям они напоминают HEW и E6000, поэтому описывать их подробно не имеет смысла, а вопрос выбора одних или других средств остается, естественно, за клиентом.

Развитие микроконтроллеров H8S

Несомненно, нужно остановиться на перспективах семейства микроконтроллеров и линиях его развития. Семейство H8S, будучи самым прогрессивным семейством из 16-разрядных микроконтроллеров, продолжает развиваться и пополняться новыми членами. Наибольшее внимание уделяется вопросам интеграции кристалла, энергопотреблению, производительности, а также стоимости, что немаловажно для российского производителя. Серия 21xx имеет наиболее низкие цены. Это делается путем удаления «лишних» для некоторых задач периферийных устройств. Согласитесь, не везде требуется 32 ШИМ-таймера или 512 кбайт Flash-памяти. Серия 22xx, к которой как раз относится описываемый H8S/2239, является наиболее компромиссной по интеграции и энергопотреблению. Серия 23xx позиционируется как «общего назначения», то есть оптимизирована по всем возможным критериям. Наконец, серия 26xx — наиболее высокопроизводительная. Здесь настолько усовершенствован конвейер команд, что быстродействие вплотную приближается в RISC-системам. Представьте только: 16-разрядное умножение за 4 такта! Семейство микроконтроллеров H8SX показано на рис. 3.

Рис. 3 Семейство микроконтроллеров H8SX
Рис. 3. Семейство микроконтроллеров H8SX

Нельзя не сказать о 32-разрядной версии семейства H8S, семействе H8SX, которое компания Renesas анонсировала в начале 2003 года. Микроконтроллеры этой серии представляют собой усовершенствованный вариант H8S/26xx. Более того, в H8SX усовершенствован конвейер команд, расширено внешнее адресное пространство, внутренние шины также стали 32-разрядными, да и система команд стала полноценно выполнять 32-разрядные операции за пару тактов. Это все при частотах до 80 (в перспективе до 100) мегагерц, при еще более высокой, чем у H8S, интеграции периферии и при цене, сопоставимой с 16-разрядными моделями!

Недавно компания Renesas анонсировала выход в свет в качестве образцов микроконтроллеры H8SX/1650. Это опытная модель, но ее успех и технологии будут закладывать основу для развития этого перспективного семейства.

Полную информацию по продуктам Renesas можно найти на сайте компании www.renesas.com/eng.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *