Я слышал о 8-битных микроконтроллерах и 16-битных микроконтроллерах. Я даже слышал о 7-битных микроконтроллерах и 1-битных микроконтроллерах.
Каковы общие характеристики этих групп? Как выбрать тип для использования в проекте?
Я слышал о 8-битных микроконтроллерах и 16-битных микроконтроллерах. Я даже слышал о 7-битных микроконтроллерах и 1-битных микроконтроллерах.
Каковы общие характеристики этих групп? Как выбрать тип для использования в проекте?
Ответы:
Есть также 4-битные и 32-битные микроконтроллеры. В ПК используются 64-битные микропроцессоры.
Число относится к ширине регистра . Регистры лежат в основе микроконтроллера. Многие операции используют регистры либо для перемещения данных, либо для выполнения арифметических или логических операций. Эти операции происходят в ALU , Арифметико-логическом отделе.
Некоторые операции принимают только 1 аргумент, например, очищают регистр или увеличивают его. Многие, однако, примут 2 аргумента, и это приводит к типичному представлению ALU в перевернутых брюках. и являются аргументами, и ALU выдаст результат на основе текущей операции. Операция с двумя аргументами может быть «добавить 15 к регистру R5 и сохранить результат по адресу памяти 0x12AA». Для этого требуется наличие маршрутизации между константой «15» (которая поступает из памяти программ), файлом регистров и памятью данных. Что маршрутизация происходит через шину данных, Есть внутренняя шина данных, соединяющая регистры, внутреннее ОЗУ и АЛУ, а для микропроцессоров и некоторых микроконтроллеров - внешняя шина данных, которая подключается к внешней ОЗУ. За некоторыми исключениями ширина шины данных равна ширине регистров и ALU, и вместе они определяют тип микроконтроллера. (Исключением был 8088, который имеет внутреннюю 16-битную шину, но внешне только 8-битную.)
4-битные контроллеры имеют 4-битные регистры, которые могут представлять только 16 различных значений, от 0 до шестнадцатеричного 0xF. Это немного, но этого достаточно для работы с цифрами в цифровых часах, и это область, в которой они используются.
Уже несколько десятилетий 8-битные контроллеры являются рабочей лошадкой в отрасли. В 8 битах вы можете хранить числа от 0 до 255. Эти цифры могут также представлять буквы и другие символы. Так что вы можете работать с текстом. Иногда 2 регистра могут быть объединены в 16-битный регистр, который позволяет использовать числа до 65535. Однако во многих контроллерах большие числа должны обрабатываться программно. В этом случае возможны даже 32-битные числа.
Большинство 8-битных контроллеров имеют 16-битный программный счетчик. Это означает, что он может адресовать максимум 64 КБ памяти. Для многих встроенных приложений этого достаточно, некоторым даже требуется всего несколько килобайт.
Например, монитор парковки, где вы должны вести учет количества автомобилей и отображать их на ЖК-дисплее, это то, что вы обычно делаете с 8-битным контроллером. :-)
16-битный это следующий шаг. По какой-то причине они никогда не имели успеха у 8-битных или 32-битных. Я помню, что серия Motorola HC12 была слишком дорогой и не могла конкурировать с 32-битными контроллерами.
32-разрядное слово дня. С 32-битным программным счетчиком вы можете обращаться к 4 Гбайт. ARM - это популярный 32-битный контроллер. Есть десятки производителей, предлагающих ARM всех размеров. Это мощные контроллеры, часто имеющие множество специальных функций, таких как USB или полные драйверы ЖК-дисплея.
ARM часто требуют больших пакетов, либо для размещения большого кристалла с большим количеством Flash, либо потому, что различные функции требуют большого количества выводов ввода / вывода. Но этот пакет иллюстрирует возможности, которые предлагает ARM.
Это 16-контактный ARM в упаковке всего 2,17 мм х 2,32 мм.
Простой ответ: N-битный микроконтроллер имеет путь к данным и ALU, который может обрабатывать данные в N-битных порциях.
Длинный ответ: короткий ответ правильный в 95% случаев. Длинный ответ сбивает с толку. Некоторые CPU / MPU имеют части, которые в основном являются N-битами, но некоторые части являются M-битами. Например, это может быть 8-битный процессор с целочисленным множителем, который работает с 16-битными данными. Серия процессоров Intel (от 8088 до нынешнего i7) часто может комбинировать различные 8 и 16-битные регистры, чтобы получить 16 или 32-битные. Затем маркетологи получают эти цифры и решают использовать их в своих маркетинговых материалах, и в итоге вы получаете 8-битные MPU, называемые 16-битными и т. Д.
Это становится еще более странным, чем это. Некоторые маркетологи продвигают размер инструкций MPU. Микрочип PIC являются хорошим примером этого. Если вы не будете осторожны, вы можете спутать это с количеством битов в пути данных.
К сожалению , если это первый абзац слишком низкий уровень, но это предлагается в надежде , что она может помочь читателям в будущем: число А, представленное N цифр в базовых М, может быть только как большая , как . Например, с 9 десятичными (основанием 10) цифрами можно записывать только цифры до 10 ^ 9 или от нуля до 999 999 999. Имея 8 двоичных (основание 2) цифр («двоичная цифра» - это «бит»), вы можете хранить 2 ^ 8 = 256 чисел.
Микроконтроллер или процессор называется N-битным, поскольку контроллеры и процессоры имеют фундаментальную ширину данных. Каждый регистр может быть N битами, каждая инструкция может быть N битами, шина данных может быть N битами, память может быть адресована с помощью N битов. Особенно на нижнем уровне есть исключения из этого правила: например, 8-битный контроллер может иметь 12-битную шину памяти, но, как вы можете догадаться, работать с ней сложно, когда ваши регистры содержат только 8 бит. Однако все процессоры имеют фундаментальную ширину собственного типа данных. Рассмотрим следующий код:
uint32_t x,y,z; // Declare 3 32-bit variables
z=x + y; // Add two of them to store in the third
Если вы можете добавить только 8-битные числа, как бы вы выполнили эту операцию? Вам нужно будет разбить каждую переменную на 4 8-битных числа, выполнить сложения и переносы по отдельности, а затем объединить их, чтобы получить результат. Это займет не менее 16 инструкций! Тем не менее, на 32-битном процессоре это простая инструкция mul r0, r1, r2
. Как вы можете видеть из этого простого примера, большая ширина процессора может быстрее обрабатывать больше данных.
Тенденция на протяжении всей истории была от меньшей ширины бит к большей. Еще в начале 1970-х годов Intel выпустила 4004, первый однокристальный контроллер. Это был 4-битный процессор. Поскольку транзисторы были большими и потребляли много энергии, а дизайн был революционным и сложным, это все, что можно было надеть на чип. Вскоре после этого они выпустили 8008, 8-битный процессор. Есть еще несколько 4-битных процессоров, которые все еще используются, но есть много 8-битных контроллеров, PIC и AVR - современные примеры, все еще широко используемые. Было сделано больше 8-битных процессоров, чем любой другой тип! Они по-прежнему являются самыми популярными контроллерами для небольших, простых и дорогостоящих задач. Следующий очевидный переход был на 16-битные контроллеры, но они не имели доступа к своим 8-битным или 32-битным собратьям. Вместо, произошел скачок к 32-разрядным процессорам, подобным разработанным ARM и встроенным в процессоры ПК несколько лет назад. Я не знал о каких-либо значительных 64-битных микроконтроллерах, хотя сейчас они широко распространены на ПК.
Безусловно, наиболее популярными типами являются 8-битные и 32-битные процессоры. 32-разрядные процессоры становятся все более популярными. Каждый год или около того какой-то специализированный журнал публикует статью под заголовком «8-битный мертв?» 32-разрядные процессоры становятся все более популярными, более мощными и дешевыми, и остается только три причины выбрать 8-разрядный процессор:
32-разрядные процессоры становятся все более распространенными, но нет никаких признаков того, что 8-разрядный процессор исчезнет, как старые 4-разрядные процессоры, по этим трем причинам.
Рассмотрим приложение, подобное Arduino .
Arduino использует контроллер Atmel, 8-битный ATmega32 . ATmega работает на частоте 20 МГц, имеет 4 КБ ОЗУ, имеет связи SPI, I2C и UART, несколько аппаратных прерываний и 8 10-разрядных АЦП. Этот чип стоит $ 3,90 в количестве 100.
Аналогичный 32-разрядный чип может быть другой частью Atmel, 32-разрядным AT-SAM3, использующим общее ядро ARM Cortex-M3. Этот чип работает на частоте 64 МГц (в 3 раза быстрее, но помните, что ATmega требует 16 инструкций для выполнения одного 32-разрядного сложения). Он имеет 16 Кб оперативной памяти, в 4 раза больше, чем ATmega. Он имеет I²C, MMC, SPI, SSC, UART и даже USB-периферию. Он имеет DMA (прямой доступ к памяти, а также делает его более быстрым и эффективным), гибкий и мощный набор прерываний, 10 12-разрядных АЦП и 2 ЦАП. Он просто превосходит ATmega во всех категориях. Я попытался найти 32-битный контроллер с сопоставимым набором функций, и это было лучшее, что я мог сделать. Сколько стоит этот чип? Это $ 2,34 в количестве 100. Вы получаете больше производительности за меньшие деньги. Должно быть легкое решение.
Для вашего примера ситуации здесь ,
Количество автомобилей, въезжающих на парковку и выезжающих с нее, должно быть подсчитано, а количество отображено на ЖК-экране. Максимум десять автомобилей допускается на парковку.
у вас есть очень простая математика с маленькими цифрами и простым дисплеем на ЖК-дисплее (или действительно, большая вывеска из 7-сегментных светодиодных цифр была бы более заметной и более дешевой). 8-битный контроллер, вероятно, идеально подходит для этой задачи. Однако, что если вы действительно этого хотите ЖК? 8-битному контроллеру будет трудно управлять даже VGA-дисплеем с низким разрешением, в то время как вы можете легко получить платы разработки для 32-битных контроллеров с выходами HDMI. Что если вы хотите отобразить его на экране на данный момент, но позже хотите подключить его к кабелю Ethernet в локальной сети вашего предприятия и отобразить результаты на компьютере руководителя в офисе парка? Вы можете легко получить 32-битные контроллеры с встроенными коммуникационными шинами Ethernet, вы не можете сделать это с 8-битным контроллером.Xport , но там есть 32-битный процессор.
Для одноразовых проектов я бы рекомендовал 32-битный контроллер каждый раз. Ваше время просто более ценно, чем разница в цене между 8- и 32-разрядными контроллерами.
Что касается упомянутых вами 7-битных процессоров, то, вероятно, таких машин никогда не было и не будет. С архитектурной точки зрения более разумно использовать битовую ширину, равную степени 2.
Размер бит ЦП относится к нескольким характеристикам, которые обычно идут вместе:
Для некоторых процессоров все эти величины имеют одинаковое значение. Для других они могут иметь разные значения. Z80, хотя он включает в себя некоторые 16-битные регистры, использует 8-битные регистры для большей части своего набора команд и требует дополнительных циклов почти для всех команд, которые работают с 16-битными величинами (единственное исключение - EX DE, HL); это 8-битный процессор. Что-то вроде 68008, однако, не может быть очень хорошо описано, используя только одну N
: у него есть набор команд, который может в основном работать с 32-битными величинами, и он может IIRC перемещать данные между регистрами 32-битными за раз, но его основной ALU только 16 бит, а его шина памяти составляет всего 8 бит. В зависимости от того, что измеряется, его можно рассматривать как 32-разрядный, 16-разрядный или 8-разрядный процессор.