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".
|