Опубликован: 17.03.2025 | Доступ: свободный | Студентов: 3 / 0 | Длительность: 07:30:00
Лекция 5:

Последовательностная логика. Счетчики

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
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
Листинг 5.1.
`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.2.

Рис. 5.4.

Групповой перенос в счетчиках обеспечивается введением в схему конъюкторов (элементов "И"). Причем разрядность данных элементов растет от младшего триггера к страшему. Реализуем синхронный счетчик с групповым переносом. В основе счетчика лежат JK-триггеры. В синхронном счетчике все синхроводы триггеров будут объеденены синхросигралом, а счетный режим будет обеспечен групповым переносом. На рисунке 5.5 приведена схема синхронного суммирующего счетчика с групповым переносом. Для управления старшим триггером D4 применяется четырехвходовый элемент "И". На схеме добавлен выход переполнения (переноса) СО. Данный выход объединяет все выходы триггеров и сигнализирует о достижении счетчиков предельного значения. Исходя из того, что для группового переноса применяется комбинационная логика, которая усложняется с каждым следующим разрядом, то для увеличения разрядности счетчиков применяется их каскадное включение. На рисунке 5.6 приведен собранный в модуль верхнего уровня счетчик, а также диаграмма его переключений.


Рис. 5.5.

Рис. 5.6.

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

На примере трехразрядного асинхронного счетчика с модулем счета 8 будет рассмотрена организация реверсивного счета. В зависимости от варианта организации связи выходов младших триггеров (прямой или инверсный) со счётными входами старших триггеров будет зависеть направление счета. Коммутируя данные выходы, организуется управление реверсом. Дополнительно в проектируемый счетчик будет введен общий сброс схемы и вход управления счетом (разрешение/запрет работы счетчика). На рисунке 5.7 приведена функциональная схема счетчика. На схеме входы и выходы имеют следующие обозначения:

  • R - reset, асинхронный сброс счетчика, активный уровень лог. &1 &;
  • С - clock, синхровход, срабатывание по переднему фронту;
  • Cu - count up, вход управления суммирующим счетом, лог. &1 &;
  • Cd - count down, вход управления вычитающим счетом лог. &1 &;
  • EN - enable вход управления работой счетчика. При лог. &0 & счетчик не работает, так как на объединенных входах JK всех триггеров присутствует лог. &0 &. При лог. &1 & счетчик осуществляет счет.
  • Q0-Q2 - выходы данных.

Рис. 5.7.

Реализуем условное графическое обозначение, спроектированного счетчика, подключим к нему осциллограф и проанализируем работу. На рисунке 5.8 приведена схема моделирования различных режимом работы счетчика. В таблице 5.3 приведена таблица работы, построенная по данным осциллограммы.


Рис. 5.8.
< Лекция 4 || Лекция 5: 12345 || Лекция 6 >