Sfera-perm.ru

Сфера Пермь
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Счетчик с управляемым сбросом

Счетчик звонков — Ring counter

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

Есть два типа кольцевых счетчиков:

  • Прямой кольцевой счетчик , также известный как один горячий счетчик , соединяет выход последнего регистра сдвига для первого сдвигового регистра ввода и циркулирует один (один или ноль) бит вокруг кольца.
  • Витой кольцевой счетчик , называемые также переключатель хвост кольцевого счетчиком , ходить кольцевой счетчик , счетчик Джонсона , или Möbius счетчик , соединяет дополнение выхода последнего регистра сдвига на вход первого регистра и циркулирует поток единиц с последующим нули по кругу.

СОДЕРЖАНИЕ

  • 1 Последовательности четырехбитового счетчика звонков
  • 2 свойства
  • 3 Логические схемы
  • 4 История
  • 5 приложений
  • 6 См. Также
  • 7 Примечания
  • 8 ссылки

Последовательности четырехбитного счетчика звонков

Прямой кольцевой счетчикСчетчик Джонсона
СостояниеQ0Q12 квартал3 кварталСостояниеQ0Q12 квартал3 квартал
1
1111
21211
313111
141111
115111
21611
3171
1

Характеристики

Кольцевые счетчики часто используются при проектировании оборудования (например, при проектировании ASIC и FPGA ) для создания конечных автоматов . Для двоичного счетчика потребуется схема сумматора , которая существенно сложнее кольцевого счетчика и будет иметь более высокую задержку распространения при увеличении количества битов, тогда как задержка распространения кольцевого счетчика будет почти постоянной независимо от количества битов в коде. .

Прямая и скрученная формы имеют разные свойства, а также относительные преимущества и недостатки.

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

Счетчики Джонсона иногда предпочитают, потому что они предлагают вдвое больше состояний счета из того же числа регистров сдвига и потому, что они могут самоинициализироваться из состояния все нули, не требуя ввода первого бита счета извне при запуске. -вверх. Счетчик Джонсона генерирует код, в котором соседние состояния различаются только на один бит (то есть имеют расстояние Хэмминга, равное 1), как в коде Грея , который может быть полезен, если битовая комбинация будет дискретизироваться асинхронно.

Когда требуется полностью декодированное или одноразовое представление состояния счетчика, как в некоторых контроллерах последовательности, предпочтительным является прямой кольцевой счетчик. Свойство one-hot означает, что набор кодов разделен минимальным расстоянием Хэмминга, равным 2, поэтому любая однобитовая ошибка обнаруживается (как и любой шаблон ошибки, кроме включения одного бита и выключения одного бита).

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

Логические схемы

Счетчик прямого кольца имеет логическую структуру, показанную здесь:

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

Счетчик Джонсона, названный в честь Роберта Ройса Джонсона , представляет собой кольцо с инверсией; вот 4-битный счетчик Джонсона:

Обратите внимание на небольшой пузырек, указывающий на инверсию Q-сигнала из последнего сдвигового регистра перед подачей обратно на первый вход D, что делает его счетчиком Джонсона.

История

До появления цифровых вычислений цифровые счетчики использовались для измерения скорости случайных событий, таких как радиоактивный распад на альфа- и бета-частицы. Счетчики с быстрым «предварительным масштабированием» снизили частоту случайных событий до более управляемых и более регулярных. Кольцевые счетчики с пятью состояниями использовались вместе со скейлерами с делением на два для создания декадных (степень десяти) скейлеров до 1940 года, таких как те, что были разработаны CE Wynn-Williams .

Ранние кольцевые счетчики использовали только один активный элемент (электронная лампа, клапан или транзистор) на каскад, полагаясь на глобальную обратную связь, а не на локальные бистабильные триггеры, для подавления состояний, отличных от одного горячего состояния, например, в патентной заявке 1941 года. от Роберта Э. Мамма из Национального Наличный Registor компании . Уилкокс П. Овербек изобрел версию, использующую несколько анодов в одной вакуумной лампе. В знак признания его работы кольцевые счетчики иногда называют «кольцами Овербека» (а после 2006 года иногда называют «счетчиками Овербека», поскольку Википедия использовала этот термин. с 2006 по 2018).

