WikiDer > COP8

COP8

В COP8 микроконтроллер от National Semiconductor это 8-битный CISC основной микроконтроллер, основными особенностями которого являются:

Он имеет машинный цикл до 2 миллионов циклов в секунду, но большинство версий, похоже, можно разогнать до 2,8 миллиона циклов в секунду (тактовая частота 28 МГц).

Регистры и карта памяти

COP8 использует отдельные пространства для инструкций и данных (Гарвардская архитектура).[нужна цитата] Адресное пространство инструкций - 15-битное (максимум 32 КиБ), а адреса данных - 8-битное (максимум 256 байт, расширяются посредством переключения банков).

Чтобы позволить обнаруживать программные ошибки, все недопустимые адреса инструкций читаются как ноль, что является инструкцией ловушки. Недействительное ОЗУ над стеком читается как все единицы, что является недопустимым адресом.

ЦП имеет 8-битный аккумулятор и 15-битный ПК. 16 дополнительных 8-битных регистров (R0 – R15) и 8-битное слово состояния программы отображаются в памяти. Для доступа к ним есть специальные инструкции, но также можно использовать общие инструкции доступа к RAM.

Карта памяти выглядит следующим образом:

Адресное пространство данных COP8
АдресаИспользовать
0x00–6FОЗУ общего назначения, используется для стека
0x70–7FНе используется, читается как "все единицы" (0xFF) для перехвата недополнения стека
0x80–8FНе используется, читается как undefined
0x90 – BFДополнительные регистры периферийного управления
0xC0 – CFРегистры периферийного управления.
0xD0 – DFПорты ввода-вывода общего назначения L, G, I, C и D
0xE0 – E8Зарезервированный
0xE9Микропровода регистр сдвига
0xEA – EDРегистры таймера 1
0xEEРегистр CNTRL, управляющие биты для микропровода и таймера 1
0xEFPSW, слово состояния программы ЦП.
0xF0 – FBR0 – R11, регистры общего назначения
0xFCR12, он же X, регистр вторичного косвенного указателя
0xFDR13, он же SP, регистр указателя стека
0xFER14, a.k.a. B, регистр первичного косвенного указателя
0xFFR15, он же S, регистр расширения сегмента данных

Если RAM не хранится в банке, то R15 (S) - это просто еще один регистр общего назначения. Если ОЗУ размещено в банке, то младшая половина адресного пространства данных (адреса 0x00–7F) направляется в банк ОЗУ, выбранный S. Специальные регистры в верхней половине адресного пространства данных всегда видны. Регистры данных в 0xFИкс можно использовать для копирования данных между банками.

Банки RAM, отличные от банка 0, имеют все 128 байтов. Стек (адресуется через указатель стека) всегда находится в банке 0, независимо от того, как установлен регистр S.

Контрольные переводы

В дополнение к 3-байтовым инструкциям JMP и JSR, которые могут адресовать все адресное пространство, 2-байтовые версии этих инструкций могут перемещаться внутри страницы размером 4 КБ. Инструкция определяет младшие 12 бит, а старшие 3 бита ПК сохраняются.

Существуют также косвенные команды перехода и косвенные инструкции загрузки аккумулятора, которые используют содержимое аккумулятора как младшие 8 бит адреса; старшие 7 бит текущего ПК сохраняются.

Для ответвлений на короткие расстояния существует 63 однобайтовых инструкции, которые выполняют ответвления относительно ПК от ПК-32 к ПК + 31. Это 15-битное дополнение, и требования к границам страницы не применяются.

Условные переходы выполняются с использованием ряда инструкций условного пропуска. Например, IFEQ сравнивает свои два операнда и пропускает следующую инструкцию, если они не равны. Любую инструкцию можно пропустить; это не ограничивается филиалами.

Рекомендации

внешняя ссылка