Уровень 42: Взгляд сквозь кремний (Verilog)
Задание
Перед вами двухуровневая иерархия: модуль CPU инстанцирует 8 модулей FullAdder. Все файлы доступны только для чтения — код менять нельзя. Ваша задача: исследовать схему через RTL Viewer.
Дважды кликните по блоку субмодуля в RTL-вьюере, чтобы «провалиться» внутрь и увидеть его внутреннюю структуру. Используйте хлебные крошки для навигации назад. Найдите примитив, подключённый неверно, и ответьте на вопрос.
Подсказка: обратите внимание на вентиль, формирующий сигнал w3 внутри FullAdder.
Материалы по теме
- Иерархия в Verilog — drill-down в RTL Viewer
- Полный сумматор — схема FullAdder
Решение
В файле fulladder.v вентиль g4 использует примитив nand вместо and:
nand g4(w3, w1, c_in); // ошибка — должно быть and
Сигнал w3 = w1 AND c_in нужен для корректного формирования бита переноса: c_out = w2 OR w3, где w2 = a AND b. Использование nand инвертирует результат, ломая логику переноса.
Ответ на вопрос: nand.