- •1.Регистры
- •2. Счетчики
- •2.1 Классификация счетчиков
- •Двоичные счетчики
- •Последовательные (асинхронные счетчики)
- •2.3. Параллельные счетчики
- •2.4.Синтез двоичного реверсивного счетчика
- •2.5. Счетчик с асинхронной загрузкой параллельного кода
- •Описание 8-битного реверсивного счетчика на Verilog
- •Построение счетчика с заданным модулем счета
- •Описание счетчика на Verilog
- •Описание счетчика с модулем счета 5 на Verilog
- •3. Сдвигающие регистры
- •3.4.Сдвигающие регистры, реализованные в виде ис средней степени интеграции
- •Режимы работы сдвигающего регистра определяются комбинацией значений на управляющих входах микросхемы s1, s0. (Таб. 11 )
- •3.5.Устройство быстрого сдвига
- •4. Счетчики на сдвигающих регистраx
- •4.1 Кольцевые счетчики (Ring Counters)
- •4.2. Счетчик Джонсона
- •Полиномиальные счетчики
- •4.3.1. Некоторые определения и понятия из высшей алгебры
- •4.4. Генератор элементов поля Галуа (Galois lfsr)
- •4.8. Сравнение lfsr
- •1.Описание lfsr Галуа на Verilog
- •2. Описание lfsr Fibonacci на Verilog
- •4.9. Загрузка начального состояния в lfsr
Описание счетчика на Verilog
Load – инверсный вход синхронной загрузки, reset –инверсный вход асинхронного сброса счетчика.
module counter (q, data, load, reset, clock);
parameter n= 8;
input load, reset, clock;
input [n -1:0]data;
output [n -1:0] q;
reg [n -1:0] q;
always @(negedge clock or negedge reset)
if(!reset) q=8’b0;
else if (!load)
q <= data;
else q<=q+1;
endmodule
Описание 8-битного реверсивного счетчика на Verilog
Вход direction – направление счета.
Direction=0 – прямой счет, direction=1 – обратный счет.
Инверсный вход Load –вход синхронной загрузки.
Инверсный вход Reset –вход асинхронного сброса.
Восьмибитный вход data – вход данных.
module up_down_counter (q, data, load, reset, clock,direction);
input load, reset, clock, direction;
input [7 : 0] data;
output [7 :0] q;
reg [7 : 0] q;
always @(negedge clock or negedge reset)
if(!reset) q=8’b0;
else if (!load)
q <= data;
else if (direction) q<=q+1;
else q=q-1;
endmodule
Декодирование состояний двоичного счетчика (слайды)
Построение счетчика с заданным модулем счета
Счетчик с модулем 5
Число триггеров, требующихся для построения схемы счетчика равно log2 5=3.
Таблица состояний счетчика имеет следующий вид (Таб.7)
Taб.7
-
q2 q1 q0
q0, q1, q2,– выходы триггеров
t0, t1, t2 - входы триггеров
После состояния 100 следует состояние 000
t0, t1 и t2 определены по картам Карно.
t2 t1 t00 0 0
0 0 1
0 0 1
0 1 1
0 1 0
0 0 1
0 1 1
1 1 1
1 0 0
1 0 0
q1
q1
q1q0
q1q0
00
01
11
10
q2
00
01
11
10
q2
t2
t1
0
1
0
1
1
1
q2
1
-
-
-
1
q2
-
-
-
q0
q0
t0
Рис.21
t
1
= q2
+ q0q1;
t2
= q0;
t0
= q0q2
= q0
+ q2
Схема счетчика приведена на рис.22
q2
Рис. 22
Можно применить другой подход: использовать двоичный счетчик с синхронной загрузкой параллельного кода. Последовательность состояний счетчика будет следующей:
0,1,2,3,4,0,1,…
После появления на выходе состояния 100 в счетчик загружается 0.
Схема такого счетчика приведена на рис. 23.
Reset
Рис.23
Временная диаграмма работы счетчика с модулем счета 5 с синхронной загрузкой.
Рис.24
Построение счетика с заданным модулем счета 5 путем использования асинхронной загрузки или асинхронного сброса.
Схема приведена на рис. 25.
Рис.25
Временная диаграмма работы счетчика с модулем счета 5 с асинхронной загрузкой или асинхронным сбросом.
CLK
q0
q1
q2
11
12
0
1
2
3
4
5
6
7
8
9
10
Рис.25
Как видно из временной диаграммы, после того, как счетчик попет в состояние 100, на вход Reset счетика поступает сигнал низкого уровня. Этот сигнал является кратковременным, так при переходе счетчика в состояние 0 на выходе NAND появляется сигнал “1’.
В предыдущей схеме состояние удерживалось в течение всего такта.
Схема с использованием синхронной загрузки (или сброса), имеет очевидное преимущество перед схемой с асинхронной загрузкой (сбросом).
