Jump to content

СТ6 и СТ7

Микроконтроллер ST62E40 на базе архитектуры ST6.

ST6 ST7 и 8-битных микроконтроллеров это линейка от STMicroelectronics . Они обычно используются в небольших встроенных приложениях, таких как стиральные машины .

Хотя они используют схожие периферийные устройства и продаются как часть одной и той же линейки продуктов, [1] [2] две архитектуры на самом деле совершенно разные.

Оба имеют 8-битный аккумулятор, используемый для большинства операций, а также два 8-битных индексных регистра (X и Y), используемые для адресации памяти. Кроме того, оба имеют 8-битные инструкции, за которыми следуют до 2 байтов операндов, и оба поддерживают манипуляции и ветвления в отдельных битах памяти.

На этом сходство заканчивается.

ST6 представляет собой гарвардскую архитектуру с 8-битным (256 байт) адресным пространством данных и отдельным 12-битным (4096 байт) программным пространством. Операнды всегда имеют длину 1 байт, а некоторые инструкции поддерживают два операнда, например «переместить 8-битный немедленный адрес памяти в 8-битный». Вызовы подпрограмм выполняются с использованием отдельного аппаратного стека. Регистры данных (но не программный счетчик или флаги) отображаются в памяти.

ST6 Режимы адресации ограничены немедленным 8-битным абсолютным адресом памяти и косвенными режимами регистрации (X) и (Y).

ST7 представляет собой архитектуру фон Неймана с одним 16-битным (64 КБ) адресным пространством. Первые 256 байт ОЗУ ( нулевая страница ) обладают дополнительной гибкостью. Инструкций с двумя операндами нет, за исключением «тестового бита и перехода». Его регистры не отображаются в памяти, и для вызовов подпрограмм он использует ОЗУ общего назначения (плюс регистр указателя стека ).

ST7 поддерживает широкий спектр режимов адресации, включая базовый+индексный и двойной косвенный.

Три члена семейства микроконтроллеров ST6: ST62E01, ST62E20, ST62E25.

Архитектура ST6

[ редактировать ]

ST6 имеет 64 байта ОЗУ и 4096 байт ПЗУ программ . Доступ к более крупным суммам осуществляется путем переключения банков в младшей части 2K ПЗУ.

Адресное пространство ОЗУ на самом деле составляет 256 байт, разделенных следующим образом:

  • 0–63: не реализовано.
  • 64–127: Окно с переключением банков в ПЗУ программ и СППЗУ данных .
  • 128–191: ОЗУ общего назначения.
  • 192–255: регистры управления периферией (порты GPIO, таймеры и т. д.). Аккумулятор отображается по адресу 255, но чаще всего к нему обращаются неявно.

В адресное пространство не отображается 12-битный программный счетчик и связанный с ним аппаратный стек (глубиной четыре или шесть уровней, в зависимости от модели). Есть только два бита состояния ( перенос и ноль ), и они группируются в зависимости от режима процессора с отдельными битами состояния для нормальной работы, прерывания и немаскируемого прерывания .

Первые четыре ячейки ОЗУ общего назначения также известны как регистры X, Y, V и W, и некоторые инструкции могут получить к ним доступ, используя специальные режимы короткой адресации. Регистры X и Y служат индексными регистрами и могут использовать режимы косвенной адресации. (X) и (Y).

Набор инструкций состоит из одного байта кода операции, за которым следуют до двух однобайтовых операндов. Набор инструкций можно резюмировать следующим образом:

Набор инструкций семейства ST6 [3]
7 6 5 4 3 2 1 0 б2 б3 Мнемоника С С Описание
компенсировать опк 0 Условные переходы (5-битные относительно ПК)
компенсировать 0 0 0 JRNZ Адрес Перейти на ПК + SIMM5, если Z == 0
компенсировать 1 0 0 JRZ адрес Перейти на ПК + simm5, если Z == 1
компенсировать 0 1 0 JRNC Адрес Перейти на ПК + simm5, если C == 0
компенсировать 1 1 0 JRC Адрес Перейти на ПК + simm5, если C == 1
imm4 с 0 0 1 imm8 Безусловные переходы (12-битный абсолютный)
imm4 0 0 0 1 imm8 ЗВОНИТЕ imm12 Нажмите ПК, перейдите на 12-битный адрес.
imm4 1 0 0 1 imm8 JP imm12 Перейти на 12-битный адрес
0 0 1 0 1 (сдержанный)
рег с 1 с 1 0 1 Регистрация операций (по X, Y, V или W)
рег 0 1 0 1 0 1 INC регистрация С Регистр приращения. Z установлен, C нет.
рег 1 1 0 1 0 1 ЛД А, рег. С А := {X, Y, V или W}
рег 0 1 1 1 0 1 DEC рег С Регистр декремента. Z установлен, C нет.
рег 1 1 1 1 0 1 ЛД рег С {X, Y, V или W} := A
код операции 0 1 1 0 1 Разные операции
0 0 0 0 1 1 0 1 адрес imm8 LDI-адрес, imm8 Установите ОЗУ на 8-битное немедленное значение
1 0 0 0 1 1 0 1 (сдержанный)
0 1 0 0 1 1 0 1 РЕДКО Возврат из прерывания. Всплываем комп, восстанавливаем флаги.
1 1 0 0 1 1 0 1 ВЕРНО Возврат из подпрограммы. Извлеките компьютер из аппаратного стека.
0 0 1 0 1 1 0 1 С С С Дополнение: C := msbit(A); А := ~А
1 0 1 0 1 1 0 1 РЛЦ А С А := А + А + С
0 1 1 0 1 1 0 1 ОСТАНАВЛИВАТЬСЯ Остановить процессор, тактовую частоту и большинство периферийных устройств до следующего прерывания.
1 1 1 0 1 1 0 1 ЖДАТЬ Остановить процессор до следующего прерывания; часы продолжаются
кусочек опк 0 1 1 адрес ? Битовые операции (только абсолютный адрес)
кусочек 0 0 0 1 1 источник имя8 JRR Бит , источник , адрес С C := источник.бит; перейти на ПК+simm8 при сбросе (очистить)
кусочек 1 0 0 1 1 источник имя8 JRS Бит , источник , адрес С C := источник.бит; перейти на ПК+simm8, если установлено
кусочек 0 1 0 1 1 летнее время RES бит , dst Сбросить (установить в 0) dst.bit
кусочек 1 1 0 1 1 летнее время SET Бит , dst Установить (в 1) dst.bit
код операции данные 1 1 1 ? Операции АЛУ с ОЗУ или непосредственные
код операции 0 0 1 1 1 (Х) Операнд: (X)
код операции 0 1 1 1 1 (И) Операнд: (Y)
код операции 1 0 1 1 1 imm8 imm8 Операнд является 8-битным непосредственным ( только исходный код ).
код операции 1 1 1 1 1 адрес адрес Операнд — это 8-битный адрес ОЗУ.
0 0 0 источник 1 1 1 ? ЛД А, источник С А := источник
1 0 0 летнее время 1 1 1 ? ЛД дст С dst := A ( немедленно запрещено )
0 1 0 источник 1 1 1 ? ДОБАВИТЬ А, источник С С А := А + источник
1 1 0 источник 1 1 1 ? СУБ А, источник С С А := А - источник
0 0 1 источник 1 1 1 ? КП А, источник С С А — источник
1 0 1 источник 1 1 1 ? И А, источник С А := А & источник
0 1 1 летнее время 1 1 1 ? ВКЛ . С dst := dst + 1 ( немедленно запрещено )
1 1 1 летнее время 1 1 1 ? декабрь летнее время С dst := dst − 1 ( немедленно запрещено )

†: ^ а б Как ни странно, разные модели семейства ST6 используют разные соглашения о значении бита переноса после вычитания. Процессоры ST60 используют соглашение «перенос», которое очищает бит, если при вычитании происходит меньшее значение, тогда как процессоры ST62 и ST63 используют соглашение «заимствование», которое в этом случае устанавливает бит. [3] : 21–22,42 

Архитектура ST7

[ редактировать ]

ST7 имеет шесть регистров: аккумулятор, индексные регистры X и Y, указатель стека, программный счетчик и регистр кода состояния. Кроме того, двойная косвенная адресация позволяет нулевой странице ОЗУ служить дополнительными регистрами. Необычная, но полезная особенность заключается в том, что прерывание помещает в стек четыре таких регистра (A и X, а также обычные PC и CC), а возврат по прерыванию их восстанавливает.

Инструкции ALU делятся на две категории: с двумя операндами и с одним операндом.

Инструкции с двумя операндами используют аккумулятор в качестве первого источника. Режим адресации определяет второй источник, которым может быть:

  • 8-битный немедленный
  • 8-битный абсолютный адрес
  • 16-битный абсолютный адрес
  • Индексировано (X)
  • Индексированный плюс 8-битное смещение (адрес8,X)
  • Индексированный плюс 16-битное смещение (адрес16,X)

