FSK Demodulation, การกู้คืนเวลาบิต


10

ฉันกำลังใช้การมอดูเลต FSK อะคูสติกและ demodulation ฉันไม่ใช่คนประมวลผลสัญญาณดังนั้นความช่วยเหลือใด ๆ เกี่ยวกับการกู้คืนเวลาบิตจะได้รับการชื่นชมมาก ขณะนี้ฉันใช้ตัว demodulator โดยใช้ฟิลเตอร์ที่จับคู่สองตัวสำหรับแต่ละโทน (ที่มีเฟส90สำหรับการตรวจจับที่ไม่สอดคล้องกัน) โดยทั่วไปเอาต์พุตของตัวกรองแต่ละตัวจะเป็นยอดเขาที่มีแอมพลิจูดต่างกัน ฉันมีสองคำถาม:

  • ฉันจะกู้คืนบิตเวลาได้อย่างไร
  • สิ่งใดที่คุณแนะนำสำหรับการเริ่มต้นการซิงโครไนซ์แพ็คเก็ต (เจี๊ยบ, บาร์โค้ด, โกลเด้นโค๊ดและอื่น ๆ )?

ฉันใช้อัลกอริธึมการ์ดเนอร์ แต่ฉันไม่แน่ใจว่ามันใช้ได้หรือไม่และอย่างไร พิจารณาฉันกำลังทำงานกับ 2 ความถี่ที่มีบิตเรตที่ 800 bps โดยใช้การ์ดเสียง

คำตอบ:


8

ฉันกำลังใช้การมอดูเลต FSK อะคูสติกและ demodulation ฉันไม่ได้เป็นคนประมวลผลสัญญาณ ...

เมื่อคุณบอกว่าคุณจับคู่ฟิลเตอร์ได้แล้วและคุณพูดถึงการตรวจจับที่ไม่สอดคล้องกันฉันคิดว่าคุณเป็นคนสื่อสารดิจิทัลแล้ว - ขั้นตอนในการเป็นคน DSP นั้นค่อนข้างเล็ก :)

วิธี SDR แบบซิงโครไนซ์ที่ครบถ้วน

ดังนั้นวิธีที่คลาสสิกในการทำเช่นนี้คือเอาเอ้าท์พุตของฟิลเตอร์สองตัวของคุณ, (ขนาด) กำลังสอง, ฟิลเตอร์กรองความถี่ต่ำผ่านผลลัพธ์บางอย่างเหนือสัญลักษณ์ , และระหว่าง / หลังจากการกรอง decimate เราไม่ต้องเสียเวลาดำเนินการต่อวินาที2fsymbol,max

ฉันทำให้ตัวเองเป็นสัญญาณ bandpass ที่มีค่าจริงอย่างรวดเร็ว FSK demod (ฉันคิดว่าถ้าฉันทำเช่นนี้อีกครั้งฉันจะแทนที่ตัวกรอง bandpass สองตัวด้วยการแปลความถี่แบบรวมและตัวกรองความถี่ต่ำหนึ่งตัวทำให้ฉันมี baseband ที่ซับซ้อน ที่ปัญหา แต่ไม่ว่าอะไรก็ตาม) ใน GNU Radio ด้วยความช่วยเหลือของสหาย GNU Radio (ไฟล์กราฟการไหลที่นี่ ):

reck FSK

ประเด็นก็คือเราอาจต้องการให้สัญลักษณ์กำหนดเวลาซิงโครไนซ์ระหว่างตัวหารและบล็อกขีด จำกัด เราสามารถทำได้หลังจากนั้น - การออกแบบ "ไมโครคอนโทรลเลอร์และฮาร์ดแวร์ดิจิทัล" แบบคลาสสิกอันที่จริงแล้วจะเป็นอ่างล้างนาฬิกา Muller & Mueller และมันก็ใช้ได้เหมือนกัน - แต่อย่าเสียข้อมูลลาดชัน

