Skip to content

Problem 05: Hex counter

Viktor Prutyanov edited this page Mar 17, 2019 · 8 revisions

Счётчик

Подготовка

Перейдите в каталог problems/05_hex_counter в вашей локальной копии репозитория. Для синхронизации локального репозтория используется команда git pull.

Задача №1

В результате выполнения прошлых заданий были сделаны парметризуемый делитель частоты на основе двоичного счётчика и блок управления семисегментным индикатором. Дальше предполагается, что они имеют следующие входные и выходные порты:

module hex_display(
    input clk,
    input [15:0]data,

    output [3:0]anodes,
    output [6:0]segments
);
module clk_div #(parameter X = 1)(
    input clk,

    output clk_out
);

Кроме того, в отдельном файле подготовьте модуль 16-разрядного счетчика со следующими портами:

module counter #(parameter W = 16)(
    input clk,

    output [W - 1:0]q
);

Теперь в текущем каталоге у вас должны быть файлы с кодом модулей делителя частоты, управления семисегментным индикатором и счётчика.

Задача №2

Используя 2 делителя частоты, счётчик и блок вывода на семисегментный индикатор, в модуле top создайте схему вывода данных со счётчика на индикатор.

Задача №3 (опциональная)

Проверьте работоспособность схемы с помощью Icarus Verilog. Для удобства просмотра в GTKWave лучше использовать малые значения делителей.

Задача №4

Подберите значения делителей из следующих соображений:

  • Частота тактового сигнала CLK -- 48-50 МГц
  • Динамическая индикация должна правильно работать
  • Счёт должен быть заметен

Запрограммируйте FPGA, визуально оцените правильность работы.