-
Notifications
You must be signed in to change notification settings - Fork 35
Problem 04: Hex display
Это задание посвящено созданию модуля отображения 16-битных чисел на 7-сегментном дисплее. Задание разделено на две части.
Перейдите в каталог problems/04_hex_display
в вашей локальной копии репозитория. Возможно придётся синхронизировать изменения из репозитория с помощью команды git pull
.
В модуле top
создайте экзепляр модуля делителя частоты с делителем равным 1. Код модуля сохраните в отдельном файле в текущем каталоге. В качестве входа для делителя используйте CLK
из текущего модуля.
В модуле 7-сегментного декодера hex_to_seg
(находится в файле hex_display.v
), допишите логику превращения 4-битных чисел в их шестнадцатеричное представление на 7-сегментном индикаторе. Для удобства используйте следующий рисунок:
В модуле hex_display
опишите логику динамической индикации. Если возникают сложности, можно подсматривать в код лаботаторной 05_bin_display.
Основное отличие от двоичного отображения следующее: на каждом такте выбирается не 1 бит, а 4 бита отображаемого числа, которые поступают на вход декодера hex_to_seg
.
Для того чтобы из шины выбрать i-ый набор из 4 бит, можно использовать подобную запись:
wire [3:0]b = data[i * 4 +: 4];
В модуле top
создайте экземпляр модуля шестнадцатеричной индикации и соответствующие соединения. Выберите нужный тактовый сигнал для этого модуля.
В тестирующем модуле опишите тактовый сигнал clk
для симуляции.
Проведите симуляцию и проверьте, что значения на шине segments
из модуля top
соответствуют шестнадцатеричным цифрам отображаемого числа.
Изменяя параметр делителя частоты, проверьте, что работа динамической индикации замедляется в правильное число раз.
Откройте проект 04_hex_display.qpf
в Quartus'е, добавьте в проект все нужные файлы с кодом и убедитесь, что компиляция проходит успешно.
Вопрос: что изменилось в схеме по сравнению со схемой двоичного отображения 4-битных чисел?
Настройте делитель таким образом, чтобы динамическая индикация работала с частотой не меньше 1кГц.
Затем запустите компиляцию и загрузите прошивку в FPGA. Убедитесь, что данные правильно отображаются на индикаторе.