- •7. Функциональная и структурная организация эвм. Определения архитектуры эвм по гост 15971-90 и стандарту iso/iec 2382/1-93.
- •12. Концепция машины с хранимой памятью. Вклад Джона фон Неймана в развитие архитектуры эвм. Принципы фон-неймановской концепции и их характеристика.
- •19. Перевод чисел из одной системы счисления.
- •20. Представление целых чисел в эвм.
- •21. Прямой, обратный и дополнительный коды. Алгоритм получения обратного и дополнительного кодов.
- •22. Использование различных систем счисления при организации взаимодействия человека и эвм. Проблемы и перспективы улучшения интерфейса человека и эвм.
- •35. Арифметические схемы. Сумматоры. Полусумматор. Полный сумматор. Арифметико-логическое устройство.
- •36. Устройства памяти эвм. Триггеры. Классификация. Rs-триггер. D-триггер.
- •37. Устройства памяти эвм. Триггеры. Классификация. Т-триггер. Универсальный jk-триггер.
- •38. Семь уровней компьютерных систем и их характеристика. Сущность системного подхода к изучению принципов работы компьютера.
- •47. Организация узла регистра общего назначения (рон). Одноканальный и двухканальный доступ.
- •48. Полусумматор и полный сумматор. Схемная реализация. Таблица истинности. Принципы создания 8-разрядного сумматора.
- •50. Тракт данных. Основные элементы тракта данных и их предназначение.
- •51. Регистры тракта данных, название и предназначение.
- •55. Шины тракта данных. Классификация шин по назначению. Принципы работы шин тракта данных. Примеры шин, используемых в современных компьютерах. Параметры шин.
- •62. Язык ассемблера и его роль в программном обеспечении эвм. Шестнадцатеричная и двоичная системы счисления в ассемблере.
- •63. Регистры процессора 8086 – 80816. Регистры данных, регистры –указатели, сегментные регистры.
- •64. Команды в ассемблере: загрузка, сложение, вычитание, inc, dec. Привести примеры.
47. Организация узла регистра общего назначения (рон). Одноканальный и двухканальный доступ.
Регистры общего назначения в любом микроконтроллере играют очень важную роль. В дальнейшем я буду сокращать их название – писать просто РОН.
РОН принимают участие в выполнении практически всех команд МК, и практически все данные проходят через них. В микроконтроллерах AVR имеется 32 РОН (и это очень хорошо, что их так много. А к примеру, в МК PIC – всего один регистр).
Каждый РОН имеет свое имя: R0, R1, R2 ….. R29, R30, R31. Все РОН объединяются в один файл, который называется файл регистров общего назначения. Регистры общего назначения восьмиразрядные (однобайтовые). Каждому РОН в области памяти данных (SRAM) отведен свой адрес – они занимают ячейки памяти с “нулевой” по “тридцать первую”, или в шестнадцатиричном исчислении – от $00 (0х00) до $1F (0x1F). Т.е., получается, что ячейки памяти SRAM с 0 по 31, одновременно являются и регистрами общего назначения. Мы можем в программе прописать команду: “записать 255 в регистр R31″, а можем прописать: “записать 255 в 31 ячейку памяти данных”, – результат будет один и тот же.
Надо помнить, что физически РОН (как и рассматриваемые ниже регистры ввода/вывода) не входят в память данных, но для повышения эффективности работы МК и его производительности, РОН (и регистры ввода/вывода) располагаются в адресном пространстве памяти данных, и к ним можно обращаться как по их именам, так и как к ячейкам памяти ОЗУ (SRAM).
Так как все РОН восьмиразрядные (однобайтовые) то и оперировать они могут только с однобайтными данными. В случае, если необходимо проводить операции с двухбайтными данными (шестнадцатиразрядными), то РОН с R26 по R31 могут образовывать сдвоенные регистры, которые в свою очередь могут выступать в роли самостоятельных шестандцатиразрядных регистров и тогда они имеют другие имена (такие сдвоенные регистры иногда называют “словом”, по аналогии с ячейками памяти программ):
R26 и R27 – сдвоенный регистр “Х”,
R28 и R29 – сдвоенный регистр “Y”,
R30 и R31 – сдвоенный регистр “Z”.
При этом первый регистр в такой паре (R26, или R28, или R30) играет роль младшего байта и обозначается дополнительной буквой “L”. Например: XL, YL, ZL.
Второй регистр в паре играет роль старшего байта и обозначается дополнительной буквой “H”. Например: XH, YH, ZH.
Это позволяет нам записать (или считать значение), к примеру, двухбайтовое число непосредственно в двойной регистр, обратившись к его буквенному обозначению X, Y или Z, а также считать любой байт (или записать в любой байт) выбрав буквенное обозначение младшего или старшего байта двойного регистра (к примеру XL или XH).
Кроме того необходимо помнить, что хотя и все регистры общего назначения одинаковы, но не все из них могут участвовать в некоторых операциях. При этом, регистрам с R16 по R31 доступны все операции, а регистрам с R0 по R15 – не все.
И еще. В некоторых МК (Tiny) двойной регистр только один – Z (R30,R31).
В описание каждой команды указывается, какие РОН могут участвовать в данной операции, к примеру:
Регистры ввода/вывода
Как мы уже знаем, в МК присутствует много различных периферийных устройств. Кроме них, в МК есть и внутренние устройства. Всеми этими устройствами необходимо управлять, задавать необходимые режимы работы. Для этих целей в МК существуют регистры ввода/вывода.
Все регистры ввода/вывода (в дальнейшем буду писать РВВ) условно можно разделить на два типа:
- служебные регистры микроконтроллера
- регистры, относящиеся к конкретным периферийным устройствам
Все регистры ввода/вывода (как и РОН) занимают свое адресное пространство в памяти данных (SRAM) – от 32 до 95 (или в шестнадцатиричном счислении от $20 до $5F) и идут сразу за регистрами общего назначения, в так называемом адресном пространстве ввода/вывода. Каждый регистр восьмиразрядный и занимает память в один байт.
Всего МК может иметь 64 регистра ввода/вывода – максимальное число (за редким исключением). В тоже время, если МК простенький и в нем мало устройств, и он использует меньшее число РВВ, в области памяти данных все равно резервируется 64 адреса. Некоторым, слишком навороченным МК, стандартного значения в 64 РВВ недостаточно. В таких МК в адресном пространстве памяти данных выделяется еще дополнительно 160 ячеек памяти для дополнительных регистров ввода/вывода.
Еще раз напомню, что хотя РОН и РВВ выделяется место в памяти данных, но доступное пространство памяти данных для нас от этого не уменьшается, ведь физически они там не располагаются. Если написано, что МК имеет память данных 128 байт, то значит мы можем использовать эти 128 байт в своих целях. Просто первый адрес памяти данных будет начинаться не с нуля, как в памяти программ или энергонезависимой памяти.
Каждый регистр ввода/вывода имеет свой номер – от 0 до 63 (или в шестнадцатиричном виде – от $00 до $3F), который соответствует его адресу в адресном пространстве ввода/вывода. Адрес РВВ в адресном пространстве ввода/вывода и адреса соответствующих им ячеек в ОЗУ (памяти данных) не совпадают. Если регистр имеет номер 0, то в адресном пространстве ОЗУ он будет занимать 32 ячейку памяти (ведь сначала идут 32 регистра общего назначения, а за ними уже – РВВ). Для определения адреса РВВ в области памяти данных необходимо прибавить к его номеру 32.
Помимо номера, каждый регистр имеет свое имя (буквенную аббревиатуру) – для удобства программистов.
Для разных МК имена регистров, имеющих одинаковое назначение, обычно совпадают, а вот номер регистра может отличаться. Но это не так и важно, потому, что при программировании оперируют в основном именами регистров.
К примеру, для управления портом ввода-вывода (а их мы рассмотрим очень подробно в следующей статье) имеется три РВВ – один служит для задания направления работы порта (на вывод или ввод информации), второй для … рассмотрим в следующей статье. И так каждое устройство.
Кусочек из таблицы регистров ввода/вывода (первое число – номер регистра, и оно же его адрес в адресном пространстве РВВ, в скобках указывается адрес регистра в адресном пространстве памяти данных, т.е. номер +32):