ดังนั้นฉันจะเพิ่มการซิงค์นาฬิกาโพลีเฟสที่นี่ ฉันต้องยอมรับว่าฉันไม่สามารถสร้างสูตรนี้ได้ดีกว่าทอมซึ่งเป็นลูกศิษย์ของแฮร์ริสได้ทำในเอกสารของบล็อก GNU Radio ที่มีบาร์ :

เวลาซิงโครไนเซอร์โดยใช้ตัวกรองโพลีเฟส

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

วิธีนี้ใช้ได้โดยการตั้งค่าตัวกรองสองช่อง หนึ่ง filterbank มีตัวกรองการจับสัญญาณชีพจรของการจับคู่สัญญาณ (เช่นตัวกรองรูทโคไซน์ยก) ซึ่งแต่ละสาขาของตัวกรองประกอบด้วยเฟสที่แตกต่างกันของตัวกรอง ตัวกรองที่สองประกอบด้วยอนุพันธ์ของตัวกรองในตัวกรองตัวแรก เมื่อนึกถึงเรื่องนี้ในโดเมนเวลาตัวกรองตัวแรกจะมีตัวกรองที่มีรูปร่างแบบพวกมัน เราต้องการจัดตำแหน่งสัญญาณเอาต์พุตเพื่อสุ่มตัวอย่างที่จุดสูงสุดของรูปร่าง sinc อนุพันธ์ของ sinc มีศูนย์ที่จุดสูงสุดของ ( sinc ( 0 ) = 1 ,sinc ) นอกจากนี้พื้นที่รอบ ๆ จุดศูนย์ยังมีลักษณะเป็นเส้นตรง เราใช้ประโยชน์จากข้อเท็จจริงนี้เพื่อสร้างสัญญาณข้อผิดพลาดsinc(0)=1,sinc(0)=0

หากสัญญาณจากตัวกรองอนุพันธ์คือสำหรับตัวกรองi th และผลลัพธ์ของตัวกรองที่ตรงกันคือx i [ n ]เราจะคำนวณข้อผิดพลาดดังนี้:di[n]ixผม[n]

อี[n]={xผม[n]}{dผม[n]}+{xผม[n]}{dผม[n]}2.0 .

xผม[n]xผม[n]xผม[n]แทนที่จะเป็นเพียงสัญญาณที่ดีโดยเฉพาะอย่างยิ่งสำหรับสัญญาณที่มี SNR ต่ำ

อี[n]dkdประเมินค่าdประเมินค่าdประเมินค่าdkdประเมินค่าdkdαdβdαdβได้รับ24

การตระหนักว่านี่คือความถี่เสียง

ดังนั้นการตั้งค่าพารามิเตอร์บล็อกนี้อย่างถูกต้อง (และอาจลดลงbpf_decimและlpf_decimเพื่อเพิ่มความพร้อมในการปรับเฟส) คุณสามารถสร้างการกู้คืนสัญลักษณ์เวลาที่เสถียรมากซึ่งจะทำให้เกินความต้องการโดยสิ้นเชิงสำหรับแอปพลิเคชันของคุณ😁

เนื่องจากคุณทำการสุ่มตัวอย่างด้วยการ์ดเสียงทั้งสองด้านและเนื่องจากฉันคิดว่าคุณไม่ต้องจัดการกับ Doppler อัตราสัญลักษณ์จึงมีความสัมพันธ์กับความถี่ของผู้ให้บริการที่แน่นอน (เช่นด้านการส่งสัญญาณมีผู้ให้บริการที่สูงกว่าด้วย ช่วงเวลาของตัวอย่างการ์ดเสียง 8 ตัวอย่างและมีสัญลักษณ์หนึ่งตัวอย่างเช่น 128 ตัวอย่างดังนั้นจึงมีอัตราส่วนคงที่) คุณสามารถตัดสั้น:

darctandเสื้อ[n]

เกี่ยวกับ Packet Sync

ทีนี้เนื่องจากคุณมี demodulator ที่ใช้งานได้ซึ่งอาจจะซิงค์ไม่มากเมื่อไม่มีสัญญาณให้ใช้ลำดับข้อมูลที่ทราบที่แน่นอนเพื่อค้นหาแพ็คเก็ตของคุณ

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