Как получить делитель частоты на три
Делитель частоты на PIC
Автор: mig958
Опубликовано 12.09.2017
Создано при помощи КотоРед.
Участник Конкурса «Поздравь Кота по-человечески 2017!»
Очень часто бывает необходим делитель частоты. Собирать его на счетчиках? А если разделить нужно например на 1000000? или на что-то не стандартное. 6 корпусов десятичных счетчиков — это уже целое устройство. Если частота не превышает 20 — 25 МГц и разделить нужно не менее чем на 12 (к сожалению кратно четырем из-за формирователя команд) — отличный выход — применение микропроцессора. У Микрочип есть недорогие малогабаритные микропроцессоры, например 6 выводные PIC10F222T, или 8 выводные PIC12F629 и так далее. Разнообразие их очень велико. Они обладают очень низким энергопотреблением, большой нагрузочной способностью и они полностью статические. То есть их можно тактировать очень низкой частотой. Недавно мне потребовался делитель на 8000. Я долго ломал голову, уж очень не хотелось паять кучу счетчиков. И тут меня осенило . «Эврика» воскликнул я и попробовал симулировать это в Proteus. Хочу поделиться полученным результатом. Вот программа на ассемблере для PIC12F629 деление на 2000. Кстати бесплатно получается еще на 8000 и на 16000.
В чем суть программы: микропроцессор тактируется внешним сигналом, выбираем нужный порт на выход и в цикле производим инкремент порта и нужную задержка и опять в цикл. Таким образом на выводах порта у нас получается несколько частот кратных двум. Сложность только в том как найти задержку. В этом нам поможет программа: PIC_Delay.
В ней уже учитывается деление на 4 формирователя тактов команды. Например рассчитаем делитель на 2000. Для удобства примем входную частоту 1МГц. Тогда нам нужна задержка на 1000мкс на половину периода. Учтем что у нас есть две команды не входящие в задержку: incf GPIO, GOTO Cikl0. Причем первая занимает один машинный такт а вторая два, с учетом делителя формирователя тактов: нужно вычесть из задержки 12мкс. Результат программы вставляем между инкрементом и циклом.
В Proteus собираем схему:
Наличие же на борту схемы генератора, позволяет сделать кварцевый генератор очень маленького размера. Например на частоту 1МГц и ниже найти приличный малогабаритный кварцевый резонатор или генератор очень трудно. Используя входы можно легко сделать управляемый делитель. А так как на борту у многих присутствуют компараторы, АЦП, таймеры, то вариантов применения становится ну очень много.
Делитель частоты с «меандром» на выходе
Построение делителей на нечетное число обычно сопряжено с тем, что выходной сигнал сильно отличается от «меандра», т. е. длительность высокого уровня не равна длительности низкого или, иными словами, скважность выходного сигнала не равна двум.
Предлагаемое схемотехническое решение для делителей на 3 и на 5 позволяет получить на выходе чистый «меандр», что для некоторых конструкций является необходимым. Делитель на 3, изображенный на рисунке 1, построен на двух D — триггерах (микросхема DD1) и элементе ИЛИ. Диаграмма работы, поясняющая работу такого делителя, изображена на рисунке 2.

Рисунок 1. Делитель на 3 с меандром на выходе на элементе ИЛИ

Рисунок 2. Диаграмма работы делителя на 3
Если под рукой не оказалось элемента ИЛИ, то аналогичный делитель можно построить на элементе И-НЕ. Схема такого делителя на 3 изображена на рисунке 3, а диаграмма работы его сходна с диаграммой предыдущей схемы (рис. 2).

Рисунок 3. Делитель на 3 с меандром на выходе на элементе И-НЕ
Для построения делителя на 5 потребуется еще один триггер и еще один логический элемент. Схема такого делителя на 5 изображена на рисунке 4, а диаграмма, поясняющая его работу, на рисунке 5.

Рисунок 4. Делитель на 5 с меандром на выходе

