3.5 KiB
Генератор
Модуль выполняет задачу формирования последовательности импульсов заданной амплитуды, длительности и периода.
Дополнительно реализован механизм синхронизации с модулем сэмплера через сигналы sample_req и sample_done, позволяющий запускать сбор данных для каждого импульса и ожидать подтверждения завершения выборки перед переходом к следующему импульсу.
Список параметров
DATA_WIDTH
Ширина выходных данных генератора.
ZERO_LEVEL
Уровень сигнала в состоянии отсутствия импульса (базовый уровень сигнала).
Типовые значения:
8192— середина диапазона ЦАП0— нулевой уровень
Список входных портов
clk_in
Сигнал тактирования модуля.
rst
Сброс модуля и остановка генерации.
start
Сигнал запуска последовательности импульсов.
При его активации модуль фиксирует все входные параметры и начинает генерацию.
Повторный запуск во время активной генерации блокируется с помощью внутреннего сигнала enable.
[31:0] pulse_width
Длительность активной части импульса (в тактах).
[31:0] pulse_period
Полный период импульса (в тактах).
[DATA_WIDTH-1:0] pulse_height
Амплитуда импульса.
[15:0] pulse_num
Количество импульсов, которое необходимо сгенерировать.
sample_done
Сигнал подтверждения от сэмплера о завершении выборки данных для текущего импульса.
Список выходных портов
pulse Выходной сигнал разрешения записи сигнала
[DATA_WIDTH-1:0] pulse_height_out Выходное значение амплитуды сигнала.
Во время активной части импульса равно pulse_height, вне импульса — ZERO_LEVEL.
sample_req Сигнал запроса на запуск выборки в модуле сэмплера.
Поднимается в начале каждого нового импульса и снимается после получения sample_done.
Логика работы
После прихода сигнала start модуль:
- фиксирует входные параметры генерации
- сбрасывает внутренние счетчики
- поднимает
enable = 1 - формирует первый
sample_req
После этого начинается последовательная генерация импульсов.
Симуляция
Тесты запускаются автоматически через make.
cd tests
make sim
При успешном завершении теста высвечивается "ALL PASSED".