# Генератор Модуль выполняет задачу формирования последовательности импульсов заданной амплитуды, длительности и периода. Дополнительно реализован механизм синхронизации с модулем сэмплера через сигналы `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".