Gazmarket59.ru

Газ Маркет 59
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Регистры счетчики их назначение принципы функционирования

Всем доброго времени суток! В прошлом посте я писал про триггеры, а сегодня практически продолжение этой темы – регистры. Почему продолжение? Потому что регистры (англ. Register) представляют собой несколько триггеров соединённых между собой различными способами.

Вообще регистров бывает два основных вида:

  • параллельный регистр;
  • последовательный регистр или регистр сдвига.

В обозначениях микросхем для регистров выделено суффикс ИР, например, К555ИР9, К555ИР27, К1533ИР35.

Для сборки радиоэлектронного устройства можно преобрески DIY KIT набор по ссылке.

Виды регистров

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

  • Регистры общего назначения.
  • Индексные регистры.
  • Регистры-указатели.
  • Сегментные блоки памяти.
  • Регистры флагов.

Вам будет интересно: Как сделать визитку в иллюстраторе своими силами

Фактически все регистры занимают в памяти 32 бита. То есть могут содержать числа от нуля до 4294967295. Некоторые из регистров разделены на несколько частей по 16 и 8 бит. Это позволяет управлять либо частью блока памяти, либо ячейкой целиком, записывая в нее только часть данных.

Регистры ассемблера получили название согласно выполняемым функциям:

  • ЕАХ – Accumulator регистра аккумулятора;
  • EBX – Base – база;
  • ECX – Counter – отвечает за счет;
  • EDX – Data – блок ячеек данных;
  • ESI – Source Index – регистр источника;
  • EDI – Destination Index – регистр приемника;
  • ESP – Pointer of stack – указатель на стек;
  • EBP – Base Pointer — указатель основания стека.

Регистры процессора 8086.

Так как мы имеем дело с 16 битной операционной системой MS-DOS, то вернёмся во времена процессоров 8086 и 80286. В процессорах следующих поколений указанные регистры являются частями соответствующих 32 и 64 битных регистров с сохранением названия и функционала.

Например, регистр ax (16 бит) является составляющей частью регистра eax (32 бита). Благодаря указанному подходу достигается совместимость работы старых программ на новых компьютерах. Также сохраняются команды и директивы, переходя с 16 битного в 32 битный код.

Итак, процессор (8086 и 80286) содержит 12 16-ти разрядных программно-адресуемых регистров. Регистры процессора принято объединять в три группы:

  • Регистры данных.
  • Регистры указатели.
  • Сегментные регистры.

Кроме этого, в состав процессора входят:

  • Счётчик команд.
  • Регистр флагов.

16-ти разрядность обозначает, что в каждом регистре может содержаться 0FFFFh бит информации, то есть два байта: 0FFh-0FFh информации.

Запись/чтение регистра

Существует несколько способов установки битов в регистрах. Мы рассмотрим их все, чтобы столкнувшись с одним из них вы знали, что это вообще такое и как работает данная строчка кода. Абсолютно вся работа с регистрами заключается в установке нужных битов в нужном байте (в регистре) в состояние 0 или 1. Рекомендую прочитать урок по битовым операциям, в котором максимально подробно разобрано всё, что касается манипуляций с битами. Давайте вернёмся к регистру таймера, который я показывал выше, и попробуем его сконфигурировать. Первый способ, это явное задание всего байта сразу, со всеми единицами и нулями. Сделать это можно так:

Читайте так же:
Как отправлять данные счетчиков через интернет

Таким образом мы включили и выключили нужные биты сразу, одним махом. Как вы помните из урока о типах данных и чисел, микроконтроллеру всё равно, в какой системе исчисления вы с ним работаете, то есть число 0b01010101 у нас в двоичной системе, в десятичной это будет 85 , а в шестнадцатеричной – 0x55 . И вот эти три варианта абсолютно одинаковы с точки зрения результата:

Только на первый можно посмотреть и сразу понять, что где стоит. Чего не скажешь про остальные два. Очень часто в чужих скетчах встречается такая запись, и это не очень комфортно. Гораздо чаще бывает нужно “прицельно” изменить один бит в байте, и тут на помощь приходят логические (битовые) функции и макросы. Рассмотрим все варианты, во всех из них BYTE это байт-регистр, и BIT это номер бита, считая с правого края. То есть BIT это цифра от 0 до 7, либо название бита из даташита.

