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