Эниак использовал десятичную арифметику на основе 10-состояний одного докрасна кольцевых счетчиков. Работы Муммы в NCR и Овербека в Массачусетском технологическом институте были среди произведений известного уровня техники, исследованных патентным бюро при признании недействительными патентов Дж. Преспера Эккерта и Джона Мочли на технологию ENIAC.

К 1950-м годам появились кольцевые счетчики с двухтрубным или двухтриодным триггером на каскад.

Роберт Ройс Джонсон разработал ряд различных счетчиков на основе регистра сдвига с целью создания разного количества состояний с простейшей возможной логикой обратной связи и подал заявку на патент в 1953 году. Счетчик Джонсона является самым простым из них.

Приложения

Ранние применения кольцевых счетчиков были в качестве предделителей частоты (например, для счетчика Гейгера и подобных инструментов), в качестве счетчиков для подсчета появлений шаблонов в криптоанализе (например, в машине взлома кода Хита Робинсона и компьютере Colossus ), а также в качестве элементов счетчика-накопителя для десятичной арифметики в компьютеры и калькуляторы, использующие либо двухпятиуровневое (как в Colossus), либо одно-горячее представление с десятью состояниями (как в ENIAC ).

Читайте так же:
Должен ли жилец платить за установку общедомового счетчика

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

Помимо того, что это эффективный альтернативный способ генерации оперативных кодов и частотных предварительных масштабаторов, счетчик Джонсона также является простым способом кодирования цикла с четным числом состояний, которые могут быть дискретизированы асинхронно без сбоев, поскольку только один бит изменяется в время, как в коде Грея . Ранние компьютерные мыши использовали восходящие (двунаправленные) 2-битные кодировки Джонсона или Грея для обозначения движения в каждом из двух измерений, хотя у мышей эти коды обычно генерировались не кольцами триггеров (а вместо этого электромеханическими или оптические квадратурные энкодеры ). 2-битный код Джонсона и 2-битный код Грея идентичны, в то время как для 3 или более битов коды Грея и Джонсона различны. В 5-битном случае код такой же, как код Либоу – Крейга [ de ] для десятичных цифр.

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

Водосчётчики со сбросом показаний

Подскажите, есть ли в природе счётчики жидкости со сбросом, простые не электронные? Или можно стандартный «прокачать» и организовать сброс, хотя маловероятно. Нужен счётчик ресурса фильтров, заменил фильтр — сбросил показания и опять по кругу.

А запись на бумажку показаний не поможет в столь сложном вопросе?

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

Все же бумажка наклееная на фильтре с данными это более продвинутый и современный вариант .

Бумажки и карандашики в век, когда космические корабли бороздят просторы Большого театра, как-то неспортивно и примитивно. К тому же бумажки имеют тенденцию теряться. И если уж ставить прибор учёта, так зачем нагружать себя любимого описью имущества . Да и вопрос был в другом, а так да, можно вёдрами расход мерить, дёшего и сердито.

philosophist , а что за фильтр?

MaKon , да без разницы, хоть ВВ20 с разной загрузкой, хоть те, что в колбах обратноосмотических, вопрос в принципе. Ну как подсчитать расход? Правильно, расходомером, сменные элементы не дешёвые да и охота, чтоб всё было по правильному. Найти решение и просто им пользоваться. Обычный инженерный подход к задаче. Я и спрашиваю, может кто ломал обычные водосчётчики, как там у них эти «одометры» устроены, может там какой шпинёк можно выкусить и механической тягой сбрасывать этот арифмометр.

philosophist , разница большая. Счетчик поток до обратного осмоса не всегда чует. Вообще я для них видел расходомеры. Они были под John Guest

