Уровень 40: Datapath (Verilog)

Задание

Соберите тракт данных (datapath) — конвейер из четырёх компонентов: счётчик адреса, ПЗУ команд, АЛУ и аккумулятор. Это упрощённая модель процессора, которая читает команды из ROM и накапливает результат.

Модуль Datapath принимает clk и выдаёт result[7:0]. ROM содержит данные: адрес 0→5, 1→7, 2→3, 3→10, 4→2. АЛУ выполняет сложение (op_code = 0).

Используйте модули: Counter8 (уровень 38), ROM (builtin), ALU8 (уровень 36), Reg8 (уровень 37).

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

  • Datapath — тракт данных процессора
  • ROM — встроенное ПЗУ

Решение

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

  1. Объявите провода: wire [7:0] addr, rom_data, alu_out; и wire carry_unused;
  2. Счётчик генерирует адрес: Counter8 pc(addr);
  3. ROM читает данные по адресу: ROM rom(addr, rom_data);
  4. АЛУ складывает данные из ROM с текущим результатом: ALU8 alu(alu_out, carry_unused, rom_data, result, 1'b0); — op_code=0 (сложение)
  5. Регистр-аккумулятор сохраняет результат: Reg8 acc(result, alu_out);

result — одновременно выходной порт модуля, выход аккумулятора и вход b АЛУ. Обратная связь позволяет накапливать сумму: 0 → 5 → 12 → 15 → 25 → 27.

Порядок портов ALU8: (out, carry_out, a, b, op_code). Константа 1'b0 на op_code выбирает сложение. Порядок портов ROM: (addr, data) — два порта, чтение комбинационное.