Bozulma telafisi filtresi nasıl oluşturulur


11

Karmaşık bir karıştırıcı, CIC decimator ve FIR telafisi / decimation filtresinden oluşan bir kanallaştırıcı oluşturuyorum . Son FIR filtresi, önemliyse, birden fazla filtre olarak uygulanabilir.

Benim sorum, CIC filtresinin düz olmayan frekans tepkisini telafi edecek şekilde bir filtre nasıl tasarlayabilirim? CIC yanıtının karşılıklı değerini hesaplayarak istediğiniz frekans tepkisini oluşturuyor ve ardından dürtü tepkisini almak için ters bir FFT aracılığıyla çalıştırıyor musunuz?

Gördüğünüz gibi, özel sorunum CIC filtreleriyle ilgili olsa da, sorum gerçekten her türlü bozulma telafisi filtresini nasıl oluşturduğunuzla ilgili.

Zaman ayırdığınız için teşekkürler.


3
Amacı, iletişim sisteminde daha önce bozulmayı telafi etmek olan bir filtreye genellikle ekolayzır denir ; bu arada size daha fazla bilgi verebilir. Yaygın türler sıfır zorlama ekolayzırdır (dengelediğiniz sistem frekans yanıtında sıfırlar varsa istediğiniz şey değildir) ve minimum ortalama kare hatası (MMSE) ekolayzırdır.
Jason R

@JasonR MMSE Adaptive Equalizer'ları kanal dengeleme kararına yönelik ekolayzerler bağlamında tanıyorum, ancak kastettiğinizden şüphe ediyorum. Ekolayzeri bir şekilde eğitir misiniz? Bence hata, hatanın ne olduğunu nasıl belirlediğinizdir.
Jim Clay

MMSE yalnızca ekolayzerin çabaladığı kritere karşılık gelir; uyarlanabilir veya uyarlanabilir olmayabilir. Telafi etmek için sistemin transfer fonksiyonunu ve herhangi bir katkı gürültüsünün otokorelasyon fonksiyonunu biliyorsanız ve her ikisi de zamanla değişmezse, zaman içinde sabitlenecek olan "MMSE ekolayzır" türetebilirsiniz. Uyarlanabilir çözümler, bu bilgiler tam olarak bilinmediğinde veya zaman içinde değiştiğinde (oldukça yaygındır) kullanılabilir.
Jason R

Uyarlanabilir filtreler, genellikle alıcının filtresinin iyi bir katsayı seti üzerinde birleşmesine izin veren bir dizi bilinen sembolün sistem üzerinden iletildiği bir eğitim modunu içerir. Eğitimden sonra, filtre musluklarının sürekli güncellemeleri için karar odaklı operasyonun kullanıldığı bir izleme aşamasına girmek de yaygındır. Alternatif olarak, SNR ve ISI'nın "yeterince iyi" olduğu bir rejimde, karar odaklı mod, başlangıçtan itibaren eğitim aşamasını atlayarak kör bir edinim şeması olarak kullanılabilir.
Jason R

Bu konuda matematiksel olarak erişilebilir olan okuma materyali bulmak biraz zor. Haykin'in Uyarlanabilir Filtre Teorisi'ni seviyorum , ancak matematiği kesmek biraz çaba gerektiriyor (ve bazı sağlam doğrusal cebir arka planına ihtiyacınız var). Düzenli olarak kullanmazsanız, öncelikle istatistiksel sinyal işleme konularını ele almanız gerekecek kadar karmaşıktır.
Jason R

Yanıtlar:


9

Aşağıda CIC telafisi ele alınmaktadır ve genel bir "bozulma" tekniği değildir. Ancak, değişken olmayan "distorsiyonu" telafi etmek için basit bir yöntemdir. Frekans cevabı biliniyorsa, frekansın tersi telafi etmek için kullanılabilir. Az karmaşıklık nedeniyle zayıf bir filtrenin kullanılabileceği CIC filtresi gibi örnekler daha sonra sinyal zincirinde telafi edilir. Bu örnekte frekans yanıtı bilinmekte ve tersi kullanılabilmektedir. Çok oranlı filtrelerde, yalnızca ara vermeden sonra "kullanılabilir" spektrumu kullanmak istediğinizi unutmayın.

Genel olarak, bir CIC filtresini telafi etmek için telafi filtresini üretmek üzere CIC filtrelerinin yanıtının tersi kullanılabilir. CIC'nin yanıtı vardır (bakınız referans [r2] veya [r3])

'H(ω)=|sbenn(ωD/2)sbenn(ωM/2)|N-

D'nin farklı gecikme olduğu durumda, M, decimation hızıdır ve N, filtre sırasıdır (basamaklı filtre sayısı). Tersi olarak belirtilebilir

'H(ω)=|sbenn(ωM/2)sbenn(ωD/2)|N-

Telafi filtresinin frekans cevabını aldıktan sonra, istediğimiz FIR filtresinin uzunluğunu seçebiliriz. FIR uzunluğu uygulamaya özgüdür. Açıkçası FIR filtresi ne kadar uzun olursa o kadar iyi telafi edilir.

Aşağıdakiler, bu düz ileri tazminatın çizimleridir.

