# Рефлектометр Модуль представляет собой законченную встраиваемую систему рефлектометра, объединяющую: - контроллер управления - генератор импульсов (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