C++ dilində SDR DVB-T2 qəbuledicisi

Software Defined Radio (proqram təminatı ilə müəyyən edilmiş radio sistemi) baş ağrılarının proqramlaşdırılması üçün metal işini (prinsipcə, sağlamlıq üçün faydalıdır) əvəz etmək üsuludur. SDR-lər böyük gələcəyi proqnozlaşdırır və əsas üstünlük radio protokollarının həyata keçirilməsində məhdudiyyətlərin aradan qaldırılmasıdır. Buna misal olaraq yalnız SDR metodu ilə mümkün olan OFDM (Ortoqonal tezlik bölgüsü multipleksasiyası) modulyasiya metodunu göstərmək olar. Lakin SDR-nin daha bir sırf mühəndislik imkanı da var - bu, istənilən ixtiyari nöqtədə ən az səylə siqnalı idarə etmək və vizuallaşdırmaq qabiliyyətidir.

Maraqlı rabitə standartlarından biri DVB-T2 yerüstü televiziyasıdır.
Nə üçün? Əlbəttə ki, ayağa qalxmadan sadəcə televizoru aça bilərsiniz, amma orada izləmək üçün heç bir şey yoxdur və bu artıq mənim fikrim deyil, tibbi faktdır.

Ciddi olsa da, DVB-T2 bir çox xüsusiyyətləri nəzərə alaraq hazırlanmışdır, o cümlədən:

  • daxili tətbiq
  • QPSK-dan 256QAM-a qədər modulyasiya
  • bant genişliyi 1,7MHz-dən 8MHz-ə qədər

SDR prinsipi ilə rəqəmsal televiziyanın qəbulu təcrübəsi var. DVB-T standartı tanınmış GNURadio layihəsindədir. DVB-T2 standartı üçün gr-dvbs2rx bloku var (hamısı eyni GNURadio üçün), lakin o, ilkin siqnal sinxronizasiyasını tələb edir və ruhlandırır (xüsusi Ron Economos sayəsində).

Bizdə nə var.

ETSI EN 302 755 standartı var ki, ötürməni təfərrüatlandırır, lakin qəbulu deyil.

9,14285714285714285714 MHZ diapazonunda 32768 daşıyıcı ilə COFDM tərəfindən modulyasiya edilmiş 8 MHz seçmə tezliyi olan efir siqnalı.

Bu cür siqnalları ikiqat seçmə tezliyi ilə (heç nə itirməmək üçün) və bant genişliyindən (superheterodin qəbulundan) daha çox aralıq tezlikdə qəbul etmək tövsiyə olunur, DC meylindən və yerli osilatorun "sızmasından" xilas olmaq (LO) ) qəbuledicinin girişinə. Bu şərtlərə cavab verən cihazlar sadəcə maraq üçün çox bahadır.

10Msps 10bit ilə SdrPlay və ya oxşar xüsusiyyətlərə malik AirSpy daha ucuzdur. Burada ikiqat seçmə sürətindən söhbət gedə bilməz və qəbul yalnız birbaşa konvertasiya ilə həyata keçirilə bilər (Zero IF). Buna görə də (maliyyə səbəblərinə görə) biz minimum aparat çevrilməsi ilə "təmiz" SDR tərəfdarlarının tərəfinə keçirik.

İki problemi həll etmək lazım idi:

  1. Sinxronizasiya. Faza dəqiqliyi və seçmə tezliyi sapması ilə dəqiq RF tezliyi sapmasını tapın.
  2. DVB-T2 standartını geriyə doğru yenidən yazın.

İkinci tapşırıq daha çox kod tələb edir, lakin onu əzmlə həll etmək olar və test siqnalları ilə asanlıqla yoxlanılır.

Test siqnalları ətraflı təlimatlarla birlikdə BBC serverində ftp://ftp.kw.bbc.co.uk/t2refs/ mövcuddur.

Birinci problemin həlli SDR cihazının xüsusiyyətlərindən və idarəetmə imkanlarından çox asılıdır. Tövsiyə olunan tezlik idarəetmə funksiyalarından istifadə, necə deyərlər, uğurlu olmadı, lakin onları oxumaqda çoxlu təcrübə verdi. sənədləşmə, proqramlaşdırma, seriallara baxmaq, fəlsəfi sualların həlli... bir sözlə, layihədən imtina etmək olmazdı.

“Saf SDR”yə inam daha da gücləndi.

Siqnalı olduğu kimi qəbul edirik, onu demək olar ki, analoqa interpolyasiya edirik və artıq diskret olanı çıxarırıq, lakin real birinə bənzəyirik.

Sinxronizasiya blok diaqramı:

C++ dilində SDR DVB-T2 qəbuledicisi