Что хочу сказать по перечисленным вариантам: они все по сути являются одним и тем же, а именно – первым, просто обёрнуты в другие функции и макросы. Время выполнения всех вариантов одинаково, т.к. макро-функции не делают лишних действий, а приводят все способы к первому, со сдвигом и |= и &= . Все эти способы вы можете встретить в скетчах из интернета, это факт. Лично мне больше всего нравится ардуиновский bitSet и bitClear, потому что они имеют читаемое название и заранее сидят в библиотеке. Что касается sbi() и cbi() – то для их использования нужно в самом начале документа создать макросы:

И после этого можно пользоваться sbi() и cbi() . Давайте рассмотрим пример, где просто подёргаем TCCR1B разными способами:

Можно ещё добавить вариант, где в одной строчке можно “прицельно” установить несколько битов:

Я думаю тут всё понятно, давайте теперь попробуем “прицельно” прочитать бит из регистра:

Чтение битаОписание
(BYTE >> BIT) & 1Вручную через сдвиг
bitRead(BYTE, BIT)Ардуиновская макро-функция

Два рассмотренных способа возвращают 0 или 1 в зависимости от состояния бита. Пример:

Ещё больше примеров работы с битами смотри в предыдущем уроке по битовым операциям.

Сдвиговые регистры в цифровой логике

Триггеры могут быть использованы для хранения одного бита двоичных данных (1 или 0). Однако для хранения нескольких бит данных нам нужно несколько триггеров. N триггеров должны быть подключены для хранения n бит данных. Регистр — это устройство, которое используется для хранения такой информации. Это группа триггеров, соединенных последовательно, для хранения нескольких бит данных.

Читайте так же:
Счетчик импульсов домовой рмд

Информация, хранящаяся в этих регистрах, может быть передана с помощью сдвиговых регистров . Shift Register — это группа триггеров, используемых для хранения нескольких бит данных. Биты, хранящиеся в таких регистрах, могут быть перемещены внутри регистров и входить / выходить из регистров путем применения тактовых импульсов. N-битный регистр сдвига может быть сформирован путем соединения n триггеров, где каждый триггер хранит один бит данных.
Регистры, которые будут сдвигать биты влево, называются «сдвигами регистров влево».
Регистры, которые сдвигают биты вправо, называются «регистры сдвига вправо».

Сдвиговые регистры в основном 4 типа. Эти:

  1. Serial In Serial Out сдвиговый регистр
  2. Серийный параллельно выходной сдвиговый регистр
  3. Сдвиговый регистр Parallel In Serial Out
  4. Параллельно-параллельно-сдвиговый регистр

Серийный входной регистр с последовательным выходом (SISO) —

Сдвиговый регистр, который допускает последовательный ввод (один бит за другим через одну строку данных) и создает последовательный выход, известен как сдвиговый регистр Serial-In Serial-Out. Поскольку имеется только один выход, данные покидают сдвиговый регистр по одному биту за раз в последовательной последовательности, таким образом, имя Serial-In Serial-Out Shift Register.

Приведенная ниже логическая схема показывает сдвиговый регистр последовательного входа в последовательный выход. Схема состоит из четырех D-триггеров, которые соединены последовательно. Все эти триггеры синхронизированы друг с другом, так как один и тот же тактовый сигнал применяется к каждому триггеру.

Вышеприведенная схема является примером сдвига правого регистра, в котором вводятся последовательные данные с левой стороны триггера. Основное использование SISO — это элемент задержки.

Сдвиговый регистр с параллельным выходом (SIPO) —

Сдвиговый регистр, который допускает последовательный ввод (один бит за другим через одну строку данных) и создает параллельный выход, называется сдвиговым регистром с последовательным выходом.

Приведенная ниже логическая схема показывает сдвиговый регистр с последовательным параллельным выходом. Схема состоит из четырех D-триггеров, которые связаны между собой. Сигнал очистки (CLR) в дополнение к тактовому сигналу подключается ко всем 4 триггерам для их СБРОСА. Выход первого триггера соединен со входом следующего триггера и так далее. Все эти триггеры синхронизированы друг с другом, так как один и тот же тактовый сигнал применяется к каждому триггеру.

Вышеприведенная схема является примером сдвига правого регистра, который берет последовательный ввод данных с левой стороны триггера и производит параллельный вывод. Они используются в линиях связи, где требуется демультиплексирование линии данных в несколько параллельных линий, поскольку основное использование регистра SIPO заключается в преобразовании последовательных данных в параллельные данные.

Читайте так же:
Специалист который проверяет счетчики

Сдвиговый регистр с параллельным выходом (PISO) —

