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

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


Рис. 4.12.

Рис. 4.13.

Ярким примером применения управляемых буферов являются микроконтроллеры, в которых выводы могут назначаться входами/выходами или быть двунаправленными в зависимости от выполнения программы, меняя свое назначение в моменте ее работы.

В среде Logisim Evolution смоделируем упрощенное управление выводом, на примере микроконтроллера Microchip. В данных микроконтроллерах имеется регистр TRIS (регистры именуются по именам портов TRISA, TRISB и т.д), управляющий направлением работы вывода, и регистр PORT (регистры именуются по именам портов PORTA, PORTB), который принимает или передает данные. Если в регистре TRIS какой-либо бит установлен в "1", то вывод работает на вход и данные с вывода поступают в соответствующий триггер регистра PORT и наоборот. На рисунке 4.14 приведена функциональная схема управления выводами микроконтроллера с применением управляющих буферов.


Рис. 4.14.

В среде Logisim Evolution регистр находится в разделе "Память" и представляет собой регистр - защелку (рисунок 4.15). Он имеет следующие входы/выходы: 1 - вход данных; 2 - управляющий сигнал разрешения записи WE - write enable; 3 - управляющий сигнал Clock; 4- R - управляющий сигнал сброса (reset); 5 - прямые выходы данных Q.

Запись в регистр может осуществляться при наличии сигнала WE (лог. "1") и сигнала Clock. В свойствах элемента можно выбрать различные варианты срабатывания регистра на данные сигналы: "Передний фронт", "Задний фронт", "Высокий уровень", "Низкий уровень". В свойстве "Биты данных" задается разрядность регистра (по умолчанию 8).


Рис. 4.15.

На рисунке 4.16 приведена эквивалентная функциональная схема данного регистра, срабатывающая по переднему фронту сигнала Clock.


Рис. 4.16.

В листинге 4.1 приведен код на языке Verilog HDL, описывающий представленный на рисунке 4.16 регистр.

module parallel_reg (
    input wire [7:0] D,  // Параллельный вход данных
    input wire Clock,   //Синхросигнал
    input wire R,      // Асинхронный сброс
	 input wire WE, // Вход управления записи
    output reg [7:0] Q // Выходные данные
);
    // Процесс, описывающий поведение регистра
    always @(posedge Clock or posedge R) begin
        if (R) begin
            Q <= 8'b0;      // Асинхронный сброс: выход в 0
        end else begin
		if (WE) begin
            Q <= D;  // Запись данных при фронте Clock и наличии WE
        		end
end
end
endmodule
Листинг 4.1.

В ядре процессора регистры - параллельные. Они мультиплексируются в шины, а адресуются блоком управления (дешифратором или демультиплексором).

В практической работе 3 необходимо выполнить проектирование регистрового банка памяти.

Сдвиговые регистры

Сдвиговый регистр - это регистр, содержимое которого при подаче управляющего сигнала "сдвиг" сдвигается в сторону старших либо в сторону младших разрядов. Сдвиговые регистры применяются для преобразования последовательного кода в параллельный и наоборот. Сдвиговые регистры применяются при организации передачи данных. На рисунке 4.17 показан пример последовательно-параллельного регистра со сдвигом в сторону старших разрядов (вправо), реализованный в среде Logisim Evolution. На функциональной схеме входы имеют следующее назначение: