КС400
![]() National Semiconductor COP420 в пластиковом корпусе DIP с 28 контактами. Код даты конца 1982 года. | |
Общая информация | |
---|---|
Запущен | 1977 год |
Общий производитель | |
Производительность | |
Макс. процессора Тактовая частота | до 250 кГц |
Ширина данных | 4 (ОЗУ), 8 (ПЗУ) |
Ширина адреса | 7 (ОЗУ), 11 (ПЗУ) |
Архитектура и классификация | |
Приложение | Встроенный |
Набор инструкций | КС400 |
Количество инструкций | 40 |
Физические характеристики | |
Упаковка |
|
История | |
Предшественник | MM5799 (PMOS КС) |
Преемник | КС8 |
COP400 в качестве продукта , или COP II — это семейство 4-битных микроконтроллеров, представленное в 1977 году компанией National Semiconductor последовавшего за их оригинальным микроконтроллером PMOS COP. [1] Члены семейства COP400 представляют собой полноценные микрокомпьютеры, содержащие внутреннюю синхронизацию, логику, ПЗУ, ОЗУ и устройства ввода-вывода, необходимые для реализации специализированных контроллеров. [2] Некоторые устройства COP400 были приобретены Western Digital как семейство WD4200. [3] [4] В Советском Союзе выпускалось несколько микроконтроллеров COP400 серии 1820 (например, COP402 с обозначением КР1820ВЕ1 ). [5]
COP400 реализован на основе КМОП или N-канальной технологии МОП с кремниевым затвором. Обычно он упаковывался в 24- или 28-контактный DIP- корпус. Время цикла инструкций более быстрых членов семейства составляет 4 микросекунды. Семейство COP400 предлагало несколько конфигураций памяти и распиновки.
Известные продукты, в которых использовались чипы семейства COP400, включают Apple Lisa , Milton Bradley и Mattel электронные игры , Coleco Head to Head Basketball, Grundy Newbrain и другие.
Память
[ редактировать ]COP400 использует отдельные области памяти для ПЗУ и ОЗУ . Адреса ПЗУ имеют максимальную длину 11 бит, а адреса данных — максимум 7 бит.