MaKon написал :
philosophist , разница большая. Счетчик поток до обратного осмоса не всегда чует.

это просто шестеренка некрутится, а сам счетчик успешно считает расход при осмосе

philosophist написал :
может там какой шпинёк можно выкусить и механической тягой сбрасывать этот арифмометр.

Ну зачем в систему добавлять еще один элемент. Который может быть не надежным ?

Открою Вам военную тайну — есть бумажки с клеевым слоем и такую «военную» бумажку можно и наклеить на фильтр.

DmKa написал :
а сам счетчик успешно считает

расскажите физику этого процесса пожалуйста.

MaKon написал :
расскажите физику этого процесса пожалуйста.

А при чем тут физика? Тут химия.

Просто понаблюдайте за счетчиков в режиме когда вода льется очень тонкой струей .

Если не крутится, то не считает.

DmKa , извините, но вы говорите ерунду.

MaKon написал :
DmKa, извините, но вы говорите ерунду.

Не извиняю ибо ерунду не говорю.

Были и другие темы на данном форуме где это обсуждалось давным давно .

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

MaKon написал :
DmKa , расскажите пожалуйста для непросвещенных каким образом счетчик считает воду, когда визуальный указатель, соединенный с крыльчаткой, не вращается.

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

DmKa написал :
Самый слабенький ОО фильтр потребляет в работе 0,5 л/мин

DmKa написал :
наблюдая даже 5 минут можно не заметить его движения

что-то дебет с кредитом не сходится
а покажите пожалуйста пример счетчика о котором мы говорим

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

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

MaKon написал :
Но говорить о том что счетчик считает когда отсутствует вращение крыльчатки — это перебор.

Я и данную информацию читал на данном форуме. К сожалению поиском найти тему не удалось.

MaKon написал :
А ситуацию когда она меееееееедленно вращается мы рассматривать не будем ибо она на грани фола.

У меня сосед владеет аквариумом на 1200 литров и осмотическую воду использует по 200 литров в неделю. По его наблюдениям . счетчик не вращается, но показания набегают

DmKa написал :
счетчик не вращается, но показания набегают

Варианты:
1) Отломан от оси индикатор расхода, что врятли
2) Происки инопланетян

Читайте так же:
Что ждет тех у кого нет счетчиков

Столкнулся с такой же надобностью учета фильтрованной воды. Спец девайсы дорого, и не спортивно (я ж инженер!). Нашел вашу тему, провел эксперимент. Результаты привожу.
Приобрел за 100р б/у водосчетчик и делал так: Разбираем (отделяем железо от блока учета, для этого снимаем опломбированное кольцо), изучаем расположение шестерней (все видно,т.к. все из прозрачного пластика). Находим крыльчатку, отвечающую за вращение цифр. делаем в этом месте в корпусе отверстие (мне пришлось сделать 2 отверстия, все зависит от вашей конструкции). Берем два инструмента (можно отвертки, ножи и т.д., но лучше мед. шпатель), одним шпателем слегка отгибаем червячную шестерню (она непосредственно вращает венец-крыльчатку), вторым аккуратно, но быстро крутим крыльчатку против часовой. В итоге доводим показания до необходимых, в моем случае до 00000. Для более точного подгона нежно вращаем промежуточные шестерни, отвечающие за литры. Все операции с механикой надо проводить очень осторожно, т.к. можно легко перестараться и сломать какой-нибудь зуб, что приведет к повреждению всей дальнейшей передачи момента. В результате осторожных, но уверенных действий я выставил показания с 434 куба до «по нулям» за 5 минут. Затем заклеиваем отверстия скотчем и собираем счетчик в обратном порядке. Весь процесс занял 30 минут.
Минусы своего метода нахожу только в изменении конструкции корпуса (появились отверстия), что неприемлемо например для учета воды на вводе в квартиру, но совершенно все равно при учете фильтрованной воды. Возможно, что при каждой смене скручивать не очень удобно, но и необходимости в этом я не вижу. Т.к. фильтр рассчитан например на 5000л то после прохождения отметки в 5 кубов меняем фильтр и ждем 10 кубов, меняем и т.д. Вы ж после 15т км в машине меняете масло, при этом одометор до 0 не скидываете, а катаетесь од 30т, здесь я придерживаюсль такого же принципа.
з.ы. а на наклейке из «секретной» бумажки написать «5 кубов — замена фильтров»
з.з.ы. при большом желании можно легко вскрыть весь корпус и крутить там что угодно, но я решил обойтись малой кровью.