Frekans cevapları ve grafikleri oluşturmak için Python kodu aşağıdadır.

import numpy as np
from numpy import sin, abs, pi
import pylab

D = 1; M = 7; N = 3

Hfunc = lambda w : abs( (sin((w*M)/2)) / (sin((w*D)/2.)) )**N
HfuncC = lambda w : abs( (sin((w*D)/2.)) / (sin((w*M)/2.)) )**N

w = np.arange(1024) * pi/1024

G = (M*D)**N
H = np.array(map(Hfunc, w))
Hc = np.array(map(HfuncC, w))
# only use the inverse (compensation) roughly to the first null.
Hc[int(1024*pi/M/2):] = 1e-8
plot(w, 20*log10(H/G))
plot(w, 20*log10(Hc*G))
grid('on')

sbennc-1

[r1] Altera, "CIC telafi filtrelerini anlama"

[r2] R. Lyons, "Dijital Sinyal İşlemeyi Anlamak", 2. Baskı, Prentice Hall, Yukarı Eyer Nehri, New Jersey, 2004

[r3] R. Lyons, "Basamaklı Entegratör Tarak Filtrelerini Anlama"


Ref 1 harika, ancak farklı terminoloji kullanıyor (M = D'yi kullandığınız aşama gecikmesi. R = M'yi kullandığınız azaltma oranı) bu yüzden hatayı görmek biraz zaman aldı: WM / 2 kullanıyorsunuz, Altera pi'yi belirtir F / R. Hızlı bir Excel grafiğinden sonra, Altera sürümünün doğru olduğuna inanıyorum.
Alan Campbell

@AlanCampbell Yukarıdaki denklemleri (kod pasajında ​​yaptığım) çizerseniz hata olmadığını görürsünüz. Denklemlerde açıkça söylemediğim şey kazanç . Kod pasajında ​​ben kazanç kaldırmak dikkat edin. Kod parçacığını çalıştırırsanız ve değiştirirseniz M=8ve N=9bu, referans 1 ile aynı grafikleri oluşturur. 2. referansı daha yakın adlandırmayı kullandım.
Christopher Felton

2

Bence Christopher'ın cevabı iyi. Bize tembel / dolandırıcı türleri için bir tane ekleyeceğini düşündüm.

Matlab'ın fdatoolünü (Filtre Tasarım ve Analiz Aracı) kazarken, ters iç filtrenin CIC'nin bozulma telafisi filtresi olduğu CIC ve ters iç filtreleri tasarlayıp modelleyebildiğini keşfettim.

CIC filtresini doğrudan "Çok oranlı filtre oluştur" sayfasına (R2011b sürümünde soldaki düğme) gidip CIC filtresini belirterek oluşturursunuz. Daha sonra, enterpolasyon / decimation oranları, kaskad sayısı (Matlab buna "bölümler" der) vb. Gibi istediğiniz tüm parametreleri ayarlayabilirsiniz.

Ters tasarım filtresini, "Tasarım filtresi" sayfasına (aracın başlatıldığında varsayılan olduğu sayfa) gidip Lowpass açılır menüsünden "Ters Sayısal Düşük Geçiş" seçeneğini belirleyerek oluşturursunuz. Daha sonra bunun için çeşitli parametreleri ayarlayabilirsiniz. İletişim kutusunun Seçenekler bölümünde, "p" de dahil olmak üzere, basamak sayısına (içsel üs) karşılık gelen birkaç benzersiz parametre vardır.

Ters iç filtre tasarımı tamamen tatmin edici değildi, çünkü doğru yapmak, matematiğin geçiş bandımın nerede olduğunu, CIC düşüşünün o noktada ne olduğunu bulmaktan daha az bir örnek gibi göründü ve sonra kabaca iptal edilen bir filtre tasarladı bu sarkıklıktan. CIC filtremde dört basamaklı olduğu için dörde "p" ayarlamam gerektiğini düşünürdüm, ama bunu yaptığımda aşırı telafi edildi. Ben varsayılan değer 1, "p" bırakarak sona erdi.

Oturumumda her iki filtreyi de kaydettiğimde araç gerçekten parladı ve ardından filtre yöneticisine gitti ve genel frekans yanıtını görmek için bunları basamaklandırdı. Bu çok yararlı ve kolay oldu.


0

Burada yanıtı çoğaltmadan lütfen bakınız

CIC telafi filtresi nasıl yapılır

CIC telafisi için çok basit bir 3 musluk çözümü gösterir.

Bu CIC'ye özgüdür veya ters bir Sinc için herhangi bir başvuru gereklidir (D / A dönüşümünden önce olduğu gibi).

Herhangi bir genel enine bozulmayı telafi etmek için (dinamik gürültü bozulmasının aksine enine bir filtre ile çoğaltılabilen), ideal olarak En Az Kare Hata yaklaşımını kullanarak bir telafi filtresi ile gelmek için Wiener Hopf denklemlerini kullanma yaklaşımını benimserim. istenen yanıtı gerçek tepkiyle karşılaştırmak ve ekolayzırı eğitmek için varsa bir eğitim sırası kullanmak. Kullanılan kaynak kodu ile bunu gösteren bir uygulama için bakınız:

Ses sinyalinde hoparlör frekans tepkisini telafi etme

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.