Intel MCS-51 (обычно называемый 8051 ) — это серия однокристальных микроконтроллеров (MCU), разработанная Intel в 1980 году для использования во встраиваемых системах . Архитектором набора инструкций Intel MCS-51 был Джон Х. Уортон . [1] [2] Оригинальные версии Intel были популярны в 1980-х и начале 1990-х годов, а усовершенствованные двоично-совместимые производные остаются популярными и сегодня. Это сложный компьютер с набором инструкций и отдельными пространствами памяти для программных инструкций и данных.
Оригинальное семейство Intel MCS-51 было разработано с использованием технологии металл-оксид-полупроводник N-типа ( NMOS ), как и его предшественник Intel MCS-48 , но более поздние версии, обозначенные буквой C в их названии (например, 80C51), используют технологию комплементарного металл-оксид-полупроводник ( CMOS ) и потребляют меньше энергии, чем их предшественники NMOS. Это сделало их более подходящими для устройств с батарейным питанием.
Семейство было продолжено в 1996 году с улучшенным 8-битным MCS-151 и 8/ 16-битным / 32-битным семейством двоично-совместимых микроконтроллеров MCS-251. [3] Хотя Intel больше не производит семейства MCS-51, MCS-151 и MCS-251, улучшенные двоично-совместимые производные, производимые многочисленными поставщиками, остаются популярными и сегодня. Некоторые производные интегрируют цифровой сигнальный процессор (DSP) или блок с плавающей точкой (сопроцессор, FPU). Помимо этих физических устройств, несколько компаний также предлагают производные MCS-51 в качестве IP-ядер для использования в программируемых пользователем вентильных матрицах (FPGA) или специализированных интегральных схемах (ASIC).
Архитектура 8051 обеспечивает множество функций ( центральный процессор (ЦП), оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), порты ввода-вывода (I/O), последовательный порт, управление прерываниями , таймеры ) в одном корпусе :
Одной из особенностей ядра 8051 является включение механизма обработки булевых операций, который позволяет выполнять операции булевой логики на уровне бит напрямую и эффективно на выбранных внутренних регистрах , портах и выбранных ячейках ОЗУ . Другой особенностью является включение четырех банков выбираемых рабочих наборов регистров, что значительно сокращает время, необходимое для выполнения переключений контекста для входа и выхода из процедур обслуживания прерываний . С помощью одной инструкции 8051 может переключать банки регистров, избегая трудоемкой задачи переноса критических регистров в ОЗУ.
После настройки UART и таймера, если необходимо, программисту нужно только написать простую процедуру прерывания для повторного заполнения регистра сдвига отправки всякий раз, когда последний бит сдвигается UART и/или опустошить полный регистр сдвига приема (скопировать данные куда-то еще). Затем основная программа выполняет последовательное чтение и запись, просто считывая и записывая 8-битные данные в стеки.
По состоянию на 2013 год [обновлять]многие крупные производители микросхем все еще разрабатывают новые производные, а основные поставщики компиляторов, такие как IAR Systems , Keil и Altium Tasking [6], постоянно выпускают обновления.
Микроконтроллеры на базе MCS-51 обычно включают в себя один или два UART , два или три таймера, 128 или 256 байт внутренней памяти данных RAM (16 байт из которых имеют битовую адресацию), до 128 байт ввода-вывода , от 512 байт до 64 КБ внутренней памяти программ и иногда некоторое количество расширенной памяти данных RAM (ERAM), расположенной во внешнем пространстве данных. Внешняя RAM и ROM совместно используют шины данных и адреса. Оригинальное ядро 8051 работало на 12 тактовых циклах за машинный цикл, при этом большинство инструкций выполнялось за один или два машинных цикла. Таким образом, с тактовой частотой 12 МГц 8051 мог выполнять 1 миллион однотактных инструкций в секунду или 500 000 двухтактных инструкций в секунду. В настоящее время широко используются усовершенствованные ядра 8051, которые работают на шести, четырех, двух или даже одном такте за машинный цикл (обозначается как «1T») и имеют тактовые частоты до 100 МГц, и, таким образом, способны выполнять еще большее количество инструкций в секунду. Все устройства Silicon Labs , некоторые Dallas (теперь часть Maxim Integrated ) и несколько устройств Atmel (теперь часть Microchip ) имеют однотактные ядра . [7] [8] [9]
Варианты 8051 могут включать встроенные таймеры сброса с обнаружением сбоя питания, встроенные генераторы, самопрограммируемую флэш- память программ ПЗУ, встроенную внешнюю ОЗУ, дополнительное внутреннее хранилище программ, код загрузчика в ПЗУ, энергонезависимое хранилище данных EEPROM , интерфейсы хоста I 2 C , SPI и USB , шину CAN или LIN , радиомодули ZigBee или Bluetooth , генераторы ШИМ , аналоговые компараторы , аналого-цифровые и цифро-аналоговые преобразователи , часы реального времени, дополнительные счетчики и таймеры , средства внутрисхемной отладки , больше источников прерываний, дополнительные режимы энергосбережения, больше/меньше параллельных портов и т. д. Intel выпустила версию с программированием по маске, 8052AH-BASIC, с интерпретатором BASIC в ПЗУ, способную запускать пользовательские программы, загруженные в ОЗУ.
Микроконтроллеры на базе MCS-51 были адаптированы к экстремальным условиям. Примерами высокотемпературных вариантов являются семейство Tekmos TK8H51 для температур от −40 °C до +250 °C [10] или Honeywell HT83C51 для температур от −55 °C до +225 °C (с эксплуатацией до 1 года при +300 °C). [11] Доступны радиационно-стойкие микроконтроллеры MCS-51 для использования в космических аппаратах; например, от Cobham (ранее Aeroflex ) как UT69RH051 [12] или от НИИЭТ как 1830ВЕ32 ( русский : 1830ВЕ32 ). [13]
В некоторых инженерных школах микроконтроллер 8051 используется на вводных курсах по микроконтроллерам. [14] [15] [16] [17]
Первый микроконтроллер Intel MCS-51 был 8051 с 4 КБ ПЗУ и 128 байт ОЗУ. Варианты, начинающиеся с 87, имеют программируемую пользователем EPROM, иногда стираемую УФ-излучением. Варианты с C в качестве третьего символа представляют собой своего рода КМОП . 8031 и 8032 — это версии без ПЗУ с 128 и 256 байт ОЗУ. Последняя цифра может указывать на размер памяти, например, 8052 с 8 КБ ПЗУ, 87C54 с 16 КБ EPROM и 87C58 с 32 КБ EPROM, все с 256 байт ОЗУ.
MCS-51 имеет четыре различных типа памяти: внутренняя RAM, регистры специальных функций, программная память и внешняя память данных. Для эффективного доступа к ним некоторые компиляторы [18] используют до 7 типов определений памяти: внутренняя RAM, однобитный доступ к внутренней RAM, регистры специальных функций, однобитный доступ к выбранным (кратным 8) регистрам специальных функций, программная RAM, внешняя RAM, доступ к которой осуществляется с использованием косвенного доступа к регистру, с использованием одного из стандартных 8-битных регистров и косвенный доступ к внешней RAM с использованием 16-битного косвенного регистра доступа.
Набор инструкций 8051 разработан как архитектура Гарварда с раздельной памятью (данные и инструкции); он может выполнять только код, извлеченный из памяти программ, и не имеет инструкций для записи в память программ. Однако шина, выходящая из ИС, имеет один адрес и путь данных и сильно напоминает шину архитектуры фон Неймана .
Большинство систем 8051 соблюдают набор инструкций и требуют специальных функций для загрузки новых исполняемых программ, например, во флэш-память.
Внутренняя RAM (IRAM) имеет 8-битное адресное пространство, использующее адреса от 0 до 0xFF. IRAM от 0x00 до 0x7F содержит 128 напрямую адресуемых 1-байтовых регистров, к которым можно получить доступ с помощью 8-битного абсолютного адреса, который является частью инструкции. В качестве альтернативы к IRAM можно получить доступ косвенно: адрес загружается в R0 или R1, а доступ к памяти осуществляется с помощью синтаксиса @R0 или @R1, или как к стековой памяти через указатель стека SP с операциями PUSH и POP; и операциями *CALL и RET.
Оригинальный 8051 имеет только 128 байт IRAM. 8052 добавил IRAM от 0x80 до 0xFF, к которому можно получить доступ только косвенно (например, для использования в качестве стекового пространства). Большинство клонов 8051 также имеют полные 256 байт IRAM.
Вместо этого прямой доступ к адресам IRAM 0x80–0xFF отображается в регистрах специальных функций (SFR), где расположены аккумуляторы A, B, бит переноса C и другие специальные регистры для управления, состояния и т. д.
Специальные функциональные регистры (SFR) расположены в том же адресном пространстве, что и IRAM, по адресам от 0x80 до 0xFF, и к ним можно получить прямой доступ с помощью тех же инструкций, что и к нижней половине IRAM. К ним нельзя получить косвенный доступ через @R0 или @R1 или с помощью указателя стека SP; косвенный доступ к этим адресам приведет к доступу ко второй половине IRAM.
Специальные функциональные регистры (SFR) включают в себя аккумуляторы A (или ACC, в E0) и B (в F0) и слово состояния программы (или PSW, в D0), а также 16-битный указатель данных DPTR (в 82, как DPL и 83 как DPH). В дополнение к ним, небольшое ядро других специальных функциональных регистров, включая разрешение прерывания IE в A8 и приоритет прерывания IP в B8; порты ввода-вывода P0 (80), P1 (90), P2 (A0), P3 (B0); управление последовательным вводом-выводом SCON (98) и буфер SBUF (99); регистр управления ЦП/питанием PCON (87); и регистры для управления таймерами 0 и 1 (TCON на 88) и режима работы (TMOD на 89), 16-битный таймер 0 (TL0 на 8A, TH0 на 8C) и таймер 1 (TL1 на 8B, TH1 на 8D) – присутствуют во всех версиях 8051. Другие адреса зависят от версии; в частности, регистры таймера 2 для 8052, регистр управления T2CON (на C8), 16-битный захват/защелка (RCAP2L на CA, RCAP2H на CB) и таймер 2 (TL2 на CC и TH2 на CD) не включены в 8051.
32 байта в IRAM от 0x00 до 0x1F содержат место для четырех 8-байтовых окон регистров , на которые сопоставляются восемь регистров R0–R7. Текущее активное окно определяется двухбитным адресом, содержащимся в слове состояния программы.
16 байт (128 бит) в ячейках IRAM 0x20–0x2F содержат место для 128 1-битных регистров, которые адресуются отдельно как битовые регистры 00–7F.
Оставшиеся битовые регистры, адресуемые как 80–FF, отображаются на 16 специальных функциональных регистров 80, 88, 90, 98, ..., F0 и F8 (те, чьи адреса кратны 8), и, следовательно, включают биты, составляющие аккумуляторы A, B и слово состояния программы PSW. Адрес окна регистра, будучи битами 3 и 4 PSW, сам адресуется как битовые регистры D3 и D4 соответственно; в то время как бит переноса C (или CY), в бите 7 PSW, адресуется как битовый регистр D7.
Память программ (PMEM, хотя и менее распространенная в использовании, чем IRAM и XRAM) — это до 64 КБ памяти только для чтения, начинающейся с адреса 0 в отдельном адресном пространстве. Она может быть как на кристалле, так и вне его, в зависимости от конкретной модели используемого кристалла. Память программ доступна только для чтения, хотя некоторые варианты 8051 используют встроенную флэш-память и предоставляют метод перепрограммирования памяти в системе или в приложении.
В дополнение к коду, в памяти программ можно хранить данные только для чтения, такие как таблицы поиска , извлеченные инструкциями или . Адрес вычисляется как сумма 8-битного аккумулятора и 16-битного регистра (PC или DPTR).MOVC A,@A+DPTR
MOVC A,@A+PC
Специальные инструкции перехода и вызова ( AJMP
и ACALL
) немного уменьшают размер кода, который обращается к локальной (в пределах тех же 2 КБ) памяти программы. [19]
Когда требуется код размером более 64 КБ, общая система делает код переключаемым по банкам, при этом ввод-вывод общего назначения выбирает верхние биты адреса. Некоторые компиляторы 8051 [18] предусматривают автоматический доступ к страничному коду. В этих системах векторы прерываний и таблица страничного обмена размещаются в первых 32 КБ кода и всегда являются резидентными.
Внешняя память данных (XRAM) — это третье адресное пространство, также начинающееся с адреса 0 и допускающее 16 бит адресного пространства. Она также может быть на кристалле или вне его; то, что делает ее «внешней», заключается в том, что к ней необходимо обращаться с помощью MOVX
инструкции (переместить внешнюю). Многие варианты 8051 включают стандартные 256 байт IRAM плюс несколько килобайт XRAM на кристалле.
Доступ к первым 256 байтам XRAM можно получить с помощью инструкций , , и . Доступ ко всем 64 КБ можно получить с помощью и . 16-битный адрес требует от программиста загрузки 16-битного индексного регистра. По этой причине доступ к ОЗУ с 16-битными адресами существенно медленнее.MOVX A,@R0
MOVX A,@R1
MOVX @R0,A
MOVX @R1,A
MOVX A,@DPTR
MOVX @DPTR,A
Некоторые процессоры [20] позволяют использовать 8-битный косвенный адрес для любого 8-битного регистра общего назначения.
Чтобы разрешить использование этой функции, некоторые 8051-совместимые микроконтроллеры с внутренней RAM больше 256 байт или не имеющие возможности доступа к внешней RAM, [20] обращаются к внутренней RAM, как если бы она была внешней, и имеют специальный функциональный регистр (например, PDATA), который позволяет им устанавливать верхний адрес 256-байтовой страницы. Это эмулирует режим MCS8051, который может разбивать верхний байт адреса RAM, устанавливая универсальные контакты ввода-вывода.
Когда требуется ОЗУ больше 64 КБ, общая система делает банк ОЗУ переключаемым, а ввод-вывод общего назначения выбирает верхние биты адреса. Некоторые компиляторы 8051 [18] предусматривают автоматический доступ к страничным данным.
Единственный регистр на 8051, который не отображен в память, — это 16-битный счетчик программ (PC). Он определяет адрес следующей инструкции для выполнения. Инструкции относительного перехода предоставляют 8-битное смещение со знаком, которое добавляется к PC.
Восемь регистров общего назначения R0–R7 могут быть доступны с инструкциями на один байт короче других. Они отображаются в IRAM между 0x00 и 0x1F. Только восемь байтов этого диапазона используются в любой момент времени, что определяется двумя битами выбора банка в PSW.
Ниже приведен частичный список регистров 8051, которые отображены в памяти в пространстве регистров специальных функций:
256 отдельных битов адресуются напрямую. Это 16 ячеек IRAM от 0x20 до 0x2F и 16 специальных функциональных регистров 0x80, 0x88, 0x90, ..., 0xF8. К любому биту этих байтов можно получить прямой доступ с помощью различных логических операций и условных переходов.
Обратите внимание, что PSW не содержит общих отрицательных (N) или нулевых (Z) флагов . Для первого наиболее значимый бит аккумулятора может быть адресован напрямую, так как это SFR с битовой адресацией. Для последнего существуют явные инструкции для перехода в зависимости от того, равен ли аккумулятор нулю или нет. Также есть операция сравнения и перехода двух операндов.
Бит четности (P) часто используется для реализации последовательных режимов, включающих четность. Для поддержки этого стандартные UART MCS51 могли отправлять 9 бит.
Микроархитектура Intel MCS8051 является запатентованной, но опубликованные [21] характеристики предполагают, как он работает. Это многоцикловый процессор . MCS8051 использовал 12 тактовых циклов [21] для большинства инструкций. Многие инструкции используют аккумулятор. [21] Напротив, большинство совместимых компьютеров выполняют инструкции за один-три цикла, за исключением инструкций умножения и деления. Гораздо более высокая скорость является основной причиной, по которой они заменили MCS8051 в большинстве приложений.
Каждое прерывание имеет четыре приоритета. [21] В пределах каждого приоритета прерывания устройств имеют фиксированный приоритет. [21]
Все инструкции имеют длину от 1 до 3 байтов и состоят из начального байта кода операции, за которым следуют до 2 байтов операндов.
1 ⁄ 4 байтов кода операции, x 0– x 3 , используются для нерегулярных кодов операций.
3 ⁄ 4 байтов кода операции, x 4– x F , назначаются 16 базовым инструкциям ALU с 12 возможными операндами. Наименее значимый полубайт кода операции выбирает первичный операнд следующим образом:
INC operand
DEC operand
MOV operand,#data
CJNE operand,#data,offset
Самый значимый полубайт определяет операцию следующим образом. Не все поддерживают все режимы адресации; в частности, немедленный режим недоступен, когда первичный операнд записывается. Мнемоники инструкций используют порядок операндов назначения и источника .
INC operand
INC A
DEC operand
DEC A
ADD A,operand
RL A
ADD A,A
ADDC A,operand
RLC A
ADDC A,A
ORL A,operand
ORL address,#data
ORL address,A
ANL A,operand
ANL address,#data
ANL address,A
XRL A,operand
XRL address,#data
XRL address,A
MOV operand,#data
MOV A,#data
MOV address,operand
SUBB A,operand
MOV operand,address
CJNE operand,#data,offset
#data
и перейти к PC + смещение , если не равно. Непосредственный и прямой режимы памяти (коды операций 0xB4 и 0xB5) сравнивают операнд с аккумулятором, . Обратите внимание, что нет инструкции сравнения и перехода, если равно, .CJNE A,operand,offset
CJE
XCH A,operand
DJNZ operand,offset
MOV A,operand
MOV operand,A
Только инструкции ADD
, ADDC
, и SUBB
устанавливают флаги PSW. Логические инструкции INC
, DEC
, и не делают этого. CJNE
Инструкция изменяет только бит C, на заем, который получается из operand1 − operand2 .
Нерегулярные инструкции включают 64 кода операций, имеющих более ограниченные режимы адресации, а также несколько кодов операций, извлеченных из неприменимых режимов в обычных инструкциях.
MOV address,address
перемещаться напрямую между двумя регистрами IRAM или SFR.CJNE A,address,offset
сравнить аккумулятор с регистром IRAM или SFR и перейти к PC + смещение , если не равно.XCHD A,@R0–1
обменяться младшими полубайтами операндов.Код операции SJMP
(короткий переход) берет знаковый относительный смещенный байтовый операнд и передает управление туда относительно адреса следующей инструкции. Коды операции AJMP
/ ACALL
объединяют три старших бита байта кода операции со следующим байтом, чтобы указать 11-битное назначение, которое используется для замены 11 нижних бит регистра PC (верхние 5 бит регистра PC остаются нетронутыми). Для больших адресов инструкции LJMP
и LCALL
допускают 16-битное назначение.
Одной из причин популярности 8051 является его диапазон операций над отдельными битами. Биты всегда указываются абсолютными адресами; не существует регистрово-косвенной или индексированной адресации. Инструкции, которые работают над отдельными битами:
SETB bit
, , : Установить, очистить или дополнить указанный битCLR bit
CPL bit
JB bit,offset
: Переход, если бит установленJNB bit,offset
: Перейти, если бит чистJBC bit,offset
: Переход, если бит установлен, и очистка битаMOV C,bit
, : Переместить указанный бит в бит переноса или наоборотMOV bit,C
ORL C,bit
, : Или бит (или его дополнение) к биту переносаORL C,/bit
ANL C,bit
, : И бит (или его дополнение) к биту переносаANL C,/bit
Битовый операнд записывается в форме address.number
. Поскольку флаг переноса — это бит 7 слова состояния программы с битовой адресацией, инструкции , и являются более короткими эквивалентами , и .SETB C
CLR C
CPL C
SETB PSW.7
CLR PSW.7
CPL PSW.7
Существуют различные компиляторы языков программирования высокого уровня для 8051. Для 8051 доступно несколько компиляторов C , большинство из которых позволяют программисту указывать, где каждая переменная должна храниться в его шести типах памяти, и предоставляют доступ к специфичным для 8051 аппаратным функциям, таким как множественные банки регистров и инструкции по манипуляции битами. Существует множество коммерческих компиляторов C. [22] Small Device C Compiler (SDCC) — популярный компилятор C с открытым исходным кодом. [23] Другие языки высокого уровня, такие как C++ , Forth , [24] [25] [26] [27] BASIC , Object Pascal , Pascal , PL/M и Modula-2, доступны для 8051, но они менее широко используются [28], чем C и ассемблер .
Поскольку IRAM, XRAM и PMEM (только для чтения) имеют адрес 0, компиляторы C для архитектуры 8051 предоставляют специфические для компилятора прагмы или другие расширения, чтобы указать, где следует хранить определенную часть данных (например, константы в PMEM или переменные, требующие быстрого доступа в IRAM). Поскольку данные могут находиться в одном из трех пространств памяти, обычно предоставляется механизм, позволяющий определить, на какую память ссылается указатель, либо ограничивая тип указателя, чтобы включить пространство памяти, либо сохраняя метаданные с указателем.
Intel прекратила выпуск линейки продуктов MCS-51 в марте 2007 года; [29] [30] однако существует множество усовершенствованных продуктов 8051 или интеллектуальной собственности на основе кремния, регулярно добавляемых другими поставщиками.
Предшественник 8051, 8048 , использовался в клавиатуре первого IBM PC , где он преобразовывал нажатия клавиш в последовательный поток данных, который отправлялся в основной блок компьютера. Intel 8049 выполнял аналогичную роль в Sinclair QL . 8048 и производные до сих пор используются [обновлять]для базовых моделей клавиатур.
8031 был уменьшенной версией оригинального 8051, не имевшего внутренней памяти программ ( постоянного запоминающего устройства , ПЗУ). Чтобы использовать этот чип, нужно было добавить внешнее ПЗУ, содержащее программу, которую 8031 мог извлекать и выполнять. Чип 8051 мог продаваться как 8031 без ПЗУ, поскольку внутреннее ПЗУ 8051 отключается нормальным состоянием вывода EA в конструкции на основе 8031. Поставщик мог продавать 8051 как 8031 по ряду причин, например, из-за неисправного кода в ПЗУ 8051 или просто из-за переизбытка 8051 и недостатка 8031.
В 8044 (а также в 8344 без ПЗУ и 8744 с EPROM) к ядру 8051 был добавлен контроллер SDLC (особенно для приложений Bitbus ). [31]
8052 был улучшенной версией оригинального 8051, который имел 256 байт внутренней RAM вместо 128 байт, 8 КБ ROM вместо 4 КБ и третий 16-битный таймер. Большинство современных микроконтроллеров, совместимых с 8051, включают эти функции .
Процессор 8032 имел те же функции, что и 8052, за исключением отсутствия внутренней памяти программ ROM.
8751 был 8051 с 4 КБ EPROM вместо 4 КБ ROM. Они были идентичны, за исключением типа энергонезависимой памяти. Эта часть была доступна в керамическом корпусе с прозрачным кварцевым окном поверх кристалла, чтобы можно было использовать УФ-свет для стирания EPROM . Связанные части: 8752 имел 8 КБ EPROM, 8754 имел 16 КБ EPROM, 8758 имел 32 КБ EPROM.
80C537 (без ПЗУ) и 80C517 (8 КБ ПЗУ) — это версии КМОП , разработанные для автомобильной промышленности . Улучшения в основном включают новые и улучшенные периферийные устройства. 80C5x7 имеет отказоустойчивые механизмы, возможности аналоговой обработки сигналов, улучшенные возможности таймера и 32-битную арифметическую периферию. Другие характеристики включают:
Более 20 независимых производителей выпускают процессоры, совместимые с MCS-51. [ необходима ссылка ]
Другие ИС или IP, совместимые с MCS-51, были разработаны Analog Devices , [32] Integral Minsk , [33] Kristall Kyiv , [34] и НИИЭТ Voronezh . [13]
Сегодня 8051 все еще доступны как дискретные части, но они в основном используются как кремниевые ядра интеллектуальной собственности . [35] Доступные в исходном коде языка описания оборудования (например, VHDL или Verilog ) или формах списка соединений FPGA , эти ядра обычно интегрируются во встраиваемые системы, в продукты, начиная от USB-флеш-накопителей и заканчивая стиральными машинами и сложными беспроводными системами связи на кристалле . Разработчики используют кремниевые IP-ядра 8051 из-за меньшего размера и меньшей мощности по сравнению с 32-битными процессорами, такими как серии ARM Cortex-M , MIPS и BA22. [ необходима цитата ]
Современные ядра 8051 быстрее, чем более ранние упакованные версии. Улучшения конструкции увеличили производительность 8051, сохранив совместимость с исходным набором инструкций MCS 51. Исходный Intel 8051 работал на 12 тактовых циклах на машинный цикл, и большинство инструкций выполнялось за один или два машинных цикла. Типичная максимальная тактовая частота 12 МГц означала, что эти старые 8051 могли выполнять один миллион однотактовых инструкций или 500 000 двухтактовых инструкций в секунду. Напротив, усовершенствованные кремниевые IP-ядра 8051 теперь работают на одном тактовом цикле на машинный цикл и имеют тактовые частоты до 450 МГц. Это означает, что совместимый с 8051 процессор теперь может выполнять 450 миллионов инструкций в секунду.
Существует несколько вариантов с дополнительным 16-битным цифровым сигнальным процессором (DSP) (например, для кодирования/декодирования MP3 или Vorbis ) с производительностью до 675 миллионов инструкций в секунду (MIPS) [45] и встроенным интерфейсом USB 2.0 [46] или в качестве интеллектуальной собственности [47] .
В 1996 году Intel анонсировала семейство MCS-151, в 6 раз более быстрый вариант, [3] который полностью совместим с 8051 в двоичном виде и по набору инструкций . В отличие от 8051 MCS-151 — это конвейерный ЦП с 16-битной внутренней кодовой шиной, скорость которого в 6 раз выше. Семейство MCS-151 также было прекращено Intel, но широко доступно в двоично-совместимых и частично улучшенных вариантах.
Микроконтроллер 80251 8/16/32-бит с адресным пространством 16 МБ ( 24 бита ) и в 6 раз более быстрым циклом команд был представлен Intel в 1996 году. [3] [48] Он может работать как 8-битный 8051, имеет 24-битную линейную адресацию , 8-битный ALU, 8-битные инструкции, 16-битные инструкции, ограниченный набор 32-битных инструкций, 16 8-битных регистров, 16 16-битных регистров (8 16-битных регистров, которые не делят пространство ни с одним 8-битным регистром, и 8 16-битных регистров, которые содержат 2 8-битных регистра на 16-битный регистр) и 10 32-битных регистров (2 выделенных 32-битных регистра и 8 32-битных регистров, которые содержат 2 16-битных регистра на 32-битный регистр). [49]
Он имеет расширенные инструкции [50] – см. также руководство программиста [51] – и более поздние варианты с более высокой производительностью, [52] также доступные как интеллектуальная собственность (ИС). [53] Он имеет 3-ступенчатый конвейер. Семейство MCS-251 также было прекращено Intel, но широко доступно в двоично-совместимых и частично улучшенных вариантах от многих производителей.
{{cite book}}
: CS1 maint: местоположение ( ссылка )Медиа, связанные с MCS-51 на Wikimedia Commons