วิธีการสร้างฟิลเตอร์ชดเชยการบิดเบือน


11

ฉันกำลังสร้างแชนเนลไลเซอร์ที่ประกอบด้วยตัวปรับแต่งเสียงที่ซับซ้อนตัวถอดรหัสCICและตัวกรองการชดเชย / การทำลายล้าง FIR ตัวกรอง FIR สุดท้ายอาจนำไปใช้เป็นตัวกรองมากกว่าหนึ่งตัว

คำถามของฉันคือฉันจะออกแบบตัวกรองอย่างไรเพื่อชดเชยการตอบสนองความถี่ที่ไม่แบนของตัวกรอง CIC คุณสร้างการตอบสนองความถี่ที่คุณต้องการโดยการคำนวณส่วนกลับของการตอบสนองของ CIC แล้วเรียกใช้ผ่าน FFT ผกผันเพื่อรับการตอบสนองต่อแรงกระตุ้น

อย่างที่คุณเห็นแม้ว่าปัญหาเฉพาะของฉันเกี่ยวข้องกับตัวกรอง CIC คำถามของฉันคือเกี่ยวกับวิธีที่คุณสร้างตัวกรองการชดเชยความผิดเพี้ยนใด ๆ

ขอบคุณที่สละเวลา.


3
ตัวกรองที่มีวัตถุประสงค์เพื่อชดเชยความผิดเพี้ยนก่อนหน้านี้ในระบบการสื่อสารมักจะถูกเรียกว่าควอไลเซอร์ ; ที่อาจให้ข้อมูลเพิ่มเติมแก่คุณในการอ่านในระหว่างนี้ ประเภททั่วไปคือตัวปรับแต่งเสียงแบบ zero-force (ซึ่งไม่ใช่สิ่งที่คุณต้องการหากระบบที่คุณชดเชยมีค่าศูนย์ในการตอบสนองความถี่ของมัน) และตัวปรับแต่งความผิดพลาดต่ำสุดเฉลี่ย (MMSE)
Jason R

@ JasonR ฉันคุ้นเคยกับ MMSE Adaptive Equalizers ในบริบทของช่องทางในการชดเชยอีควอไลเซอร์เพื่อการตัดสินใจ แต่ฉันสงสัยว่านั่นคือสิ่งที่คุณหมายถึง คุณจะฝึกอีควอไลเซอร์อย่างใดไหม? ฉันเดาว่า crux นั้นเป็นวิธีที่คุณพิจารณาว่าข้อผิดพลาดคืออะไร
Jim Clay

MMSE อ้างถึงเกณฑ์ที่อีควอไลเซอร์มุ่งมั่นเท่านั้น มันสามารถปรับตัวหรือไม่ปรับตัว หากคุณรู้ว่าฟังก์ชั่นการถ่ายโอนของระบบเพื่อชดเชยและฟังก์ชั่นอัตโนมัติของเสียงรบกวนใด ๆ และทั้งคู่เป็นค่าคงที่เวลาคุณสามารถได้รับ "MMSE อีควอไลเซอร์" ซึ่งจะได้รับการแก้ไขเมื่อเวลาผ่านไป โซลูชันการปรับเปลี่ยนสามารถใช้เมื่อไม่ทราบข้อมูลอย่างแม่นยำหรือเปลี่ยนแปลงตลอดเวลา (ซึ่งเป็นเรื่องปกติ)
Jason R

ตัวกรองแบบปรับได้มักจะมีโหมดการฝึกอบรมที่มีสัญลักษณ์จำนวนหนึ่งที่รู้จักกันถูกส่งผ่านระบบทำให้ผู้รับสัญญาณปล่อยให้ตัวกรองมาบรรจบกันในค่าสัมประสิทธิ์ที่ดี หลังจากการฝึกอบรมเป็นเรื่องปกติที่จะเข้าสู่ขั้นตอนการติดตามโดยที่การดำเนินการตามทิศทางการตัดสินใจจะถูกใช้สำหรับการปรับปรุงอย่างต่อเนื่องของก๊อกตัวกรอง อีกทางเลือกหนึ่งในระบอบการปกครองที่ SNR และ ISI นั้น "ดีพอ" โหมดการตัดสินใจสั่งการสามารถนำมาใช้ตั้งแต่เริ่มต้นในรูปแบบการได้มาซึ่งคนตาบอดโดยข้ามขั้นตอนการฝึกอบรม
Jason R