ПЗУ
[ редактировать ]Память программ состоит из 512, 1024 или 2048×8-битного ПЗУ. ПЗУ Байты могут быть программными инструкциями, программными данными или указателями адреса перехода. Из-за особых характеристик, связанных с инструкциями JP и JSRP, ПЗУ часто следует рассматривать как организованное в виде страниц по 64 байта каждая. Кроме того, из-за уникальных операций, выполняемых инструкциями LQID и JID, страницы ПЗУ иногда следует рассматривать как организованные в блоки по 256 байт.
БАРАН
[ редактировать ]Память данных состоит из 32, 64 или 128 × 4-битного ОЗУ, организованного в виде нескольких регистров данных по 16 4-битных цифр. Адресация ОЗУ реализуется с помощью 6- или 7-битного регистра B, используемого в качестве указателя. Старшие 2 или 3 бита (Br) регистра B выбирают один из 4 или 8 регистров данных, а нижние 4 бита (Bd) выбирают одну из 16 4-битных цифр в выбранном регистре данных. 4-битное содержимое разряда ОЗУ, на которое указывает регистр B, обычно загружается в регистр A, обменивается с ним или работает с ним.
Регистры ЦП
[ редактировать ]
|
Конфигурация регистров, показанная на схеме, предназначена для членов семейства COP400 с максимальным ПЗУ (2048×8 бит) и ОЗУ (128×4 бита). Члены семьи, имеющие всего 512 или 1024 байт ПЗУ, будут иметь только 9- или 10-битный ПК. Те, у кого 64 или 32 ячейки ОЗУ, будут иметь только 2-битный регистр Br. Некоторые члены семейства младших классов не включают регистр стека SC. [6]
4-битный регистр A (аккумулятор) является регистром источника и назначения для большинства арифметических, логических операций и операций доступа к памяти данных. Его также можно использовать для загрузки частей Br и Bd регистра B, для загрузки и ввода 4 битов 8-битных данных защелки Q, для ввода 4 битов 8-битного порта L и для выполнения обмена данными с Регистр СИО.
4-битное АЛУ выполняет арифметические и логические функции, сохраняя результаты в A. Операции ASC и CASC выводят перенос в 1-битный регистр C, который чаще всего используется для индикации арифметического переполнения.
Вся адресация ПЗУ осуществляется через 9-, 10- или 11-битный регистр ПК. Его двоичное значение выбирает один из байтов, содержащихся в ПЗУ, обычно следующую инструкцию программы. Значение PC автоматически увеличивается на 1 перед выполнением текущей инструкции, чтобы указать на следующую последовательную ячейку ПЗУ, если только текущая инструкция не является командой передачи управления. В последнем случае в ПК загружается соответствующее непоследовательное значение для реализации операции передачи управления. ПК автоматически переворачивается и указывает на следующую 64-байтовую страницу или 256-байтовый блок программной памяти. Старшие 1, 2 или 3 бита PC также используются в инструкциях JID и LQID.
Три уровня подпрограмм реализуются с помощью регистров сохранения подпрограмм SA, SB и SC, обеспечивая аппаратный стек подпрограмм «последним пришел — первым вышел» (LIFO). Некоторые реализации не имеют SC.
Регистры ввода-вывода и порты
[ редактировать ]С устройствами ввода-вывода COP400 не связаны номера портов или адреса памяти. На все физические регистры и порты ввода-вывода язык ассемблера COP400 ссылается непосредственно по имени.
Базовый уровень
[ редактировать ]Почти все устройства семейства COP400 реализуют следующее: [6]
- четыре входа общего назначения IN 0 - IN 3 Предусмотрено . 24-контактные корпуса не имеют IN 0 -IN 3 .
- Регистр D обеспечивает четыре выхода общего назначения и является регистром назначения для 4-битного содержимого Bd. Регистр D полезен для синхронизации до 16 внешних устройств, связанных с оперативной памятью, на которую указывает регистр B.
- Регистр G содержит 4 двунаправленных порта ввода-вывода общего назначения.
- Регистр Q — это внутренний 8-битный регистр с фиксацией, используемый для хранения данных, загружаемых в ОЗУ (B) и A или из них, а также 8-битных программных данных из ПЗУ. Его содержимое выводится на порты L, когда драйверы L включены под программным управлением. Кроме того, содержимое L может быть прочитано непосредственно в A и RAM(B).
- Регистр SIO функционирует как 4-битный сдвиговый регистр последовательного входа/выхода или как двоичный счетчик в зависимости от содержимого регистра EN. Его содержимым можно обмениваться с A, что позволяет ему вводить или выводить непрерывный поток последовательных данных.
- Регистр EN — это внутренний 4-битный регистр, загружаемый под программным управлением инструкцией LEI. Состояние каждого бита этого регистра выбирает или отменяет выбор конкретной функции, связанной с каждым битом регистра EN.
- 10-битный счетчик временной развертки, хотя и не доступен напрямую из программного обеспечения, делит частоту цикла команд на 1024, обеспечивая импульс при переполнении. Инструкция SKT проверяет появление этого импульса, позволяя программисту реализовать процедуры таймера. Некоторые члены семейства COP400 начального уровня не имеют ни этого счетчика временной развертки, ни инструкции SKT. Некоторые высокопроизводительные устройства COP400 могут читать и записывать восемь старших бит таймера.
Высокий конец
[ редактировать ]Есть несколько представителей семейства COP400 высокого класса, таких как COP440 и COP2440, которые имеют 40 контактов. Они имеют дополнительные регистры и порты: [7]
- Порт R — это дополнительный восьмибитный двунаправленный порт ввода-вывода, аналогичный порту Q. Порт R содержит защелки и драйверы. Данные, подлежащие выводу, фиксируются в регистре R. Входной путь — от контактов к аккумулятору и оперативной памяти. Входные данные на выводах R не фиксируются в регистре R каким-либо внешним сигналом. Это должно быть сделано программой косвенно. Драйверы R, как и драйверы L, можно перевести в состояние с высоким импедансом.
- Эти устройства имеют дополнительный двунаправленный четырехбитный порт — порт H. Порт H по сути является дубликатом порта G, за исключением того, что H не может быть протестирован напрямую.
- Регистр EN расширен до 8 бит. EN 4 -EN 5 выбор источников прерываний. EN 6 выбирает источник счетчика Т. EN 7 управляет выходными драйверами порта R. 8-битный EN записывается с помощью инструкции CAME и читается с помощью CEMA. Младшие 4 бита могут быть записаны с помощью LEI.
Набор инструкций
[ редактировать ]Семейство COP400 разработано с учетом очень компактного кода. Наиболее часто используемые инструкции имеют размер одного байта. В некоторых случаях существуют специальные однобайтовые формы двухбайтовых инструкций. Некоторые функции, которые можно использовать для того, чтобы сделать объектный код более компактным:
- Инструкция LBI загружает семибитный регистр B непосредственным значением. Инструкция общего вида занимает два байта. Существует однобайтовая форма LBI, которая может устанавливать Br только на 0, 1, 2 и 3 и может устанавливать Bd только на 9, 10, 11, 12, 13, 14, 15 и 0 (десятичные). Однобайтовый LBI может получить доступ только к 32 ячейкам ОЗУ.
- Несколько инструкций LBI могут быть объединены последовательно. Будет выполнен только первый LBI. Последующие инструкции LBI будут выполняться как NOP. Это позволяет использовать несколько точек входа с разными начальными адресами для общей процедуры.
- JSR в общей форме ветки подпрограммы занимает два байта и может напрямую обращаться к любой ячейке памяти. JSRP — это однобайтовая форма ветки подпрограммы, которая имеет доступ только к местам на третьей 64-байтовой странице. Эта страница называется страницей подпрограммы или страницей 2 и нумеруется с нуля. JSRP не может быть закодирован изнутри страницы 2 или 3.
- JMP в общей форме ветвления занимает два байта и может напрямую обращаться к любой ячейке памяти. JP — это однобайтовая форма ветвления, которая может получить доступ к любому месту на текущей 64-байтовой странице. Старшие биты ПК остаются неизменными. Если инструкция JP выполняется на странице 2 или 3, то она может получить доступ к любому из 128 адресов на страницах 2 и 3. Это полезно для создания однобайтовой точки входа JSRP на странице 2, которая затем может перейти к подпрограмме на странице. 3 с однобайтовым JP.
- Регистр B можно использовать для указания до четырех строк ОЗУ с небольшими издержками. Инструкции доступа к памяти LD, X, XIS и XDS могут выполнять исключающее ИЛИ два младших бита Br с двухбитовой немедленной операцией. Это позволяет перевернуть регистровую часть B (Br) на одну из других цифровых строк, которые имеют тот же цифровой адрес (Bd).
- Часть регистра Bd может использоваться как указатель памяти и счетчик циклов одновременно. Инструкция XIS пропустит, если Bd после приращения переполнится до нуля и выпадет из цикла. Аналогично, инструкция XDS пропустит, если Bd после уменьшения достигнет 15 (десятичного).
Набор инструкций семейства COP400 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Код операции | Операнд | Мнемоника | Описание | Пропускать | |||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | CLRA | А ← 0 | — |
0 | 0 | 0 | б 0 | 0 | 0 | б 1 | 1 | — | СКМБЗ б | — | ОЗУ(Б) б = 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | — | БЕСПЛАТНО | А ← А ⊻ ОЗУ(Б) |
— |
0 | 0 | р | 0 | 1 | 0 | 0 | — | XI р | А ↔ RAM(B), Br ← Br ⊻ г, Бд ← Бд + 1 |
Бд = 0 | |
0 | 0 | р | 0 | 1 | 0 | 1 | — | ЛД р | А ← RAM(B), Br ← Br ⊻ р |
— | |
0 | 0 | р | 0 | 1 | 1 | 0 | — | Х р | А ↔ RAM(B), Br ← Br ⊻ р |
— | |
0 | 0 | р | 0 | 1 | 1 | 1 | — | XDS р | А ↔ RAM(B), Br ← Br ⊻ г, Бд ← Бд - 1 |
Бд = 15 | |
0 | 0 | р | 1 | д | — | ЛБИ р,д | Br ← r, Bd ← (d + 9) ^ 15 (Br = 0–3, Bd = 9–15, 0) | следующий ЛБИ | |||
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | — | ШЛЕМ | A ← ~A + RAM(B) + C, C ← Перенос | нести |
0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | — | ХАБР | А ↔ Br, А 3 ← 0 | — |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | — | СКК | — | С = 1 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | — | СЛУЧАТЬСЯ | — | А = ОЗУ(Б) |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | — | СК | С ← 1 | — |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0рррдддд | ЛДД р,д | A ← RAM(r,d) | — |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1дддддд | ХАД р, д | А ↔ ОЗУ (г, д) | — |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | — | АСЦ | A ← A + RAM(B) + C, C ← Перенос | нести |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | — | ДОБАВЛЯТЬ | А ← А + ОЗУ(Б) |
— |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | — | ЖК | С ← 0 | — |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | код операции | префикс 33H | Инструкции с этим префиксом см. в таблице ниже. | — |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | — | КОМП | А ← ~А | — |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | — | СКТ | Пропустить переполнение таймера | таймер |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | — | 2 юаня | ОЗУ(Б) 2 ← 0 | — |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | — | 3 юаня | ОЗУ(Б) 3 ← 0 | — |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | — | НЕТ | Нет операции | — |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | — | 1 юань | ОЗУ(Б) 1 ← 0 | — |
0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | — | СМБ 2 | ОЗУ(Б) 2 ← 1 | — |
0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | — | СМБ 1 | ОЗУ(Б) 1 ← 1 | — |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | — | ВЕРНО | Поп ПК (ПК ← SA, SA ← SB, SB ← SC) | — |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | — | РЕТСК | Поп-ПК | всегда |
0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | — | АДТ | А ← А + 10 | — |
0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | — | СМБ 3 | ОЗУ(Б) 3 ← 1 | — |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | — | 0 юаней | ОЗУ(Б) 0 ← 0 | — |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | — | СМБ 0 | ОЗУ(Б) 0 ← 1 | — |
0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | — | ЦБА | А ← Бд | — |
0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | — | ЧАС | А ↔ СИО, СК ← С | — |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | — | ТАКСИ | Бд ← А | — |
0 | 1 | 0 | 1 | и | — | AISC | А ← А + y (1 ≤ y ≤ 15) | нести | |||
0 | 1 | 1 | 0 | 0 | Адди | аддло | СПМ а | ПК[10:8] ← адхи, ПК[7:0] ← адло | — | ||
0 | 1 | 1 | 0 | 1 | Адди | аддло | JSR а | Нажмите ПК, ПК[10:8] ← адхи, ПК[7:0] ← адло | — | ||
0 | 1 | 1 | 1 | и | — | ТЫ ЗНАЕШЬ | RAM(B) ← y, Bd ← Bd + 1 | — | |||
1 | 0 | адрес | — | JSRP а | Если PC[10:6] ≠ 00010: Нажмите PC, PC[10:6] ← 00010, PC[5:0] ← адрес. | — | |||||
1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | — | LQID | Q ← ROM(PC[10:8], A, RAM(B)), SC ← SB | — |
1 | 1 | адрес | — | JP а | Если PC[10:6] ≠ 00010: PC[5:0] ← адрес | — | |||||
1 | адрес | — | JP а | Если PC[10:7] = 0001: PC[6:0] ← адрес | — | ||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | — | СПОСОБ | ПК[7:0] ← ПЗУ(ПК[10:8], A, RAM(B)) | — |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Операнд | Мнемоника | Описание | Пропускать |
коды операций с префиксом 33H | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Код операции | Мнемоника | Описание | Пропускать | Непрофильная инструкция | ||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||||
0 | 0 | 0 | б 0 | 0 | 0 | б 1 | 1 | СКГБЗ б | — | г б = 0 | — | |
0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | ХАН | А[1:0] ↔ N, А[2:3] ← 0 | — | И | |
0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | CEMA | RAM(B) ← EN[7:4], A ← EN[3:0] | — | И | |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | КРЫШКА | ОЗУ(Б), А ← ПЗУ(ПК[10:8], А, ОЗУ(В)) | — | И | |
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | ПРИШЕЛ | EN[7:4] ← A, EN[3:0] ← RAM(B) | — | И | |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | СКГЗ | — | Г = 0 | — | |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | ЗАЛЕЗАЙ | А ← В | — | — | |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | ИНИЛ | A ← IL 3 , 1, 0, IL 0 или A ← IL 3 , CKO, 0, IL 0 | — | — | |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | В | А ← Г | — | — | |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | ИНГ | А ← Ч | — | И | |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | CQMA | RAM(B) ← Q[7:4], A ← Q[3:0] | — | — | |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | индийская рупия | RAM(B) ← R[7:4], A ← R[3:0] | — | И | |
0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | ИНЛ | RAM(B) ← L[7:4], A ← L[3:0] | — | — | |
0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | КТМА | RAM(B) ← T[7:4], A ← T[3:0] | — | И | |
0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | МОЙ БОГ | Г ← ОЗУ(Б) | — | — | |
0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | МОЙ БОГ | H ← ОЗУ(Б) | — | И | |
0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | CAMQ | Q[7:4] ← A, Q[3:0] ← RAM(B) | — | — | |
0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | КАМР | R[7:4] ← A, R[3:0] ← RAM(B) | — | И | |
0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | ОБД | Д ← Бд | — | — | |
0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | КАМТ | Т[7:4] ← A, Т[3:0] ← RAM(B) | — | И | |
0 | 1 | 0 | 1 | и | OGI y | Г ← у | — | — | ||||
0 | 1 | 1 | 0 | и | LEI и | В ← и | — | — | ||||
1 | р | д | ЛБИ р,д | Бр ← г, Бд ← д | следующий ЛБИ | — | ||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Мнемоника | Описание | Пропускать | Неосновной |
Пример кода
[ редактировать ]Этот пример кода демонстрирует некоторые функции экономии места в наборе команд:
- однобайтовые инструкции LBI
- несколько инструкций LBI последовательно, создавая несколько точек входа
- LD выполняет XOR Br, поэтому B переворачивается в пункт назначения, а XIS переворачивает B обратно в исходный
- Обязанности указателя совместного использования Bd и счетчика циклов с помощью функции пропуска в XIS
- однобайтовый переход, JP
040 09
041 19
042 2F
043 15
044 14
045 C3
046 48
|
; Copy a block of memory from one location to another.
;
; There are three entry points: copyA, copyB, and copyC.
; The values of the LBI instructions are expressed as
; LBI Br, Bd.
;
copyA: LBI 0,10 ;Copy 6 nybbles starting 0,10 to 1,10
copyB: LBI 1,10 ;Copy 6 nybbles starting 1,10 to 0,10
copyC: LBI 2,0 ;Copy 16 nybbles starting 2,0 to 3,0
loop: LD 1 ;Load src in A. XOR Br with 1 to get dest
XIS 1 ;Save A in dest. Inc Bd. XOR Br with 1 to get src
JP loop ;loop until Bd goes past last digit location
RET
|
Прерывать
[ редактировать ]Ранние устройства COP400, имеющие 28 или более контактов, поддерживали одно прерывание . Линия IN 1 используется в качестве входа прерывания. Прерывание включается установкой бита 1 регистра EN в 1 с помощью инструкции LEI. В ответ на низкий импульс длительностью не менее двух командных циклов на IN 1 вся передача команд управления, таких как JP, завершается и все последовательные инструкции LBI выполняются. Затем компьютер помещается в стек подпрограмм, и управление передается обработчику прерываний по адресу 0xFF. На устройствах с аппаратным стеком в программе обслуживания прерываний нельзя вызывать никакие подпрограммы. [6] Любопытно, что более поздние устройства, такие как COP440, поддерживают четыре источника прерываний и две сервисные процедуры, но одновременно можно выбрать только один источник прерываний. Подпрограммы поддерживаются внутри процедур обслуживания прерываний на устройствах с указателем стека.
Архитектурные расширения
[ редактировать ]Хотя большинство устройств COP400 были предназначены для приложений начального уровня, было создано несколько расширений архитектуры для решения более требовательных приложений. К 1985 году к некоторым устройствам были добавлены двойной процессор, более глубокий стек оперативной памяти и большее адресное пространство. [7]
Двойной процессор
[ редактировать ]Версии COP400 с двумя процессорами были анонсированы компанией National Semiconductor в 1981 году. Эти однокристальные процессоры содержат два якобы независимых процессора, которые совместно используют инструкции, память и большинство устройств ввода-вывода. В действительности процессоры не являются полностью независимыми и совместно используют аппаратные ресурсы, подобно процессорам Intel с технологией Hyper-Threading (HTT). Как и HTT, версия с двумя процессорами работает путем дублирования определенных разделов процессора — тех, которые хранят состояние архитектуры , — но не дублирует основные исполнительные ресурсы, такие как ALU , шины и память. Отдельные архитектурные состояния для каждого из двух виртуальных процессоров устанавливаются с дублированием A (аккумуляторы), B (регистры указателей), C (флаги переноса), N (указатели стека) и PC (программные счетчики). [6]
Когда сброс отменен, оба процессора начинают работу с ячейки 0, которая содержит инструкцию CLRA, затем один процессор переходит в ячейку 401 (шестнадцатеричный), а затем, через цикл команд, второй процессор выполняет ячейку 1. Затем процессоры поочередно выполняют один байт кодируйте каждый.
При максимальной тактовой частоте время выполнения инструкции (однобайтовая инструкция) для каждого процессора составляет 4 микросекунды, следовательно, время цикла инструкции для любого процессора вдвое больше, 8 микросекунд.
Некоторые версии с двумя процессорами включают 40-контактный COP2440N, 28-контактный COP2441N и 24-контактный COP2442N.
Возврат стека в ОЗУ
[ редактировать ]
|
Более ранние устройства COP400 включали в себя двух- или трехуровневый специальный аппаратный стек возврата. Более поздние устройства, такие как COP440, имеют 4-уровневый стек возврата, реализованный с 2-битным указателем стека и оперативной памятью. Версии с двумя процессорами имеют два отдельных 4-уровневых стека возврата, реализованных с двумя 2-битными указателями стека и двумя разными областями ОЗУ.
Больше адресного пространства
[ редактировать ]Базовый набор команд COP400 поддерживает адреса ПЗУ длиной до 11 бит (2048 байт), а адреса данных имеют максимальную длину 7 бит (128 ячеек). Так называемые устройства группы 4 расширили лимит памяти, добавив трехбайтовые инструкции JMP, JSR и LBI с большим количеством адресных битов. Они поддерживают адреса ПЗУ длиной максимум 15 бит (32 768 байт), а адреса данных — максимум 9 бит (512 ячеек). Устройства, поддерживающие эти инструкции, включают COP408, COP484, COP485, C0P409. Неясно, производились ли какие-либо из этих устройств группы 4.
Приложения
[ редактировать ]- Apple Lisa использовала COP421 для управления клавиатурой, мышью, часами реального времени и программным выключателем питания. Второй COP421 управляет двигателем шпинделя жесткого диска Widget. [8]
- Несколько производителей использовали COP400 в своих первых электронных играх: [9]
- COP410 и COP411, ПЗУ 512 байт, ОЗУ 32 x 4: разъемы Mattel Funtronics, Red Light Green Light, Tag и Plus One.
- COP420 и COP421, ПЗУ 1024 байт, ОЗУ 64 x 4: Milton Bradley Lightfight и Electronic Battleship, 1982 год. Castle Toy Company Einstein. Колеко Личные встречи Баскетбол. Детский гонщик Национальной полупроводниковой викторины. LJN Toys Ltd Я облизал курицу.
- COP444, ПЗУ 2048 байт, ОЗУ 128 x 4: Entex Space Invader. Mattel Dalla$, Texas Instruments Мой маленький компьютер. [10]
- Western Digital использовала WD4200 (COP420) в качестве основы для своих часов времени суток WD2412. [11]
- Компьютер Grundy Newbrain использует COP420 для управления клавиатурой, ленточным вводом-выводом и встроенным 16-символьным буквенно-цифровым дисплеем VF . [12]
Интеллектуальная собственность
[ редактировать ]T400 μController — это с открытым исходным кодом, реализация микроконтроллера COP400 написанная на VHDL . Поддерживаются устройства COP420/421 и COP410L/411L. T400 призван заменить оригинальный чип в SOC, воссоздающих устаревшие системы. T400 был реализован в нескольких семействах FPGA . T400 доступен по лицензии GNU General Public License . [13]
Эмулятор
[ редактировать ]Существует MAME эмулятор с открытым исходным кодом для семейства COP400, а также несколько портативных игр и специальных калькуляторов. [14] [15]
См. также
[ редактировать ]- Национальный полупроводник COP8
Ссылки
[ редактировать ]- ^ «National Semiconductor: КС перед КС» . Музей CPUSHACK . 27 сентября 2014 года . Проверено 23 декабря 2021 г.
- ^ «Руководство пользователя семейства микроконтроллеров семейства COP400 COPS» . Национальный полупроводник . Проверено 3 августа 2023 г.
- ^ «Вестерн Диджитал и КС» . Музей CPUSHACK . 2 октября 2015 г. Проверено 22 декабря 2021 г.
- ^ «Однокристальные N-канальные микроконтроллеры WD4200/WD4210» . Проверено 23 декабря 2021 г.
- ^ «Советские микропроцессоры, микроконтроллеры, микросхемы ФПУ и их западные аналоги» . www.cpu-world.com . Проверено 15 ноября 2022 г.
- ^ Jump up to: а б с д «Справочник по микроконтроллерам COPS» . Национальный полупроводник . Проверено 19 января 2022 г.
- ^ Jump up to: а б «Руководство по программированию COPS (1985 г.)» (PDF) . Цифровой архив винтажных технологий . Национальный полупроводник . Проверено 23 декабря 2021 г.
- ^ «Яблоко Лиза 341-0064А (COP421)» . Визуал6502 . Проверено 24 декабря 2021 г.
- ^ «Национальный полупроводник COP400» . Шон Риддл . Проверено 24 декабря 2021 г.
- ^ Вернер, Йорг. «Техасские инструменты, мой маленький компьютер» . Музей датаматических калькуляторов . Проверено 19 июня 2024 г.
- ^ «Каталог компонентов 1983 года» (PDF) . Вестерн Диджитал. п. 621 . Проверено 24 декабря 2021 г.
- ^ «4-битный процессор COP420 — Newbrain» . Проверено 30 декабря 2021 г.
- ^ «T400 μController — реализация 4-битного микроконтроллера COP400 компании National» . Все о схемах . Проверено 21 июня 2024 г.
- ^ «Репозиторий libmame COP400» . Гитхаб . Проверено 23 апреля 2022 г.
- ^ «Funjacks (пример эмулируемой игры)» . База данных аркад . Проверено 23 апреля 2022 г.