Рисунок 5. Диаграмма работы делителя на 5
Обе описанные схемы сохраняют скважность 2 лишь в том случае, если скважность входного сигнала также равна двум.
2.3. Построение делителей частоты с произвольным коэффициентом деления
Как было отмечено ранее, счётчики с успехом могут выполнять роль делителя частоты, осуществляющего деление на целую степень двойки. На практике часто возникает ситуация, когда необходимо осуществить деление частоты на число, которое степенью двойки не является. Возможные решения данной проблемы описаны ниже.
Четырехразрядный счетчик считает только до пятнадцати. Чтобы он считал до двух надо сбросить счетчик, как только он перейдет в состояние 0011. Для этого первый и второй разряд подаем через элемент И на вход асинхронного сброса счетчика (см. рис. 27). Согласно этому методу задача будет решена не совсем корректно, т.к. фактически счетчик досчитывает до трех и это видно на временной диаграмме (см. рис. 28). Но на самом деле в состоянии 0011 счетчик находится пренебрежительно мало времени (порядка нескольких наносекунд), т.к. этого промежутка времени хватает для сброса счетчика. На диаграмме рис. 28 сигнал reset соответствует тому сигналу, который сбрасывает счетчик.
Выше уже упоминалось, когда рассматривались схемы асинхронных счетчиков, что эти «ложные» состояния могут вносить ошибку в работу устройства на больших частотах, поэтому если у счетчика есть вход синхронного сброса, то лучше использовать его для наших целей. Синхронный сброс очищает счетчик при следующем синхроимпульсе. В случае, когда нам необходимо досчитать до двух, мы соединяем выход второго разряда с входом синхронного сброса. Временная диаграмма счетчика в этом случае приведена на рис. 29.

Рис. 27 Схема счетчика, считающего до двух

Рис. 28 Временная диаграмма счетчика считающего до двух с использованием асинхронного входа

Рисунок 29. Временная диаграмма счетчика считающего до двух с использованием входа синхронного сброса
Если внимательно изучить временные диаграммы на рис. 28 и 29, то можно заметить, что на выходе второго разряда счетчика (q1) частота с периодом втрое большим, чем у тактового сигнала, т.е. частота в три раза меньше тактовой. Таким образом, мы получили делитель частоты на три. Напомним, что в функции счетчика входит деление частоты, его выходы делят тактовую частоту по степеням двойки, т.е. первый делит на два, второй – на четыре и т.д.
Схема счётчика, считающего до пяти обсуждается ниже. При использовании входа асинхронного сброса, необходимо поступить аналогично предыдущему случаю, счетчик должен досчитать до шести и сброситься. Схема приведена на рис. 30, временная диаграмма на рис. 31.
Если использовать вход синхронного сброса, то на этот вход необходимо подать q0 ⋅q2 , временная диаграмма для этого случая представлена на рис. 32.

Рис. 30 Схема счетчика, считающего до пяти

Рис. 31 Временная диаграмма счетчика считающего до пяти с использованием входа асинхронного сброса