การค้นหาเนื้อหาการอ่านในเรื่องนี้ที่เข้าถึงได้ทางคณิตศาสตร์นั้นค่อนข้างยาก ฉันชอบทฤษฎี Adaptive Filterของ Haykin แต่ต้องใช้ความพยายามในการตัดผ่านคณิตศาสตร์ (และคุณต้องการพื้นหลังพีชคณิตเชิงเส้นที่เป็นของแข็ง) มีความซับซ้อนเพียงพอที่หากคุณไม่ได้ใช้งานเป็นประจำคุณจะต้องไปดูหัวข้อการประมวลผลสัญญาณทางสถิติก่อน
Jason R

คำตอบ:


9

ข้อมูลต่อไปนี้ระบุถึงการชดเชย CIC และไม่ใช่เทคนิค "การบิดเบือน" ทั่วไป แต่มันเป็นวิธีที่ตรงไปตรงมาเพื่อ "ชดเชย" การบิดเบือน "ไม่แปร" หากทราบการตอบสนองความถี่สามารถใช้อินเวอร์สของความถี่เพื่อชดเชย ตัวอย่างเช่นตัวกรอง CIC ซึ่งอาจใช้ตัวกรองที่ไม่ดีเนื่องจากความซับซ้อนที่ลดลงจะได้รับการชดเชยในภายหลังห่วงโซ่สัญญาณ ในตัวอย่างนี้การตอบสนองความถี่รู้และสามารถใช้อินเวอร์สได้ หมายเหตุด้วยตัวกรองหลายอัตราคุณต้องการใช้คลื่นความถี่ "ใช้งานได้" หลังจากการทำลายล้าง

โดยทั่วไปในการชดเชยตัวกรอง CIC การผกผันของการตอบสนองตัวกรอง CIC สามารถใช้ในการสร้างตัวกรองการชดเชย CIC มีการตอบสนองของ (ดูการอ้างอิง [r2] หรือ [r3])

H(ω)=|sin(ωD/2)sin(ωM/2)|N

โดยที่ D คือความแตกต่างที่ล่าช้า M คืออัตราการทำลายล้างและ N คือลำดับตัวกรอง (จำนวนตัวกรองแบบเรียงซ้อน) สามารถระบุผกผันเป็น

H(ω)=|sin(ωM/2)sin(ωD/2)|N

เมื่อเรามีการตอบสนองความถี่ของตัวกรองค่าตอบแทนเราสามารถเลือกความยาวของตัวกรอง FIR ที่เราต้องการ ความยาวของ FIR นั้นเฉพาะแอปพลิเคชัน เห็นได้ชัดว่ายิ่ง FIR กรองนานขึ้นค่าตอบแทนก็จะดีขึ้น

ต่อไปนี้เป็นแผนของการชดเชยล่วงหน้า

ต่อไปนี้เป็นรหัส Python เพื่อสร้างการตอบสนองความถี่และแปลง

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')

sinc1

[r1] Altera "ทำความเข้าใจกับตัวกรองค่าตอบแทน CIC"

[r2] R. Lyons, "การทำความเข้าใจการประมวลผลสัญญาณดิจิตอล", 2 ed., Prentice Hall, Upper Saddle River, นิวเจอร์ซีย์, 2004

[r3] R. Lyons "ทำความเข้าใจกับตัวกรอง Comb Integrator ของ Cascaded"


การอ้างอิง 1 นั้นยอดเยี่ยม แต่ใช้คำศัพท์ต่าง ๆ (M = ระยะหน่วงที่คุณใช้ D. R = อัตราลดที่คุณใช้ M) ดังนั้นฉันจึงใช้เวลาสักครู่เพื่อดูข้อผิดพลาด: คุณใช้ WM / 2, Altera ระบุ pi F / R หลังจากพล็อต Excel อย่างรวดเร็วฉันเชื่อว่าเวอร์ชัน Altera เป็นรูปแบบที่ถูกต้อง
อลันแคมป์เบล

@AlanCampbell หากคุณเขียนสมการข้างบน (ซึ่งฉันทำในข้อมูลโค้ด) คุณจะเห็นว่าไม่มีข้อผิดพลาด สิ่งที่ฉันไม่ชัดเจนโทรออกไปในสมการเป็นกำไร สังเกตในรหัส snip ฉันเอาออกกำไร หากคุณเรียกใช้ snip ของรหัสและแก้ไขM=8และN=9จะสร้างแปลงเดียวกันกับการอ้างอิง 1 ฉันใช้ระบบการตั้งชื่อใกล้กับการอ้างอิง 2
Christopher Felton

