-
Couldn't load subscription status.
- 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. Убедитесь, что данные правильно отображаются на индикаторе.