Уровень 38: Счётчик (Verilog)
Задание
Соберите 8-битный счётчик, который увеличивает значение на 1 с каждым тактом. Счётчик использует обратную связь: выход Reg8 подаётся обратно на вход Adder8.
Модуль Counter8 принимает clk и выдаёт out[7:0]. Используйте модули Reg8 (уровень 37) и Adder8 (уровень 35).
Ключевая идея: это замкнутый контур с обратной связью, разорванный D-триггерами в регистре. Без DFF схема была бы комбинационной петлёй.
Решение
Счётчик — классическая схема с обратной связью: выход регистра складывается с единицей, результат записывается обратно в регистр.
- Объявите промежуточные провода:
wire [7:0] sum;иwire carry_unused; - Инстанцируйте сумматор — складывает текущее значение
outс константой8'b00000001:Adder8 adder(sum, carry_unused, out, 8'b00000001); - Инстанцируйте регистр — запоминает сумму и выдаёт её на выход:
Reg8 cnt(out, sum);
Порядок портов Adder8: (sum, c_out, a, b, c_in). c_in не подключаем — по умолчанию 0. Константа 8'b00000001 — это Verilog-нотация для 8-битного числа 1.
out — это одновременно выходной порт модуля, выход регистра и вход b сумматора. Verilog позволяет использовать один провод в нескольких местах — это и есть обратная связь.