Skip to content

Problem 04: Hex display

Viktor Prutyanov edited this page Mar 10, 2019 · 10 revisions

Шестнадцатеричный индикатор

Это задание посвящено созданию модуля отображения 16-битных чисел на 7-сегментном дисплее. Задание разделено на две части.

Часть 1

Подготовка

Перейдите в каталог problems/04_hex_display в вашей локальной копии репозитория. Возможно придётся синхронизировать изменения из репозитория с помощью команды git pull.

Задача №1

В модуле top создайте экзепляр модуля делителя частоты с делителем равным 1. Код модуля сохраните в отдельном файле в текущем каталоге. В качестве входа для делителя используйте CLK из текущего модуля.

Задача №2

В модуле 7-сегментного декодера hex_to_seg (находится в файле hex_display.v), допишите логику превращения 4-битных чисел в их шестнадцатеричное представление на 7-сегментном индикаторе. Для удобства используйте следующий рисунок:

Задача №3

В модуле hex_display опишите логику динамической индикации. Если возникают сложности, можно подсматривать в код лаботаторной 05_bin_display.

Основное отличие от двоичного отображения следующее: на каждом такте выбирается не 1 бит, а 4 бита отображаемого числа, которые поступают на вход декодера hex_to_seg.

Для того чтобы из шины выбрать i-ый набор из 4 бит, можно использовать подобную запись:

wire [3:0]b = data[i * 4 +: 4];

Задача №4

В модуле top создайте экземпляр модуля шестнадцатеричной индикации и соответствующие соединения. Выберите нужный тактовый сигнал для этого модуля.

Задача №5

В тестирующем модуле опишите тактовый сигнал clk для симуляции.

Задача №6

Проведите симуляцию и проверьте, что значения на шине segments из модуля top соответствуют шестнадцатеричным цифрам отображаемого числа.

Изменяя параметр делителя частоты, проверьте, что работа динамической индикации замедляется в правильное число раз.

Задача №7

Откройте проект 04_hex_display.qpf в Quartus'е, добавьте в проект все нужные файлы с кодом и убедитесь, что компиляция проходит успешно.

Вопрос: что изменилось в схеме по сравнению со схемой двоичного отображения 4-битных чисел?

Часть 2

Настройте делитель таким образом, чтобы динамическая индикация работала с частотой не меньше 1кГц.

Затем запустите компиляцию и загрузите прошивку в FPGA. Убедитесь, что данные правильно отображаются на индикаторе.

Clone this wiki locally