Сдвиговый регистр, который допускает параллельный ввод (данные передаются отдельно на каждый триггер и одновременно) и генерирует последовательный выход, называется сдвиговым регистром с параллельным вводом-выходом.

Приведенная ниже логическая схема показывает сдвиговый регистр параллельный в последовательный выход. Схема состоит из четырех D-триггеров, которые связаны между собой. Вход синхронизации напрямую подключен ко всем триггерам, но входные данные подключаются индивидуально к каждому триггеру через мультиплексор на входе каждого триггера. Выход предыдущего триггера и параллельный ввод данных подключены к входу MUX, а выход MUX подключен к следующему триггеру. Все эти триггеры синхронизированы друг с другом, так как один и тот же тактовый сигнал применяется к каждому триггеру.

Регистр сдвига Parallel in Serial out (PISO), который мы использовали для преобразования параллельных данных в последовательные.

Регистр сдвига с параллельным входом (PIPO) —

Сдвиговый регистр, который допускает параллельный ввод (данные передаются отдельно на каждый триггер и одновременно), а также создает параллельный вывод, известный как сдвиговый регистр с параллельным выходом.

Логическая схема, приведенная ниже, показывает сдвиговый регистр с параллельным параллельным выходом. Схема состоит из четырех D-триггеров, которые связаны между собой. Сигнал сброса (CLR) и тактовые сигналы подключены ко всем 4 триггерам. В этом типе регистров нет никаких взаимосвязей между отдельными триггерами, так как не требуется последовательное смещение данных. Данные вводятся в качестве входных данных отдельно для каждого триггера, и таким же образом вывод также собирается отдельно для каждого триггера.

Сдвиговый регистр Parallel in Parallel out (PIPO) используется в качестве временного запоминающего устройства и, подобно регистру сдвига SISO, он действует как элемент задержки.

Двунаправленный регистр сдвига —

Если мы сдвигаем двоичное число влево на одну позицию, это эквивалентно умножению числа на 2, а если мы сдвигаем двоичное число вправо на одну позицию, это эквивалентно делению числа на 2. Чтобы выполнить эти операции нам нужен регистр, который может сдвигать данные в любом направлении.

Двунаправленные регистры сдвига — это регистры, которые могут смещать данные вправо или влево в зависимости от выбранного режима. Если выбран режим 1 (высокий), данные будут смещены в правильном направлении, а если выбран режим 0 (низкий), данные будут смещены в левом направлении.

Логическая схема, приведенная ниже, показывает двунаправленный сдвиговый регистр. Схема состоит из четырех D-триггеров, которые связаны между собой. Входные данные подключаются на двух концах цепи и в зависимости от выбранного режима только один, а вентиль находится в активном состоянии.

Счетчик регистра сдвига —

Счетчики сдвиговых регистров — это сдвиговые регистры, в которых выходы подключены обратно к входам для создания определенных последовательностей. Это в основном два типа:

Читайте так же:
Счетчик дней без аварий

    Кольцо Счетчик —

Кольцевой счетчик — это, в основном, счетчик сдвиговых регистров, в котором выход первого триггера соединен со следующим триггером и т. Д., А выход последнего триггера снова возвращается на вход первого триггера, таким образом счетчик именных колец. Шаблон данных в регистре сдвига будет циркулировать, пока применяются тактовые импульсы.

Приведенная ниже логическая схема показывает счетчик колец. Схема состоит из четырех D-триггеров, которые связаны между собой. Поскольку схема состоит из четырех триггеров, шаблон данных будет повторяться после каждых четырех тактовых импульсов, как показано в таблице истинности ниже:

Счетчик звонка обычно используется, потому что он самодекодируется. Никакой дополнительной схемы декодирования не требуется, чтобы определить, в каком состоянии находится счетчик.

Счетчик Джонсона —
Счетчик Джонсона — это счетчик регистра сдвига, в котором выход первого триггера соединен со следующим триггером и т. Д., А инвертированный выход последнего триггера снова возвращается на вход первого триггера. Они также известны как счетчики витых колец.

Приведенная ниже логическая схема показывает счетчик Джонсона. Схема состоит из четырех D-триггеров, которые связаны между собой. N-ступенчатый счетчик Джонсона дает последовательность счетчиков из 2n различных состояний, также известную как счетчик mod-2n. Поскольку схема состоит из четырех триггеров, шаблон данных будет повторяться каждые восемь тактовых импульсов, как показано в таблице истинности ниже:

