Скачиваний:
10
Добавлен:
28.04.2023
Размер:
53.82 Кб
Скачать

Лабораторная работа № 6.

Исследование счетчиков.

Цель работы: изучение функционирования схем синхронных счетчиков. Сравнительный анализ синхронных счетчиков.

Краткие сведения об исследуемых устройствах.

Счетчики являются простейшими конечными автоматами. К конечным автоматам относятся устройства класса ПЦУ, имеющие дополнительную петлю обратной связи, в которую включается устройство класса КЦУ. Таким образом информация, сохраняющаяся в выходном регистре в течение периода синхроимпульса (такта), преобразуется в КЦУ, и новый синхроимпульс позволяет записать преобразованную информацию. На рисунке представлена блок-схема синхронного счетчика.

Счетчики служат для подсчета поступающих синхроимпульсов или для деления частоты.

По порядку счета (смены состояний) счетчики могут быть суммирующие, вычитающие и реверсивные. В реверсивных счетчиках дополнительный сигнал реверс позволяет менять порядок счета.

По способу подачи импульсов синхронизации на разрядные триггеры счетчики могут быть синхронными или асинхронными. Основное применение в настоящее время получили синхронные счетчики.

По количеству состояний в цикле счета (коэффициенту счета) счетчики могут быть двоичными – полный цикл счета, Kсч =2n и недвоичными – неполный цикл счета, Kсч < 2n , где n – количество разрядов счетчика.

Постановка задачи. В работе предлагаются для изучения Verilog HDL – программы описания функционирования синхронных счетчиков: два варианта четырехразрядного счетчика-делителя частоты и двоичного четырехразрядного реверсивного счетчика. По функциональным диаграммам делаются выводы о работе счетчиков.

Порядок выполнения работы.

  1. 1. Создать проект, открыть Verilog HDL - файл и записать программу 6.1, отражающую функционирование 4-разрядного счетчика-делителя частоты. Откомпилировать файл.

  2. 2. Построить функциональные диаграммы работы счетчика, задав интервал синхроимпульсов 20нс, а reset сформировать коротким «0» на интервале от 0нс до 10нс при базовом уровне «1». По диаграммам сделать вывод о коэффициенте деления частоты и форме полученного сигнала синхронизации на выходе.

  3. 3. Открыть новый Verilog HDL - файл и записать программу 6.2, отражающую функционирование счетчика - делителя. Откомпилировать файл.

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

Программа 6.1

module count_div

# (parameter N=3,M=3’d4 )

(input wire clk, reset,

output reg sync=0,

output wire [N-1:0]q);

reg [N-1:0] cnt=0;

wire [N-1:0] cnt_next;

assign q=cnt;

assign cnt_next=cnt + 1;

always@(posedge clk, negedge reset)

begin

if(!reset)

cnt<=0;

else

begin

cnt<=cnt_next;

sync<=sync;

if(cnt==M-1)

begin

cnt<=0;

sync<=~sync;

end

end

end

endmodule

Программа 6.2

module count_div1

# (parameter N=4, M=10)

(input wire clk, reset,

output wire sync,

output wire [N-1:0]q);

reg [N-1:0] cnt;

wire [N-1:0] cnt_next;

assign q=cnt;

always@(posedge clk, negedge reset)

if(!reset)

cnt<=0;

else

cnt<=cnt_next;

assign cnt_next = (cnt==(M-1)) ? 0 : (cnt+1);

assign sync = (cnt==(M-1)) ? 1'b1 : 1'b0;

endmodule

5. Открыть новый Verilog HDL - файл и записать программу 6.3, отражающую функционирование 4-разрядного реверсивного счетчика с возможностями асинхронного и синхронного сброса и остановки счета. Откомпилировать файл.

6. Построить функциональные диаграммы работы счетчика, задав

интервал изменения синхроимпульсов 20нс;

интервал изменения реверса – 500нс;

асинхронный сброс - reset сформировать коротким «0» на интервале от 0нс до 10нс при базовом уровне «1»;

сигнал синхронного сброса установить короткой «1» в интервале от 80 до 110нс;

сигнал разрешения установить в «1» и вывести короткий «0» на интервале от 170 до 190нс.

Программа 6.3

module count

# (parameter N=4)

(input wire clk, reset, res, ena, rev,

output wire [N-1:0] q);

reg [N-1:0] cnt;

reg [N-1:0] cnt_next;

assign q=cnt;

always@ (posedge clk, negedge reset)

if(!reset)

cnt<=0;

else

cnt<=cnt_next;

always@*

if(res)

cnt_next=0;

else if(ena&!rev)

cnt_next=cnt + 1;

else if(ena&rev)

cnt_next=cnt-1;

else

cnt_next=cnt;

endmodule

Отчет должен содержать названия и программы работы исследованных устройств, подкрепленные проверкой на временных диаграммах.

Соседние файлы в папке текст лаб