Уровень 38: Счётчик (Verilog)

Задание

Соберите 8-битный счётчик, который увеличивает значение на 1 с каждым тактом. Счётчик использует обратную связь: выход Reg8 подаётся обратно на вход Adder8.

Модуль Counter8 принимает clk и выдаёт out[7:0]. Используйте модули Reg8 (уровень 37) и Adder8 (уровень 35).

Ключевая идея: это замкнутый контур с обратной связью, разорванный D-триггерами в регистре. Без DFF схема была бы комбинационной петлёй.

Материалы по теме

  • Counter8 — 8-битный счётчик
  • Adder8 — 8-битный сумматор

Решение

Счётчик — классическая схема с обратной связью: выход регистра складывается с единицей, результат записывается обратно в регистр.

  1. Объявите промежуточные провода: wire [7:0] sum; и wire carry_unused;
  2. Инстанцируйте сумматор — складывает текущее значение out с константой 8'b00000001: Adder8 adder(sum, carry_unused, out, 8'b00000001);
  3. Инстанцируйте регистр — запоминает сумму и выдаёт её на выход: Reg8 cnt(out, sum);

Порядок портов Adder8: (sum, c_out, a, b, c_in). c_in не подключаем — по умолчанию 0. Константа 8'b00000001 — это Verilog-нотация для 8-битного числа 1.

out — это одновременно выходной порт модуля, выход регистра и вход b сумматора. Verilog позволяет использовать один провод в нескольких местах — это и есть обратная связь.