Wiki Аналізатор спектра
Свіп
Свіп показує ділянку, ширшу за миттєву смугу приймача: прилад швидко перестроюється по сегментах, а програма зшиває їх в один спектр. На HackRF One так видно весь діапазон 1–6000 МГц із проходом приблизно 0.6–0.7 с. На цій сторінці — як свіп запустити, як його темп на HackRF One залежить від заданої RBW, що означає кожен орган керування, чим свіп відрізняється на RTL-SDR і на приймачах SDR SA PRO і чого програма під час свіпу не робить.
Настроєний режим і свіп
У настроєному режимі на екрані те, що приймач бачить одночасно: смуга завширшки з темп вибірки — до 20 МГц на HackRF One і до 2.56 МГц на RTL-SDR. Свіп — це інший вимір, а не інший масштаб: картинка склеєна з багатьох перестройок, знятих у різні моменти. Тому режим завжди названий. У правому верхньому куті оглядової лінійки над спектром стоїть позначка настроєно або жовта СВІП · прохід із тривалістю останнього проходу в секундах. Поки перший прохід не завершено, замість часу там відсоток уже знятої ділянки.
Вхід у свіп, вихід із нього і його перебудова скидають траси й опорну трасу: вісь частоти вже інша.
Як запустити й зупинити свіп
Окремої кнопки немає. Свіп починається сам, щойно обрана ділянка стає ширшою за найширший темп вибірки приладу, і закінчується, щойно вона знову в нього вміщається. Ділянку вибирають чотирма способами:
- Оглядова лінійка над спектром. Потягніть одну з двох ручок обраної ділянки або саму ділянку. Прилад перестроюється, коли ви відпускаєте кнопку миші, а не під час тягання.
- Два поля діапазону в шапці бічної панелі (після них стоїть МГц, на широкій панелі перед ними — Діапазон). Межі вводяться цифрами. Шкала лінійки лінійна, тож на HackRF One усе нижче 100 МГц займає на ній близько 2 % ширини — точний вибір ділянки внизу діапазону роблять саме тут.
- Колесо миші над спектром. Воно міняє смугу приймання кроком у 1.25 раза; команда йде через чверть секунди після останнього руху. Розширили за найширший темп — почався свіп. Ctrl+колесо — це вже масштаб картинки, смуги воно не чіпає.
- Клік по смузі іменованого діапазону вгорі спектра вибирає цей діапазон цілком.
Перед свіпом програма сама ставить темп приладу. Поки RBW виведена з N, це найширший темп — так сегментів найменше. Якщо RBW задано зі списку, на HackRF One 0.9.36 це найширший темп, на якому кадр FFT для неї ще вміщається в блок приладу (див. Темп свіпу й задана RBW). Виняток — запис або передача, що вже тривають: тоді темп не чіпається (див. що не працює під час свіпу).
HackRF One: апаратний свіп
HackRF One свіпує сам: перестроюється прошивка приладу, а програма розкладає блоки за частотою, яку несе кожен блок. Діапазон 1–6000 МГц зшивається із сотень сегментів, один прохід триває приблизно 0.6–0.7 с. Міряється весь замовлений діапазон, включно з лівим краєм: на живому приладі, зокрема на повному прольоті, ліворуч і праворуч лишилося 0 невиміряних бінів.
Якщо апаратний свіп не стартував, програма каже про це вікном, а не мовчки показує застиглу картинку. Вікно Апаратний свіп недоступний означає, що свіп піде програмним шляхом — у десятки разів повільніше. Вікно Свіп не почався 0.9.25 з’являється, коли збоїть сам обмін USB: програмний свіп ішов би тим самим обміном, тому його теж не запущено, а у вікні стоїть порада перевірити кабель і порт USB та перепідключити прилад.
Темп свіпу й задана RBW 0.9.36
HackRF One віддає свій свіп блоками по 8187 відліків, і сусідні блоки не суміжні в часі. Тому кадр FFT будується лише всередині одного блоку: апаратний свіп бере N до 8192. RBW, задана зі списку, на найширшому темпі (20 МС/с) могла б потребувати довшого кадру, тож програма шукає темп, на якому вона досяжна з коротшим кадром.
- RBW виведена з N (зокрема після запуску програми) — свіп іде на найширшому темпі, як і раніше.
- RBW задана зі списку — свіп іде на найширшому темпі, де кадр для неї вміщається в блок. З вікном HANN: 2 кГц — 10 МС/с, 1 кГц — 4 МС/с, 500 Гц — 2 МС/с.
- Ціна — довший прохід. На нижчому темпі настройок більше, і блоки прилад віддає повільніше, тож час проходу росте як квадрат зниження темпу: 10 МС/с замість 20 — приблизно вчетверо довше, 2 МС/с — приблизно в сто разів. Прохід 100–6000 МГц із RBW 2 кГц — близько 2.2 с (розрахунок; на живому приладі не міряно).
- Межа сітки. Темп під задану RBW програма вибирає, лише поки сітка свіпу не перевищує 5 млн бінів: 1 кГц — на ділянці до 2.4 ГГц, 500 Гц — до 1.2 ГГц. На ширшій ділянці свіп лишається на найширшому темпі, а фактична RBW грубша за задану.
- RBW, якої апаратний свіп не дає на жодному темпі (дрібніша за 366 Гц з вікном HANN), — свіп іде програмним шляхом на 2 МС/с, на ділянці до 610 МГц. Це хвилини на прохід у сотні мегагерців (оцінка, не виміряно).
- N 16384, задане руками, — свіп іде програмним шляхом на найширшому темпі, у десятки разів повільніше за апаратний. На темпах понад 10 МС/с потік HackRF One ще й сам губить частину відліків, не кажучи де (на 20 МС/с виміряно 0.65–2.4 %).
Усе це програма каже жовтими рядками під рядком стану свіпу — див. Керування свіпом у панелі. Поки йде перший прохід, рядок стану показує, скільки він триватиме за темпом уже знятих сегментів: на зниженому темпі й на програмному шляху це можуть бути хвилини.
RTL-SDR: програмний свіп 0.9.25
У RTL-SDR апаратного свіпу немає. Програма сама ставить тюнер на кожен сегмент, набирає відліки й переходить до наступного. Свіп починається, коли ділянка ширша за 2.56 МГц. На донглі автора з R820T2 одна перестройка триває 30–51 мс, свіп 88–108 МГц — 1.16 с, покриття 99.72 % (виміряно).
Відмінності від HackRF One:
- Програмний шлях міряє розбіжність рівнів на кожному стику й потребує для цього 400 бінів перекриття між сегментами. Коли N замалий, з’являється вікно План свіпу не складається з порадою підняти темп або задати більше N.
- Сегмент, на якому синтезатор тюнера не захопився, у картинку не йде: його частота невідома, і він лишається невиміряним.
- Проходів зі зсунутим гетеродином тут немає. Перевірка Спури результату не дає, IQ-корекція не застосовується, а паспорт власних завад знімається без перевірки зсувом — панель каже про це прямо.
- 0.9.33 Відліки однієї настройки не склеюються через пропуск у потоці: шматок до пропуску дає свої спектри окремо. Якщо пропуски частіші за довжину кадру, сегмент лишається «без даних», а не малюється зі швом. Те саме діє на HackRF One, коли свіп іде програмним шляхом.
Керування свіпом у панелі
У режимі свіпу в групі Смуга розділення на вкладці Аналізатор спектра з’являються додаткові рядки. RBW, N, вікно, детектори, VBW і водоспад лишаються на місці; перемикач DC-фільтр зникає, бо DC-біни сегментів і так виключені з виміру. Зміна N або вікна перебудовує свіп і скидає траси.
- Свіп: спектрів
- Скільки спектрів усереднюється на сегмент: від 1 до 16, типово 1. Кожен додатковий — це додаткові байти по шині приладу, тож час проходу росте майже пропорційно. Купується рівніша полиця шуму, а не чутливість: слабкий сигнал від цього не з’явиться, він лише перестане мерехтіти. Сам свіп іде на найширшій миттєвій смузі приладу, на якій кадр для заданої RBW ще вміщається в блок приладу, — так сегментів найменше; дрібнішій RBW може знадобитися вужча смуга, і тоді прохід довший (див. вище). В апаратному свіпі в діло йде все, що приїхало в блоці, тому, поки блоки не губляться, фактична кількість спектрів не менша за задану — її показує панель довіри поруч із детектором. 0.9.36 Кадри на HackRF One будуються лише всередині блоку, тож кілька спектрів на настройку беруться з окремих блоків.
- Рядок стану під повзунком
- Обхід … · … сегментів · перекриття … бінів · покрито … % — тривалість останнього проходу, кількість сегментів у плані, перекриття сусідніх сегментів і частка бінів, справді виміряних в останньому завершеному проході. 0.9.36 Поки перший прохід не завершено, замість тривалості стоїть ≈ … с (за знятими сегментами) — скільки він триватиме за темпом уже знятих сегментів.
- Жовті рядки про свіп 0.9.36
- Під рядком стану програма пише те, чого з картинки не видно. Свіп іде на темпі … МС/с, а не на найширшому … — темп знижено під задану RBW; у рядку сказано, у скільки разів прохід довший проти найширшого темпу з тим самим N і числом спектрів (розрахунок). Свіп іде програмним шляхом: … — і чому: кадр довший за блок приладу, прилад віддавав коротші блоки або його апаратний свіп не запустився; це в десятки разів повільніше. Задана RBW на такій ділянці дала б сітку свіпу понад 5 млн бінів… або Задана RBW недосяжна на жодному темпі приладу… — свіп лишився на найширшому темпі, і фактична RBW грубша за задану. Програма не встигала забирати блоки свіпу: … — скільки блоків відкинуто, відколи свіп запущено, і скільки настройок останнього проходу усереднено з меншого числа спектрів, ніж замовлено.
- Спури
- не перевіряти, позначати (типово) або прибирати. Спур народжується в самому приймачі й стоїть на сталому зсуві від гетеродина: коли гетеродин їде, спур їде з ним, а сигнал в ефірі лишається. Тому приблизно раз на 20 с один прохід іде зі зсунутими межами — по черзі на +1, +2 і +3 МГц — і на екран не потрапляє. Перша пара проходів іде після двох чистих. Знайдені біни дістають блакитну мітку вгорі спектра; прибирати підставляє зсунутий прохід точково, лише в позначених бінах, тож пакетні сигнали лишаються цілими. Рядок під перемикачем каже, скільки бінів знайдено, або чому перевірка неможлива: зсунутий останній сегмент вийшов би за стелю приладу — тоді звузьте прольот згори або 0.9.36 задайте грубішу RBW: темп свіпу йде за нею, а на ширшому темпі останній сегмент стоїть далі від стелі. Зсунутий прохід уміє лише свіп самого приладу; на програмному свіпі (RTL-SDR; HackRF One, коли свіп іде програмним шляхом) рядок 0.9.36 так і каже: На програмному свіпі спури зсувом гетеродина не перевіряються: зсунутий прохід уміє лише свіп самого приладу.
- Рядок про насичення АЦП
- Червоний рядок АЦП насичений у … тюнах (… МГц) з’являється, коли в сегменті щонайменше 0.1 % відліків стоять на повній шкалі АЦП (тюн у цьому рядку — те саме, що сегмент). 0.9.36 Насичення рахується на всю настройку: чистий останній блок не знімає попередження, яке поставив насичений перший. Рівні там — не вимір, а продукти обмеження, поруч можливі хибні піки. Зменште підсилення або приберіть сильний сигнал.
- Паспорт
- Кнопки зняти БЕЗ антени і вирізати / показувати. Паспорт власних завад приймача знімається лише у свіпі; докладно — на сторінці Мітки виявлення й паспорт завад.
- IQ-корекція
- вимк або увімк (типово). Розбаланс амплітуди й фази I/Q дає дзеркальний пік по інший бік від центру сегмента. Корекція міряє розбаланс на кожному сегменті, бо він залежить від частоти гетеродина, і придушує дзеркало. Рядок Розбаланс … дБ, фаза …° → дзеркало придушене на … дБ показує стан заліза до корекції.
- АЧХ
- Кнопка зняти (далі — перезняти) запам’ятовує форму полиці приймача по всьому прольоту з останнього повного проходу й одразу вмикає вирівнювання; ділити / не ділити вмикає й вимикає його. Рядок Нерівність полиці … → … дБ показує, що це дало. Вирівнюється лише форма: шкала лишається dBFS, калібруванням амплітуди це не є. Крива дійсна для того самого темпу, N і підсилень — після їх зміни панель червоним просить перезняти її.
- Шви
- згладжені (типово) — кросфейд у зоні перекриття сегментів. видимі — жорстка передача посередині, і кожна розбіжність стає сходинкою. Другий варіант потрібен, щоб оцінити зшивання, а не для виміру.
Стики сегментів
Сусідні сегменти перекриваються, і в зоні перекриття програма плавно переходить від одного до другого в лінійній потужності, а не в децибелах — інакше на стику з’являлася б яма. Рівні сегментів між собою не підганяються: похибка такої підгонки накопичувалася б уздовж усього прольоту.
Наскільки стики помітні, виміряно числом на повному прольоті 1–6000 МГц із 522 стиками: медіанний стрибок між сусідніми бінами саме на стиках — 1.000 дБ, а по всьому спектру — 1.465 дБ. Тобто стики тихіші за звичайний шум між сусідніми бінами й на картинці не вирізняються.
Вік свіпу
На зшитій картинці лівий край знято раніше за правий рівно на тривалість проходу. Це властивість свіпу, а не затримка, і панель довіри її називає: поле Вік показує до … с — час останнього проходу. Якщо прохід триває понад 2 с, число стає жовтим. Сусідні сегменти не є одночасним виміром: короткий сигнал, що з’явився, поки приймач стояв на іншому сегменті, у цей прохід не потрапить.
Траси й усереднення у свіпі
Max hold, Min hold і Average працюють у свіпі й накопичуються між проходами; лічильник усереднень рахує проходи. Зсунутий прохід перевірки спурів у траси не йде. Детектор траси у свіпі діє вздовж частоти — зводить біни сітки в точку траси, — а спектри одного сегмента згортає головний детектор. Невиміряна точка в Live — це діра; у hold і average точка тримає своє значення. Водоспад отримує один рядок на завершений прохід.
Зважені детектори CISPR у свіпі працюють без пам’яті: на частоті приймач стоїть мілісекунди, сталим часу нема коли діяти. Автошкала у свіпі судить за одним знімком на прохід, тому припасування після старту займає два проходи. Докладніше — на сторінках Траси, Детектори і Шкала, автошкала й водоспад.
Що не працює під час свіпу
- Прослуховування. Приймач перестроюється сотні разів на секунду, тож слухати одну частоту нема як. Панель приймача пише про це жовтим рядком; звук повертається, коли ви вибираєте ділянку, вужчу за миттєву смугу.
- Zero span. На графіку стоїть напис Іде свіп — приймач не стоїть на одній частоті.
- Запис IQ. Поки йде свіп, запис не отримує відліків. 0.9.25 Розрив не ховається: він позначається в метаданих як перерва через свіп. Якщо запис уже триває, свіп іде на темпі запису, а не на тому, який вибрала б програма, — зазвичай повільніше; коли план на цьому темпі не складається, вікно радить задати більше N або спинити запис. Коли запис скінчився, свіп, замовлений під ним, програма один раз перезамовляє на потрібному темпі.
- Передача. HackRF One напівдуплексний: під час свіпу передача не починається, а під час передачі не запускається свіп. Обидві відмови приходять із поясненням.
- Класи за ексцесом і пропуск блоків. На сегмент припадає замало спектрів для класів; Спектр із блоків у свіпі нічого не пропускає.
Збереження проходу в CSV
Меню Файл → Зберегти свіп (CSV)… (Ctrl+E) записує останній завершений прохід, щоб порівнювати його з іншою програмою числами, а не знімками екрана. Стовпці: freq_hz, dBFS, valid, а коли є відповідні маски — lo_spur і passport зі значеннями 0 або 1. Рівень сирий: без підстановки спурів, без вирізання паспорта й без ділення на АЧХ. Невиміряні біни у файлі є — з порожнім рівнем і valid=0. Рядки заголовка починаються з # і несуть прилад, підсилення, вікно, детектор і кількість спектрів на сегмент. Якщо перший прохід ще не завершено, записується зібране, і заголовок про це каже. У настроєному режимі команда відмовляє: зберегти можна лише свіп.
0.9.39 Частота в стовпці freq_hz — справжня частота біна. Файли, збережені попередніми версіями, мають частоти на пів біна вищі за справжні. З tinySA 0.9.41 пункт меню теж працює; що лягає в такий файл — на сторінці tinySA і tinySA Ultra.
Свіп на приймачах SDR SA PRO PRO
У SDR SA PRO свіпують і його приймачі. Числа нижче виміряно на справжніх приладах, без антени.
- ADALM-Pluto — програмний свіп: крок 16–22 мс; 2100–2400 МГц на 30.72 МС/с — 25 сегментів, прохід 0.65–0.78 с. Повний діапазон на Pluto в рази повільніший, ніж на HackRF One, який свіпує сам.
- Fobos SDR — з особливою прошивкою виробника свіп іде скануванням самого приладу, як апаратний свіп HackRF One: 50–6900 МГц на 50 МС/с — прохід 0.82 с, покрито 99.6 %. Зі стандартною прошивкою свіп програмний.
- bladeRF 2.0 micro — програмний свіп: 70–6000 МГц на 61.44 МС/с — 161 сегмент, близько 3.5 с на прохід (із відновленням зриву USB посеред проходу — до 8 с).
Обмеження
- Свіп — не одночасний вимір. Короткі й пакетні сигнали можуть не потрапити в прохід; край картинки старший на час проходу.
- Дрібна задана RBW на HackRF One знижує темп свіпу, і прохід росте як квадрат зниження; RBW, дрібніша за 366 Гц (HANN), — програмний свіп на 2 МС/с і хвилини на прохід (оцінка). Темп під задану RBW вибирається лише поки сітка свіпу не перевищує 5 млн бінів.
- Рівні — у dBFS, не в каліброваних dBm. Рівні сегментів між собою не вирівнюються; АЧХ рівняє лише форму полиці.
- Перевірка спурів зсувом гетеродина при одному спектрі на сегмент позначає лише лінії, вищі за поріг 20 дБ; лінії 10–20 дБ лишаються без мітки. Між перевірками минає до 20 с, тож спур, що з’явився після останньої, буде помічений лише на наступній.
- Мітки CFAR у свіпі мають високий поріг, бо на комірку один спектр, — див. Мітки виявлення.
- На повному прольоті HackRF One перший сегмент (1–14 МГц) на приладі автора був насичений на 99.6 % — саме для таких випадків існує рядок про насичення АЦП.
- RTL-SDR свіпує програмно й тому повільніше; перевірено на R820T2, тюнер R828D і RTL-SDR Blog V4 на залізі не перевірялись.
- tinySA 0.9.25 свіпує сам і цих органів керування не має — див. tinySA і tinySA Ultra.