Рис. 32 Временная диаграмма счетчика считающего до пяти с использованием входа синхронного сброса
В режиме счета до пяти счетчик делит тактовую частоту на шесть.
3.7. Электронные счетчики и делители частоты
На базе счетных триггеров можно построить цифровое устройство, получившее название электронного счетчика. Электронные счетчики ( далее, просто счетчики) позволяют вести подсчет электрических импульсов, количество которых (поступивших на вход счетчика) представляется, обычно, в параллельном коде. Счетчики могут отличаться модулем счета и типом счетной последовательности, которая, в частности, может быть двоичной, двоично-десятичной, в коде Грея и т.п. Цифровые последовательностные устройства, выполненные по схеме счетчика, но имеющие один счетный вход и один выход называютсяделителямичастоты. Таким образом, любой счетчик может служить в качестве делителя частоты, если используется информация только одного из его выходов. Так как счетчики и делители имеют единую структуру, основное внимание будет уделено синтезу счетчиков.
Счетчики и делители подразделяются на асинхронныеисинхронные. У синхронных счетчиков все разрядные триггеры синхронизируются параллельно одними и теми же синхроимпульсами, поступающими из источника этих импульсов. Асинхронные счетчики имеют последовательную синхронизацию, т.е. каждый последующий разрядный триггер синхронизируется выходными импульсами триггера предыдущего разряда. Асинхронные счетчики иногда называютпоследовательными, а синхронные счетчики —параллельными.
Синхронные счетчики, в свою очередь, подразделяются на параллельно-синхронные и последовательно-синхронные. Параллельные счетчики имеют более высокую скорость счета, чем асинхронные.
Счетчики, независимо от способа синхронизации, подразделяются на счетчики прямого счета (суммирующие) и на счетчики обратного счета (вычитающие). В интегральном исполнении выпускаются также реверсивные счетчики, в которых имеется специальный вход для переключения режима работы, т.е. направления счета. Многие типы счетчиков, выпускаемые промышленностью в интегральном исполнении, имеют дополнительные входы предустановки, позволяющие использовать эти счетчики в режиме регистра памяти.
В качестве разрядных триггеров счетчиков и делителей могут быть использованы двухступенчатые D-триггеры, Т- и JK-триггеры.
Счетчики относятся к последовательностным устройствам с циклически повторяющейся последовательностью состояний. Число, соответствующее количеству импульсов (поступивших на вход счетчика), при котором счетчик “возвращается” в исходное состояние, называется модулем иликоэффициентомсчета. Модуль счета, обычно, обозначают буквойМ (или Ксч). Например, максимальный модуль счета счетчика из двух триггеров равен М = 2 2 = 4, трех триггеров — М = 2 3 = 8 и т.д. В общем случае для n — разрядного счетчика — М = 2 n . Модуль счета счетчика численно совпадает с модулем деления делителя частоты. Счетчик по модулю 8 позволяет реализовать (без дополнительных схемных затрат) делитель частоты на 8. Это значит, что данный делитель делит частоту входной импульсной последовательности на 8.
Асинхронный двоичный счетчик. Асинхронный двоичный счетчик представляет собой совокупность последовательно соединенных триггеров (D — или JK ), каждый из которых ассоциируется с битом в двоичном представлении числа. Если в счетчике mтриггеров, то число возможных состояний счетчика равно 2 m , и, следовательно, модуль счета М также равен 2 m . Счетная последовательность в двоичном суммирующем счетчике начинается с нуля и доходит до максимального числа 2 m — 1, после чего снова проходит через нуль и повторяется. В вычитающем двоичном счетчике последовательные двоичные числа перебираются в обратном порядке, и при повторении последовательности максимальное число следует за нулем.
Рассмотрим устройство двоичного суммирующего счетчика по модулю М=16, выполненного на базе JK-триггеров (рис. 3.33, а).
Как видно из рис. 3.33, (а), синхронизирующие входы всех триггеров, кроме крайнего левого (Т1), соединены с выходами предыдущих триггеров. Поэтому состояние триггера меняется в ответ на изменение состояния предыдущего триггера.

Рис. 3.33. Схема а), таблица состояний триггеров б) и временные диаграммы, поясняющие работу в) последовательного четырехразрядного счетчика на
Из таблицы состояния счетчика (рис. 3.33, б) легко заметить, что значение разряда в выбранной позиции меняется тогда, когда в соседней справа позиции состояние переходит из “1” в “0”, управление триггерами осуществляется задним фронтом синхроимпульсов (отрицательным перепадом напряжения импульса синхронизации).
Временные диаграммы, поясняющие работу асинхронного суммирующего счетчика приведены на рис. 3.33, в.

Счетчики обратного счета (вычитающие счетчики). На рис. 3.34 приведена схема асинхронного трехразрядного двоичного вычитающего счетчика, построенного на базе D-триггеров. Отметим, что условия для изменения состояний триггеров вычитающих счетчиков аналогичны условиям для суммирующих счетчиков с той лишь разницей, что они должны “опираться” на значения инверсных, а не прямых выходов триггеров. Следовательно, рассмотренный выше счетчик можно превратить в вычитающий, просто переключив входы “С” триггеров с выходов Q на выходы. Когда в качестве разрядных триггеров используются D-триггеры, синхронизируемые передним фронтом синхроимпульсов, для получения вычитающего счетчика (асинхронного) входы “С” последующих тригеров соединяются с прямыми выходами предыдущих, также как в счетчике прямого счета, построенного на JK-триггерах.
Работа вычитающего счетчика на D-триггерах наглядно иллюстрирована на рис. 3.34, (б). Из рис. 3.34 следует, что после нулевого состояния всех триггеров, с приходом первого синхроимпульса они устанавливаются в состояние “1”. Поступление второго синхроимпульса приводит к уменьшению этого числа на одну единицу и т.д. После поступления восьмого импульса, снова, все триггеры обнуляются и цикл счета повторяется, что соответствует модулю М=8.

