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

Последовательностная логика. Регистры

  • SDI - serial data input, последовательный вход данных. Данный вход подключается к младшему триггеру регистра;
  • С - объединяющий все триггеры, вход управления синхронизации (в данном примере по переднему фронту);
  • R - reset, объединяющий все триггеры асинхронный вход сброса;
  • Q0-Q3 - quit, параллельный выход данных.

Триггеры объединяются следующим образом: прямой выход младшего триггера подключается к входу D старшего триггера. В сдвиговых регистрах старший триггер может иметь дублирующий Q выход SDO - serial data output, последовательный выход данных.


Рис. 4.17.

Для закрепления информации предлагается реализовать описываемый регистр. К нему подключить инструмент цифровой осциллятор (осциллограф) для наблюдения операции сдвига. В качестве тестового сигнала будет подан сигнал "1" на вход SDI. Перед вторым тактом он будет снят. В итоге на последнем такте синхросигнала двоичный код на выходе регистра должен иметь вид 1000. На рисунках 4.18 - 4.20 показано начало, промежуточное значение и окончание процесса моделирования. Провода, идущие к осциллографу, для информативности подписаны инструментом "Редактировать текст". Свойство осциллографа "Количество входов" задано равным 5.


Рис. 4.18.

Рис. 4.19.

Рис. 4.20.

Обычно при создании параллельно-последовательных сдвиговых регистров, параллельные входы данных подключаются к асинхронным входам установки (S) и сброса (R) триггеров. Для параллельной записи в регистр добавляется дополнительный вход управления, обозначаемый обычно PE - parallel enable, разрешение записи. Управление входами данных обычно реализуется на двухвходовых логических элементах "И" (AND) или И-НЕ (NAND).

Запись в регистр параллельного кода в данном примере не зависит от проводимых операций сдвига. На рисунке 4.21 приведена функциональная схема параллельно-последовательного регистра.


Рис. 4.21.

Существуют реверсивные сдвигающие регистры, сдвигающие в сторону старших или младших разрядов в зависимости от управляющих сигналов. На рисунке 4.22 приведена функциональная схема такого регистра, где входы имеют следующие обозначения:

  • DSI - последовательный вход данных;
  • R - асинхронный сброс регистра,
  • C - вход синхронизации (Clock), обеспечивающий сдвиг данных;
  • DSR - data shift right, прямой вход управления сдвигом вправо;
  • DSL - data shift left, прямой вход управления сдвига влево.

Принцип работы регистра следующий. Зафиксировать сигнал управления DSR лог. "1". Подать сигнал на вход DSI и синхросигналы на вход С. Логическая 1 в триггерах будет смещаться в сторону старших разрядов. Если снять сигнал с входа DSR и DSI и подать сигнал на вход DSL, то можно пронаблюдать обратный процесс.

У последнего триггера в схеме управления сдвигом влево один из входов элемента "И" подключен к лог. "0", что обеспечит очистку регистра при сдвиге данных влево.


Рис. 4.22.

В листинге 4.2 приведен код на языке Verilog HDL четырехразрядного сдвигового регистра, функционирующего аналогично, приведённого на рисунке 4.22.

module shift_register (
    input wire C,          // Синхровход
    input wire R,        // Асинхронный сброс (активный высоки уровень)
    input wire DSI,        // Входные данные для сдвига
    input wire DSL,         // Управляющий сигнал сдвига влево
    input wire DSR,         // Управляющий сигнал сдвига вправо
    output reg [3:0] Q      // 4-разрядный выход
);
    always @(posedge C or posedge R) begin
    if (R) 
		begin
        Q <= 4'b0000;  // Сброс регистра 
      end 
      else begin
			if (DSL && !DSR)
			begin
                // Сдвиг влево
                Q <= {Q[2:0], DSI};  // Сдвинуть влево и добавить d_in
         end 
		else if (DSR && !DSL)
			begin
                // Сдвиг вправо
                Q <= {DSI, Q[3:1]};  // Сдвинуть вправо и добавить бит по //линии DSI
         end
            // Если оба сигнала неактивны, значение регистра остается без изменений
      end
    end
endmodule
Листинг 4.2.