Yazılımda taşıyıcı faz kurtarma nasıl yapılır?


13

Yazılımda bir BPSK sinyalinin fazını kurtarmak için seçenekler nelerdir? Çevrimiçi olarak bulabileceğim tek kaynak devre şemaları içeriyor - bunu analog devrelere aşina olmayan insanlara açıklamak isteyen kimse yok gibi görünüyor.

Taşıyıcı kurtarmanın teoride nasıl çalıştığına dair herhangi bir açıklama istiyorum ve ayrıca sözde kod veya kod örneklerini çok isterim.


Normalde kod örnekleri vermiyoruz - özellikle de BPSK demodülatörü kadar karmaşık bir şey için.
Jim Clay

1
JimClay'in belirttiği gibi, bir demodülatör uygulamak için tam kaynak kodu sağlamak için yeterli zamana sahip birine sahip olmanız olası değildir. Ancak, kavramları anlarsanız, bir uygulama oluşturma mekaniği kolay olmalıdır. Genel olarak, bir yazılım alıcısı, karşılık gelen donanım tekniğine benzer bir yapıya sahip olacaktır (örneğin, ileri beslemeli doğrusal olmayan tabanlı bir senkronizör veya bir geri besleme PLL-bsed yaklaşımı). Hedeflemeyi planladığınız belirli bir topolojiniz var mı?
Jason R

@JimClay ve JasonR hakkındaki yorumlarınız için teşekkür ederiz. Kaynak kodunu sormak istememiştim. Soruyu daha spesifik olacak şekilde güncelledim: Sadece analog devrelerin ve devre şemalarının anlaşılmasını önermeyen herhangi bir açıklama arıyorum.
Keith

Yanıtlar:


25

BPSK'nın en basit olduğu bir faz kaydırma anahtarlı sinyali demodüle etmek için taşıyıcı frekansını, fazını ve sembol zamanlamasını kurtarmanız gerekir.

Patlama Sinyalleri Bazı sinyaller patlar ve başlangıç ​​eki veya orta amble adı verilen (patlamanın başlangıcında veya ortasında görünmesine bağlı olarak) bilinen bir veri dizisi sağlar. Demodülatörler, bilinen veri sekansına "bakan" bir filtre kullanabilir ve bunu, patlamanın frekansını, fazını ve simge zamanlamasını bulmak için kullanabilir. Bunu her patlama için yaparlar ve "sürüklenme" (demodülatör ile küçük hatalar biriktikçe alınan sinyal arasında oluşan kademeli mesafe) ile uğraşmak zorunda kalmazlar, çünkü patlamalar genellikle sürüklenmenin bir sorun.

Sürekli Sinyaller Sonra sürekli sinyaller vardır. Çoğunlukla burst sinyallerinden kurtarmak daha zordur çünkü normalde sinyale kilitlenmeye yardımcı olacak bilinen bir veri diziniz yoktur ve sinyale kilitlendikten sonra bile kayma konusunda endişelenmeniz gerekir. Genellikle sürekli sinyalleri kurtarmak için kullanılan ana adımları yüksek düzeyde tarif etmeye çalışacağım.

Taşıyıcı Kurtarma

Genellikle aradığınız sinyalin hangi frekansta olacağını veya en azından hangi frekanslarda olabileceğini bilirsiniz. Bununla birlikte, bu bilgi ile bile, genellikle hiçbir frekans aynı frekansta iletmediği için frekans ofsetini düzeltmeniz gerekir. Her zaman bir hata vardır. Genel yöntem, sinyalin olacağını düşündüğünüz frekansı karıştırmak ve kalan frekans hatasını düzeltmektir. Bu bir Costas Loop ile yapılabilirveya taban bandı sinyal verilerinin dördüncü gücünü alarak ve bir frekans yükselmesi arayarak. Taşıyıcı ofsetinde * 4 bir frekans artışı olmalıdır (örneğin, verilerin bir FFT'sini 4. güce alıp 8300 Hz'de bir frekans artışı görürseniz, bu, taşıyıcı ofsetinin 8300/4 = 2075 Hz olduğu anlamına gelir). Bu, frekans ofsetinde bir ilk kilit elde etmenin çok etkili bir yoludur. Ayrıca, ara sıra yeniden yaparsanız sürüklenmeyi telafi etmek için de kullanabilirsiniz. Daha sonra değineceğim sapmayı telafi etmenin başka bir yolu daha var.

Taşıyıcı Aşaması

Bu noktada karmaşık verilerinizi karmaşık düzlemde çizdiyseniz (x ekseni gerçek, y ekseni hayali) aşağıdaki gibi görünmelidir-

Döndürülmüş BPSK

