Sơ đồ điều chế kỹ thuật số nào sẽ phù hợp để truyền dữ liệu kỹ thuật số thông qua đầu ra của soundcard PC


8

Tôi cần xuất luồng dữ liệu ở hoặc nhanh hơn ra khỏi hệ thống máy tính có ngoại vi đầu ra duy nhất có thể truy cập là giao diện âm thanh. Giao diện này có thông số kỹ thuật hợp lý, tốc độ mẫu , với độ phân giải - , nhưng giai đoạn đầu ra được ghép nối AC. Chỉ có một kênh đầu ra là có sẵn. Một giả định tốt là nó hoạt động giống như bộ lọc thông dải với dải thông đến với độ suy giảm dưới ; và nó có SNR . Tôi không có bất kỳ ràng buộc phức tạp nào khác đối với bộ phát.40 kbit/s96 kHz24bit4 Hz40 kHz1 dB90 dB

Tôi không mong đợi thêm tiếng ồn / suy giảm trên cáp kết nối bộ phát với máy thu.

Máy thu là một hệ thống nhúng với MCU Cortex-M3. Nếu cần thiết, hiệu suất thu âm tương tự có thể được giả định. Một chip giải điều chế chuyên dụng bổ sung (nếu có một thứ như vậy với tần số thấp như vậy) có thể là một lựa chọn.120 MHz

  • Sơ đồ điều chế kỹ thuật số nào sẽ phù hợp với tình huống này?
  • Đã có thư viện mã (phần mềm được xác định libs radio?) Sẽ ngăn tôi phát minh lại bánh xe?
  • Có các ứng dụng hiện có với các ràng buộc tương tự mà tôi có thể tìm cảm hứng không?

Tôi mang nó sẽ không được thông qua loa?
Jim Clay

Không, chỉ cần cáp ngắn giữa soundcard ra và máy thu.
pichenettes

Câu trả lời:


8

Bạn đã có một loạt các tình huống khá tốt ở đây; bạn sẽ có thể đạt được mục tiêu của mình mà không gặp quá nhiều khó khăn. Tôi không thấy bất cứ điều gì trong mô tả của bạn rằng sẽ loại bỏ một lớp học toàn bộ điều chế (ví dụ keying dịch pha , tần số chuyển keying , vv). Một số yếu tố sẽ đưa ra lựa chọn định dạng phù hợp sẽ bao gồm:

  • Hiệu suất phổ cần thiết (nghĩa là bạn cần bao nhiêu thông lượng dữ liệu so với băng thông có sẵn)
  • Các yêu cầu phức tạp cho máy thu của bạn (thường là phần phức tạp nhất của hệ thống)
  • Bạn sẵn sàng bỏ ra bao nhiêu nỗ lực để phát triển việc thực hiện.
  • Các trường hợp khác dành riêng cho ứng dụng của bạn (ví dụ: nếu bạn có độ chính xác về thời gian kém ở một hoặc cả hai đầu, nhiễu đã biết hoặc phản hồi kênh kém)

Vì vậy, đánh dấu từng cái một cho hệ thống của bạn, chúng tôi có thể đưa ra một vài hướng dẫn:

  • Có vẻ như hạn chế lớn nhất của bạn là phản hồi kênh của bạn (bị giới hạn bởi bộ xử lý âm thanh của card âm thanh của bạn). Nếu bạn có sẵn 40 kHz băng thông một phía, thì bạn sẽ bị giới hạn ở tốc độ ký hiệu thấp hơn một chút. Đối với tốc độ dữ liệu đích ít nhất 40 kilobit mỗi giây, bạn sẽ muốn một số sơ đồ truyền nhiều bit trên mỗi ký hiệu.

  • Với điều kiện nền tảng nhúng của bạn không được tải xuống với quá nhiều chức năng khác, bộ xử lý ARM 120 MHz hiện đại có thể dễ dàng xử lý giải điều chế hầu hết mọi định dạng trong phạm vi hàng chục kilobits mỗi giây.

    Tôi không chắc chắn cụ thể bạn đang chạy với mô hình nào, nhưng nhiều bộ xử lý gần đây cung cấp tích hợp rất chặt chẽ các ADC trên bo mạch với bộ nhớ và hệ thống con bị gián đoạn, có lẽ cho phép bạn (không can thiệp CPU thủ công) tự động lấy mẫu tín hiệu đầu vào theo một chỉ định xếp hạng, lưu trữ các mẫu trong bộ nhớ trên bo mạch và chỉ kích hoạt bộ xử lý ngắt khi có sẵn một khối mẫu có kích thước nhất định để xử lý. Tôi biết rằng một số thiết bị Atmel ở mức tối thiểu cung cấp loại chức năng này; Tôi đã có thành công tốt đẹp với họ trong quá khứ.

  • Tôi cho rằng đây có lẽ là một thành phần của một số hệ thống lớn hơn, vì vậy bạn không muốn phải xây dựng một cái gì đó thực sự phức tạp để đáp ứng yêu cầu của bạn. May mắn thay, dựa trên những gì bạn đã nói, tôi nghĩ bạn sẽ có thể thực hiện một cái gì đó đáp ứng yêu cầu của bạn khá đơn giản. Tôi cho rằng vì hai thiết bị được kết nối với nhau, nên bạn có thể có tỷ lệ nhiễu tín hiệu rất cao (40 dB trở lên), đối với điều chế kỹ thuật số thường được đo là . Điều đó làm cho cuộc sống dễ dàng hơn nhiều, vì bạn có thể bỏ qua các bổ sung như mã hóa sửa lỗi hoàn toàn (hoặc ít nhất là thực hiện một sơ đồ rất đơn giản sẽ bắt được các lỗi rất không thường xuyên mà bạn mong đợi ở SNR như vậy).EbN0

  • Đối với các trường hợp đặc biệt, đối với hệ thống này, tôi sẽ không mong đợi gì nhiều. Tôi hy vọng độ chính xác của bộ dao động ở phía PC là khá tốt (ở mức tối thiểu được điều khiển bằng tinh thể , vì vậy bạn ở trong phạm vi <50 ppm hoặc hơn; có thể tốt hơn nhiều nếu bộ dao động được hiệu chỉnh bằng một số nguồn chính xác khác ). Mặt nhúng có khả năng giống nhau; Tôi giả sử bạn đang sử dụng bộ tạo dao động tinh thể làm nguồn đồng hồ. Vì hai đầu được kết nối với nhau, tôi sẽ cho rằng bạn không có sự can thiệp của ghi chú.

