Уровень 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 — редактируемый, остальные — только для чтения.
Материалы по теме
- Иерархия в Verilog — инстанцирование модулей
- Шины в Verilog — 8-битные провода
Решение
CPU состоит из цепочки 8×FullAdder (суммирование a + out) и Reg8 (хранение b):
- Объявите провод переносов:
wire [7:0] c; - 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]); - Регистр:
Reg8 reg_acc(out, b, clk); - Флаг переноса:
not g1(carry, c[7]);
Порядок портов FullAdder: (sum, c_out, a, b, c_in). Порядок Reg8: (out, in, clk).