В некоторых случаях необходимо, чтобы счетчик мог работать как в прямом, так и в обратном направлении счета. Такие счетчикиназываютсяреверсивными. Реверсивные счетчики могут быть как асинхронного, так и синхронного типа. Они строятся путем применения логических коммутаторов (мультиплексоров) в цепях связи между триггерами. Так, например, асинхронный реверсивный двоичный счетчик можно построить, если обеспечить подачу сигналов с прямого (при суммировании) или с инверсного (при вычитании) выхода пре-дыдущего JK- или Т-триггера на счетный вход последующего. В случае, когда реверсивный счетчик строится на базе D-триггеров, управляемых передним фронтом, для получения режима прямого счета следует соединить инверсный выход предыдущего с счетным входом последующего триггера.
Все рассмотренные типы счетчиков могут быть использованы в цифровых устройствах “умеренного” быстродействия, когда частота следования синхроимпульсов не превышает критического значения, при котором время задержки установки триггеров последних (старших) разрядов счетчика становится соизмеримым с длительностью периода входных тактовых импульсов. В связи с этим, асинхронные счетчики строятся на относительно небольшое количество разрядов, так как при большем количестве разрядов выходные сигналы триггеров старших разрядов появляются позднее, чем управляющие фронты синхроимпульсов (поступающих на вход первого триггера) .
Параллельные счетчики (синхронные счетчики). Как было уже сказано выше, параллельные счетчики бывают двух типов:синхронные параллельныеи синхронные последовательные.

Синхронный последовательный счетчик. По способу подачи синхроимпульсов такие счетчики параллельные, т.е. синхроимпульсы поступают на все триггеры счетчика параллельно, а по способу управления (подачи управляющих импульсов) — последовательные. Схема синхронного последовательного счетчика, реализованного на JK-триг-герах, приведена на рис. 3.35.
Синхронный последовательный счетчик обладает повышенным быстродействием, однако, за счет последовательного формирования управляющих уровней, на входы “J” и “К” счетных триггеров, быстродействие несколько уменьшается. От этого недостатка лишены параллельные синхронные счетчики, в которых формирование управляющих уровней и их подача на соответствующие входы триггеров счетчика осуществляется одновременно, т.е. параллельно. Пример реализации параллельного синхронного счетчика иллюстрирован на рис. 3.36.

Поскольку счетчик имеет одну общую линию синхронизации, состояние триггеров меняется синхронно, т.е. те триггеры, которые по синхроимпульсу должны изменить свое состояние, делают это одновременно, что существенно повышает быстродействие синхронных счетчиков.
Счетчики с произвольным коэффициентом счета. Принцип построения подобного класса счетных устройств состоит в исключении нескольких состояний обычного двоичного счетчика, являющихся избыточными для счетчиков с коэффициентом пересчета, отличающимися от двоичных. При этом избыточные состояния исключаются с помощью обратных связей внутри счетчика.
Число избыточных состояний для любого счетчика определяется из следующего выражения:
где М — число запрещенных состояний, Ксч— требуемый коэффициент счета; 2 m — число устойчивых состояний двоичного счетчика.
Задача синтеза счетчика с произвольным коэффициентом счета заключается в определении необходимых обратных связей и минимизации их числа. Требуемое количество триггеров определяется из выражения
где [log2Ксч] — двоичный логарифм заданного коэффициента пересчета Ксч, округленный до ближайшего целого числа.
В каждом отдельном случае приходится применять какие-то конкретные методы получения требуемого коэффициента пересчета. Существует несколько методов получения счетчиков с заданным коэффициентом пересчета Ксч. Один их этих методов заключается в немедленном сбросе в “0” счетчика, установившегося в комбинацию, соответствующему числу Ксч. Его называют такжеметодом автосброса. Рассмотрим пример реализации счетчика с Ксч=10 методом автосброса. Очевидно, что “сбрасывая” двоичный четырехразрядный счетчик на нуль каждый раз, когда он будет принимать состояние 1010, можно обеспечить”возврат” счетчика в исходное состояние после каждых десяти импульсов. Подобный прием удобно применять при использовании счетчиков в интегральном исполнении, имеющих ячейки конъюнкции (И) на входах установки в нуль, как это сделано в микросхеме К1533ИЕ5. В данном примере (рис. 3.37) организованы соединения, обеспечивающие коэффициент пересчета Ксч=10.