Двоично-кодированные счетчики

Как уже отмечалось ранее, двоично-кодированный счетчик имеет модуль счета, отличный от целой степени числа 2. Примером такого счетчика может служить счетчик с модулем счета 10, т. е. двоично-десятичный счетчик.

Для построения счетчика с произвольным модулем М используется разрядность (количество триггеров) n=]log2M[, где ][ — знак округления до ближайшего большего целого числа. Иными словами, исходной структурой как бы служит двоичный счетчик с модулем 2 n , превышающим заданный и ближайшим к нему. Такой двоичный счетчик имеет 2 n –М=L лишних (неиспользуемых) состояний, подлежащих исключению.

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

В счетчиках с исключением последних состояний счет ведется обычным способом вплоть до достижения числа М–1. Далее последовательность переходов счетчика в направлении роста регистрируемого числа должна быть прервана, и следующее состояние должно быть нулевым. При этом счетчик будет иметь М внутренних состояний (от 0 до М–1), т. е. его модуль счета будет равен заданному значению М.

При построении таких счетчиков получили распространение в основном два метода:

· метод исключения лишних состояний (или как его еще называют метод модификации межразрядных связей);

· метод управляемого сброса.

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

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

Рассмотрим более подробно этот метод на примере построения счетчика с модулем счета M=5. Отметим, что методика синтеза может быть полностью стандартизирована при использовании для минимизации логических функций управленияJиKвходами триггеров счетчика метода карт Карно (см. пример синтеза счетчика-делителя на 3 в методических указаниях к ЛР №2 по ЭПУ). Карты Карно делают синтез более надежным и наглядным, хотя при достаточной внимательности можно ограничиться и таблицей состояний с сигналами возбуждения используемых триггеров [2] (см. табл. 2.9).

Читайте так же:
Joomla установка счетчика сайта

8. Классификация, основные параметры двоичных шифраторов и дешифраторов.

Шифратор — это комбинационное устройство, преобразующее десятичные числа в двоичную систему счисления, причем каждому входу может быть поставлено в соответствие десятичное число, а набор выходных логических сигналов соответствует определенному двоичному коду. Шифратор иногда называют «кодером» (от англ. coder) и используют, например, для перевода десятичных чисел, набранных на клавиатуре кнопочного пульта управления, в двоичные числа. Если количество входов настолько велико, что в шифраторе используются все возможные комбинации сигналов на выходе, то такой шифратор называется полным, если не все, то неполным. Число входов и выходов в полном шифраторе связано соотношениемn = 2 m , где n — число входов, m — число выходов. Так, для преобразования кода кнопочного пульта в четырехразрядное двоичное число достаточно использовать лишь 10 входов, в то время как полное число возможных входов будет равно 16 (n = 2 4 = 16), поэтому шифратор 10×4 (из 10 в 4) будет неполным.

Рассмотрим пример построения шифратора для преобразования десятиразрядного единичного кода (десятичных чисел от 0 до 9) в двоичный код. При этом предполагается, что сигнал, соответствующий логической единице, в каждый момент времени подается только на один вход. Условное обозначение такого шифратора и таблица соответствия кода приведены на рис. 3.35.

Используя данную таблицу соответствия, запишем логические выражения, включая в логическую сумму те входные переменные, которые соответствуют единице некоторой выходной пере­менной. Так, на выходе у1 будет логическая «1» тогда, когда логическая «1» будет или на входе Х1,или Х3, или Х5, или Х7, или X9, т. е.

Представим на рис. 3.36 схему такого шифратора, используя элементы ИЛИ.

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

«1», т. е. на приоритетный шифратор допускается подавать сигналы на несколько входов, а он выставляет на выходе код числа, соответствующего старшему входу.

Рассмотрим в качестве примера (рис. 3.37) шифратор с приоритетом (приоритетный шифратор) К555ИВЗ серии микросхем К555 (ТТЛШ).

Шифратор имеет 9 инверсных входов, обозначенных через PRl, . PR9 . Аббревиатура PR обозначает «приоритет». Шифратор имеет четыре инверсных выхода Bl, . B8 . Аббревиатура B означает «шина» (от англ. bus). Цифры определяют значение активного уровня (нуля) в соответствующем разряде двоичного числа. Например, B8 обозначает, что ноль на этом выходе соответствует числу 8. Очевидно, что это неполный шифратор.

Если на всех входах — логическая единица, то на всех выходах также логическая единица, что соответствует числу 0 в так называемом инверсном коде (1111). Если хотя бы на одном входе имеется логический ноль, то состояние выходных сигналов определяется наибольшим номером входа, на котором имеется логический ноль, и не зависит от сигналов на входах, имеющих меньший номер.

Например, если на входе PR1 — логический ноль, а на всех остальных входах — логическая единица, то на выходах имеются следующие сигналы: В1 − 0, В2 − 1, В4− 1, В8 − 1, что соответствует числу 1 в инверсном коде (1110).

Если на входе PR9 логический ноль, то независимо от других входных сигналов на выходах имеются следующие сигналы: В1 − 0 , В2 − 1 , В4 − 1, В8 − 0, что соответствует числу 9 в инверсном коде (0110).

Основное назначение шифратора — преобразование номера источника сигнала в код (например, номера нажатой кнопки некоторой клавиатуры).

Дешифратором называется комбинационное устройство, преобразующее n-разрядный двоичный код в логический сигнал, появляющийся на том выходе, десятичный номер которого соответствует двоичному коду. Число входов и выходов в так называемом полном дешифраторе связано соотношением m = 2 n , где n — число входов, а m — число выходов. Если в работе дешифратора используется неполное число выходов, то такой дешифратор называется неполным. Так, например, дешифратор, имеющий 4 входа и 16 выходов, будет полным, а если бы выходов было только 10, то он являлся бы неполным.

Обратимся для примера к дешифратору К555ИД6 серии К555 (рис. 3.38).

Дешифратор имеет 4 прямых входа, обозначенных через А1, . А8. Аббревиатура A обозначает «адрес» (от англ. address). Указанные входы называют адресными. Цифры определяют значения активного уровня (единицы) в соответствующем разряде двоичного числа.

Дешифратор имеет 10 инверсных выходов Y, . Y9. Цифры определяют десятичное число, соответствующее заданному двоичному числу на входах. Очевидно, что этот дешифратор неполный.

Значение активного уровня (нуля) имеет тот выход, номер которого равен десятичному числу, определяемому двоичным числом на входе. Например, если на всех входах — логические нули, то на выходе Y — логический ноль, а на остальных выходах — логическая единица. Если на входе А2 — логическая единица, а на остальных входах — логический ноль, то на выходе Y2 — логический ноль, а на остальных выходах — логическая единица. Если на входе — двоичное число, превышающее 9 (например, на всех входах единицы, что соответствует двоичному числу 1111 и десятичному числу 15), то на всех выходах — логическая единица.

Дешифратор — одно из широко используемых логических устройств. Его применяют для построения различных комбинационных устройств.

Рассмотренные шифраторы и дешифраторы являются примерами простейших преобразователей кодов.

9. Запоминающие устройства (классификация, система параметров). Основные структуры запоминающих устройств (2D, 3D, 2DM).

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

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.

Читайте так же:
Какие документы выдают при поверке счетчиков

Папиллярные узоры пальцев рук — маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.

Изучение различных схем счетчиков и их функционирования

Страницы работы

Содержание работы

Лабораторная работа 4.2

Цель работы

Изучение различных схем счетчиков и их функционирования, приобретение навыков в определении характеристик счетчиков.

Основные теоретические положения

Счетчик предназначен для подсчета числа поступающих на вход импульсов в произвольной системе счисления.

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

Файлы для моделирования счетчиков расположены в папке Lab_4_2Модели.

1 Суммирующий асинхронный двоичный счетчик

На рисунке 1 представлен асинхронный суммирующий счетчик. Подсчитываемые сигналы подаются на вход D. Переключение триггеров происходит по переднему фронту входного сигнала. Для сброса триггеров используется асинхронный приоритетный вход R(инверсное значение). Выходным сигналом счетчика является двоичный код Q2Q1Q, его возможные наборы записаны в таблице 1.

Рис. 1 Трехразрядный асинхронный суммирующий двоичный счетчик

Состояния трехразрядного счетчика Таблица 1

Каждый поступающий на вход счетчика импульс переводит триггер D1 в противоположное состояние. Сигнал с инверсного выхода предыдущего триггера является входным сигналом для последующего.

Триггеры переключаются в разные моменты времени, поэтому счетчик называется асинхронным.

Характеристикой счетчика является коэффициент пересчета KСЧ =2 3 . Максимальное число импульсов, которое может подчитать счетчик N = 2 3 -1. После поступления восьмого импульса D, счетчик возвращается в исходное состояние.

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

2 Вычитающий асинхронный двоичный счетчик

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

Рис. 2 Трехразрядный асинхронный вычитающий двоичный счетчик

Инверсия выходных данных счетчика позволяет изменять операцию суммирования на вычитание и обратно (рис. 3).

Рис. 3 Трехразрядный асинхронный

суммирующий-вычитающий двоичный счетчик

3 Реверсивные двоичные счетчики

Счетчики, способные выполнять операции сложения и вычитания согласно сигналу управления, называются реверсивными (рис. 4).

По сигналу U1 =0, U2 =1 счетчик работает, как суммирующий. При U1 =1, U2 =0 схема выполняет функцию вычитающего счетчика. Переключение через комбинацию управляющих сигналов U1 =1, U2 =1. Вход R для сброса.

Рис. 4 Трехразрядный реверсивный двоичный счетчик

4 Счетчики по модулю n

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

Модель суммирующего асинхронного счетчика с KСЧ= 5 представлена на рисунке 5. После формирования последнего числа из ряда целых чисел 0, 1,…, 4, осуществляется переход к 0 (а не к 5). Двоичные коды чисел 5, 6, 7 являются запрещенными, и их появление приводит к сбросу данных во всех разрядах счетчика. Выявление запрещенных комбинаций осуществляют логические элементы 2И-НЕ. Недостатком схемы является кратковременное появление запрещенного состояния перед сбросом.

Рис. 5 Счетчик по модулю 4

В представленной на рисунке 6 схеме счетчика выявляется факт попадания в состояние, которое предшествует запрещенному состоянию (код 100). С приходом очередного входного сигнала происходит сброс данных. Поэтому запрещенное состояние на выходах не появляется.

Рис. 6 Счетчик по модулю 4

5 Счетчик Джонсона

Данное устройство является также циклическим регистром, но часто применяется в качестве счетчика или делителя частоты. На рис. 7 счетчик реализован на D-триггерах, на рис. 8 – на JK-триггерах. Разница заключается в выборе момента переключения тактовым сигналом.

Рис. 7 Счетчик Джонсона на D-триггерах

Рис. 8 Счетчик Джонсона на JK-триггерах

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

Изучить работу двоичных счетчиков (рисунки 1…8), определить логические сигналы на их выходах.

Определить назначение счетчика, модель которого в файле: L4_C_04.ewb. Ответ указать в таблице 2, удалив лишнее.

Таблица к заданию 2 Таблица 2

Назначение триггера

Суммирующий асинхронный двоичный счетчик

Вычитающий асинхронный двоичный счетчик

Реверсивные двоичные счетчики

Счетчики по модулю n

С помощью реверсивного счетчика (рис. 4) провести подсчет импульсов от 0 до 4 в режиме суммирования (файл L4_C_05.ewb). Затем переключиться в режим вычитания (через комбинацию управляющих сигналов U1 =1, U2 =1) и считать от 4 до 0.

Перед повторением моделирования рекомендуется осуществлять сброс. В процессе подачи входного сигнала не оставлять выключатель D в замкнутом состоянии. Результаты занести в таблицу 3.

Введение

По сути, таймер микроконтроллера — это цифровой счетчик, только «навороченый». На вход счетчика подается тактовый сигнал, по перепадам которого счетчик увеличивает свое значение. При возникновении событий — переполнение счетчика или совпадение его значения с заданным — генерируется запрос на прерывание.

Давайте разберем, как пользоваться таймером Т0 в режиме Normal. В этом режиме таймер считает от какого-то начального значения счетного регистра до максимально возможного (до 255 или 0xFF). Когда таймер Т0 досчитывает до максимума, то в следующий такт таймера возникает переполнение счетного регистра TCNT0 — он обнуляется и устанавливается флаг TOV0. Если в программе разрешены прерывания глобально (флаг I регистра SREG) и прерывание таймера Т0 по переполнению (флаг TOIE0 регистра TIMSK), то микроконтроллер вызовет соответствующий обработчик. Если значение счетного регистра совпадет с регистром сравнения OCR0, то установится флаг OCF0 и при разрешенном прерывании по событию совпадение, запустится его обработчик.

Таймер Т0 в режиме Normal

Рассмотрим практическую задачу — нам нужно каждые 20 мс опрашивать кнопку. Частота микроконтроллера 8 МГц, микроконтроллер ATmega16.

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

Читайте так же:
Реверсивного счетчика с предустановкой

Таймер Т0 может тактироваться от внутреннего тактового сигнала микроконтроллера или от внешнего, который подается на вывод Т0. При работе от внутреннего тактового сигнала пользователь может выбирать коэффициенты деления частоты этого сигнала. У таймера Т0 есть пять возможных вариантов коэффициента предделителя — 1, 8, 64, 256, 1024.

Для решения поставленной задачи, я рассуждаю следующим образом. Если бы один такт таймера Т0 имел период 1 мс, то мне бы это подошло. 20 тактов дают 20 мс. Какой коэффициент предделителя таймера позволит получить близкий к 1 мс период тактовой частоты? Можно посчитать.

Тактовая частота микроконтроллера Fcpu = 8000000 Гц
Период тактового сигнала микроконтроллера Tcpu = 1/Fcpu
Период тактового сигнала таймера Т0 равен Tt0 = (1/Fcpu)/k = k/Fcpu

При k = 1024 период тактовой частоты таймера Т0 будет равен Tt0 = 1024/8000000 = 0.128 мс

Это максимальный период тактового сигнала таймера, который мы можем получить при наших условиях (Fcpu = 8 МГц). При меньших коэффициентах — период получится еще меньше.

Ну хорошо, пусть один такт таймера это 0.128 мс, хватит ли разрядности счетного регистра, чтобы отсчитать этот временной интервал и сколько для этого понадобится тактов? Делим требуемый интервал времени (20 мс) на длительность одного такта таймера и получаем ответ.

n = t/Tto = 20 мс/ 0.128 мс = 156.25

Округлив до целого, получаем 156 тактов. Это меньше 255 (максимального значения счетного регистра), значит разрядности счетного регистра TCNT0 хватит.

Начальное значение для счетного регистра TCNT0 вычисляем как разницу между максимальным числом тактов таймера Т0 и требуемым, то есть 256 — 156 = 100. (256 — это максимальное количество временных интервалов, которые может отсчитать любой 8-и разрядный таймер.)

Думаю, теперь понятно, как рассчитывать начальное значение TCNT0 для режима Normal:

— вычисляем период одного такта таймера Tt0 = k/Fcpu,
— вычисляем требуемое количество тактов для заданного интервала n = t/Tto,
— вычисляем начальное значение для счетного регистра TCNT0 = 256 — n.

Можно автоматизировать эту процедуру с помощью макросов. Например, так:

Но с таким макросом нужно быть начеку, при определенных значениях time и k могут возникать ошибки.

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

Инициализация таймера состоит из следующих шагов:

— остановка таймера,
— задание режима Normal в TCCR0 без старта,
— установка начального значения TCNT0,
— сброс флагов в регистре TIFR,
— разрешение прерывания по переполнению в TIMSK,
— установка предделителя в TCCR0, то есть старт таймера

В данной последовательности возможны вариации.

Для нашей задачи код инициализации будет выглядеть так:

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

Сброс флагов прерываний в регистре TIFR выполняется записью 1 в соответствующий разряд. Эту операцию нужно выполнять именно перезаписью регистра, а не с помощью побитового ИЛИ. И вот почему.

Допустим, в регистре TIFR устанавлены два флага прерывания — TOV1 и TOV0. TOV0 нам нужно сбросить. При установке требуемого разряда с помощью ИЛИ происходит примерно следующая вещь.

В результате сброшены оба флага, а мы хотели сбросить один.

Синтаксис описания обработчиков прерывания у разных компиляторов немного отличается. Для IAR`a обработчик прерывания таймера Т0 по событию переполнение будет выглядеть так:

TIMER0_OVF_vect — это адрес вектора прерывания по событию переполнение. Он берется из заголовочных файлов на микроконтроллер. В данном случае я взял его из файла iom16.h.

Первая строка обработчика (TCNT0 = T_POLL;) выполняет перезапись счетного регистра, то устанавливает его начальное значение. Если этого не сделать, таймер продолжит счет с 0. Перезапись счетного регистра нужно выполнять в начале обработчика прерывания.

Весь код для нашей задачи будет выглядеть примерно так. (Код приведен для IAR`a. Для других компиляторов нужно изменить заголовочные файлы и обработчик прерывания.)

