-
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 и убедитесь, что инвертор работает.