Files
reflectometer_fpga_project/designs/reflectometer_base/README.md
2026-05-15 16:41:18 +03:00

5.4 KiB
Raw Blame History

Рефлектометр

Модуль представляет собой законченную встраиваемую систему рефлектометра, объединяющую:

  • контроллер управления
  • генератор импульсов (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