Управление выводом OC0

В режиме Normal таймер Т0 может изменять состояние вывода OC0 при совпадении счетного регистра и регистра сравнения. Причем даже без прерываний. Варианты управления определяются разрядами COM01 и COM00 регистра TCCR0.

Вот пример программы, генерирующей прямоугольный сигнала на выводе ОС0.

Вывод ОС0 будет менять свое состояние на противоположное при нулевом значении счетного регистра.

Несколько моментов относительно использования таймера

Обработчик прерывания таймера (да и любой другой периферии) нужно делать как можно короче.

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

Если нужно отсчитать большой временной интервал, разрядности таймера может не хватить. В этом случае нужно использовать или 16 разрядный таймер, или программный.

И последнее. Может случится ситуация, что обработка прерывания таймера задержится (например, по вине другого обработчика) и регистр TCNT0 уже посчитает несколько тактов. Если просто перезаписать значение TCNT0, то следующее прерывание вызовется позже, чем нужно. Получится, что предыдущее (задержанное) и новое прерывания не выдержат требуемый интервал.

Эту ситуацию можно сгладить, если выполнять перезапись счетного регистра вот так:

TCNT0 = TCNT0 + startValue;

Сложение текущего значения счетного регистра с инициализируемым, учтет эти лишние такты. Правда есть одно НО! При больших значения startValue операция сложения может вызвать переполнение счетного регистра.

Например, startValue = 250, а таймер успел досчитать до 10. Тогда операция сложения приведет к такому результату:

Берем 8 разрядов от 260 получаем 4. В TCNT0 запишется 4.

Ссылки

Учебный курс AVR. Таймер — счетчик Т0. Регистры. Ч1

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