Burada hər şey dərslikdədir. Növbəti bir az daha çətindir. Fərqləri hesablamaq lazımdır. Müxtəlif metodların üstünlüklərini və mənfi cəhətlərini müqayisə edən çoxlu ədəbiyyat və tədqiqat məqalələri var. Klassiklərdən - bu, "Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimum Receiver Design for OFDM-based Broadband Transmission - Part I and II". Yalnız mən saymağı bacaran və saymaq istəyən bir mühəndislə rastlaşmamışam, ona görə də mühəndislik yanaşması tətbiq edilib. Eyni sinxronizasiya üsulu test siqnalına detuninqlər təqdim etdi. Fərqli ölçüləri məlum sapmalarla müqayisə edərək (mən özüm təqdim etdim) performans və icra asanlığı üçün ən yaxşıları seçildi. Qəbul tezliyinin sapması qoruyucu interval və onun təkrarlanan hissəsini müqayisə etməklə hesablanır. Qəbul tezliyinin fazası və seçmə tezliyi pilot siqnalların faza sapmasından təxmin edilir və o, sadə, xətti OFDM siqnal ekvalayzerində də istifadə olunur.

Ekvalayzer xüsusiyyəti:

C++ dilində SDR DVB-T2 qəbuledicisi

DVB-T2 çərçivəsinin nə vaxt başladığını bilsəniz, bütün bunlar yaxşı işləyir. Bunun üçün siqnalda P1 preambula simvolu ötürülür. P1 simvolunun aşkarlanması və şifrəsinin açılması üsulu ETSI TS 102 831 Texniki Spesifikasiyasında təsvir edilmişdir (həmçinin bir çox faydalı qəbul qaydaları var).

P1 siqnalının avtokorrelyasiyası (ən yüksək nöqtə çərçivənin başlanğıcıdır):

C++ dilində SDR DVB-T2 qəbuledicisi

İlk şəkil (hərəkətli şəkilə cəmi altı ay qalıb...):

C++ dilində SDR DVB-T2 qəbuledicisi

Və burada IQ balanssızlığının, DC ofsetinin və LO sızmasının nə olduğunu öyrənirik. Tipik olaraq, bu birbaşa çevrilmə ilə bağlı təhriflər üçün kompensasiya cihazın SDR sürücüsündə həyata keçirilir. Buna görə də başa düşmək üçün çox vaxt lazım oldu: dost QAM64 bürcündən ulduzları sökmək kompensasiya funksiyalarının işidir. Hər şeyi söndürüb velosipedimi yazmalı oldum.

Və burada hərəkət edən şəkil:

C++ dilində SDR DVB-T2 qəbuledicisi

DVB-T64 standartında xüsusi bürc fırlanması ilə QAM2 modulyasiyası:

C++ dilində SDR DVB-T2 qəbuledicisi

Bir sözlə, bu, qiymənin yenidən ətçəkən maşından keçirilməsinin nəticəsidir. Standart dörd növ qarışdırmağı nəzərdə tutur:

  • bit interleaving (sütun burma ilə bit interleaving)
  • hüceyrə interleaving (kodlaşdırma blokunda hüceyrələri qarışdırmaq)
  • vaxt interleaving (o da kodlaşdırma bloku qrupundadır)
  • tezliklərin interleaving (OFDM simvolunda tezliklərin qarışdırılması)

Nəticədə, girişdə aşağıdakı siqnal var:

C++ dilində SDR DVB-T2 qəbuledicisi

Bütün bunlar kodlaşdırılmış siqnalın səs-küy toxunulmazlığı uğrunda mübarizədir.

Ümumi

İndi biz yalnız siqnalın özünü və onun formasını deyil, həm də xidmət məlumatlarını görə bilirik.
Efirdə iki multipleks var. Hər birinin iki fiziki kanalı (PLP) var.

Birinci multipleksdə bir qəribəlik nəzərə çarpdı - birinci PLP-də "çox" etiketi var, bu məntiqlidir, çünki multipleksdə tək deyil, ikinci PLP isə "tək" etiketinə malikdir və bu sualdır.
İkinci multipleksdə ikinci qəribəlik daha maraqlıdır - birinci PLP-də bütün proqramlar, ikinci PLP-də isə sakit sürətlə naməlum təbiət siqnalı var. Ən azı əlliyə yaxın video formatını və eyni miqdarda səsi anlayan VLC pleyer onu tanımır.

Layihənin özü burada tapa bilərsiniz.

Layihə SdrPlay (və indi AirSpy.) istifadə edərək DVB-T2-nin dekodlanmasının mümkünlüyünü müəyyən etmək üçün yaradılmışdır, ona görə də bu, hətta alfa versiyası deyil.

P.S. Məqalə çətinliklə yazılarkən biz onu PlutoSDR layihəsinə bağlaya bildik.

Kimsə dərhal deyəcək ki, USB6 çıxışında IQ siqnalı üçün cəmi 2.0Ms/s var, lakin sizə ən azı 9,2Ms/s lazımdır, lakin bu ayrı bir məsələdir.

Mənbə: www.habr.com

Добавить комментарий