Необходимые материалы для лекции Logisim-05.zip и Quartus-05.zip.
Счетчик - цифровое устройство, предназначенное для подсчета числа сигналов, поступающих на его вход, и фиксации (хранении) этого числа в виде двоичного кода. Счетчики применяются для построения измерительных устройств, таймеров, в устройствах управления частотой, например, делителях частоты. Также счетчики применяются при проектировании схем конечных цифровых автоматов и проектировании блоков управления.
Счетчики строятся на триггерах.
Количество разрядов определяется наибольшим числом, которое должно быть получено в каждом конкретном случае.
В общем случае счетчик имеет $$М \le2^N$$ состояний, М - модуль счета, где N - число триггеров, входящих в счетчик.
Модулем счета является число импульсов, поступивших на счетных вход счетчика, при котором он возвращается в начальное состояние.
Для построения счетчика триггеры включаются в режим работы счетного Т-триггера.
Самым простым проявлением счетчика является делитель частоты на 2.
Рассмотрим его на примере D-триггера, включенного в режим Т-триггера. На рисунке 5.1 приведена схема организации делителя входной частоты на 2 (в примере показана входная частота равная 2 Гц). Выход Q с триггера подключен к осциллографу, инверсный выход Q подключен к входу D. Проанализируем фронт третьего синхроимпульса. По фронту триггер переходит в состояние логической 1, а по фронту синхроимпульса 4 сбрасывается в состояние логического 0, тем самым на переключение состояния выхода затрачивается два входных такта.
(рис 5.1)
Счетчики классифицируют:
Асинхронные счетчики строятся из цепочки триггеров, в которых синхросигнал поступает на счетный вход младшего триггера. Выходной сигнал (с прямого или инверсного выхода Q) младшего триггера поступает на счетный вход следующего (старшего) триггера. В данных счетчиках общая задержка прохождения сигнала определяется количеством триггеров. Для данных счетчиков имеются требования по длине импульсов, чтобы обеспечить качественное срабатывание.
От вариантов включения переносов (с прямого или с инверсного выхода триггера снимается сигнал), а также от вида срабатывания входа синхронизации (передний фронт или задний фронт, по спаду) зависит будет ли счетчик суммирующим или вычитающим. На рисунке 5.2 приведено моделирование работы схемы функциональной вычитающего асинхронного счетчика с последовательным (непосредственным переносом). Модуль счета 16. Из рисунка видно, что с приходом 16 импульса счетчик возвращается в начальное состояние.
(рис 5.2)
В таблице 5.1 приведена таблица переключений счетчика при поступлении на его вход импульсов.
| Номер импульса | Q3 | Q2 | Q1 | Q0 | Состояние счетчика |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | |
| 1 | 1 | 1 | 1 | 1 | 15 |
| 2 | 1 | 1 | 1 | 0 | 14 |
| 3 | 1 | 1 | 0 | 1 | 13 |
| 4 | 1 | 1 | 0 | 0 | 12 |
| 5 | 1 | 0 | 1 | 1 | 11 |
| 6 | 1 | 0 | 1 | 0 | 10 |
| 7 | 1 | 0 | 0 | 1 | 9 |
| 8 | 1 | 0 | 0 | 0 | 8 |
| 9 | 0 | 1 | 1 | 1 | 7 |
| 10 | 0 | 1 | 1 | 0 | 6 |
| 11 | 0 | 1 | 0 | 1 | 5 |
| 12 | 0 | 1 | 0 | 0 | 4 |
| 13 | 0 | 0 | 1 | 1 | 3 |
| 14 | 0 | 0 | 1 | 0 | 2 |
| 15 | 0 | 0 | 0 | 1 | 1 |
Изменим у триггеров D1-D4 свойство Срабатывание с Передний фронт , на Задний фронт и пронаблюдаем изменения в его работе. Теперь счетчик является суммирующим асинхронным счетчиком с последовательным переносом (рисунок 5.3). В таблице 5.2 приведена таблица переключений. Из рисунка видно, что по спаду 16 импульса счетчик возвращается в начальное состояние.
(рис 5.3)
| Номер импульса | Q3 | Q2 | Q1 | Q0 | Состояние счетчика |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 1 |
| 2 | 0 | 0 | 1 | 0 | 2 |
| 3 | 0 | 0 | 1 | 1 | 3 |
| 4 | 0 | 1 | 0 | 0 | 4 |
| 5 | 0 | 1 | 0 | 1 | 5 |
| 6 | 0 | 1 | 1 | 0 | 6 |
| 7 | 0 | 1 | 1 | 1 | 7 |
| 8 | 1 | 0 | 0 | 0 | 8 |
| 9 | 1 | 0 | 0 | 1 | 9 |
| 10 | 1 | 0 | 1 | 0 | 10 |
| 11 | 1 | 0 | 1 | 0 | 11 |
| 12 | 1 | 1 | 0 | 0 | 12 |
| 13 | 1 | 1 | 0 | 1 | 13 |
| 14 | 1 | 1 | 1 | 0 | 14 |
| 15 | 1 | 1 | 1 | 1 | 15 |
В листинге 5.1 приведен код на языке Verilog HDL, описывающий суммирующий счетчик (в код добавлен вход сброса). В листинге 5.2 приводится листинг файла тестирования. На рисунке 5.4 приводится результат симуляции, который можно сравнить с симуляцией счетчика приведенной на рисунке 5.3. Как видно по диаграммам результат симуляции одинаков.
module counter ( input wire C, // синхросигнал input wire reset, // сигнал сброса output reg [3:0] Q // 4-разрядный счетчик ); always @(posedge C or posedge reset) begin if (reset) begin Q <= 4'b0000; //сброс счетчика end else begin Q <= Q + 1; //инкремент end end endmodule
`timescale 1ns / 1ps
module testbench;
reg C; // регистровая переменная для тактового сигнала
reg reset; // регистровая переменная для сигнала сброса
wire [3:0] Q; // подключение выхода счетчика
// инициализация счетчика
counter uut (
.C(C),
.reset(reset),
.Q(Q)
);
// генерация синхросигнала
initial begin
C = 0;
forever #5 C = ~C; // ререключение каждый 5 нс
end
// тестирование счетчика
initial begin
// сброс счетчика
reset = 1;
#10;
reset = 0;
// ожидание счета
#100;
// вывод текущего значения счетчика
$display("Final Count: %b", Q);
// завершение симуляции
$finish;
end
endmodule
(рис 5.4)
Групповой перенос в счетчиках обеспечивается введением в схему конъюкторов (элементов "И"). Причем разрядность данных элементов растет от младшего триггера к страшему. Реализуем синхронный счетчик с групповым переносом. В основе счетчика лежат JK-триггеры. В синхронном счетчике все синхроводы триггеров будут объеденены синхросигралом, а счетный режим будет обеспечен групповым переносом. На рисунке 5.5 приведена схема синхронного суммирующего счетчика с групповым переносом. Для управления старшим триггером D4 применяется четырехвходовый элемент "И". На схеме добавлен выход переполнения (переноса) СО. Данный выход объединяет все выходы триггеров и сигнализирует о достижении счетчиков предельного значения. Исходя из того, что для группового переноса применяется комбинационная логика, которая усложняется с каждым следующим разрядом, то для увеличения разрядности счетчиков применяется их каскадное включение. На рисунке 5.6 приведен собранный в модуль верхнего уровня счетчик, а также диаграмма его переключений.
(рис 5.5)
(рис 5.6)
Реверсивный счетчик позволяет осуществлять счет, суммируя или вычитая текущее состояние. Данный функционал обеспечивается вводом дополнительных входов управления. Для управления переключениями используется коммутационная схема, аналогичная применяемой в сдвиговых регистрах.
На примере трехразрядного асинхронного счетчика с модулем счета 8 будет рассмотрена организация реверсивного счета. В зависимости от варианта организации связи выходов младших триггеров (прямой или инверсный) со счётными входами старших триггеров будет зависеть направление счета. Коммутируя данные выходы, организуется управление реверсом. Дополнительно в проектируемый счетчик будет введен общий сброс схемы и вход управления счетом (разрешение/запрет работы счетчика). На рисунке 5.7 приведена функциональная схема счетчика. На схеме входы и выходы имеют следующие обозначения:
(рис 5.7)
Реализуем условное графическое обозначение, спроектированного счетчика, подключим к нему осциллограф и проанализируем работу. На рисунке 5.8 приведена схема моделирования различных режимом работы счетчика. В таблице 5.3 приведена таблица работы, построенная по данным осциллограммы.
(рис 5.8)
| Номер импульса | Cu | Cd | EN | R | Q2 | Q1 | Q0 | Режим работы |
|---|---|---|---|---|---|---|---|---|
| 1-2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Счет запрещен |
| 3-5 | 0 | 0 | 1 | 0 | 0 | 0 | 0/1 | В режиме двоичного счетчика |
| 6 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | Сброс |
| 7 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | Работа в режиме суммирующего счетчика |
| 8 | 0 | 1 | 0 | |||||
| 9 | 0 | 1 | 1 | |||||
| 10 | 1 | 0 | 0 | |||||
| 11 | 1 | 0 | 1 | |||||
| 12 | 1 | 1 | 0 | |||||
| 13 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | Сброшен в состояние 1 |
| 14 | 0 | 0 | 1 | Работа в режиме вычитающего счетчика | ||||
| 15 | 1 | 1 | 1 | |||||
| 16 | 1 | 1 | 0 |
Как видно из таблицы отсутствие сигналов управления Cu и Cd запрещает работу старших триггеров Выходы Q1 и Q2 будут в состоянии лог 0 , но триггер D1 продолжит работать в режиме делителя входной частоты на 2. То же самое будет если на входы Cu и Cd подать лог. 1 , но в данном случае на выходах Q1 и Q2 будет присутствовать лог. 1 .
На 13 такте счетчик хранил в себе код 110 - предпоследнее состояние. Сигнал Cd сформировал импульсную помеху - с приходом синхросигнала счетчик перешел сразу же в максимальное состояние, повлекшее за собой последующий сброс счетчика в начальное состояние.
В листинге 5.3 приведен код на языке Verilog HDL, описывающий четырехразрядный реверсивный счетчик. В листинге 5.4 приведен код файла тестирования.
module reverse_counter (
input wire C, //синхросигнал
input wire R, //сигнал сброса
input wire Cu, //сигнал инкремента (если 1, увеличивает, если 0 - уменьшает)
input wire Cd,
input wire EN,
output reg [3:0] Q // 4-разрядный счетчик
);
always @(posedge C or posedge R) begin
if (R) begin
Q <= 4'b0000; // сброс счетчика
end else if (EN Cu !Cd) begin
Q <= Q + 1; //увеличение счетчика на 1
end else if (EN !Cu Cd) begin
Q <= Q - 1; //уменьшение счетчика на 1
end else begin //во всех остальных случаях
Q <= Q;
end
end
endmodule
`timescale 1ns / 1ps
module testbench;
reg C; // регистровая переменная для тактового сигнала
reg R; // регистровая переменная для сигнала сброса
reg Cu; // регистровая переменная для сигнала инкремента
reg Cd; //регистровая переменная для сигнала декремента
reg EN; //регистровая переменная сигнала управления
wire [3:0] Q; //подключение выхода счетчика
reverse_counter uut (
.C(C),
.R(R),
.Cu(Cu),
.Cd(Cd),
.EN(EN),
.Q(Q)
);
// генерация синхросигнала
initial begin
C = 0;
forever #5 C = ~C; // переключение каждые 5 нс
end
// тестирование реверсивного счетчика
initial begin
// инициализация
R = 1;
Cu = 1; // инкремент по умолчанию
Cd = 0;
EN=1;
#10;
R = 0;
// инкрементируем состояние
repeat (10) begin
#10; // Ждем 10 нс
end
// Меняем режим работы на декремент
Cu = 0;
Cd=1;// уменьшение состояния
repeat (10) begin
#10; // ждем 10 нс
end
// завершение симуляции и вывод финального значения
$display("Final Count: %b", Q);
$finish;
end
endmodule
На рисунке 5.9 приведен результат симуляции работы счетчика.
(рис 5.9)
В среде Logigsim Evolution в разделе Память находится реверсивный синхронный счетчик с возможностью параллельной загрузки начального состояния. На рисунке 5.10 приведено графическое обозначение счетчика в таблице 5.4 приведены назначения сигналов. На рисунке отмечены следующие входы и выходы: 1-R, reset, асинхронный сброс счетчика, активный уровень лог. 1 ; 2 - М1/М2 синхронные входы управления загрузкой данных с параллельного входа 6 при лог. 1 или разрешение счета при лог. 0 ; 3-М3/М4, синхронные входы управления направлением счета (при лог. 1 счетчик работает в режиме инкремента, при лог. 0 - в режиме декремента); 4 -G5, вход разрешения счета. Счетчик осуществляет счет при активном уровне лог. 1 на данном входе и лог. 0 на входе М1/М2; 5 - вход синхронизации (в свойствах счетчика Срабатывание выбирается передний фронт $$\uparrow$$, заданий фронт $$\downarrow$$; 6 - параллельный вход данных; 7 - выход переполнения/достижения минимального значения; 8 - параллельный выход данных.
(рис 5.10)
| R | M1/М2 | М3/М4 | G5 | +/C6- | Входы данных | Выходы данных | Режим работы |
|---|---|---|---|---|---|---|---|
| 1 | X | X | X | X | X | 0 | Сброс |
| 0 | 1 | X | X | $$\uparrow \downarrow$$ | Запись данных на входе | Записанные данные | Запись данных |
| 0 | 0 | X | 0 | $$\uparrow \downarrow$$ | X | Записанные данные | Запрет счета |
| 0 | 0 | X | 0 | 0 | X | Записанные данные | Запрет счета |
| 0 | 0 | 0 | 1 | $$\uparrow \downarrow$$ | X | $$\downarrow$$ | Инкремент |
| 0 | 0 | 1 | 1 | $$\uparrow \downarrow$$ | X | $$\uparrow$$ | Декремент |
Рассматриваемый счетчик имеет основные свойства: Биты данных - определяет разрядность счетчика. Максимальное значение - предельное значение, до которого счетчик ведет счет, которое может меньше модуля счета данного счетчика.
В лабораторной работе 5 предлагается выполнить проектирование конечного автомата с применением счетчиков.
Цель лабораторной закрепить навыки работы со счётчиками и регистрами через реализацию конечного автомата. Разрабатываемое устройство представляет собой простой последовательный интерфейс передачи данных. На рисунке 5.11 приведена блок-схема проектируемого устройства. На схеме счетчик (Сч) выполняет функцию памяти состояния. Комбинационная схема реализует формирование унарных управляющих сигналов, которые обеспечивают переключение состояний счетчика и регистра (Рег).
(рис 5.11)
В проектируемом устройстве байт данных с внутренней шины данных последовательно передается в приемник по двухпроводной линии: данные и синхронизация. Канал передачи данных является однонаправленным.
На рисунке 5.12 приведён алгоритм работы передающего устройства. При старте устройства первым тактом осуществляется параллельная загрузка данных в регистр. Со второго такта по 9 осуществляется формирование сигналов сдвига данных в регистре. Десятым тактом происходит останов работы устройства и установка регистра и счетчика в начальное состояние.
(рис 5.12)
На рисунке 5.13 приведена схема функциональная передатчика. На схеме D1 - восьмиразрядный сдвиговый регистр, принимающий параллельные данные и побитно отправляющий их с старшего разряда. На счетчике D5 реализована память состояний. Счетчиком управляет D-триггер D6. При подаче на асинхронный вход S триггера сигнала Start, с входа счетчика R снимается сигнал, блокирующий его работу. На вход управления М1/М2 подан лог. 0 (применен элемент константа). Счетчик работает в режиме счета, параллельная загрузка не производится. На входы М3/М4 и G5 подан сигнал лог 1 . Счетчик работает в режиме суммирующего. Вход синхронизации подключен к тактовому генератору. Дешифратор D2 обеспечивает формирование унарных сигналов управления (комбинационная схема). Выход 0 -удерживает регистра D1 в сброшенном состоянии. Сигнал 1 - обеспечит управляющий импульс для параллельной загрузки данных в регистр. Выходы с 2 по 9 через дизъюнктор ( ИЛИ ) D3 обеспечивают формирование управляющего сигнала сдвига регистра D1. Параллельно с этим формируется управляющий сигнал на элемент D4 - управляющий вентиль линии синхронизации последовательной шины. Десятый выход дешифратора сбрасывает триггер управления D6 через асинхронный вход R, сбрасывая и останавливая работу устройства.
(рис 5.13)
Для упрощения проектирования применяется элемент тоннель . Данный элемент применяется для присвоения имен проводников, тем самым не требуется строить на схеме множество линий. Система моделирования определяет, что проводники и шины с одинаковыми именами принадлежат к одной группе линий. Применение тоннелей позволяет упростить визуальное проектирование и восприятие схем, не нагромождая их проводниками. Подобные элементы применяются в различных средах проектирования, начиная от встраиваемых систем, заканчивая интегрированными системами проектирования принципиальных схем и печатных плат. Элемент тоннель расположен в разделе Проводка . Его основные свойства: Метка - имя, присваиваемое проводникам; Шрифт метки - определяет размер текста и самого тоннеля; Биты данных - разрядность.
На схеме имена тоннелей имеют следующее назначение:
На рисунке 5.14 приведена вторая часть схемы - приемное устройство. Регистр D7 выполняет функции последовательно-параллельного регистра, принимая данные с линии O. Счетчик D10 синхронизируется вместе с регистром по линии CLK. Дешифратор D8 обеспечивает формирование только двух импульсов. Выходы 0 и 9 дешифратора через элемент D9 (ИЛИ-НЕ) формируют управляющий сигнал S1 для последовательного сдвига данных в регистре D7.
(рис 5.14)
Самостоятельно
Использовать инструмент Хроннограмма (меню Моделировать - Запись в журнал ) получить временную диаграмму работы устройства как показано в примере на рисунке 5.15.
(рис 5.15)
Согласно варианта спроектировать эквивалентную схему счетчика Logisim Evolution с разрядностью равной 4 на заданных триггерах и заданном модуле счета (М).
| № варианта | Вид триггера, модуль счета (М) |
|---|---|
| 1,7,13,19 | SR, M=14 |
| 2,8,14,20 | D, M=14 |
| 3,9,15,21 | JK, M=12 |
| 4,10,16,22 | SR, M=9 |
| 5,11,17,23 | D, M=10 |
| 6,12,18,24 | JK, M=11 |
Дать ответы на следующие вопросы?
Необходимые материалы для лекции Logisim-05.zip и Quartus-05.zip.
Счетчик - цифровое устройство, предназначенное для подсчета числа сигналов, поступающих на его вход, и фиксации (хранении) этого числа в виде двоичного кода. Счетчики применяются для построения измерительных устройств, таймеров, в устройствах управления частотой, например, делителях частоты. Также счетчики применяются при проектировании схем конечных цифровых автоматов и проектировании блоков управления.
Счетчики строятся на триггерах.
Количество разрядов определяется наибольшим числом, которое должно быть получено в каждом конкретном случае.
В общем случае счетчик имеет $$М \le2^N$$ состояний, М - модуль счета, где N - число триггеров, входящих в счетчик.
Модулем счета является число импульсов, поступивших на счетных вход счетчика, при котором он возвращается в начальное состояние.
Для построения счетчика триггеры включаются в режим работы счетного Т-триггера.
Самым простым проявлением счетчика является делитель частоты на 2.
Рассмотрим его на примере D-триггера, включенного в режим Т-триггера. На рисунке 5.1 приведена схема организации делителя входной частоты на 2 (в примере показана входная частота равная 2 Гц). Выход Q с триггера подключен к осциллографу, инверсный выход Q подключен к входу D. Проанализируем фронт третьего синхроимпульса. По фронту триггер переходит в состояние логической 1, а по фронту синхроимпульса 4 сбрасывается в состояние логического 0, тем самым на переключение состояния выхода затрачивается два входных такта.
(рис 5.1)
Счетчики классифицируют:
Асинхронные счетчики строятся из цепочки триггеров, в которых синхросигнал поступает на счетный вход младшего триггера. Выходной сигнал (с прямого или инверсного выхода Q) младшего триггера поступает на счетный вход следующего (старшего) триггера. В данных счетчиках общая задержка прохождения сигнала определяется количеством триггеров. Для данных счетчиков имеются требования по длине импульсов, чтобы обеспечить качественное срабатывание.
От вариантов включения переносов (с прямого или с инверсного выхода триггера снимается сигнал), а также от вида срабатывания входа синхронизации (передний фронт или задний фронт, по спаду) зависит будет ли счетчик суммирующим или вычитающим. На рисунке 5.2 приведено моделирование работы схемы функциональной вычитающего асинхронного счетчика с последовательным (непосредственным переносом). Модуль счета 16. Из рисунка видно, что с приходом 16 импульса счетчик возвращается в начальное состояние.
(рис 5.2)
В таблице 5.1 приведена таблица переключений счетчика при поступлении на его вход импульсов.
| Номер импульса | Q3 | Q2 | Q1 | Q0 | Состояние счетчика |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | |
| 1 | 1 | 1 | 1 | 1 | 15 |
| 2 | 1 | 1 | 1 | 0 | 14 |
| 3 | 1 | 1 | 0 | 1 | 13 |
| 4 | 1 | 1 | 0 | 0 | 12 |
| 5 | 1 | 0 | 1 | 1 | 11 |
| 6 | 1 | 0 | 1 | 0 | 10 |
| 7 | 1 | 0 | 0 | 1 | 9 |
| 8 | 1 | 0 | 0 | 0 | 8 |
| 9 | 0 | 1 | 1 | 1 | 7 |
| 10 | 0 | 1 | 1 | 0 | 6 |
| 11 | 0 | 1 | 0 | 1 | 5 |
| 12 | 0 | 1 | 0 | 0 | 4 |
| 13 | 0 | 0 | 1 | 1 | 3 |
| 14 | 0 | 0 | 1 | 0 | 2 |
| 15 | 0 | 0 | 0 | 1 | 1 |
Изменим у триггеров D1-D4 свойство Срабатывание с Передний фронт , на Задний фронт и пронаблюдаем изменения в его работе. Теперь счетчик является суммирующим асинхронным счетчиком с последовательным переносом (рисунок 5.3). В таблице 5.2 приведена таблица переключений. Из рисунка видно, что по спаду 16 импульса счетчик возвращается в начальное состояние.
(рис 5.3)
| Номер импульса | Q3 | Q2 | Q1 | Q0 | Состояние счетчика |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 1 |
| 2 | 0 | 0 | 1 | 0 | 2 |
| 3 | 0 | 0 | 1 | 1 | 3 |
| 4 | 0 | 1 | 0 | 0 | 4 |
| 5 | 0 | 1 | 0 | 1 | 5 |
| 6 | 0 | 1 | 1 | 0 | 6 |
| 7 | 0 | 1 | 1 | 1 | 7 |
| 8 | 1 | 0 | 0 | 0 | 8 |
| 9 | 1 | 0 | 0 | 1 | 9 |
| 10 | 1 | 0 | 1 | 0 | 10 |
| 11 | 1 | 0 | 1 | 0 | 11 |
| 12 | 1 | 1 | 0 | 0 | 12 |
| 13 | 1 | 1 | 0 | 1 | 13 |
| 14 | 1 | 1 | 1 | 0 | 14 |
| 15 | 1 | 1 | 1 | 1 | 15 |
В листинге 5.1 приведен код на языке Verilog HDL, описывающий суммирующий счетчик (в код добавлен вход сброса). В листинге 5.2 приводится листинг файла тестирования. На рисунке 5.4 приводится результат симуляции, который можно сравнить с симуляцией счетчика приведенной на рисунке 5.3. Как видно по диаграммам результат симуляции одинаков.
module counter ( input wire C, // синхросигнал input wire reset, // сигнал сброса output reg [3:0] Q // 4-разрядный счетчик ); always @(posedge C or posedge reset) begin if (reset) begin Q <= 4'b0000; //сброс счетчика end else begin Q <= Q + 1; //инкремент end end endmodule
`timescale 1ns / 1ps
module testbench;
reg C; // регистровая переменная для тактового сигнала
reg reset; // регистровая переменная для сигнала сброса
wire [3:0] Q; // подключение выхода счетчика
// инициализация счетчика
counter uut (
.C(C),
.reset(reset),
.Q(Q)
);
// генерация синхросигнала
initial begin
C = 0;
forever #5 C = ~C; // ререключение каждый 5 нс
end
// тестирование счетчика
initial begin
// сброс счетчика
reset = 1;
#10;
reset = 0;
// ожидание счета
#100;
// вывод текущего значения счетчика
$display("Final Count: %b", Q);
// завершение симуляции
$finish;
end
endmodule
(рис 5.4)
Групповой перенос в счетчиках обеспечивается введением в схему конъюкторов (элементов "И"). Причем разрядность данных элементов растет от младшего триггера к страшему. Реализуем синхронный счетчик с групповым переносом. В основе счетчика лежат JK-триггеры. В синхронном счетчике все синхроводы триггеров будут объеденены синхросигралом, а счетный режим будет обеспечен групповым переносом. На рисунке 5.5 приведена схема синхронного суммирующего счетчика с групповым переносом. Для управления старшим триггером D4 применяется четырехвходовый элемент "И". На схеме добавлен выход переполнения (переноса) СО. Данный выход объединяет все выходы триггеров и сигнализирует о достижении счетчиков предельного значения. Исходя из того, что для группового переноса применяется комбинационная логика, которая усложняется с каждым следующим разрядом, то для увеличения разрядности счетчиков применяется их каскадное включение. На рисунке 5.6 приведен собранный в модуль верхнего уровня счетчик, а также диаграмма его переключений.
(рис 5.5)
(рис 5.6)
Реверсивный счетчик позволяет осуществлять счет, суммируя или вычитая текущее состояние. Данный функционал обеспечивается вводом дополнительных входов управления. Для управления переключениями используется коммутационная схема, аналогичная применяемой в сдвиговых регистрах.
На примере трехразрядного асинхронного счетчика с модулем счета 8 будет рассмотрена организация реверсивного счета. В зависимости от варианта организации связи выходов младших триггеров (прямой или инверсный) со счётными входами старших триггеров будет зависеть направление счета. Коммутируя данные выходы, организуется управление реверсом. Дополнительно в проектируемый счетчик будет введен общий сброс схемы и вход управления счетом (разрешение/запрет работы счетчика). На рисунке 5.7 приведена функциональная схема счетчика. На схеме входы и выходы имеют следующие обозначения:
(рис 5.7)
Реализуем условное графическое обозначение, спроектированного счетчика, подключим к нему осциллограф и проанализируем работу. На рисунке 5.8 приведена схема моделирования различных режимом работы счетчика. В таблице 5.3 приведена таблица работы, построенная по данным осциллограммы.
(рис 5.8)
| Номер импульса | Cu | Cd | EN | R | Q2 | Q1 | Q0 | Режим работы |
|---|---|---|---|---|---|---|---|---|
| 1-2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Счет запрещен |
| 3-5 | 0 | 0 | 1 | 0 | 0 | 0 | 0/1 | В режиме двоичного счетчика |
| 6 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | Сброс |
| 7 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | Работа в режиме суммирующего счетчика |
| 8 | 0 | 1 | 0 | |||||
| 9 | 0 | 1 | 1 | |||||
| 10 | 1 | 0 | 0 | |||||
| 11 | 1 | 0 | 1 | |||||
| 12 | 1 | 1 | 0 | |||||
| 13 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | Сброшен в состояние 1 |
| 14 | 0 | 0 | 1 | Работа в режиме вычитающего счетчика | ||||
| 15 | 1 | 1 | 1 | |||||
| 16 | 1 | 1 | 0 |
Как видно из таблицы отсутствие сигналов управления Cu и Cd запрещает работу старших триггеров Выходы Q1 и Q2 будут в состоянии лог 0 , но триггер D1 продолжит работать в режиме делителя входной частоты на 2. То же самое будет если на входы Cu и Cd подать лог. 1 , но в данном случае на выходах Q1 и Q2 будет присутствовать лог. 1 .
На 13 такте счетчик хранил в себе код 110 - предпоследнее состояние. Сигнал Cd сформировал импульсную помеху - с приходом синхросигнала счетчик перешел сразу же в максимальное состояние, повлекшее за собой последующий сброс счетчика в начальное состояние.
В листинге 5.3 приведен код на языке Verilog HDL, описывающий четырехразрядный реверсивный счетчик. В листинге 5.4 приведен код файла тестирования.
module reverse_counter (
input wire C, //синхросигнал
input wire R, //сигнал сброса
input wire Cu, //сигнал инкремента (если 1, увеличивает, если 0 - уменьшает)
input wire Cd,
input wire EN,
output reg [3:0] Q // 4-разрядный счетчик
);
always @(posedge C or posedge R) begin
if (R) begin
Q <= 4'b0000; // сброс счетчика
end else if (EN Cu !Cd) begin
Q <= Q + 1; //увеличение счетчика на 1
end else if (EN !Cu Cd) begin
Q <= Q - 1; //уменьшение счетчика на 1
end else begin //во всех остальных случаях
Q <= Q;
end
end
endmodule
`timescale 1ns / 1ps
module testbench;
reg C; // регистровая переменная для тактового сигнала
reg R; // регистровая переменная для сигнала сброса
reg Cu; // регистровая переменная для сигнала инкремента
reg Cd; //регистровая переменная для сигнала декремента
reg EN; //регистровая переменная сигнала управления
wire [3:0] Q; //подключение выхода счетчика
reverse_counter uut (
.C(C),
.R(R),
.Cu(Cu),
.Cd(Cd),
.EN(EN),
.Q(Q)
);
// генерация синхросигнала
initial begin
C = 0;
forever #5 C = ~C; // переключение каждые 5 нс
end
// тестирование реверсивного счетчика
initial begin
// инициализация
R = 1;
Cu = 1; // инкремент по умолчанию
Cd = 0;
EN=1;
#10;
R = 0;
// инкрементируем состояние
repeat (10) begin
#10; // Ждем 10 нс
end
// Меняем режим работы на декремент
Cu = 0;
Cd=1;// уменьшение состояния
repeat (10) begin
#10; // ждем 10 нс
end
// завершение симуляции и вывод финального значения
$display("Final Count: %b", Q);
$finish;
end
endmodule
На рисунке 5.9 приведен результат симуляции работы счетчика.
(рис 5.9)
В среде Logigsim Evolution в разделе Память находится реверсивный синхронный счетчик с возможностью параллельной загрузки начального состояния. На рисунке 5.10 приведено графическое обозначение счетчика в таблице 5.4 приведены назначения сигналов. На рисунке отмечены следующие входы и выходы: 1-R, reset, асинхронный сброс счетчика, активный уровень лог. 1 ; 2 - М1/М2 синхронные входы управления загрузкой данных с параллельного входа 6 при лог. 1 или разрешение счета при лог. 0 ; 3-М3/М4, синхронные входы управления направлением счета (при лог. 1 счетчик работает в режиме инкремента, при лог. 0 - в режиме декремента); 4 -G5, вход разрешения счета. Счетчик осуществляет счет при активном уровне лог. 1 на данном входе и лог. 0 на входе М1/М2; 5 - вход синхронизации (в свойствах счетчика Срабатывание выбирается передний фронт $$\uparrow$$, заданий фронт $$\downarrow$$; 6 - параллельный вход данных; 7 - выход переполнения/достижения минимального значения; 8 - параллельный выход данных.
(рис 5.10)
| R | M1/М2 | М3/М4 | G5 | +/C6- | Входы данных | Выходы данных | Режим работы |
|---|---|---|---|---|---|---|---|
| 1 | X | X | X | X | X | 0 | Сброс |
| 0 | 1 | X | X | $$\uparrow \downarrow$$ | Запись данных на входе | Записанные данные | Запись данных |
| 0 | 0 | X | 0 | $$\uparrow \downarrow$$ | X | Записанные данные | Запрет счета |
| 0 | 0 | X | 0 | 0 | X | Записанные данные | Запрет счета |
| 0 | 0 | 0 | 1 | $$\uparrow \downarrow$$ | X | $$\downarrow$$ | Инкремент |
| 0 | 0 | 1 | 1 | $$\uparrow \downarrow$$ | X | $$\uparrow$$ | Декремент |
Рассматриваемый счетчик имеет основные свойства: Биты данных - определяет разрядность счетчика. Максимальное значение - предельное значение, до которого счетчик ведет счет, которое может меньше модуля счета данного счетчика.
В лабораторной работе 5 предлагается выполнить проектирование конечного автомата с применением счетчиков.
Цель лабораторной закрепить навыки работы со счётчиками и регистрами через реализацию конечного автомата. Разрабатываемое устройство представляет собой простой последовательный интерфейс передачи данных. На рисунке 5.11 приведена блок-схема проектируемого устройства. На схеме счетчик (Сч) выполняет функцию памяти состояния. Комбинационная схема реализует формирование унарных управляющих сигналов, которые обеспечивают переключение состояний счетчика и регистра (Рег).
(рис 5.11)
В проектируемом устройстве байт данных с внутренней шины данных последовательно передается в приемник по двухпроводной линии: данные и синхронизация. Канал передачи данных является однонаправленным.
На рисунке 5.12 приведён алгоритм работы передающего устройства. При старте устройства первым тактом осуществляется параллельная загрузка данных в регистр. Со второго такта по 9 осуществляется формирование сигналов сдвига данных в регистре. Десятым тактом происходит останов работы устройства и установка регистра и счетчика в начальное состояние.
(рис 5.12)
На рисунке 5.13 приведена схема функциональная передатчика. На схеме D1 - восьмиразрядный сдвиговый регистр, принимающий параллельные данные и побитно отправляющий их с старшего разряда. На счетчике D5 реализована память состояний. Счетчиком управляет D-триггер D6. При подаче на асинхронный вход S триггера сигнала Start, с входа счетчика R снимается сигнал, блокирующий его работу. На вход управления М1/М2 подан лог. 0 (применен элемент константа). Счетчик работает в режиме счета, параллельная загрузка не производится. На входы М3/М4 и G5 подан сигнал лог 1 . Счетчик работает в режиме суммирующего. Вход синхронизации подключен к тактовому генератору. Дешифратор D2 обеспечивает формирование унарных сигналов управления (комбинационная схема). Выход 0 -удерживает регистра D1 в сброшенном состоянии. Сигнал 1 - обеспечит управляющий импульс для параллельной загрузки данных в регистр. Выходы с 2 по 9 через дизъюнктор ( ИЛИ ) D3 обеспечивают формирование управляющего сигнала сдвига регистра D1. Параллельно с этим формируется управляющий сигнал на элемент D4 - управляющий вентиль линии синхронизации последовательной шины. Десятый выход дешифратора сбрасывает триггер управления D6 через асинхронный вход R, сбрасывая и останавливая работу устройства.
(рис 5.13)
Для упрощения проектирования применяется элемент тоннель . Данный элемент применяется для присвоения имен проводников, тем самым не требуется строить на схеме множество линий. Система моделирования определяет, что проводники и шины с одинаковыми именами принадлежат к одной группе линий. Применение тоннелей позволяет упростить визуальное проектирование и восприятие схем, не нагромождая их проводниками. Подобные элементы применяются в различных средах проектирования, начиная от встраиваемых систем, заканчивая интегрированными системами проектирования принципиальных схем и печатных плат. Элемент тоннель расположен в разделе Проводка . Его основные свойства: Метка - имя, присваиваемое проводникам; Шрифт метки - определяет размер текста и самого тоннеля; Биты данных - разрядность.
На схеме имена тоннелей имеют следующее назначение:
На рисунке 5.14 приведена вторая часть схемы - приемное устройство. Регистр D7 выполняет функции последовательно-параллельного регистра, принимая данные с линии O. Счетчик D10 синхронизируется вместе с регистром по линии CLK. Дешифратор D8 обеспечивает формирование только двух импульсов. Выходы 0 и 9 дешифратора через элемент D9 (ИЛИ-НЕ) формируют управляющий сигнал S1 для последовательного сдвига данных в регистре D7.
(рис 5.14)
Самостоятельно
Использовать инструмент Хроннограмма (меню Моделировать - Запись в журнал ) получить временную диаграмму работы устройства как показано в примере на рисунке 5.15.
(рис 5.15)
Согласно варианта спроектировать эквивалентную схему счетчика Logisim Evolution с разрядностью равной 4 на заданных триггерах и заданном модуле счета (М).
| № варианта | Вид триггера, модуль счета (М) |
|---|---|
| 1,7,13,19 | SR, M=14 |
| 2,8,14,20 | D, M=14 |
| 3,9,15,21 | JK, M=12 |
| 4,10,16,22 | SR, M=9 |
| 5,11,17,23 | D, M=10 |
| 6,12,18,24 | JK, M=11 |
Дать ответы на следующие вопросы?
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.