2

ฉันคิดว่าคำตอบของคริสโตเฟอร์นั้นดี ฉันคิดว่าฉันจะเพิ่มประเภทขี้เกียจ / สิบแปดมงกุฎสำหรับเรา

ในขณะที่ขุดรอบ ๆ fdatool ของเครื่องมือ Matlab (เครื่องมือออกแบบและวิเคราะห์ตัวกรอง) ฉันพบว่ามันสามารถออกแบบและสร้างแบบจำลองทั้งตัวกรอง CIC และแบบผกผันของตัวกรองได้

คุณสร้างตัวกรอง CIC โดยไปที่หน้า "สร้างตัวกรองหลายอัตรา" (ปุ่มด้านซ้ายในรุ่น R2011b) และระบุตัวกรอง CIC จากนั้นคุณสามารถตั้งค่าพารามิเตอร์ทั้งหมดที่คุณต้องการเช่นอัตราการเพิ่ม / ลดจำนวนจำนวนคาสเคด (Matlab เรียกมันว่า "ส่วน") เป็นต้น

คุณสร้างตัวกรอง inverse sinc โดยไปที่หน้า "Design filter" (หน้าเว็บที่เครื่องมือเริ่มต้นเมื่อมันเริ่มต้น) และระบุ "Inverse Sinc Lowpass" จากเมนูแบบเลื่อนลง Lowpass จากนั้นคุณสามารถตั้งค่าพารามิเตอร์ต่างๆได้ มันมีพารามิเตอร์ที่ไม่ซ้ำกันสองส่วนในส่วนตัวเลือกของไดอะล็อกรวมถึง "p" ซึ่งสอดคล้องกับจำนวนของการเรียงซ้อน (เลขชี้กำลัง sinc)

การออกแบบตัวกรอง inverse sinc นั้นไม่ได้รับความพึงพอใจอย่างสมบูรณ์ แต่เนื่องจากการทำให้ถูกต้องนั้นดูเหมือนว่าจะเป็นตัวอย่างของการทำคณิตศาสตร์น้อยกว่าการหาตำแหน่งที่วงดนตรี pass ของฉันอยู่ที่จุด CIC ตกหล่นแล้วจากนั้นจึงออกแบบตัวกรอง ออกมาเสียกำลังใจ เนื่องจากตัวกรอง CIC ของฉันมีน้ำตกสี่แห่งฉันจึงคิดว่าฉันจะต้องตั้งค่า "p" เป็นสี่ แต่มันจะชดเชยได้มากเมื่อฉันทำเช่นนั้น ฉันสิ้นสุดการออกจาก "p" ที่ 1 ซึ่งเป็นค่าเริ่มต้น

เครื่องมือนี้ส่องแสงเมื่อฉันบันทึกตัวกรองทั้งสองในเซสชันของฉันจากนั้นก็เข้าไปในตัวจัดการตัวกรองและเรียงซ้อนเพื่อดูการตอบสนองความถี่โดยรวม สิ่งนี้มีประโยชน์มากและทำง่าย


0

โปรดดูที่การไม่ตอบกลับซ้ำที่นี่

วิธีการสร้างตัวกรองค่าตอบแทน CIC

ซึ่งแสดงวิธีการแก้ปัญหา 3 แตะที่ง่ายมากสำหรับการชดเชย CIC

นี่เป็นเฉพาะ CIC หรือแอปพลิเคชันใด ๆ สำหรับ Sinc ที่ตรงกันข้าม (เช่นก่อนการแปลง D / A)

เพื่อชดเชยการบิดเบือนตามขวางทั่วไป (ซึ่งสามารถทำซ้ำกับตัวกรองตามขวางเมื่อเทียบกับการบิดเบือนของเสียงแบบไดนามิก) ฉันจะใช้วิธีการใช้สมการ Wiener Hopf เพื่อสร้างตัวกรองค่าชดเชยโดยใช้วิธีการข้อผิดพลาดน้อยที่สุด ใช้ลำดับการฝึกอบรมหากมีให้เปรียบเทียบการตอบสนองที่ต้องการกับการฝึกซ้อมจริง สำหรับแอปพลิเคชันที่แสดงสิ่งนี้พร้อมด้วยซอร์สโค้ดที่ใช้ดู:

ชดเชยการตอบสนองความถี่ของลำโพงในสัญญาณเสียง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.