Yakından bakarsanız, bulanık çizginin uçlarına doğru iki yoğun alan görebilirsiniz. Bunlar BPSK takımyıldız noktalarıdır. Aradaki noktalar takımyıldız noktaları arasındaki geçişlerdir. Sembol zamanlamasını aldığımızda bunlar temizlenecek. Çizginin bir açıda olmasının nedeni, taşıyıcı fazdan kaynaklanmaktadır. Bu, negatif gerçek değerleri olan tüm noktaları çarparak sinyalin yansıtılmasıyla ölçülebilir.ejπ

Döndürülmüş ve yansıtılmış BPSK

ve sonra noktaların açılarının ortalamasını almak. Bunu hesapladıktan sonra, noktaları çarparak taşıyıcı ofsetini kaldırmış olan tüm noktalardan bu açıyı çıkarın . Faz ofsetini dinamik olarak güncelleyerek bu teknikle taşıyıcı ofset sapmasını da telafi edebilirsiniz. Veri aşamalı olarak düzeltildikten sonra şöyle görünmelidir-ejω

Gürültülü BPSK

Veri aşamalı olarak düzeltildikten sonra, herhangi bir bilgi eklemediği için verilerin hayali kısmını bırakabilirsiniz.

Sembol Zamanlaması

Normalde bilmelisiniz, önsel, demodüle etmeye çalıştığınız sinyalin sembol periyodu. Bununla birlikte, sembol periyodunu / frekansını belirlemeniz gerekiyorsa, taşıyıcı ofsetinin nasıl algılandığına benzer şekilde yapabilirsiniz. Frekans artışına neden olacak verileri sembol frekansının iki katına çıkarabilirsiniz.

Taşıyıcıda olduğu gibi, fazı (zamanlamayı) doğru almanız ve daha sonra kaymayı telafi etmeniz gerekir. Bu sorunların her ikisi için olağan yöntem, sıfır geçişi aramaktır. Gürültü oldukça kötü olmadığı sürece, sembol geçişinin ortasında yalnızca -1'den 1'e veya 1'den -1'e sıfır noktasını geçmelidir. Gürültü bunun bir sembolün ortasında olmasına rağmen, çok sık gerçekleşmez.

Göz diyagramı

Yukarıdaki resme genellikle "göz diyagramı" veya "göz deseni" denir. İki sembol periyodu genişliğinde ve üst üste "yığılmış" birçok sembolü vardır. Osiloskoplara aşina olup olmadığınızı bilmiyorum, ancak böyle bir resim göstermek için bir osiloskop alabilirsiniz. Her neyse, iki "X" sembol geçişleridir. X'lerde yüksek ile alçak çizgiler, sembol 1'den -1'e geçerken ve X'lardaki düşük ile yüksek çizgiler sembolün -1'den 1'e geçtiği zamandır. pembe çizgi, sembolün 1 mi yoksa -1 mi olduğunu görmek için verileri örneklemek için en uygun yerdir.

Aynı teknik sembol zamanlama sapmasını işlemek için de kullanılabilir. Önceki sıfır geçişinden ve sıfır geçişinden sonraki mesafenin koşu ortalamasını alın. İki ortalama hemen hemen aynı ise, her şey yolunda demektir. Biri diğerinden daha büyükse, numunenizi yakaladığınız yeri kaydırmanız gerekir.

Sembolleri doğru noktalardan örnekledikten sonra, veri noktalarınız klasik BPSK takımyıldızı noktalarına benzeyen bir şey almalıdır.

Gürültülü BPSK takımyıldızı

Umarım bu yardımcı olur.


Bu harika gönderiyi daha iyi hale getirmek için, sembol zamanlamasından önce saat kurtarma bölümünü ekleyebilirsiniz.
LWZ

Aklından geçenleri bildiğimi düşünüyorum ama emin değilim. Özellikle neyi düşündünüz?
Jim Clay

Çok teşekkürler! Sıfır geçişi aramayı veya gerçek / hayali x / y üzerine bu şekilde çizmeyi düşünmemiştim. Sadece faz grafiklerine bakıyorum ve her şeyi nasıl senkronize edeceğimi merak ediyorum. Tekrar teşekkürler!
Keith

@JimClay, Sembol Zamanlama bölümünüzün başında, "Normalde demodüle etmeye çalıştığınız sinyalin sembol periyodunu bilmelisiniz." Demiştiniz ve bu genellikle bir saat kurtarma ünitesi tarafından başarılıyor, çünkü normalde kazandınız ' t Verilerinizle birlikte bir saat gönderin. BPSK sinyali için bu, verilerinizi kaldıran sinyalin karesini alabileceğiniz kolaydır. Sonra güç spektrumuna baktığınızda, saat tonu adı verilen ve size sembol periyodunu veren bir tepe frekansı olmalıdır .
LWZ

Sembol sıklığı hakkında bir paragraf eklendi.
Jim Clay
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.