Назначением обычно является аккумулятор, но некоторые инструкции изменяют второй источник. (Непосредственные операнды в таких случаях запрещены.)

Инструкции с одним операндом используют указанный операнд как для источника, так и для назначения. Операнд может быть:

  • Аккумулятор А
  • Регистр X
  • 8-битный абсолютный адрес
  • Индексировано (X)
  • Индексированный плюс 8-битное смещение (адрес8,X)

Регистр плюс смещение вычисляет сумму полной ширины, поэтому 8-битная форма может адресовать память до 255+255 = 510.

В дополнение к вышесказанному, есть три префиксных байта, которые могут быть добавлены к любой инструкции, для которой они имеют смысл:

  • PDY (0x90) изменяет все ссылки на регистр X на Y. Это позволяет использовать режимы адресации (Y), (адрес8,Y) и (адрес16,Y). Это также влияет на неявные операнды, поэтому инструкция «загрузить X» становится «загрузить Y». Следствием этого является то, что нагрузка X может использовать только режимы адресации относительно X, а нагрузка Y может использовать только режимы адресации относительно Y.
  • PIX (0x92) добавляет к инструкции шаг косвенного обращения. 8- или 16-битный адрес, следующий за байтом кода операции, заменяется 8-битным адресом ячейки памяти, которая содержит 8- или 16-битный адрес (последний в обратном порядке). Затем это может быть проиндексировано регистром X, как обычно. Это позволяет использовать режимы адресации (адрес8), (адрес16), ([адрес8],X) и ([адрес8.w],X).
  • PIY (0x91) сочетает в себе вышеуказанные эффекты. Это позволяет использовать режимы адресации ([address8],Y) и ([address8.w],Y). (Его также можно использовать с другими режимами как часть инструкций «загрузить Y» и «сохранить Y».)
Набор инструкций семейства ST7 [4]
7 6 5 4 3 2 1 0 б2 б3 Мнемоника Описание
0 0 0 с кусочек v адрес ? Битовые операции
0 0 0 0 кусочек 0 адрес8 soff8 BTJT addr8 , # бит , метка Перейти к ПК + soff8, если исходный бит истинен (установлен)
0 0 0 0 кусочек 1 адрес8 soff8 BTJF адрес8 , # бит , метка Перейти к ПК + soff8, если исходный бит ложный (сброс)
0 0 0 1 кусочек 0 адрес8 BSET адрес8 , # бит Установить указанный бит на 1
0 0 0 1 кусочек 1 адрес8 BRES адрес8 , # бит Сбросить (очистить) указанный бит в 0
0 0 1 0 состояние soff8 Условные переходы (8-битное относительное смещение)
0 0 1 0 0 0 0 0 soff8 JRA Этикетки Ветка всегда (истина)
0 0 1 0 0 0 0 1 soff8 JRF Этикетка Ветка никогда (ложь)
0 0 1 0 0 0 1 0 soff8 JRUGT Этикетка Переход, если беззнаковое число больше (C=0 и Z=0)
0 0 1 0 0 0 1 1 soff8 JRULE Ярлык Переход, если беззнаковое число меньше или равно (C=1 или Z=1)
0 0 1 0 0 1 0 0 soff8 JRNC Этикетка Переходить, если нет переноса (C=0)
0 0 1 0 0 1 0 1 soff8 JRC Этикетка Ответвление при переносе (C=1)
0 0 1 0 0 1 1 0 soff8 JRNE Этикетка Разветвление, если не равно (Z=0)
0 0 1 0 0 1 1 1 soff8 JREQ Метка Разветвление при равенстве (Z=1)
0 0 1 0 1 0 0 0 soff8 JRNH Этикетка Переход, если не полуперенос (H=0)
0 0 1 0 1 0 0 1 soff8 JRH Этикетка Переход в случае полупереноса (H=1)
0 0 1 0 1 0 1 0 soff8 JRPL Лейбл Переход, если плюс (N=0)
0 0 1 0 1 0 1 1 soff8 JRMI Этикетка Переходить, если минус (N=1)
0 0 1 0 1 1 0 0 soff8 JRNM Этикетка Переход по маске прерывания (M=0)
0 0 1 0 1 1 0 1 soff8 JRM Этикетки Переход, если прерывания замаскированы (M=1)
0 0 1 0 1 1 1 0 soff8 JRIL Этикетка Переход, если линия прерывания имеет низкий уровень
0 0 1 0 1 1 1 1 soff8 JRIH Этикетка Переход, если линия прерывания имеет высокий уровень
0 режим код операции ? Инструкции с одним операндом
0 0 1 1 код операции адрес8 ОП адрес8 8-битный абсолютный адрес
0 1 0 0 код операции ОП А аккумулятор
0 1 0 1 код операции ОП Х Регистр X (регистр Y с префиксом)
0 1 1 0 код операции адрес8 ОП (адрес8,X) 8-битный адрес плюс X
0 1 1 1 код операции ОП (Х) Индексировано без смещения
0 режим 0 0 0 0 ? ОБРАТНЫЙ операнд Отрицание с дополнением до двух
0 режим 0 0 0 1 ? (сдержанный)
0 режим 0 0 1 0 ? (сдержанный)
0 1 0 0 0 0 1 0 МУЛ Х,А X:A := X × A. (MUL Y,A с префиксом)
0 режим 0 0 1 1 ? CPL- операнд Дополнение единиц, логическое нет
0 режим 0 1 0 0 ? SRL операнд Сдвиг вправо логично. Msbit очищен, lsbit нужно перенести.
0 режим 0 1 0 1 ? (сдержанный)
0 режим 0 1 1 0 ? RRC Операнд Поворот вправо через перенос, (операнд:C) := (C:operand)
0 режим 0 1 1 1 ? SRA Операнд Сдвиг вправо арифметики. Мсбит сохранился, лебит носить с собой.
0 режим 1 0 0 0 ? SLL- операнд Сдвиг влево. Мсбит носить с собой.
0 режим 1 0 0 1 ? RLC- операнд Поворот влево через перенос.
0 режим 1 0 1 0 ? декабря операнд Декремент. (установлены N и Z, перенос не влияет)
0 режим 1 0 1 1 ? (сдержанный)
0 режим 1 1 0 0 ? ВКЛ. операнд Приращение. (установлены N и Z, перенос не влияет)
0 режим 1 1 0 1 ? ТНЗ операнд Тест ненулевой. Установите N и Z на основе операнда.
0 режим 1 1 1 0 ? замены Операнд Поменять местами половины операнда (4-битное вращение).
0 режим 1 1 1 1 ? CLR операнд Установите операнд на 0. N и Z установлены на фиксированные значения. операнд.
1 0 0 код операции Разные инструкции. Ни один неявно не устанавливает коды условий.
1 0 0 0 0 0 0 0 Он пойдет Возврат из прерывания (pop CC, A, X, PC)
1 0 0 0 0 0 0 1 ВЕРНО Возврат из подпрограммы (поп-ПК)
1 0 0 0 0 0 1 0 ЛОВУШКА Принудительное прерывание ловушки
1 0 0 0 0 0 1 1 (сдержанный)
1 0 0 0 0 1 0 0 ПОП А Вытащить A из стека
1 0 0 0 0 1 0 1 ПОП Х Вытащить X из стека
1 0 0 0 0 1 1 0 ПОП СС Извлечь коды условий из стека
1 0 0 0 0 1 1 1 (сдержанный)
1 0 0 0 1 0 0 0 НАЖМИТЕ А Поместите A в стек
1 0 0 0 1 0 0 1 НАЖМИТЕ Х Поместите X в стек
1 0 0 0 1 0 1 0 НАЖМИТЕ СС Поместить коды условий в стек
1 0 0 0 1 0 1 1 (сдержанный)
1 0 0 0 1 1 0 (сдержанный)
1 0 0 0 1 1 1 0 ОСТАНОВКА Остановить процессор и часы
1 0 0 0 1 1 1 1 ВФИ Дождитесь прерывания, останавливая процессор, но не часы.
1 0 0 1 0 0 0 0 ПДИ Префикс инструкции; поменяйте местами X и Y в следующей инструкции
1 0 0 1 0 0 0 1 Толстый Префикс инструкции; ПДИ плюс ПИКС
1 0 0 1 0 0 1 0 ПИКС Префикс инструкции; использовать косвенную 8-битную память для операнда
1 0 0 1 0 0 1 1 ЛД X,Y X := Y. При использовании PDY выполняется «LD Y,X».
1 0 0 1 0 1 0 0 ЛД S,X S := X. Загрузить указатель стека.
1 0 0 1 0 1 0 1 ЛД С,А S := A. Загрузить указатель стека.
1 0 0 1 0 1 1 0 ЛД X,S Х := С.
1 0 0 1 0 1 1 1 ЛД Х,А Х := А.
1 0 0 1 1 0 0 0 РШФ Сбросить (очистить) флаг переноса
1 0 0 1 1 0 0 1 СКФ Установить флаг переноса
1 0 0 1 1 0 1 0 РИМ Сбросить маску прерываний (включить прерывания)
1 0 0 1 1 0 1 1 Сим Установить маску прерываний (отключить прерывания)
1 0 0 1 1 1 0 0 РСП Сбросить указатель стека (до верхней части ОЗУ)
1 0 0 1 1 1 0 1 НЕТ Никакой операции. (=ЛД А,А)
1 0 0 1 1 1 1 0 ЛД А,С А := С
1 0 0 1 1 1 1 1 ЛД А,Х А := Х.
1 режим код операции ценить ? Инструкции с двумя операндами A := Оп операнд
1 0 1 0 код операции imm8 ОП # imm8 8-битный непосредственный операнд (запрещен как пункт назначения)
1 0 1 1 код операции адрес8 ОП адрес8 8-битный абсолютный адрес
1 1 0 0 код операции аддри адрес ОП адрес 16 16-битный абсолютный адрес
1 1 0 1 код операции аддри адрес ОП ( адрес16 , X) Индексировано с 16-битным смещением
1 1 1 0 код операции адрес8 ОП ( адрес8 , X) Индексировано с 8-битным смещением
1 1 1 1 код операции ОП (Х) Индексировано без смещения
1 режим 0 0 0 0 ценить ? СУБ А, операнд А := А - операнд
1 режим 0 0 0 1 ценить ? CP A, операнд Сравните A — операнд
1 режим 0 0 1 0 ценить ? SBC A, операнд Вычитание с заимствованием A := A − операнд − C
1 режим 0 0 1 1 ценить ? CP X, операнд Сравнить X — операнд
1 режим 0 1 0 0 ценить ? И А, операнд A := A & операнд, поразрядно и
1 режим 0 1 0 1 ценить ? BCP A, операнд Побитовый тест A и операнд
1 режим 0 1 1 0 ценить ? LD A, операнд Загрузить операнд A :=
1 0 1 0 0 1 1 1 imm8 (зарезервировано, =LD #imm8,A)
1 режим 0 1 1 1 ценить ? LD операнд ,A Сохранить операнд := A
1 режим 1 0 0 0 ценить ? Исключающее ИЛИ A, операнд A := A ^ операнд, исключающее-или
1 режим 1 0 0 1 ценить ? АЦП А, операнд A := A + операнд + C, добавить с переносом
1 режим 1 0 1 0 ценить ? ИЛИ А, операнд А := А | операнд, включающий или
1 режим 1 0 1 1 ценить ? ДОБАВИТЬ X, операнд А := А + операнд
1 0 1 0 1 1 0 0 imm8 х (зарезервировано, =JP #imm8)
1 режим 1 1 0 0 ценить ? JP операнд PC := операнд, безусловный переход
1 0 1 0 1 1 0 1 soff8 CALLR Метка НАЖМИТЕ ПК, ПК := ПК + операнд
1 режим 1 1 0 1 ценить ? ВЫЗОВ операнда Нажмите ПК, ПК := операнд
1 режим 1 1 1 0 ценить ? LD X, операнд Загрузить X := операнд
1 0 1 0 1 1 1 1 imm8 (зарезервировано, =LD #imm8,X)
1 режим 1 1 1 1 ценить ? LD операнд ,X Сохранить операнд := X
  1. ^ Техническое описание: ST62T00C/T01C от 1998 г.
  2. ^ «Каталог микроконтроллеров/микропроцессоров EDN, 2006 г., 8-битные микропроцессоры, отсортированные по архитектуре набора команд» (PDF) . п. 26. 100616 edn.com
  3. ^ Jump up to: а б «Руководство по программированию семейства ST6» (PDF) . Версия 2.0. СТМикроэлектроника . Октябрь 2004 года . Проверено 28 февраля 2017 г.
  4. ^ «Руководство по программированию семейства ST7» (PDF) . Редакция 2. STMicroelectronics . Ноябрь 2005 года . Проверено 28 февраля 2017 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c89c2c24d6aa02e447397df3611c5901__1700520780
URL1:https://arc.ask3.ru/arc/aa/c8/01/c89c2c24d6aa02e447397df3611c5901.html
Заголовок, (Title) документа по адресу, URL1:
ST6 and ST7 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)