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 ):
Đ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.
chân thànhsinc(0)=1,sinc′(0)=0
di[n]ixi[n]
e[n]=R{xi[n]}⋅R{di[n]}+I{xi[n]}⋅I{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_decim
và lpf_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.