Ahojte. Toto je veľmi zaujímavý projekt. Avšak niečo podobné už dávno existuje na aliexpress.com - samozrejme otázna je podpora softvéru v PC.
Hľadajte na aliexpress-e tieto výrazy:
XC7A100T+AD9363 70MHz-6GHz 2R2T B210 Mini Software Defined Radio board SDR
Puzhi PZSDR P201Mini/P203Mini Software Defined Radio Demo Board SDR transceiver
HAMGEEK Original PLUTO+ ADC/DAC AD9363 SDR Radio Receiver Transmitter
Ja mám zatiaľ originál RTL SDR v2 a nejaký POP MSI SDR - klon. Aj ja by som chcel mať rozsah do 6GHz - veľmi ma zaujíma hydrogen line 1420405751.768Hz
a potom pí krát hydrogen line π × 1420.40575177 MHz ≈ 4.46233627 GHz. Žiaľ na 2π x hydrogen line neexistuje sdr-ko, ktoré by malo takýto rozsah. Mám aj UWB anténu od 250MHz do 10GHz cca 9dBi - uvidíme čo sa podarí zachytiť - k tejto anténne by som chcel prirobiť takzvaný corner reflector.
Podle popisu na Ali je to klon USRP B210 a má to USB3. Já mám zkušenosti s bladeRF, což má stejná AFE (RFE) a taky USB3, ale je tam jiné FPGA a možná jiný čipset na USB3, ale hypoteticky by to mělo být stejné.
Long story short, funguje mi to dlouhodobě stabilně (plně produkčně) s 20MHz pásmem full MIMO (tj. kontinuálně 2 kanály vysílám a 2 kanály přijímám na 20 MHz). Šlo by to o třetinu zvýšit - vzorky jsou 12bit, ale posílají se tam jako 16bit aby to bylo zarovnané na celé bajty; jednoduchým packingem bychom tak při stejném datovém přenosu dostali 16/12*20 = 26.6 MHz. Výrobce tvrdí, že to jde ještě ohulit víc, ale neměl jsem moc důvod to zkoušet.
Jinak samotný ten čip zvládne 61.44 MHz (neoficiálně lze prý overclocknout na dvojnásobek, nejspíš za cenu kvality signálu), úzké hrdlo je připojení do počítače, první verze USB3 nestačí.
Jinak SDR ze zprávičky má koukám podobný Zynq jako RedPitaya a gigový ethernet (škoda, když se v titulku píše Raspberry, tak jsem doufal, že to třeba bude využívat nějakou rychlou sběrnici, co RPi má). Takže tímto to bude značně omezené: ten SoC mi ten gigový ethernet nezvládne saturovat (očekávej 65 MB/s místo >100 co by člověk doufal -- a co by se stalo kdyby současně člověk druhým směrem vysílal, tj. snažil se využít full duplex toho ethernetu, to si radši nepředstavuji, IMHO míň než půlka). Existuje nějaký hack, jak ethernet dělat přímo na tom FPGA bez toho pomalého linuxového SoC, pak to prý gigo dá, ale vypadalo to složitě na naprogramování -- pokud to tady neudělají autoři, tak je to prostě projekt pro FPGA experta (což ty teda nejspíš jsi, já bohužel ne).
> Žiaľ na 2π x hydrogen line neexistuje sdr-ko, ktoré by malo takýto rozsah.
Upřímně, já jsem dospěl k názoru, že univerzální SDR s dobrými parametry na tyhle gigahertzy prostě udělat nejde - nechci tě nějak demotivovat, ale bojím se, že i na těch 4.46 GHz už to bude špatné. Máme bladeRF (což je stejný čipset jako ve zprávičce a jako má i Pluto) a nad 3 GHz jde kvalita do kopru (ztráty klidně přes 10dB, šum). Takže jsme si museli udělat mezifrekvenci (433 MHz - tam se snadno kupují filtry a další součástky, protože je to populární ISM pásmo) a transvertor na cílové gigahertzy. S tím se pak opravdu dá dostat na nekompromisní kvalitu. No, a pak jsme narazili na to, že AD převodník, ale dokonce i aritmetika(!) uvnitř AD936x, je 12bitová. To je tobě pro radioastronomii jedno, ale v radaru to začalo být limitující (znamená to, že to nedokáže vyprodukovat číslo vyšší než 2047 (-2048) - takže laicky řečeno, poměr mezi nejmenší a největší věcí co radar vidí je jenom 1:2048, a to je prostě málo*). Takže teď máme vlastní SDR přímo na basebandu s 16bit ADC a 24bit aritmetikou.
* pro větší rejpaly: tahle čísla jsou napětí, ale v rádiu nás většinou zajímá výkon, což je na druhou. A počítá se to s decibely. Něco se získá tím, že rádio provozujeme na 20MS/s ale náš radar má bandwidth většinou kolem 1.7MHz, takže máme >10x oversampling. Na druhou stranu svět není ideální a má šum a zkreslení, takže nelze čekat, že z 12bit převodníku poleze kvalitně rozkmit od 1 do 2048 - typicky se alespoň 2 bity někde ztratí. Suma sumárum vymáčkl jsem z toho v reálném nasazení 67 dB. U meteoradaru s přiměřeným výkonem a přiměřeně velkou anténou je dobré mít tak kolem 90. Takže máme vlastní SDR které to dává.
Jo, to dává smysl. Mně se RedPitaya líbila, že má velkou šířku pásma, ale vstup vlastně "z demodulátoru" (resp. posledního MF směšovače) takže bych si musel postavit vlastní RF front end. A u toho jste přesně skončili :-)
Pokud správně chápu, pro Vaše potřeby stačí 1x TX a 1x RX. Resp. RX možná nejlíp I+Q, takže dva kanály, což RedPitaya přesně má, tuším až ve 14 bitech. Kolmost I+Q (pokud vám o ni jde) nakalibrujete a postkompenzujete v softwaru. Druhá MF 30 MHz, takže nejedete vzorkování s DC binem uprostřed a +/- kvadraturně nabraným pásmem (kladné a záporné frekvence), čímž si ušetříte nějaké starosti. Možná nakonec I+Q ani nepotřebujete... neříkal jste, že máte druhý kanál RX čistě pro detekci WiFi paketů?
BTW ta WiFi preambule v FFT vodopádu je parádní. Já ji viděl předtím jednou v životě, když jsem si postavil anténní "směrovou odbočnici" na 5 GHz s primitivní AM detekcí obálky. Na pomalém skopu jsem pak viděl přesně tohle.
Ten vlastní RF front-end zní jako krásná analogová práce. Bolesti je třeba jít naproti :-) Na směšování se dělají nějaké hotové čipy. Řešíte v zásadě šum vstupního tranzistoru, jakost výstupu lokálních oscilátorů (PLL), postavíte si AGC na míru pro Vaše potřeby... V jednom videjku jste o superhetech říkal, že na vstupu směšovače je potřeba nějaká poměrně vysoká minimální úroveň... toto předpokládám neplatí pro RX směr?
Omlouvám se za detailismus, asi už Vám koukám dost daleko do kuchyně, netrvám na podrobné odpovědi, chtěl jsem víceméně pochválit dobrou práci. Tuhle disciplínu u nás pěstuje čím dál míň lidí, zejm. mezi mladšími ročníky.
BTW2, vrtá mi hlavou, jak jde dohromady čekání na odraz (radarovou odezvu) zároveň se spojitou setrvačnou rotací antény? Musí být prostě rotace dostatečně pomalá / anténa dostatečně široká, aby se odraz vešel do vyzařovacího diagramu? 300 km / ms, resp. round-trip 150 km/ms, tzn. při dosahu třeba 300 km řádově necelý stupeň úhlový na každý "ping", což by i mohlo odpovídat anténě na fotkách... syntetickou aperturu zjevně nemáte... aspoň zas neřešíte shodné parametry ve více jednotlivých signálových cestách.
> Pokud správně chápu, pro Vaše potřeby stačí 1x TX a 1x RX.
Ne, všechny současné meteoradary jsou polarimetrické - nezávislý RX chain pro horizontální a vertikální, a v případě solid-state radarů i nezávislé TX chainy. Takže potřebujeme 2x2.
> Resp. RX možná nejlíp I+Q, takže dva kanály
To motáš dva kanály ve smyslu že to umí přijímat dva úplně nezávislé signály, vs. že z těch kanálů leze kvadraturní signál (to potřebuješ v dnešní době v podstatě vždycky).
Zajímavé je, že AD9361 směšuje na nulovou mezifrekvenci a pak tam má opravdu dva ADC - jeden na I a jeden na Q. Oproti tomu RP má normální jednokanálový reálný ADC a IQ se z toho počítá numericky.
Ten přístup s AD9361 má nevýhodu, že na nulové frekvenci je vždycky trochu bordel - přesně jak píšeš, I a Q mají offset, různý gain a nejsou ortogonální, protože nepřesnosti výroby. To se řeší jednak kalibrací (to dělám na TX straně, kde mi ten leak na nulové frekvenci vadí, protože to proleze do vysílání mimo naši frekvenci a neprojde to EMC) - šudlám offsety a zisky I a Q DAC a snažím se ten leak minimalizovat. A jednak to řeším tím, že prostě poslouchám o 2 MHz vedle nuly a pak to filtruju a downsampluju v počítači numericky.
RP přístup (reálné ADC/DAC) má nevýhodu, že si musíš řešit všechny ty Nyquisty a aliasing sám - tj. musíš před tím mít filtry, aby to mělo fakt správně pásmově omezený signál, úplně jak v teoretických učebnicích DSP. Výhoda kromě zaručené kolmosti atd. (protože se I/Q generují až matematicky z těch reálných dat) je, že tyhle ADC bývají typicky rychlejší, takže se nahoní rozlišení/SNR na tom, že se to brutálně oversampluje a pak se to decimuje a filtruje numericky.
> neříkal jste, že máte druhý kanál RX čistě pro detekci WiFi paketů?
To bejvávalo tak v roce 2021 :). V podstatě v prvním prototypu + za covidu nešly koupit rozumné filtry na mezifrekvenci, sehnali jsme jenom nějaký co měl asi 1.5MHz BW, takže se tam ta wifi nevešla. Teď už je to tak, že máme 4MHz BW, z toho 2MHz jsme my a to okolí je ta detekce.
> Ten vlastní RF front-end zní jako krásná analogová práce. Bolesti je třeba jít naproti :-)
Tak my už jsme si předtím užili ten frontend z 433 MHz na 5.6 GHz, takže tady už to nebylo tak hrozné. V podstatě jsme řešili následující výzvy:
- u toho prvního frontendu (na 5.6GHz) jsme měli lokální oscilátor, který fázově šuměl, a výsledek byl, že korelační funkce vycházela blbě (měla sidelobes, navíc s náhodnou fází, takže to nedokázal odstranit ground clutter filtr). To bylo nepříjemné hlavně protože se to blbě ladilo - když to člověk zkoušel na stole tak, že si vysílal přes atenuátor přímo z vysílače do přijímače, tak všechno fungovalo, protože LO je sdílený a ten šum se navzájem odečetl. Problém se projevil až v terénu na vzdálenějších cílech, protože to za tu dobu, co signál letí tam a zpět, stihlo oddriftovat. Následně vyřešeno přechodem na luxusnější PLL.
- SAW filtry mají kapacitu mezi prstíky, takže se to chová jako třeba jako bandpass na těch inzerovaných 433 MHz + highpass od 2 GHz výš. Takže je potřeba za to ještě zapojit lowpass na 1 GHz a pak už je to dobrý.
- cívky mají kapacitu mezi závity, takže se LC lowpass chová jako lowpass třeba na 40 MHz + highpass od 400 MHz výš. Takže je potřeba strategicky kombinovat cívky s velkou indukčností a s malou indukčností se závity daleko od sebe.
> Na směšování se dělají nějaké hotové čipy.
No tak samozřejmě že máme jako normální mixer, to ani nevím jak by se stavělo (z diod a trafíček?).
> postavíte si AGC na míru pro Vaše potřeby
AGC jsme se rozhodli nedělat.
AGC se dá dělat buď v rámci pulzu (aby byly blízké odrazy utlumené a vzdálené zesílené) (tomu se u radaru říká STC), ale tam mě strašili, že to nikdy nedokážu napojit tak, aby to na sebe pasovalo a nebyl tam zub v amplitudě.
Nebo se dá dělat dlouhodobě.
My to děláme tak, že spočítáme power budget tak aby tam všude byla pár dB rezerva, pak to postavíme, a pak vezmeme analyzátor a na pár míst dáme normálně šroubovací 0-3dB atenuátory aby se to srovnalo.
> V jednom videjku jste o superhetech říkal, že na vstupu směšovače je potřeba nějaká poměrně vysoká minimální úroveň... toto předpokládám neplatí pro RX směr?
Platí to i pro RX, LO vstup směšovače musí být vždy kolem 10dBm aby to směšovalo. To už je v pohodě, jakmile se v tom umí trochu chodit, jenom na začátku to byla bariéra :)
RX a TX vypadá vlastně dost stejně a i (maximální) úrovně jsou podobné, protože ze směšovače typicky leze nejvíc tak maximálně 0dBm. Na TX se to pak tedy zesiluje od této úrovně (tj. je tam třeba 70dB zisk - takže ty první stupně musí být dobře stíněné).
> tzn. při dosahu třeba 300 km řádově necelý stupeň úhlový na každý "ping"
Je to horší: aby alespoň nějak fungoval Doppler, tak potřebuješ teoreticky dva vzorky z každého směru (a porovnat mezi nimi fázi -- myšlenka je, že když se ta věc třeba přiblížila, tak se mezi radar a věc vejde menší (obecně neceločíselný) počet vlnových délek, takže to přijde s jinou fází), v praxi víc, protože stagger (pulzy se sází nerovnoměrně od sebe, protože ten Doppler má tendenci aliasovat - tak to na nějakých intervalech aliasuje a na nějakých jiných ne).
Jenže tím jak se anténa otáčí, tak to s každým pulzem nabere trochu jinou část cíle. Výsledkem je něco jako nejistota/intrinsický Doppler způsobený otáčením. Pro běžné parametry se bavíme o rozptylu řádově 0.5m/s; čím rychlejší otáčení, tím horší.
No a pak jsou tady proměnné pro jejichž měření je potřeba nabrat toho z každého směru mnohem víc (typicky 32-64):
- vůbec aby fungoval declutter (tj. odstranění cílů s nulovou frekvencí) - to se dělá tak, že se vezme pro každý range bin těch 32 vzorků, spočítá se FFT (nebo nějaký fit polynomem, nebo se vygeneruje filtr, který maže nulovou frekvenci), smaže se nulová frekvence a IFFT zpátky.
- proměnná doppler spectrum width: můžeš si to představit tak, že změříš těch 32 vzorků a dostaneš 32 (nebo teda jako 31, protože to je vždycky rozdíl proti předchozímu, ale to je jedno) názorů na to jaká je teda rychlost cíle (ve skutečnosti spočítáš FFT jako v předchozím případě, ale to se asi špatně představuje). Pokud jsou cíl nudné kapičky v laminárním proudění, tak budou všechny rychlosti stejné. Pokud je tam turbulence a mele se to tam, tak budou ty rychlosti rozdílné. Pokud je to věc s vrtulemi (větrná elektrárna, letadlo, vrtulník), tak tam bude vidět, jak vrtule jdou od tebe/k tobě.
Čili tohle se u počasí používá na měření turbulence a u letadel na odhad typu letadla.
- proměnná korelační koeficient mezi polarizacema. Vezmeš těch 32 vzorků pro horizontální a pro vertikální polarizaci a spočítáš jejich korelaci (naivně jako z učebnice statistiky, pokročile nějak normalizovanou). To ti říká, jak moc se ty polarizace vyvíjejí v čase stejně. Pokud jsou tam opět nějaké nudné kapičky, tak je to furt stejné (a korelace bude skoro 1). Pokud je tam hmyz, který mává křidélky alespoň na ~20Hz (typický dwell time je tak 50ms), tak má křídla chvíli horizontálně, chvíli 45°, chvíli vertikálně, a ty polarizace se tedy vyvíjejí výrazně odlišně a jejich korelace bude nízká.
Pak tam je nějaká věc které nerozumím a souvisí to s fyzikou atmosféry, ale led obalený ve vodě (=tající kroupy/tající sníh) má taky korelaci nízkou a kouř má taky korelaci nízkou. A chaff (hliníkové pásky, které sypou vojenská letadla, aby udělaly bordel na radaru) celkem taky.
Tohle může vypadat triviálně, ale v některých zemích (i třeba Austrálie) občas povstane fakt intenzivní mračno hmyzu. A taky tam armáda dělá cvičení s chaffem.
No, celkově, chceš nabrat 40 vzorků z každého stupně, takže ~15k na otočku, průměrná opakovací frekvence je 500 Hz, takže otočka trvá 30 sekund. Typicky na nejnižších elevacích děláš tohle 2-3 RPM, na vyšších pak máš rychlejší točení a vyšší opakovačku, protože nepotřebuješ tak velký dosah (paprsek vyleze z troposféry).
Jo a pak ještě existuje range unfolding: každý pulz vysíláš s pseudonáhodnou fází, tj. při vysílání nějakou fázi přičteš a při příjmu ji zase odečteš. Takže věci co přišly ještě z předchozího pulzu mají nekorelovanou fázi k tomu současnému a vyprůměrují se do nuly (do šumu). To je second trip suppression. A pak se dá ještě dělat second trip recovery, kdy si vyrobíš jakoby druhý pulz vzniklý tak, že jsi od něj odečetl tu _předchozí_ fázi. Takže současný pulz je s ním nekoherentní a naopak ten předchozí je koherentní. A napojíš to za sebe.
29. 12. 2024, 17:43 editováno autorem komentáře
Díky za masakr odpověď :-)
Aha... :-O LO +10 dBmW na nějakých 5.2 GHz, tzn. prakticky jako výkonový konec wifi TX, navíc aby to bylo čisté... no mňam. Myslím poměrně velký rozkmit, napěťově 0.7V AC ef. @50 Ohm nebo 1V AC ef. @100 Ohm. Přecejen na "mně bližších" 1.575 GHz je to mnohem snáz představitelné :-)
Potvrzuju, že jsem těch cca +10 dBmW jako požadavek na LO našel v několika datasheetech. Asi aby to "nelinearizovalo" (intermodulovalo) jak se patří.
Brát I a Q dvěma ADC by se dalo, pokud budou mít navzájem synchronní vzorkování a ty dvě komplexní složky (I+Q) polezou z kvadraturního výstupu směšovače (vlastně dva paralelní směšovače, kterým pootočíte fázi LO o 90°). S tímto uspořádáním má smysl směšovat "na nulový ofset", protože komplexní výstup směšovače umí podat informaci o "záporné frekvenci". FFT bere jako vstup buffer komplexních čísel (komplexních vzorků v časové doméně) a vyrobí na výstupu buffer komplexních vzorků ve frekvenční doméně. Pokud ale druhou MF vyrobíte smísením s přiměřeným ofsetem LO (pro Vás zřejmě vyhovuje pár MHz vedle jak říkáte), stačí nacpat do vstupního bufferu FFT jenom jednu složku (říkejme jí reálná), druhou komplexně sdruženou necháte v nule, a na výstupu přesto dostanete I+Q = vlastně fázor pro každý frekvenční bin. Akorát půlku binů můžete zahodit, protože tuším vyjdou navzájem zrcadlové (vlastně tím vzniká ta Nyquistova poučka o šířce pásma = 1/2 Fs). A jestli kecám, tak jenom trochu :-)
Kruhový směšovač (čtyřkvadrantový násobič) na frekvenci v desítkách či stovkách MHz by se asi případně dal postavit z tranzistorů, základní schéma tuším obsahuje např. free kniha "Designing Analog Chips", autorem je nebožtík Hans Camenzind. Ale je jistě pitomost to stavět ze základních součástek, když jsou na to čipy a jsou relativně širokopásmové. Mezi mixer čipy specifikovanými do 6 GHz jsem rychlým googlem potkal jediný, který má v datasheetu uvedeno vnitřní schéma: IAM-91563 od Agilentu (zastaralý) - je tam vidět "nevyvážené" zapojení asi s pěti GaAs PHEMT FETy. A je to exot taky v tom ohledu, že chce na LO vstupu jenom -5 dBmW.
Za starých časů v analogové doméně se na mikrovlnách využívalo tuším vlastností vhodné diody (její nelinearity) - zřejmě stačí jediná, je třeba ji jenom vhodně "stejnosměrně pootevřít". Viděl jsem taky moduly "pasivního směšovače", kde na ekvivalentním schématu byly vidět dvě trafa a graetz z mikrovlnných diod :-) Ty trafa by asi na 5 GHz nechodily...
WiFi rádia údajně "vzorkují o MF mimo" a směšování emulují nyquistovským aliasingem - počítám, že tak nějak by mohly fungovat ty širokopásmové radarové přijímače od TI (šilhám na AFE8010).
> Avšak niečo podobné už dávno existuje na aliexpress.com - samozrejme otázna je podpora softvéru v PC.
To je dost zásadní, a to nejen podpora ze strany SW v počítači, ale i firmwaru v tom zařízení - zejména pokud to používá FPGA a ty nejsi FPGA hacker.
Například bladeRF má úplně boží SDK - i já, v podstatě bez zkušeností s FPGA programováním (týdenní kurz na střední), jsem si tam dokázal za dva večery dodělat novou funkci. A i out-of-the-box to je naprosto použitelné SDR.
Pro srovnání třeba RedPitaya se dodává se softwarem, který v podstatě nefunguje, a na GitHubu někdo má neoficiální SW, který je lepší, ale stejně mi trvalo několik dní vůbec rozkvokat. Ale i s tímto alternativním softwarem jsme dost zápasili a pak jsme jeho autorovi zaplatili, aby nám s tím pomohl, a i po té to není optimální. Je to škoda, protože hardware je to relativně dobrý - zejména jeho analogová část (digitální dojíždí na tom, že tam je 10 let starý SoC s pomalým procesorem a pomalou pamětí).
Našiel som na Ali:
https://s.click.aliexpress.com/e/_oFI5s1D
Je to asi najlepšia cena €339.
Bude to dobrá kúpa ? Má to už niekto z okolia ????
Dik za info