Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab5_zif

.docx
Скачиваний:
0
Добавлен:
01.06.2026
Размер:
318.68 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра РС

отчет

по лабораторной работе №5

по дисциплине «Цифровая электроника»

Тема: Синхронные двоичные счетчики

Вариант 13

Студент гр. 4493

Шевцов А.И.

Преподаватель

Овчинников М.А.

Санкт-Петербург

2026

Задание:

  1. Собрать схему синхронного двоичного четырехразрядного счетчика. Для этого воспользоваться кодом 1.

Изучить схему, реализованную в RTL Viewer.

Построить временные диаграммы, иллюстрирующие работу устройства. Период тактового сигнала задать 25 нс.

При каком внутреннем состоянии счетчика, согласно теории, сигнал переноса должен быть равен единице? При каком внутреннем состоянии счетчика сигнал переноса равен единице на временных диаграммах? Если эти два состояния не совпадают, измените код 1 так, чтобы установка сигнала переноса в единицу происходила согласно теории.

Построить схему в RTL Viewer и временные диаграммы для исправленной версии кода (если исправление проводилось).

  1. Модифицировать схему синхронного двоичного четырехразрядного счетчика так, чтобы получился двоично-десятичный счетчик. Для этого воспользоваться кодом 2.

Изучить схему, реализованную в RTL Viewer.

Построить временные диаграммы, иллюстрирующие работу устройства. Период тактового сигнала задать 35 нс.

Что означает выражение if (out<4’d9)? Как изменится работа счетчика, если в данной строке кода число 9 заменить на число 10?

  1. Собрать схему синхронного двоичного трёхразрядного реверсивного счетчика с синхронной загрузкой данных. Для этого воспользоваться кодом 3.

Изучить схему, реализованную в RTL Viewer.

Построить временные диаграммы, иллюстрирующие работу устройства. Период тактового сигнала задать 20 нс.

Чтобы при построении временных диаграмм задать какое-либо значение сигналу, представленному в виде шины, в окне Simulation Waveform Editor необходимо выделить произвольный фрагмент сигнала на временной оси (точно так же, как выделяют одноразрядный двоичный сигнал, чтобы установить его в состояние логической единицы или логического нуля) и нажать кнопку Arbitrary Value. В открывшемся окне установить желаемое значение сигнала в строке Numeric or named value с учетом системы счисления, регулируемой с помощью выпадающего списка Radix. Нажать ОК.

В чём принципиальное отличие в формировании сигнала переноса по сравнению со счетчиками из пп. 1–2? Как это отличие отражается на временных диаграммах?

  1. Собрать схему синхронного двоичного четырехразрядного счетчика с сигналами сброса и разрешения работы. Для этого воспользоваться кодом 4. Синхронными или асинхронными являются сигналы сброса и разрешения работы? Объяснить, почему. Ответ не должен быть основан на временных диаграммах, они являются следствием, а не причиной.

Изучить схему, реализованную в RTL Viewer.

Построить временные диаграммы, иллюстрирующие работу устройства. Период тактового сигнала задать 30 нс.

  1. Собрать схему синхронного двоичного 32-разрядного счетчика согласно коду 5.

Изучить схему, реализованную в RTL Viewer. Временное моделирование не проводить.

Если входная частота счётчика составляет 50 МГц, а линии выходной шины q[30:27] подключены к светодиодам LED3-LED0, то с какой частотой мигает светодиод LED2? Поясните почему.

Обработка результатов

п.1 Собрать схему синхронного двоичного четырехразрядного счетчика

Код для схемы синхронного двоичного четырехразрядного счетчика

module counter (clk, out, p_out);

input clk;

output [3:0] out;

output [0:0] p_out;

reg [3:0] out;

reg [0:0] p_out;

always @(posedge clk)

begin

out <= out + 4'b1;

p_out <= &out;

end

endmodule

Рис. 1 Результат работы RTL-viewer для синхронного двоичного четырехразрядного счетчика

Рис. 2 Временная диаграмма для синхронного двоичного четырехразрядного счетчика

Вопрос

При каком внутреннем состоянии счетчика, согласно теории, сигнал переноса должен быть равен единице? При каком внутреннем состоянии счетчика сигнал переноса равен единице на временных диаграммах? Если эти два состояния не совпадают, измените код 1 так, чтобы установка сигнала переноса в единицу происходила согласно теории.

Сигнал переноса (p_out) должен равняться единице в точке где внутреннее состояние счетчика out = 15, то есть счетчик принимает максимальное возможное значение. На временной диаграмме сигнал переноса равен 1 при out = 0, за исключением первого такта где out = 0

Исправленный код:

module counter (clk, out, p_out);

input clk;

output [3:0] out;

output [0:0] p_out;

reg [3:0] out;

always @(posedge clk)

out <= out + 4'b1;

assign p_out = &out;

endmodule

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

П.2 Модифицировать схему синхронного двоичного четырехразрядного счетчика так, чтобы получился двоично-десятичный счетчик. Для этого воспользоваться кодом 2.

Код для схемы синхронного двоично-десятичного счетчика

module counter (clk, out, p_out);

input clk;

