Giải điều chế FSK, phục hồi thời gian bit


10

Tôi hiện đang thực hiện điều chế và giải điều chế âm thanh FSK. Tôi không phải là người xử lý tín hiệu nên bất kỳ trợ giúp nào về phục hồi thời gian bit sẽ rất được đánh giá cao. Hiện nay tôi thực hiện bộ giải điều chế sử dụng hai bộ lọc phù hợp cho từng giai điệu (với một sự khác biệt của giai đoạn để phát hiện mạch lạc không). Về cơ bản, đầu ra của mỗi bộ lọc là các đỉnh có biên độ khác nhau. Tôi có hai câu hỏi:90

  • Làm thế nào tôi có thể thực hiện phục hồi thời gian bit?
  • Bạn có đề xuất gì cho phần mở đầu đồng bộ hóa gói (chirp, mã barker, mã vàng, v.v.)?

Tôi đã tìm ra thuật toán Gardner nhưng tôi không chắc liệu nó có áp dụng được không và bằng cách nào. Hãy xem xét tôi hiện đang làm việc với 2 tần số với tốc độ bit 800 bps bằng cách sử dụng soundcard.

Câu trả lời:


8

Tôi hiện đang thực hiện điều chế và giải điều chế âm thanh FSK. Tôi không phải là người xử lý tín hiệu

Vì bạn nói rằng bạn đã kết hợp các bộ lọc và bạn đề cập đến phát hiện không kết hợp, tôi nghĩ bạn đã là một người giao tiếp kỹ thuật số khá nhiều - bước để trở thành một người DSP khá nhỏ :)

Cách tiếp cận SDR đồng bộ hóa chính thức

Vì vậy, cách cổ điển để thực hiện việc này là lấy đầu ra của hai bộ lọc của bạn, (độ lớn) bình phương chúng, bộ lọc thông thấp kết quả cho một cái gì đó trên và trong / sau khi lọc decimate (nếu có thể), vì vậy rằng chúng ta không lãng phí hoạt động mỗi giây.2fsymbol,max

Tôi đã tự tạo cho mình một tín hiệu băng thông giá trị thực nhanh chóng, tôi nghĩ rằng nếu tôi làm điều này một lần nữa, tôi sẽ thay thế hai bộ lọc thông dải bằng một bản dịch tần số kết hợp và một bộ lọc thông thấp, cho tôi bộ lọc cơ sở phức tạp hoặc ném một bộ lọc polyphase tại sự cố, nhưng bất cứ điều gì) trong GNU Radio với sự trợ giúp của đồng hành GNU Radio (tệp biểu đồ luồng tại đây ):

Recv

Điểm là chúng ta có thể muốn biểu tượng đồng bộ hóa thời gian giữa phân chia và khối ngưỡng. Chúng ta có thể làm sau đó - phương pháp cổ điển, "vi điều khiển và thiết kế phần cứng kỹ thuật số" trên thực tế sẽ là đồng hồ chìm Muller & Mueller và nó cũng sẽ hoạt động ở đó - nhưng đừng lãng phí thông tin về độ dốc.

Vì vậy, tôi muốn thêm một đồng bộ hóa đồng hồ polyphase ở đây; Tôi phải thừa nhận rằng tôi không thể xây dựng điều này tốt hơn Tom, một môn đệ của harris, đã làm trong tài liệu của khối GNU Radio cùng tên :

Đồng bộ hóa thời gian bằng cách sử dụng bộ lọc polyphase.

Khối này thực hiện đồng bộ hóa thời gian cho tín hiệu PAM bằng cách giảm thiểu đạo hàm của tín hiệu được lọc, từ đó tối đa hóa SNR và giảm thiểu ISI.

sincsinc(0)=1,sinc(0)=0

di[n]ixi[n]

e[n]={xi[n]}{di[n]}+{xi[n]}{di[n]}2.0 .

xi[n]xi[n]xi[n]thay vì chỉ là dấu hiệu đặc biệt tốt cho các tín hiệu có SNR thấp.

e[n]dkdratedratedratedkdratedkdαdβdαdβgain24

Nhận ra đây là tần số âm thanh

Vì vậy, tham số hóa khối này đúng cách (và có thể giảm bpf_decimlpf_decimđể cung cấp cho bộ đồng bộ nhiều khoảng trống hơn để chuyển pha), bạn có thể xây dựng phục hồi thời gian biểu tượng rất ổn định, điều đó sẽ hoàn toàn quá mức cho ứng dụng của bạn 😁

Vì bạn đang lấy mẫu với một card âm thanh ở cả hai đầu và vì tôi cho rằng bạn không phải đối phó với Doppler, nên tốc độ ký hiệu có mối quan hệ cố định với tần số sóng mang (ví dụ: phía phát có sóng mang cao hơn với giai đoạn 8 mẫu card âm thanh và một biểu tượng luôn lấy 128 mẫu, do đó, có một tỷ lệ cố định), bạn có thể cắt ngắn:

darctandt[n]

Về đồng bộ hóa gói

Chà, vì bạn đã có một bộ giải mã hoạt động có thể sẽ chạy quá nhiều đồng bộ hóa khi không có tín hiệu, chỉ cần sử dụng một chuỗi dữ liệu đã biết cố định để tìm gói tin của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.