Vì vậy, kết hợp tất cả những điều này lại với nhau thành một khuyến nghị duy nhất, có lẽ tôi sẽ bắt đầu con đường của cách tiếp cận khóa dịch pha cầu phương (QPSK) ở mức 24 kilosym mỗi giây . Với 2 bit cho mỗi ký hiệu, điều này mang lại tốc độ dữ liệu 48 kilobits mỗi giây, vượt quá yêu cầu của bạn. Tỷ lệ cụ thể này làm cho việc thực hiện của bạn dễ dàng hơn một chút; do bộ xử lý đầu ra đang chạy ở 96 kHz, điều này dẫn đến 4 mẫu trên mỗi ký hiệu (luôn luôn dễ dàng hơn để chạy với số lượng mẫu trên mỗi thời gian ký hiệu). Tôi có lẽ sẽ cố gắng thiết kế mặt nhúng để nó sẽ lấy mẫu ở cùng tốc độ 96 kHz nếu có thể; điều này tránh sự cần thiết phải thực hiện bất kỳ việc lấy lại mẫu nào ở phần cuối bị thiếu tài nguyên.

Để tránh bất kỳ vấn đề nào với notch DC mà card âm thanh của bạn sử dụng, bạn có thể điều chỉnh tín hiệu QPSK lên sóng mang ở tần số 24 kHz. Sau đó, phổ của tín hiệu được điều chế sẽ có giá trị null tại DC, nó sẽ thẳng hàng với notch của bạn. Có thể là notch cuối cùng không phải là một vấn đề (đặc biệt là nếu nó thực sự chỉ rộng vài Hz như đề xuất của bạn). Trong trường hợp đó, bạn có khả năng có thể nhận được bằng một sơ đồ thậm chí đơn giản hơn, chỉ hoạt động ở băng cơ sở, bỏ qua điều chế sóng mang hoàn toàn.

QPSK là một lựa chọn tốt vì tính đơn giản của nó, cả ở máy phát và máy thu. Tại SNR của bạn, bạn có thể đạt được hiệu quả phổ lớn hơn bằng cách sử dụng sơ đồ phức tạp hơn như điều chế biên độ cầu phương (QAM) , nhưng tính chất bao phủ không đổi của tín hiệu PSK hấp dẫn từ quan điểm độ phức tạp của máy thu. Lưu ý, nếu bạn thực sự cần nhiều bit hơn cho mỗi biểu tượng trong tương lai, bạn có thể chuyển sang chòm sao PSK bậc cao hơn như 8- hoặc 16-PSK. Tuy nhiên, đây là tối ưu từ quan điểm hiệu suất tỷ lệ lỗi bit khi so sánh với các chòm sao QAM.

