Лабораторная 9.1 — Формат IQ-файла и metadata¶
Цель¶
Научиться оформлять воспроизводимый пакет IQ-записи: бинарный файл отсчётов и metadata JSON с параметрами чтения и интерпретации.
Что выполняется¶
В работе студент:
- выбирает формат IQ-записи;
- фиксирует sample rate и center frequency;
- задаёт порядок I/Q и endian;
- описывает gain settings и expected signal offset;
- проверяет полноту metadata.
Результат¶
После выполнения работы должны быть получены:
- описание формата IQ;
- metadata JSON;
- checklist воспроизводимости;
- вывод о готовности записи к анализу.
Что приложить к отчёту¶
- metadata JSON;
- формат файла и scaling rule;
- sample count и expected duration;
- expected signal offset;
- инженерный вывод.
Подробная техническая часть¶
Инженерный вопрос¶
Какая информация должна храниться рядом с IQ-файлом, чтобы другой инженер смог воспроизвести анализ?
Минимальный пакет записи¶
capture_name.ci16
capture_name.metadata.json
Обязательные поля метаданных¶
| Поле | Пример | Смысл |
|---|---|---|
sample_rate_hz |
2400000 | частота дискретизации IQ |
center_frequency_hz |
915000000 | центральная RF-частота приёмника |
iq_format |
ci16 |
двоичный формат отсчётов |
endianness |
little |
порядок байт |
i_first |
true |
порядок чередования |
sample_count |
1048576 | число комплексных отсчётов |
expected_signal_offset_hz |
100000 | ожидаемое положение сигнала в основной полосе |
gain_settings |
объект | конфигурация усиления приёмника |
Примеры форматов¶
CI16¶
I0 int16, Q0 int16, I1 int16, Q1 int16, ...
Преобразование в нормированный float:
I_float = I_int16 / 32768
Q_float = Q_int16 / 32768
CU8¶
I0 uint8, Q0 uint8, I1 uint8, Q1 uint8, ...
Преобразование в нормированный float:
I_float = (I_uint8 - 127.5) / 127.5
Q_float = (Q_uint8 - 127.5) / 127.5
CF32¶
I0 float32, Q0 float32, I1 float32, Q1 float32, ...
Обычно дополнительное масштабирование не требуется, но соглашение об амплитуде всё равно необходимо документировать.
Чего ожидать¶
Исполняемая проверка записывает один и тот же тон из 65 536 отсчётов в трёх форматах и читает каждый обратно по его метаданным:
[PASS] CI16 peak=+100012 Hz error=12.2 Hz missing=none size=262144 B
[PASS] CU8 peak=+100012 Hz error=12.2 Hz missing=none size=131072 B
[PASS] CF32 peak=+100012 Hz error=12.2 Hz missing=none size=524288 B
- Размер файла это бесплатная проверка согласованности:
отсчёты × 2 × байт на компоненту, то есть 4, 2 и 8 байт на комплексный отсчёт для CI16, CU8 и CF32. Несовпадение размера с метаданными означает неверный формат, обрезанный файл или забытый заголовок. - Все три формата дают один и тот же пик, потому что читатель применяет к каждому верное масштабирование.
Упражнения¶
- Прочитайте файл CU8 как CI16, изменив только его метаданные. Как выглядит спектр и какая проверка метаданных могла бы это поймать?
- Поменяйте
endiannessу файла CI16. Опишите результат. - Коллега присылает файл
.cf32размером 10 МБ, записанный при 2,4 МС/с. Какова длительность записи?
Чек-лист метаданных¶
- Идентификатор записи уникален.
- Частота дискретизации известна.
- Центральная частота известна.
- Указан формат IQ.
- Указан порядок I/Q.
- Указан порядок байт.
- Записаны настройки усиления.
- Записано ожидаемое смещение сигнала.
- Размер файла соответствует ожидаемому числу отсчётов.
Типичные ошибки¶
| Ошибка | Симптом | Исправление |
|---|---|---|
| неверная частота дискретизации | пик FFT на неверной частоте | читать метаданные, а не память |
| перепутаны I/Q | спектр зеркален или повёрнут | указать i_first |
| неверный порядок байт | шумоподобная испорченная форма сигнала | указать порядок байт |
| нет усиления | уровень невозможно воспроизвести | сохранить настройки усиления |
| нет ожидаемого смещения | нельзя проверить частотный план | добавить ожидаемое смещение сигнала |
Чек-лист отчёта (расширенный)¶
- Приложен JSON метаданных.
- Указан двоичный формат IQ.
- Объяснено масштабирование в нормированные комплексные отсчёты.
- Проверен размер файла.
- Указано ожидаемое смещение сигнала.
- Объяснено, воспроизводима ли запись.
Шаблон инженерного вывода¶
Запись IQ использует формат ____ с частотой дискретизации ____ МС/с и центральной частотой ____ МГц.
Ожидаемое смещение сигнала — ____ кГц. Метаданные содержат / не содержат достаточно
информации для воспроизведения анализа, потому что ______.