-
Notifications
You must be signed in to change notification settings - Fork 35
Problem 00: Invertor
Установите программы Icarus Verilog и GTKWave. Подробное описание установки смотрите здесь.
Если вы еще не склонировали этот репозиторий себе на компьютер, сделайте это сейчас:
git clone https://github.com/viktor-prutyanov/drec-fpga-intro.git
Если уже склонировали, то выполните git pull
, чтобы загрузить изменения в вашу локальную копии репозитория.
Перейдите в каталог problems/00_invertor
в вашей локальной копии репозитория.
Запустите симуляцию модуля pset00_test
(из файла pset00_test.v
) с тестовым модулем testbench
(из файла testbench.v
) в Icarus Verilog.
Это можно сделать либо вручную, либо с помощью команды make test
.
Откройте дамп сигналов dump.vcd
и убедитесь что всё работает.
Откройте файл pset00_invertor.v
и дополните код модуля pset00_invertor
так чтобы сигнал на выходе модуля был инвертирован по отношению к сигналу на входе.
Подсказка: битовая операция НЕ в Verilog'е представлена оператором ~
.
Добавьте экземпляр модуля pset00_invertor
в тестирующий модуль testbench
.
Напоминание: экземпляр модуля создается следующим образом:
имя_модуля имя_экземпляра(.порт0(шина0), .порт1(шина1), ...)
На вход инвертору подайте сигнал в шины clk
(уже присутствует в модуле testbench
), а выход подсоедините к какой-нибудь новой шине.
Напоминание: для создания новой шины используется ключевое слово wire
.
В файле Makefile
к концу строки
pset00: testbench.v pset00_test.v
добавьте название файла, в котором описан модуль pset00_invertor
.
Пояснение:
Цели, описанные в Makefile
выполняются командой make
. Это более удобная замена скриптам и, тем более, запуску команд вручную, в случае когда операции по созданию файлов зависят друг от друга.
В данном случае файл исполняемый во время симуляции файл pset00
это цель (target), а названия файлов через двоеточие это зависимости (dependency). make
будет выполнять команды для этой цели, только если выполнены зависимости (т.е. файлы существуют и дата их последнего изменения позже даты последнего изменения файла цели).
В этой задаче мы добавили третью зависимость для pset00
– pset00_invertor.v
.
Запустите симуляцию, а затем откройте dump.vcd
в GTKWave и убедитесь, что инвертор работает.