Skip to content

Problem 00: Invertor

Viktor Prutyanov edited this page Feb 11, 2019 · 6 revisions

Инвертор

Подготовка

Установите программы Icarus Verilog и GTKWave. Подробное описание установки смотрите здесь.

Если вы еще не склонировали этот репозиторий себе на компьютер, сделайте это сейчас:

git clone https://github.com/viktor-prutyanov/drec-fpga-intro.git

Если уже склонировали, то выполните git pull, чтобы загрузить изменения в вашу локальную копии репозитория.

Перейдите в каталог problems/00_invertor в вашей локальной копии репозитория.

Задача №1

Запустите симуляцию модуля pset00_test (из файла pset00_test.v) с тестовым модулем testbench (из файла testbench.v) в Icarus Verilog.

Это можно сделать либо вручную, либо с помощью команды make test.

Откройте дамп сигналов dump.vcd и убедитесь что всё работает.

Задача №2

Откройте файл pset00_invertor.v и дополните код модуля pset00_invertor так чтобы сигнал на выходе модуля был инвертирован по отношению к сигналу на входе.

Подсказка: битовая операция НЕ в Verilog'е представлена оператором ~.

Задача №3

Добавьте экземпляр модуля pset00_invertor в тестирующий модуль testbench.

Напоминание: экземпляр модуля создается следующим образом:

имя_модуля имя_экземпляра(.порт0(шина0), .порт1(шина1), ...)

На вход инвертору подайте сигнал в шины clk (уже присутствует в модуле testbench), а выход подсоедините к какой-нибудь новой шине.

Напоминание: для создания новой шины используется ключевое слово wire.

Задача №4

В файле Makefile к концу строки

pset00: testbench.v pset00_test.v

добавьте название файла, в котором описан модуль pset00_invertor.

Пояснение:

Цели, описанные в Makefile выполняются командой make. Это более удобная замена скриптам и, тем более, запуску команд вручную, в случае когда операции по созданию файлов зависят друг от друга.

В данном случае файл исполняемый во время симуляции файл pset00 это цель (target), а названия файлов через двоеточие это зависимости (dependency). make будет выполнять команды для этой цели, только если выполнены зависимости (т.е. файлы существуют и дата их последнего изменения позже даты последнего изменения файла цели).

В этой задаче мы добавили третью зависимость для pset00pset00_invertor.v.

Задача №5

Запустите симуляцию, а затем откройте dump.vcd в GTKWave и убедитесь, что инвертор работает.

Clone this wiki locally