Как следует из рис. 3.37, роль ячейки, выявляющей факт достижения кодовой комбинации 1010 на выходах счетчика, играет ячейка И, уже имеющаяся на входе сброса ИМС К1533ИЕ5.
В таблице 3.1 поясняются конфигурации соединений для получения различных коэффициентов пересчета с помощью счетчика К1533ИЕ5. Наиболее очевидные варианты получения коэффициентов (2, 4, 8, 16 ) в таблице не указаны. В графе “Соединения” таблицы указано, какие выводы микросхемы должны быть соединены между собой: например, указание 1-12 означает, что нужно соединить вывод 1 с выводом 12. В строках “Ввод” и “Выход” таблицы указаны номера выводов микросхемы, на которые следует подавать входные импульсы и с которых надлежит снимать выходные, соответственно. Следует отметить, что ИМС К1533ИЕ5 состоит из четырех счетных триггеров, один из которых имеет раздельные выводы входа и выхода, а остальные три триггера соединены последовательно по схеме асинхронного счетчика.
Синтез счетчика с произвольным коэффициентом счета. Один из методов проектирования счетчиков с заданным коэффициентом счета заключается в построении таблицы переходов, в первых столбцах которых будут отражены текущие состояния триггеров счетчика, а в последующих — следующие за ними состояния. Анализ таблицы позволяет установить те переходы, которые должны быть “сделаны” триггерами, входящими в состав счетчика. Затем с помощью управляющей таблицы соответствующего триггера находятся значения логических функций на управляющих входах триггеров, позволяющие осуществить эти переходы.
Рассмотрим пример синтеза синхронного двоично-десятичного счетчика на базе JK-триггеров. На рис. 3.38 показан граф, поясняющий последовательность переходов десятичного счетчика, в таблице 3.2 — таблица переходов.

В правой части таблицы 3.2 приведены значения входных сигналов четырех триггеров. Для поиска этих значений должны быть проанализированы реализованные переходы, а затем с помощью управляющей таблицы (см. рис. 3.15, а) определены соответствующие значения “J” и “K” входов триггеров.


На рис.3.39 приведены карты Карно для логических функций, которым должны соответствовать сигналы, присутствующие на управ-ляющих входах триггеров ( нулевые значения функций в клетки карты Карно не записаны).
После упрощения с помощью карт Карно полученные логические выражения, используемые для управления входами “J” и “К”, выглядят

J2=K2= Q1

Просмотр столбцов J1 и К1в табл. 3.2 показывает, что все значения либо “~“, либо “1”. Так как безразличные состояния могут также участвовать в процессе упрощения, то все клетки карты Карно для J1и К1оказываются заполненными символами “~“, “1” и “a“. Следовательно,
На рис. 3.40 показана схема двоично-десятичного синхронного счетчика.
Если счетчик из-за какой-либо неисправности окажется в одном из запрещенных (неиспользуемых) состояний, то его работа может быть прервана специальным сигналом и также может быть подан сигнал тревоги о неисправности в схеме счетчика. Обнаружить это позволяет схема, реализующая выражение, описывающее функцию неиспользуемых состояний
На рис. 3.41 показано, как эта схема используется для формирования цепи аварийной сигнализации и генерации блокирующего сигнала синхронизации.
Выражение , описывающее блокирующий сигнал синхронизации, имеет вид


Следовательно, когда fн = 1, то С’ = 0, и синхроимпульсы будут отсутствовать до тех пор, пока счетчик не выйдет из запрещенного состояния.
Из схемы формирования блокирующего сигнала синхронизации следует, что логика её функционирования ориентирована на то, чтобы исключить возможность появления неиспользуемых комбинаций выходных сигналов. Действительно, в коде числа двоично-десятичного счетчика отсутствуют комбинации 0110, 0011, следовательно, их появление свидетельствует о неиспраности системы.
Временные диаграммы счетчика (рис. 3.40), заданного графом переходов (рис. 3.38) и таблицей переходов 3.2, приведены на рис. 3.42.

Из рис. 3.42 следует, что все изменения состояний триггеров происходят во время формирования заднего фронта положительного импульса синхронизации. На временных диаграммах выходов Q1. . . Q4присутствуют двоичные цифры, характеризующие текущее состояние счетчика.