output [3:0] out;

output [0:0] p_out;

reg [3:0] out;

reg [0:0] p_out;

always @(posedge clk)

begin

if (out < 4'd9)

out <= out + 4'b1;

else

out <= 4'b0;

p_out <= !(out ^ 4'd9);

end

endmodule

Рис. 4 Результат работы RTL-viewer для синхронного двоично-десятичного счетчика

Рис. 5 Временная диаграмма для синхронного двоично-десятичного счетчика

Вопрос

Что означает выражение if (out<4’d9)? Как изменится работа счетчика, если в данной строке кода число 9 заменить на число 10?

Выражение проверяет условие, что состояние out <9 Если да, то счетчик увеличивается Если нет, то счетчик сбрасывается, и формируется сигнал переноса Если изменить число 9 на 10, то счетчик будет сбрасываться не каждые 10 значений, а каждые 11, счетчик будет не двоично-десятичным, а двоичным по модулю 11.

П.3 Собрать схему синхронного двоичного трёхразрядного реверсивного счетчика с синхронной загрузкой данных. Для этого воспользоваться кодом 3

Код для схемы синхронного двоичного трёхразрядного реверсивного счетчика с синхронной загрузкой данных

module counter (clk, load, data, up, out, p_out);

input clk, load, up;

input [2:0] data;

output [2:0] out;

output p_out;

assign p_out = up & (&out) | ~up & ~(|out);

reg [2:0] out;

always @(posedge clk)

begin

if (load)

out <= data;

else

if (up)

out <= out + 3'b1;

else

out <= out - 3'b1;

end

endmodule

Рис. 6 Результат работы RTL-viewer для синхронного двоичного трёхразрядного реверсивного счетчика с синхронной загрузкой данных

Рис. 7 Временная диаграмма для синхронного двоичного трёхразрядного реверсивного счетчика с синхронной загрузкой данных

Вопрос

В чём принципиальное отличие в формировании сигнала переноса по сравнению со счетчиками из пп. 1–2? Как это отличие отражается на временных диаграммах?

В пунктах 1,2 сигнал p_out синхронный, формируются предыдущим значением счетчика. В пункие 3 сигнал асинхронный мгновенно отслеживает состояние счетчика.

На временной диаграмме в пунктах 1,2 сигнал p_out отстает на 1 такт, в пункте 3 нет.

П.4 Собрать схему синхронного двоичного четырехразрядного счетчика с сигналами сброса и разрешения работы.

Код для схемы синхронного двоичного четырехразрядного счетчика с сигналами сброса и разрешения работы

module counter (clk, reset, enable, out);

input clk, reset, enable;

output [3:0] out;

reg [3:0] out;

always @(posedge clk)

begin

if (reset)

out <= 4'b0;

else if (enable)

out <= out + 4'b1;

end

endmodule

Рис. 8 Результат работы RTL-viewer для синхронного двоичного четырехразрядного счетчика с сигналами сброса и разрешения работы

Рис. 9 Временная диаграмма для синхронного двоичного четырехразрядного счетчика с сигналами сброса и разрешения работы

Вопрос

Синхронными или асинхронными являются сигналы сброса и разрешения работы? Сигналы являются синхронными так как в коде они проверяются только внутри блока always @(posedge clk)

П.5 Собрать схему синхронного двоичного 32-разрядного счетчика

Код для схемы синхронного двоичного 32-разрядного счетчика

module counter (clk, q);

input clk;

output [31:0] q;

reg [31:0] q;

always @(posedge clk)

q <= q + 32'b1;

endmodule

Рис. 10 Результат работы RTL-viewer для синхронного двоичного

32-разрядного счетчика

Вопрос

Если входная частота счётчика составляет 50 МГц, а линии выходной шины q[30:27] подключены к светодиодам LED3-LED0, то с какой частотой мигает светодиод LED2?.

Светодиод LED2 подключен к выходу q[29] Частота переключения -

Выводы:

Синхронный двоичный четырехразрядный счетчик на кажлом такте увеличивает счетчик на 1, при достижении максимльного значения сигнал p_out устанавливается равным 1. Без исправления сигнал задерживается на 1 такт. Синхронный двоично-десятичный работает также, но при достижении значения счетчика равного 9, счетчик сбрасывается, при изменении крайнего значения, меняется модуль по которому производится счет.

Синхронный двоичный трёхразрядный реверсивный счетчик с синхронной загрузкой данных: при значении сигнала load = 1 счетчик устанавливается в значение сигнала data, при значении сигнала up = 1 на каждый такт счетчик увеличивается на 1, при значении сигнала up = 0 на каждый такт сигнал уменьшается на 1, при достижении крайних значений сигнал p_out = 1.

Синхронный двоичный четырехразрядный счетчик с сигналами сброса и разрешения работы: счетчик увеличивается на 1 пока сигнал enable = 1, если сигнал reset = 1 счетчик сбрасывается.

Синхронный двоичный 32-разрядный счетчик работает так же как и синхронный двоичный четырехразрядный счетчик, но позволяет хранить 2^32 а не 2^4 состояний выходного сигнала.

Соседние файлы в предмете Цифровая Электроника