|
|
|
|
|
Д. Чоловский
16-бит микроконтроллеры фирмы Hitachi серии H8S. Часть 2
(Микроконтроллеры HITACHI пользуются устойчивым спросом на европейском рынке. По итогам 1999 года компания HITACHI занимала на европейском рынке второе место по объёму продаж 16-бит микроконтроллеров, третье место по поставке 4-бит, шестое - по поставке 8-бит и второе место в мире по поставке 32-бит RISC-микроконтроллеров.)
Флэш-память
Традиционно сильной стороной микроконтроллеров HITACHI были и есть большая встроенная память и передовые технологии её изготовления.
Уже в течение многих лет важной стратегией является обеспечение поставляемых на европейский рынок микроконтроллеров с высокоскоростной, встроенной в кристалл флэш-памятью. В наши дни эта технология представлена в их третьем поколении и предлагает большие объёмы памяти и программирование на одном напряжении.
Интегрирование большой и гибкой памяти имеет для потребителей массу преимуществ, некоторые из которых становятся решающими в современной электронной промышленности. Например, интеграция старой микроконтроллерной разработки, использующей внешние память и периферию, в однокристальную значительно снижает ЭМИ, так как адресные и информационные шины служат основным источником излучения в системе. Вместе с низким энергопотреблением микроконтроллеров фирмы HITACHI такая обновленная конструкция часто моментально исключает проблемы, связанные с ЭМИ. В то же время, дорогостоящие меры по экранированию могут стать ненужными, таким образом стоимость системы снижается, и для платы требуется меньше места.
Другие преимущества большой встроенной памяти и особенно встроенной в кристалл флэш-памяти:
программирование в конце производственного цикла обеспечивает гибкость программного обеспечения до поставки;
возможность простой и быстрой модернизации на месте установки без необходимости открывать оборудование;
возможность обновления программы даже на расстоянии, например, через модем/телефонную линию;
быстрая корректировка при изменении требований заказчика;
постоянное сохранение в памяти информации и параметров;
полная доступность всех портов, так как внешние шины могут быть свободными;
высокоскоростная работа, часто невозможная или слишком дорогостоящая при использовании внешней памяти.
Программирование флэш-памяти
Режим начальной загрузки
Вход в режим начальной загрузки происходит, если режимные выводы H8S находятся в определённом состоянии после сброса. В режиме начальной загрузки выполнение програм мы начинается со скрытой ROM. Программа, записанная в этой ROM, инициализирует один из последовательных интерфейсов и загружает часть программы (поставляемой компанией HITACHI по желанию заказчика), которая позволяет программировать флэш-память. Режим начальной загрузки может использоваться для программирования нового устройства с флэш-памятью, даже если оно уже впаяно в печатную плату.
Пользовательский режим
Пользовательский режим не вводится через режим сброса. Он аналогичен нормальной работе, но с программированием флэш-памяти, возможным через режимные вводы (обычно FWE). В пользовательском режиме внешнее переключающее событие заставляет пользовательскую программу скопировать часть программы в RAM. Основная программа переходит к выполнению этой части программы. Затем флэш-память может быть перепрограммирована под управлением пользовательского приложения, используя все ресурсы кристалла (то есть загрузка новой программы не обязательно должна использовать последовательный интерфейс, она может пользоваться другими источниками). Этот режим предназначен для обновления содержимого флэш-памяти.
Режим PROM
Все варианты флэш-памяти H8S могут также программироваться с использованием программных средств для общего программирования, то есть таким же образом, как программируются однократно программируемые ПЗУ (ОТР).
Контроллер состояния шины (BSC)
Поскольку одной из основных причин применения H8S и Н8/300Н является 16-Мбайт линейное адресное пространство, они часто используются в системах с большим объёмом внешней памяти. H8S и Н8/300Н поддерживаются мощным контроллером состояния шины (BSC), который позволяет подключать внешнюю память и/или периферию без связующих логических схем (в отдельных редких случаях с небольшим их количеством). Контроллер состояния шины (BSC) также помогает получить максимальную производительность внешних устройств, например, избегая задержек адресного декодирования там, где используется встроенная генерация выбора кристалла.
BSC делит адресное пространство на 8 областей. Для каждой из них можно выбрать ряд атрибутов, например:
режим ожидания (вводимый автоматически или аппаратным протоколом);
число состояний ожидания;
разрядность шины (8/16-бит);
протокол доступа к DRAM для 4-х областей в H8S (= 8 Мбайт) (не во всех устройствах).
Контроллер состояния шины (BSC) в H8S
Одно из основных преимуществ H8S перед Н8/300Н - это выполнение основных команд за один цикл синхронизации, что составляет всего 50 нс при 20-МГц генераторе, если они выполняются из внутренней памяти. Для того, чтобы снизить негативное влияние на быстродействие медленных внешних устройств, BSC имеет максимальную производительность и гибкость.
Большая часть микроконтроллеров включает поддержку быстрой страничной DRAM (в H8S/26хх и в некоторых вариантах H8S/23хх), ROM с режимом пакетной обработки, буфер записи, который независимо выполняет выборку медленных внешних сигналов (в H8S/26хх и в некоторых вариантах H8S/23хх) и уменьшает время выборки чтения сигналов путём сдвига фронта синхроимпульса, фиксирующего данные в конце цикла шины.
Интерфейс DRAM
Некоторые микроконтроллеры серий H8S/26хх и H8S/23хх могут работать непосредственно с DRAM, позволяя подключать до 8 МБ DRAM без каких-либо связующих логических схем. BSC выполняет адресное мультиплексирование (8, 9 или 10 бит), синхронизацию и позволяет использовать быстрый страничный режим. DRAM поддерживает режим автогенерации или CAS-before-RAS (CBR, режим регенерации опережающей подачей строба адреса столбца по отношению к стробу адреса строки). Для режима CBR-регенерации BSC обеспечивает независимый счётчик, задающий цикл регенерации, поэтому нет необходимости использовать дополнительный таймер.
Рис. 1. Временная диаграмма выборки данных из внешней памяти
Уменьшение времени выборки чтения сигналов
Для того, чтобы дать внешним устройствам максимум времени для пересылки необходимых данных на шину, фронт выборки чтения, фиксирующий данные, сдвинут к концу выполнения цикла. Поэтому время выборки чтения сигналов уменьшилось примерно на одну четверть по сравнению с Н8/300Н.
Буфер записи данных
В H8S/26хх и в некоторых вариантах H8S/23хх предусмотрен буфер записи данных. Это позволяет CPU продолжать внутреннюю обработку данных, пока BSC независимо занимается выборкой медленной записи. Рис. 2 показывает пример временной диаграммы, когда используется буфер записи данных. Эта функция активизирована, если внешняя запись или одноадресная DMA-пересылка данных продолжается в течение 2-х тактов или более и есть следующая внутренняя выборка, в этом случае на первом такте выполняется только внешняя запись. Но со следующего такта и далее внутренняя выборка выполняется параллельно с внешней, не ожидая её окончания.
Рис. 2. Работа буфера записи данных
Контроллер прямого доступа к памяти (DMAC)
В системе с высокопроизводительным CPU и большой памятью контроллер прямого доступа к памяти значительно увеличивает быстродействие системы. Вместо того, чтобы тратить ресурсы CPU на пересылку данных между периферией и памятью, их можно практически полностью использовать для вычислений, пока происходит пересылка данных.
В сочетании с другими периферийными устройствами, такими как таймеры, SCI или выходы TPC/PPG, работающие в режиме реального времени, может быть построена полностью автономная система, например, для управления шаговым двигателем, для связи с модулями жидкокристаллического дисплея (ЖКД) или клавиатурой без какого-либо участия CPU.
Поскольку H8S почти утраивает быстродействие CPU по сравнению с Н8/300Н, DMAC в H8S усовершенствован по сравнению с DMAC в Н8/300Н для того, чтобы поддерживать в равновесии производительности CPU и DMAC. Общие характеристики контроллера прямого доступа к памяти:
4 канала в режиме короткого адреса (используются для пересылки данных между внутренними входами/выходами и памятью);
2 канала в режиме полного адреса (используются для пересылки данных между разными устройствами памяти или между внешними входами/выходами и памятью);
возможность выбора пересылки байта или слова;
возможность выбора приращения, уменьшения или фиксирования адреса, в зависимости от режима;
возможность запросов на пересылку данных DMA от таймера, SCI0 и внешних устройств, в зависимости от режима;
возможность запроса прерывания после каждой пересылки или после определённого их числа.
Некоторые из основных усовершенствований в H8S:
добавлен специальный режим пересылки, режим одиночного адреса, где оба ресурса должны быть внешними, и данные пересылаются в режиме сквозной передачи для обеспечения максимальной скорости;
больше источников запроса пересылки, например, прерывание при окончании А/Ц преобразования, и по крайней мере 2 SCI могут запрашивать пересылку.
Режим короткого адреса
В этом режиме или адрес источника, или адрес назначения ограничивается 16 битами (H8S), где старшие разряды автоматически устанавливаются в логическую "1". Это позволяет выбрать внутренние входые/выходные регистры. Другие адреса имеют разрядность в 24 бит, так что доступно всё адресное пространство.
В режиме короткого адреса существуют: режим "IO mode" (режим входа/выхода, названный последовательным режимом в H8S), где полный адрес может автоматически увеличиваться или уменьшаться, "idle mode" (холостой режим), где полный адрес фиксирован, и "repeat mode" (режим повторения), позволяющий автоматическую пересылку содержимого буферов циклических данных. Буферы циклических данных используются во многих системах, например, для вывода управляющей последовательности на шаговый двигатель.
Режим полного адреса
Для выполнения пересылки между различным устройствами памяти может использоваться полный адрес. Здесь адреса источника и места назначения имеют 24-бит длину, и поэтому пересылка от памяти к памяти может быть выполнена между любыми областями всего 16-Мбайт адресного пространства. Этот режим позволяет или одиночную пересылку по запросу (нормальный режим), или пересылку блока данных (режим блочной пересылки). В "нормальном режиме" и с разрешенным "автозапросом" DMAC может быть установлен в монопольный режим, принимая от процессора на себя управление шиной до завершения пересылки, или в режим циклического захвата, где процессор и DMAC используют шину совместно.
Режим одиночного адреса (H8S)
Рис. 3 иллюстрирует новый режим одиночного адреса.
В нём пересылка данных осуществляется непосредственно между шинами данных двух внешних устройств, например, внешнего периферийного устройства и DRAM. Преимуществом является скорость передачи, так как данные пересылаются за один цикл без временного хранения. Либо источник либо устройство назначения должны быть устройством, которое можно выбрать только стробом, используя вывод DACK. Адресная шина используется для доступа к другому ресурсу.
Рис. 3. Режим одиночного адреса
Контроллер пересылки данных (DTC)
Анализ многих систем, использующих DMAC, показывает, что их значительная часть не требует максимальной скорости пересылки данных. Эти системы используют DMAC, главным образом, для снижения непроизводительных затрат центрального процессора, позволяя ему использовать свою производительность для вычислений.
Поэтому в микроконтроллерах фирмы HITACHI предусмотрено другое периферийное устройство для автономной пересылки данных - контроллер пересылки данных (DTC). DTC предназначен для разгрузки CPU от задач пересылки данных, обеспечивая при этом максимальную гибкость. В отличие от DMAC, DTC может управлять большим количеством передающих каналов, и пересылка может осуществляться по запросу почти любого из периферийных устройств, которое может запросить прерывание, что можно сделать и программным путём. С другой стороны, пересылка DTC примерно в 5 раз медленнее, чем пересылка DMA (например, 1000 нс против 200 нс на 20 МГц с источником - периферийным устройством и назначением - памятью).
В режиме блочной пересылки непроизводительные затраты DTC разделяются рядом команд пересылки в блоке, таким образом практически исключая результаты непроизводительных затрат.
Одиночное переключение может также запросить множественную пересылку (цепочечный режим). Эта особенность может использоваться, например, для пересылки результата аналого-цифрового преобразования в кольцевой буфер в RAM с последующим автоматическим перепрограммированием АЦП для выполнения других преобразований. Если задания для АЦП хранятся в таблице в ROM, которая используется DTC в циклической схеме, то пока результаты преобразования сохраняются в соответствующем количестве кольцевых буферов в RAM, DTC и АЦП могут выполнять другие совершенно различные задачи без какого-либо вмешательства CPU.
На рис. 4 показана временная диаграмма такой цепочечной передачи. Обратите внимание, что один цикл генератора составляет всего 50 нс на 20 МГц. Как видно, вектор DTC читается после запроса пересылки только за один цикл, каждое перемещение пересылаемой информации между RAM DTC и регистрами DTC занимает 3 цикла, и пересылка данных занимает 2 цикла (минимум).
Рис. 4. Временная диаграмма работы блока DTC
DTC может рассматриваться как DMAC только при одном канале. Регистры для адресов назначения и источника, для режима пересылки и подсчёта пересылки в действительности существуют только в единственном числе. Однако, эти регистры загружаются информацией, которая должна использоваться для пересылки из RAM. Это означает, что структура регистров DTC отображается в специальной RAM DTC столько раз, сколько существует каналов передачи, число которых выбрано разработчиком. Каждая пересылка может иметь разрядность байта или слова; адреса источника и устройства назначения должны иметь 24-бит разрядность (то есть охватывать весь диапазон адресов). Адреса источника и устройства назначения могут быть либо увеличивающимися, либо уменьшающимися (на 1 или 2) или быть фиксированными. Прерывание CPU может осуществляться запросом на прерывание, которое переключает передачу DTC или после каждой пересылки или после определённого числа выполненных пересылок.
Таймер
Одно из наиболее важных периферийных устройств любого микроконтроллера - блок таймера. В электронных системах таймеры используются по-разному. Они переключают задачи в системах, работающих в режиме реального времени, корректируют программные часы реального времени, управляют двигателями переменного и постоянного тока, шаговыми двигателями, проверяют соответствие внешних сигналов (тайм-аут), подсчитывают импульсы, например, от квадратурного шифратора и делают многое другое. Таймеры могут работать даже как точные цифро-аналоговые преобразователи (DAC), если используются в ка честве широтно-импульсных модуляторов.
Для того, чтобы аккумулировать все эти применения, компания HITACHI разработала 2 мощных и гибких блока таймеров для своих 16-бит микроконтроллеров, а также несколько таймеров специального назначения, например, отдельные ШИМ-таймеры, сторожевые таймеры (WDT), таймеры поддержки низкоэнергетического режима и т. п. Блок таймера (TPU) в H8S - 6-канальный 16-бит с 16 выводами сравнения и захвата. Исключение - устройства H8S /21хх. Они предназначены для недорогих систем, где расширенная функциональность таймеров ITU/TPU или не нужна, или может быть заменена высокоскоростным CPU H8S. H8S /21хх имеют 16-бит независимый таймер (FRT) с 4 входами захвата и 2 выходами сравнения, а также 3 8-бит таймера. Предусмотрены отдельный 14-бит ШИМ и 2 сторожевых таймера (один с 32-кГц субгенератором).
Блок импульсного таймера (TPU)
Блок используется во всех устройствах H8S, при этом H8S/224х и H8S/222х имеют половинный состав TPU. Он состоит из 6 16-бит каналов таймера с 16 общими регистрами таймера (TGR), каждый из которых может выполнять задачи сравнения и захвата. Отдельные TGR могут также работать как буферные регистры для снижения нагрузки по прерываниям, которая лежит на CPU.
Для каждого канала программно выбираемым источником входных сигналов может являться один из восьми источников. Возможным источником могут являться внутренние тактовые генераторы, сигналы внешних генераторов или другие таймеры, при этом последние эффективно обеспечивают каскадный метод соединения двух 16-бит таймеров в один 32-бит.
TPU предлагает 4 канала для фазового счёта. Кроме того, TPU разрешает переключать А/Ц преобразование и может переключать пересылку данных, выполняемую контроллером пересылки данных (DTC). TPU позволяет генерировать 15-фазный ШИМ-сигнал, используя один TGR в качестве циклического регистра, а другие 15 - для установки режима.
TPU не поддерживает дополнительный 6-фазный ШИМ-режим и 6-фазный ШИМ-режим синхронизированного сброса.
16-бит независимый таймер (FRT)
сновной блок таймера H8S/21хх - 16-бит независимый таймер (FRT) с 2 выводами выходного сравнения и 4 - входного захвата. Устройство входного захвата может также работать в буферном режиме, тогда только 2 вывода выходного сравнения выполняют свои прямые функции.
Входная синхронизация может осуществляться от одного из 3 внутренних источников или от внешнего источника, при этом также возможен подсчёт событий. FRT характеризуется одним независимым прерыванием для каждого вывода сравнения/захвата и одним при переполнении.
8-бит таймеры
Серии H8S/2655, H8S/2355 и 53, H8S/224х, H8S/234х и H8S/21хх имеют дополнительный 8-бит таймер с двумя каналами (TMR0 и TMR1). Каждый канал имеет два регистра с временными константами (TCORA и TCORB), которые постоянно сравниваются со значением счётчика для определения совпадения. 8-бит модуль таймера может выполнять различные функции, включая импульсный выход с произвольным коэффициентом заполнения или счёт событий на внешнем входе.
8-бит таймер имеет следующие характеристики:
выбор внутренней тактовой частоты f/8, f/64, f/8192 или ввод внешней тактовой частоты;
выбор источников сброса счётчика: совпадение сравниваемых величин А или В или внешний сброс;
каскадная сборка двух каналов для формирования 16-бит таймера;
канал "1" может также использоваться для подсчёта совпадений значений канала "0".
Эти 8-бит таймеры могут использоваться для поддержки минимального уровня работоспособности таймера в периоды нахождения системы в режиме ожидания. Результатом является, с одной стороны, низкое энергопотребление, так как TPU может отключаться в этой ситуации, и с другой стороны, минимальная активность таймера. 8-бит таймер может использоваться, например, для коррекции программной синхронизации в режиме реального времени или для сканирования клавиатуры, так что система может вернуться в режим полной активности при нажатии клавиши.
Расширенные 8-бит таймеры в H8S/21хх
Микроконтроллеры H8S/21хх характеризуются 8-бит модулем таймера, аналогичным описанному выше. Также существует третий 8-бит канал таймера TMRY, который обладает сходными функциями с TMR0 и TMR1, но без устройства проверки совпадения значений.
14-бит ШИМ-таймер
H8S/21хх снабжён двухканальным ШИМ-таймером, предназначенным для использования в качестве цифро-аналогового преобразователя. Он базируется на 14-бит счётчике, генерируя аналоговые сигналы с 14-бит разрешением и малой пульсацией.
Сторожевой таймер (WDT) в Н8S
Таймер имеет WDTOVF-вывод, который может сигнализировать о переполнении сторожевого таймера внешним устройствам. Он может работать с гораздо более медленными источниками тактовых импульсов, с частотой до f/131072, которая обеспечивает до 1,68 с (на 20 МГц), между сбросами сторожевого таймера до наступления его переполнения.
Сторожевой таймер (WDT), работающий от 32-кГц субгенератора
В некоторых вариантах Н8S установлен второй WDT, который работает от 32-кГц субгенератора. Этот субгенератор может делить частоты на 2 и так далее до 256 до того, как он будет использован в качестве входного тактового генератора для счётчика. Следовательно, конечная частота переполнения может равняться 32 кГц, деленным на 256х256 = один раз каждые 2 секунды. Этот WDT может использовать для своего сброса прерывание, сброс или NMI. При запросе прерывания WDT полезен для коррекции программной синхронизации в режиме реального времени. Для этого применения каждый периферийным модуль устройства выключается, и CPU переходит в режим ожидания. Затем WDT возвращает CPU к работе, например, каждую секунду, CPU обновляет программные регистры генератора реального времени (обычно находящиеся в RAM) и снова переходит в режим ожидания, если нет другой работы.
Контроллер последовательности импульсов таймера (TPC)
Программируемый импульсный генератор (PPG)
Эти периферийные устройства позволяют генерировать выходные цифровые сигналы, синхронизированные с частотой таймера, так что они могут рассматриваться как "выходные сигналы реального времени". Такая, управляемая таймером, выходная цифровая система может генерировать постоянный поток данных, которые появляются на выводах контроллера точно в пределах интервалов, на которые запрограммирован таймер, без какого-либо "дрожания", вызываемого, например, задержками обработки прерывания в системе, где процедура обработки прерывания управляет через выводы контроллера. TPC и PPG могут обеспечивать это без вмешательства CPU, если используются вместе с DMA.
TPC и PPG снабжены регистрами, называемыми "регистрами следующих данных". Данные этих регистров пересылаются под управлением таймера в "регистры данных порта" (то есть на контакты). У CPU, DMA или DTC (там, где применяется) остаётся время до следующей отметки таймера скопировать следующее значение из таблицы данных из памяти в "регистр следующих данных". Этот механизм работает независимо для четырех групп по 4 контакта каждая, так что всего таким образом может управляться 16 контактов. TPC и PPG предназначены прежде всего для управления шаговыми двигателями при незначительном вмешательстве CPU в этот процесс. Однако, они могут использоваться и для множества других целей. Например, очень легко генерировать поток последовательных данных, если нужен дополнительный последовательный интерфейс. Возможно даже управление модулем ЖКД без использования какого-либо контроллера синхронизации ЖКД, таким образом исключается вся периферийная ИС в микроконтроллерной системе, которая должна подключаться к модулю ЖКД.
Управление шаговым двигателем при помощи ТСР
На рис. 5 показано, как можно выполнить управление шаговым двигателем, используя ITU, TPC и DMAС. В этом примере однофазный шаговый двигатель управляется при помощи транзисторов, соединённых по мостовой схеме. Поэтому необходимо обеспечить время задержки между переключениями фаз во избежание короткого замыкания.
Рис. 5. Управление шаговым двигателем
Отметки совпадения результатов сравнения от ITU используются для включения DMAC, на ТСР подаётся новая последовательность импульсов. Эти данные представляют собой последовательность управления следующей фазой и хранятся в таблице памяти. DMAC использует память для пересылки этих данных при каждой отметке совпадения. ТСР также использует сигналы от ITU для пересылки содержимого NDR в порт. Используя режим ТСР там, где в порту производится переключение из 0 в 1 (то есть переключение фазы) только при отметке совпадения А, вводится время задержки, равное значению GRA.
При управлении шаговым двигателем обеспечение фазовой последовательности импульсов на контактах порта - только часть задачи. Необходимо также изменять время между последовательностями на выходе, чтобы обеспечить ускорение или замедление двигателя. Когда ТСР, ITU и DMAC работают вместе, моменты ускорения, замедления и постоянной скорости могут регулироваться при минимальной нагрузке на CPU. Оно нужно только тогда, когда производится переключение из одной фазы в другую. Это достигается подключением второй схемы памяти к каналу ввода/вывода DMAC для перезагрузки регистра сравнения таймера после пересылки на выход каждой новой последовательности импульсов. DMAC может выбрать данные для нового шага из таблицы значений, сохраняемой в памяти системы. Поэтому при использовании таблицы увеличивающихся и уменьшающихся значений можно замедлять и ускорять двигатель без вмешательства CPU.
|
|