146 lines
5.4 KiB
Markdown
146 lines
5.4 KiB
Markdown
# Рефлектометр
|
|
|
|
Модуль представляет собой законченную встраиваемую систему рефлектометра, объединяющую:
|
|
|
|
- контроллер управления
|
|
- генератор импульсов (DAC path)
|
|
- сэмплер данных (ADC path)
|
|
- аккумулятор и обработчик данных
|
|
|
|
Система предназначена для формирования импульсов, синхронного сбора отраженного сигнала, накопления результатов и передачи обработанных данных во внешнюю систему.
|
|
|
|
Данный модуль является полноценным интегрируемым блоком, который может использоваться как самостоятельная аппаратная подсистема внутри более крупного проекта.
|
|
|
|
---
|
|
|
|
## Назначение системы
|
|
|
|
Основная задача системы:
|
|
|
|
1. Получить параметры измерения через AXI Stream
|
|
2. Сформировать последовательность импульсов на DAC
|
|
3. Выполнить синходную выборку данных с ADC
|
|
4. Накопить и обработать результаты
|
|
5. Передать итоговые данные обратно через AXI Stream
|
|
|
|
Таким образом реализуется полный цикл измерения без необходимости внешнего управления отдельными блоками.
|
|
|
|
---
|
|
|
|
## Состав системы
|
|
|
|
### Controller
|
|
|
|
Принимает входные команды по AXI Stream (Ethernet RX), декодирует параметры измерения и управляет всеми внутренними модулями системы.
|
|
|
|
Формирует:
|
|
|
|
- запуск генератора (`dac_start`)
|
|
- запуск аккумулятора (`adc_start`)
|
|
- параметры импульсов DAC
|
|
- параметры выборки ADC
|
|
- локальные reset-сигналы
|
|
|
|
---
|
|
|
|
### Generator
|
|
|
|
Формирует последовательность импульсов на DAC с заданными:
|
|
|
|
- амплитудой
|
|
- длительностью
|
|
- периодом
|
|
- количеством повторений
|
|
|
|
Для каждого импульса инициирует запуск выборки в сэмплере.
|
|
|
|
---
|
|
|
|
### Sampler
|
|
|
|
Выполняет синхронный сбор данных с ADC по запросу генератора.
|
|
|
|
Поддерживает:
|
|
|
|
- фильтрацию `out_of_range`
|
|
- упаковку данных
|
|
- преобразование типа кода ( прямой или дополнительный)
|
|
|
|
---
|
|
|
|
### Accumulator
|
|
|
|
Получает поток данных от сэмплера, выполняет накопление, усреднение и оконную обработку, после чего формирует пакеты для передачи результата.
|
|
|
|
---
|
|
|
|
## Управление системой
|
|
|
|
Пользователь взаимодействует только с контроллером через AXI Stream-интерфейс.
|
|
|
|
Прямое управление генератором, сэмплером и аккумулятором не требуется.
|
|
|
|
---
|
|
|
|
## Clock Domain Crossing (CDC)
|
|
|
|
Система работает в нескольких тактовых доменах:
|
|
|
|
- Ethernet RX (`gmii_rx_clk`)
|
|
- Ethernet TX (`gmii_tx_clk`)
|
|
- DAC (`dac_clk`)
|
|
- ADC (`adc_clk`)
|
|
|
|
Для корректной синхронизации между DAC и ADC используются специальные CDC-регистры для сигналов:
|
|
|
|
- `sample_req`
|
|
- `sample_done`
|
|
|
|
Это обеспечивает безопасную передачу handshake-сигналов между тактовыми доменами.
|
|
|
|
---
|
|
|
|
## Список параметров
|
|
|
|
### DAC_DATA_WIDTH
|
|
Ширина выходных данных отправляемых на ЦАП.
|
|
|
|
### ZERO_LEVEL
|
|
Уровень сигнала в состоянии отсутствия импульса (базовый уровень сигнала).
|
|
|
|
Типовые значения:
|
|
|
|
- `8192` — середина диапазона ЦАП
|
|
- `0` — нулевой уровень
|
|
|
|
### ADC_DATA_WIDTH
|
|
Ширина входных данных, получаемых с АЦП.
|
|
|
|
### PACK_FACTOR
|
|
Количество отсчетов, собираемых в один выходной пакет.
|
|
|
|
### PROCESS_MODE
|
|
Режим интерпретации входного кода:
|
|
|
|
- `0` — прямой код
|
|
- `1` — дополнительный код
|
|
|
|
### ACCUM_WIDTH
|
|
Размер данных для аккумуляции, должен быть степенью числа 2. По умолчанию - 32
|
|
|
|
### N_MAX
|
|
Максимальное число окон в последовательности. Должно быть степенью числа 2. Влияет на размер используемой памяти.
|
|
|
|
### WINDOW_SIZE
|
|
Размер окна усреднения
|
|
|
|
### PACKET_SIZE
|
|
Размер выходного пакета
|
|
|
|
---
|
|
|
|
## Сборка
|
|
```make all``` - собрать все до битстрима
|
|
|
|
```make vivado``` - открыть проект в Vivado
|