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
|