Основное преимущество счетчика Джонсона состоит в том, что ему требуется всего n триггеров по сравнению с кольцевым счетчиком для передачи данных для генерации последовательности из 2n состояний.

Типы регистров [ править ]

Регистры различают по типу ввода (загрузки, приёма) и вывода (выгрузки, выдачи) информации:

  1. С последовательным вводом и выводом информации
  2. С параллельным вводом и выводом информации
  3. С параллельным вводом и последовательным выводом. Например: SN74LS165J(N), SN74166J(N), SN74LS166J(N)
  4. С последовательным вводом и параллельным выводом. Например: SN7416J(N), SN74LS164J(N), SN74LS322J(N), SN74LS673J(N)

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

Помимо вышеописанных двоичных регистров, регистр может основываться и на иной системе счисления, например троичной [⇨] или десятичной.

Параллельные регистры [ править ]

В параллельных (статических) регистрах схемы разрядов не обмениваются данными между собой. Общими для разрядов обычно являются цепи тактирования, сброса/установки, разрешения выхода или приема, то есть цепи управления. Пример схемы статического регистра, построенного на триггерах типа D с прямыми динамическими входами, имеющего входы сброса и выходы с третьим состоянием, управляемые сигналом EZ.

Сдвигающие (последовательные) регистры [ править ]

Последовательные (сдвигающие) регистры представляют собою цепочку разрядных схем, связанных цепями переноса. Основной режим работы — сдвиг разрядов кода от одного триггера к другому на каждый импульс тактового сигнала. В однотактных регистрах со сдвигом на один разряд вправо слово сдвигается при поступлении тактового сигнала. Вход и выход последовательные (англ. Data Serial Right, DSR ).

Читайте так же:
Счетчик километров для велосипеда механический

Согласно требованиям синхронизации в сдвигающих регистрах, не имеющих логических элементов в межразрядных связях, нельзя применять одноступенчатые триггеры, управляемые уровнем, поскольку некоторые триггеры могут за время действия разрешающего уровня синхросигнала переключиться неоднократно, что недопустимо. Появление в межразрядных связях логических элементов, и тем более, логических схем неединичной глубины упрощает выполнение условий работоспособности регистров и расширяет спектр типов триггеров, пригодных для этих схем. Многотактные сдвигающие регистры управляются несколькими синхропоследовательностями. Из их числа наиболее известны двухтактные с основным и дополнительным регистрами, построенными на простых одноступенчатых триггерах, управляемых уровнем. По такту С1 содержимое основного регистра переписывается в дополнительный, а по такту С2 возвращается в основной, но уже в соседние разряды, что соответствует сдвигу слова. По затратам оборудования и быстродействию этот вариант близок к однотактному регистру с двухступенчатыми триггерами.

  • SN74ALS164 (КР1533ИР8) — восьмиразрядный сдвиговый регистр с последовательной загрузкой и параллельной выгрузкой. Оснащён двумя входами, A и B, что позволяет заперев один из них (установив на нём низкий уровень напряжения по положительному фронту тактового импульса), осуществлять ввод данных в последовательном коде по другому входу.
  • SN74ALS165 (КР1533ИР9), SN74ALS166 (КР1533ИР10) — восьмиразрядный сдвиговый регистр с последовательной выгрузкой, работающий в двух режимах: параллельной загрузки и сдвига,
  • SN74198 (КР155ИР13) — восьмиразрядный реверсивный сдвиговый регистр, имеющий четыре режима работы: параллельная загрузка, сдвиг влево, сдвиг вправо и блокировка.
  • SN74LS295 (КР1533ИР16) — четырёхразрядный сдвиговый регистр с параллельной загрузкой и тремя состояниями выходов, имеющий три режима работы: параллельная загрузка, сдвиг влево и блокировка. На основе регистра может быть построен реверсивный сдвигающий регистр с последовательным вводом данных и режимами сдвига влево и вправо [20] .
  • 74HC595N (КР1564ИР52) — восьмиразрядный сдвиговый регистр с защелкой, имеющий возможность параллельного или последовательного объединения с тремя состояниями на выходе: высокий, низкий и высоко-импедансный.

Для того чтобы пользователь мог просматривать данные, содержащиеся в регистре накопления, система поддерживает форму представления регистра накопления — форму списка. Она позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям.

Система может автоматически генерировать эту форму. Наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо формы умолчанию, в том числе и форму набора записей, которая позволяет добавлять, изменять и удалять записи регистра сведений.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector