Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

КС8 микроконтроллер от National Semiconductor представляет собой 8-разрядный CISC ядро микроконтроллера , чьи основные функции:

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

Регистры и карта памяти [ править ]

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

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

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

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

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

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

Контрольные передачи [ править ]

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

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

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

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

Уникальной особенностью архитектуры COP8 является IFBNEинструкция. Он сравнивает младшие 4 бита регистра B (указатель памяти) с 4-битной непосредственной константой и может использоваться для цикла до тех пор, пока B не достигнет конца небольшого (до 16 байт) буфера.

Интересным расширением этого механизма является RETSKинструкция возврата и пропуска, которая позволяет любому вызову подпрограммы условно пропускать следующую инструкцию. Это обеспечивает очень компактный способ возврата логического значения из подпрограммы.

Набор инструкций [ править ]

Операнды COP8 перечислены в порядке назначения и источника. В большинстве инструкций в качестве одного из операндов используется аккумулятор A. Другой операнд обычно выбирается из 8-битного непосредственного значения, 8-битного адреса RAM или [B]адреса RAM, выбранного регистром B. Некоторые команды также поддерживают оперативную память адресацию по X регистра ( [X]) и пост-вкл / декремент варианты ( [B+], [B−], [X+], [X−]).

Косвенная адресация через B выполняется особенно быстро и может выполняться в том же цикле, что и инструкция.

С другой стороны, абсолютная адресация RAM в большинстве случаев напрямую не кодируется. Напротив, специальный префиксный код операции «прямой адресации», за которым следует 1-байтовый адрес, может предшествовать любой инструкции с [B]операндом и заменять его на прямой операнд памяти. Это добавляет к инструкции два байта и три цикла. (В инструкциях с условным пропуском префикс и следующая инструкция пропускаются как пара.)

Все инструкции «перемещения» вызываются LD(загружаются), даже если местом назначения является адрес памяти. Что необычно, нет LDинструкций с аккумулятором в качестве источника; Сохранение выполняется с помощью Xинструкции, которая обменивает аккумулятор с операндом памяти, сохраняя A и загружая предыдущее содержимое памяти. (Это не требует дополнительного времени; X A,[B]это инструкция с одним циклом.)

Есть инструкции по извлечению из таблиц в ПЗУ. Они объединяют старшие 7 бит программного счетчика (PCU) с аккумулятором, извлекают байт из этого адреса и помещают его в аккумулятор ( LAIDинструкция) или младшие 8 битов программного счетчика PCL ( JIDинструкция). Поскольку следующая выполняемая инструкция должна находиться на той же 256-байтовой странице ПЗУ, что и сама таблица, таблица с 256 записями невозможна.

*: Только для ядер "семейства функций" (COP888 / COP8SA); отсутствует в ядрах "базового семейства" (COP800).
†: Только на моделях "flash family" (COP8TA / COP8C) с загрузочным ПЗУ для внутрисистемного программирования

Ссылки [ править ]

  1. ^ a b Руководство пользователя основного семейства COP8 (PDF) . Редакция 002. National Semiconductor . Июнь 1996 г. Номер публикации 620895-002 . Проверено 2 января 2021 .
  2. ^ a b Aleaf, Абдул (июль 1996 г.). «Сравнение COP878x с расширенным семейством COP8SAx7 - аппаратные и программные аспекты» (PDF) . National Semiconductor . Примечание по применению 1043.
  3. ^ Руководство пользователя по семейству функций COP8 . Редакция 005. National Semiconductor . Март 1999 г. Номер публикации 620897-005. Извлечено из заархивированного ISO-образа 530094-003_COP8_Tools_Docs_Aug1999.zip , получено 07.01.2020.
  4. ^ "Руководство разработчика COP8SAx" (PDF) . National Semiconductor . Январь 1997 г. Номер публикации 620894-001.
  5. ^ a b «COP8SBR9 / COP8SCR9 / COP8SDR98-битный микроконтроллер на базе флэш-памяти CMOS с памятью 32 КБ, виртуальной EEPROM и отключением» (PDF) (лист данных). National Semiconductor . Апрель 2002 . Проверено 6 января 2021 .

Внешние ссылки [ править ]

  • Встроенные микроконтроллеры National Semiconductor ( CR16 и COP8 )
  • микроконтроллер-faq / COP8 , 1995
  • "National Semiconductor COP8" . 25-е ​​ежегодное издание EDN по микропроцессорам / микроконтроллерам. EDN . 24 сентября 1998 г.