Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Verilog

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

  1. Перезарядка, сброс и переконфигурация вашей IT-стратегии для летнего успеха
  2. 3-битный двоичный счетчик на таймере 555 и триггерах 4027
  3. Синхронные двоичные счетчики: проектирование, Up/Down работа и применения в энкодерах
  4. Модуль счетчика
  5. Кольцевые счётчики и счётчики Джонсона: проектирование, принцип работы и практические применения
  6. Конвергенция IT/OT: культурный сброс для устойчивой цифровой трансформации
  7. Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
  8. Параметризованный Mod-N счётчик на Verilog: модуль и тестбенч
  9. Счётчик Грея на Verilog: 4-битный генератор кода Грея
  10. Предотвращение интегрального насыщения PID: стратегии надежного процессного контроля