4-битный счетчик: эффективный бинарный отсчёт от 0 до 15
4-битный счётчик инкрементируется от 4'b0000 до 4'h1111 и переполняется обратно в 0. Работает при наличии тактового сигнала и деактивированном сбросе.
Переполнение происходит при отбрасывания старшего бита: при значении 4'b1111 следующий инкремент даёт 5'b10000, старший бит теряется, остаётся 0000.
0000 0001 0010 ... 1110 1111 → переполнение → 0000 0001 ...
Два входа: такт clk и активный низкий сброс rstn (сброс при 0). 4-битный выход out выдаёт текущее значение.
Проект счётчика
module counter (
input clk,
input rstn,
output reg [3:0] out
);
always @(posedge clk) begin
if (!rstn) out <= 0;
else out <= out + 1;
end
endmodule
Блок always срабатывает по положительному фронту такта. При rstn=0 выход сбрасывается в 0, иначе инкрементируется.
Тестбенч
Топ-модуль tb_counter без портов. Внутренние переменные reg для такта и сброса, wire [3:0] для выхода. Такт генерируется блоком always #5 clk = ~clk (период 10 нс, 100 МГц). Блок initial формирует стимулы: сброс, деактивация, повторный сброс и завершение.
module tb_counter;
reg clk, rstn;
wire [3:0] out;
counter c0 (.clk(clk), .rstn(rstn), .out(out));
always #5 clk = ~clk;
initial begin
clk <= 0; rstn <= 0;
#20 rstn <= 1;
#80 rstn <= 0;
#50 rstn <= 1;
#20 $finish;
end
endmodule
Результат симуляции (фрагмент)
[0ns] clk=0 rstn=0 out=0xx [20ns] clk=0 rstn=1 out=0x0 [25ns] clk=1 rstn=1 out=0x1 [35ns] clk=1 rstn=1 out=0x2 ... [80ns] clk=0 rstn=1 out=0x7 [85ns] clk=1 rstn=1 out=0x8 [100ns] clk=0 rstn=0 out=0x8 // сброс [105ns] clk=1 rstn=0 out=0x0 ... [150ns] clk=0 rstn=1 out=0x0 // счёт продолжается с 0 [155ns] clk=1 rstn=1 out=0x1
Обратите внимание: при деактивации сброса (~150 нс) счётчик начинает инкремент со следующего положительного фронта такта.
Аппаратная схема
Verilog
- Перезарядка, сброс и переконфигурация вашей IT-стратегии для летнего успеха
- 3-битный двоичный счетчик на таймере 555 и триггерах 4027
- Синхронные двоичные счетчики: проектирование, Up/Down работа и применения в энкодерах
- Модуль счетчика
- Кольцевые счётчики и счётчики Джонсона: проектирование, принцип работы и практические применения
- Конвергенция IT/OT: культурный сброс для устойчивой цифровой трансформации
- Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
- Параметризованный Mod-N счётчик на Verilog: модуль и тестбенч
- Счётчик Грея на Verilog: 4-битный генератор кода Грея
- Предотвращение интегрального насыщения PID: стратегии надежного процессного контроля