Уровень 41: Большой проект (Verilog)

Задание

Соберите верхнеуровневый модуль CPU, инстанцируя три субмодуля: восемь полных сумматоров FullAdder и регистр Reg8. Код модулей находится в отдельных файлах вкладки — это многофайловый проект (VFS).

Модуль CPU принимает clk, два 8-битных числа a и b и выдаёт out (сохранённое значение b), sum (a + out), и carry (флаг переноса = NOT c[7]).

Используйте: FullAdder (из fulladder.v) — sum, c_out, a, b, c_in; Reg8 (из register.v) — out, in, clk. Цепочка сумматоров: fa0…fa7 с переносом c[0]…c[6]. Регистр запоминает b по фронту clk. not g1(carry, c[7]);

Файлы переключаются через вкладки над редактором. cpu.v — редактируемый, остальные — только для чтения.

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

Решение

CPU состоит из цепочки 8×FullAdder (суммирование a + out) и Reg8 (хранение b):

  1. Объявите провод переносов: wire [7:0] c;
  2. 8 полных сумматоров с переносом:
    FullAdder fa0(sum[0], c[0], a[0], out[0], 1'b0);
    FullAdder fa1(sum[1], c[1], a[1], out[1], c[0]);

    FullAdder fa7(sum[7], c[7], a[7], out[7], c[6]);
  3. Регистр: Reg8 reg_acc(out, b, clk);
  4. Флаг переноса: not g1(carry, c[7]);

Порядок портов FullAdder: (sum, c_out, a, b, c_in). Порядок Reg8: (out, in, clk).