Theo như triển khai thư viện, tôi không biết bất cứ điều gì bạn có thể thả vào và đi, đặc biệt là đối với một nền tảng nhúng. Việc triển khai máy thu của bạn có khả năng được gắn với giao diện phần cứng ở một mức độ nào đó. Bạn có thể tìm thấy một số triển khai hiện có cho các bước khác nhau cần thiết cho bộ giải mã, nhưng ít nhất bạn sẽ cần phải điều chỉnh những gì bạn có thể tìm thấy để hoạt động tốt trên nền tảng của mình. Các GNU Radio dự án là một nơi tốt để nhìn nếu bạn chỉ muốn xem C ++ triển khai nhiều thông tin liên lạc khác nhau là dấu hiệu hoạt động chế biến, và nó thậm chí có thể tạo ra một khuôn khổ hữu ích cho việc thực hiện phát onboard PC của bạn. Tóm lại, các bước cấp cao mà người nhận của bạn cần thực hiện sẽ bao gồm:

  • Nếu tần số sóng mang khác không được sử dụng:

    • Đồng bộ hóa tần số: xác định vị trí và theo dõi bù tần số sóng mang do sự không khớp dao động giữa máy phát và máy thu (trong nhiều trường hợp, tần số bù đó sẽ xấp xỉ không đổi theo thời gian)
    • Giải điều chế sóng mang: dịch tín hiệu sang băng cơ sở, thu được hai tín hiệu cùng pha và cầu phương (I / Q) (thường được biểu thị dưới dạng tín hiệu băng cơ sở phức tạp ).
  • Lọc phù hợp: truyền tín hiệu băng cơ sở qua bộ lọc khớp với hình dạng xung được sử dụng tại máy phát (bạn có thể thoát khỏi xung hình chữ nhật)
  • Đồng bộ hóa thời gian: xác định vị trí và theo dõi thời gian tương ứng với chuyển đổi biểu tượng; điều này có thể được thực hiện bằng cách theo dõi các vị trí cực đại trong modulo đầu ra của bộ lọc phù hợp với thời gian ký hiệu
  • Cắt bit: chuyển đổi các đầu ra bộ lọc phù hợp tại thời điểm mẫu biểu tượng thành các quyết định bit cứng
  • Tuần tự hóa: đảm bảo bạn viết nhiều bit cho mỗi ký hiệu theo đúng thứ tự!

Điều này có vẻ như là một quá trình phức tạp, nhưng việc xây dựng một máy thu thực tế cho ngay cả một tình huống đơn giản như thế này có thể rất sáng sủa. Chỉ cần bình luận nếu có bất cứ điều gì khác tôi rời khỏi.


Cảm ơn các con trỏ! Tôi có một cái gì đó hoạt động tốt trong mô phỏng, bây giờ chuyển sang các nền tảng thực tế. Tôi bắt đầu với QPSK và thấy tôi có thể đẩy mọi thứ lên bao xa với 256-QAM. 256-QAM dường như mạnh mẽ đối với loại tiếng ồn mà tôi mong đợi từ việc chỉ sử dụng SAR DAC tích hợp trong MCU của tôi chứ không phải là một codec âm thanh bên ngoài. Tôi sẽ sử dụng DMA cho việc này, vì vậy, nó trực tiếp lấp đầy bộ đệm trong RAM và tôi xử lý dữ liệu theo khối 16 mẫu cùng một lúc. Phần khó nhất là căn chỉnh tín hiệu Q / I cục bộ của tôi. Tôi đã thêm một chuỗi đồng bộ hóa định kỳ trong giao thức để giải quyết vấn đề pi / 2 trên đó.
pichenettes

Rất vui khi biết bạn đã có một số thành công trong việc mô phỏng nó. Tôi sẽ cảnh báo bạn rằng các chòm sao QAM có thứ tự cao có thể yêu cầu triển khai máy thu phức tạp trừ khi bạn có một kênh hoạt động rất tốt. Các điểm chòm sao được đóng gói rất dày đặc, hệ thống của bạn cuối cùng trở nên rất nhạy cảm với độ chính xác đồng bộ hóa của các loại khác nhau, như tần số / pha của tần số sóng mang và tần số / pha thời gian biểu tượng. Bạn cũng muốn đảm bảo rằng bạn có SNR ở mức quyết định tối thiểu ~ 25 dB hoặc hơn nếu bạn muốn tỷ lệ lỗi bit thấp (dưới ) mà không sửa lỗi. 10-6
Jason R

Ngoài ra, nếu bạn đang sử dụng QAM (hoặc bất kỳ sơ đồ nào khác có điều chế biên độ), sẽ có một khối chính khác để thêm vào danh sách ở cuối câu trả lời của tôi: bạn sẽ cần một loại cơ chế kiểm soát khuếch đại. Về cơ bản, bạn sẽ phải quyết định vị trí trong vùng máy bay để đặt các vùng quyết định cho mỗi giá trị biểu tượng. Một cách tiếp cận là sử dụng vòng điều khiển khuếch đại tự động để buộc công suất trung bình của tín hiệu đến một giá trị nhất định, sau đó cấu trúc các vùng quyết định phù hợp với mức công suất trung bình đó.
Jason R
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.