Ước tính tỷ lệ ký hiệu (baudrate)


7

Tôi đang tìm kiếm một thuật toán có thể phát hiện tốc độ của các ký hiệu trong tín hiệu băng tần cơ sở.

Các phương pháp Gardner là một cách để hủy bỏ ra trôi thời gian và đồng bộ hóa nhận cho người gửi khi tỷ lệ biểu tượng (số lượng mẫu cho mỗi ký hiệu) được biết đến. MATLAB cũng cung cấp một gói thực hiện phương pháp Gardner.

Nhưng nếu chúng ta không biết tỷ lệ biểu tượng thì sao? Tôi tìm thấy một số phương pháp được đề xuất như sử dụng các thuộc tính chu kỳ của tín hiệu.

Có bất kỳ gói / thực hiện các phương thức này (hoặc bất kỳ phương pháp nào khác) trong ước tính tỷ lệ ký hiệu MATLAB hoặc C không?


Cập nhật số 1:

Đây là một triển khai đơn giản sử dụng các thuộc tính chu kỳ để ước tính tốc độ truyền, nhưng nó không phù hợp với các đầu vào lớn như các tệp sóng.


Cập nhật số 2:

Sau khi giải điều chế và lọc tín hiệu nhận được, tôi có tín hiệu dựa trên: nhập mô tả hình ảnh ở đây

Các biểu tượng được mã hóa dưới dạng các hình dạng khác nhau trong tín hiệu này (ví dụ: các mức điện áp khác nhau nếu người gửi sử dụng bộ lọc hình vuông). Như chúng ta có thể thấy, tần số cao nhất trong tín hiệu này không phải là tốc độ ký hiệu.

Tôi không tìm kiếm một giải pháp / ý tưởng mới để ước tính tỷ lệ biểu tượng. Tôi đang tìm kiếm một phương thức đã biết (như các phương pháp dựa trên chu kỳ hoặc dựa trên sóng con) để ước tính tỷ lệ ký hiệu.


Tín hiệu của bạn trông như thế nào tại baseband? Có phải là sóng vuông?
Kellenjb

Đó là một tín hiệu băng cơ sở. Nó được lọc lọc cosin nâng lên. Và nó có một số nhiễu Gaussian trắng.
Isaac

Nghe có vẻ khó chịu với tôi. Những loại hệ thống đang sử dụng này?
Kellenjb

3
Tôi gần như tích cực rằng bạn đang tràn đầy và bao bọc đâu đó trong hệ thống thu thập dữ liệu của bạn. Tôi nghĩ rằng bạn cần xem xét kỹ hơn về bộ lọc của mình và có thể thay đổi cấu trúc liên kết.
Sói Connor

1
Vì vậy, hệ thống của bạn dựa trên PAM. ok, tôi không thực sự thấy tại sao phục hồi đồng hồ lại khó khăn như vậy, trừ khi bạn có rất nhiều tiếng ồn, hoặc rất nhiều mức biên độ có thể. Về cơ bản, bạn chỉ cần lặp đi lặp lại thử baudrates theo thứ tự giảm dần, cho đến khi bạn đạt một điểm trong đó không có điểm mẫu nào ở trạng thái trung gian. Vì bạn chỉ đang cố gắng ước tính datarate, nếu bạn lấy mẫu nhiều lần và trung bình xuống, bạn sẽ nhận được kết quả khá chính xác.
Sói Connor

Câu trả lời:


2

có lẽ bộ giải mã của bạn đã biết tốc độ truyền

Nhiều giao thức truyền thông không dây đặt ký hiệu_time thành bội số nguyên đã biết của thời gian chu kỳ chip hoặc thời gian vận chuyển. Vì bạn có thể giải điều chế tín hiệu, bộ giải mã của bạn phải biết thời gian chu kỳ chip hoặc thời gian vận chuyển. Có lẽ bạn có thể lấy thông tin thời gian đó và nhân nó với "số nguyên đã biết" để lấy ký hiệu_time; sau đó bạn "chỉ" cần thực hiện căn chỉnh pha. Có cách nào để lấy thông tin thời gian đó ra khỏi bộ giải điều chế của bạn không?

FFT

Tỷ lệ ký hiệu xấp xỉ bằng băng thông. (Tôi nghe rằng băng thông -10 dB gấp 1,19 lần tốc độ ký hiệu cho QPSK - điều đó có đúng với tất cả các chòm sao tín hiệu không?)

Nếu bạn có SNR đủ cao, bạn có thể đặt tín hiệu của mình thông qua FFT và ước tính băng thông. Tôi nghĩ rằng nó hoạt động ở hầu hết mọi định dạng mà bạn có - tín hiệu điều chế thô ("thực") hoặc tín hiệu cơ sở được giải điều chế ("phức tạp" I, Q), hoặc một mình tôi, hoặc một mình Q - nhưng tôi không ' Chúng tôi nghĩ rằng nó sẽ hoạt động nếu bạn cung cấp dữ liệu pha từ âm mưu "Cập nhật số 2" ở trên vào FFT.

Con người thường dễ dàng chọn được băng thông -3dB trên biểu đồ một cách trực quan. Có chức năng Matlab để ước tính băng thông -3dB không?

Khi bạn có nhiễu trắng tinh - SNR quá tệ - "băng thông" -3dB rõ ràng không liên quan gì đến tốc độ truyền thực, nhưng phụ thuộc hoàn toàn vào các bộ lọc được sử dụng trong bộ giải mã của bạn.

tự kỷ

Bạn có thể tìm thấy tự động tương quan của một hàm bằng cách sử dụng các hàm autocorr () hoặc xcorr () của Matlab.

Có ít nhất 3 cách chuyển đổi tự tương quan thành ước tính tốc độ truyền:

  • Với các bit dữ liệu không tương quan, tự động tương quan ở thời gian bù chính xác là 1 ký hiệu_time trở lên sẽ xấp xỉ bằng 0 và tự động tương quan chuẩn hóa ở thời gian bù ngắn từ 0,0 đến 1,0 bit là xấp xỉ tuyến tính: 1- (thời gian / ký hiệu_time). Khớp một đường thẳng với các thời gian bù ngắn đó để có ước tính chính xác về tự động tương quan tại các thời điểm bù không nguyên, tìm thời gian bù t_half đưa ra ước tính tự động khoảng 1/2 dọc theo đường được trang bị đó và thời gian biểu tượng của bạn là khoảng biểu tượng ~ = 2 * t_half.
  • Trong quá trình truyền phát, một số máy phát làm cho mỗi bit thứ 10 trở thành biểu tượng bắt đầu. Hàm tự tương quan của bạn, như mọi khi, có một đỉnh ở 0 thời gian bù; bỏ qua đỉnh đầu tiên đó và tìm kiếm thời gian dương t_poseitive cung cấp đỉnh dương lớn nhất tiếp theo (với biên độ dự kiến ​​khoảng 1/10) trong chức năng tự tương quan và thời gian biểu tượng của bạn là khoảng Symbol_time ~ = t_poseitive / 10.
  • Một số máy phát sử dụng ký hiệu dừng chính xác 9 bit sau mỗi ký hiệu bắt đầu và cho ký hiệu dừng biên độ âm của ký hiệu bắt đầu. Tìm kiếm t_negative thời gian bù cho đỉnh âm lớn nhất trong hàm tự tương quan (với biên độ dự kiến ​​khoảng 1/10) và thời gian biểu tượng của bạn là khoảng Symbol_time ~ = t_negative / 9.

xấp xỉ tự tương quan

Nhiều kỹ thuật khác sử dụng một số phép tính gần đúng nhanh hơn để tính toán hàm tự tương quan - đặc biệt, thực sự không có điểm nào tính toán biên độ tự tương quan ở thời gian bù lớn hơn 10 bit_times.

Cụ thể, hãy tính toán chức năng tự tương quan chỉ trong một lần bù H: Trì hoãn tín hiệu theo thời gian H và nhân tín hiệu trễ với tín hiệu gốc (không trễ) và sử dụng một số tích hợp hoàn hảo hoặc rò rỉ để có được lâu dài Trung bình cộng. (Nếu tín hiệu đầu vào của bạn đã được cắt ở phạm vi +1 -1, giống như hầu hết các máy thu FM và PSK, thì mức trung bình dài hạn đó đã được chuẩn hóa. Nếu không, hãy bình thường hóa theo trung bình bình phương của tín hiệu, do đó, dài của bạn thuật ngữ trung bình được đảm bảo trong phạm vi từ -1 đến +1).

Sau đó điều chỉnh H để cố gắng lấy trung bình dài hạn được chuẩn hóa thành chính xác 1/2 - làm cho thời gian bù H ngắn hơn nếu trung bình dài hạn được chuẩn hóa nhỏ hơn 1/2; làm H lâu hơn nếu trung bình dài hạn bình thường hóa là hơn 1/2.

Sau đó, thời gian biểu tượng của bạn là khoảng Symbol_time ~ = 2 * H.

kỹ thuật khác

Wikibook "Đồng hồ và phục hồi dữ liệu" nghe có vẻ đầy hứa hẹn, mặc dù nó vẫn chỉ là một bản nháp thô. Bạn có thể cập nhật nó để cho biết phương pháp nào hiệu quả nhất với bạn?

Tôi đã được thông báo rằng nhiều máy thu sử dụng vòng lặp Costas hoặc một số kỹ thuật phục hồi sóng mang tương đối đơn giản khác để phát hiện tốc độ truyền.

Cẩm nang truyền thông đề cập đến "bộ đồng bộ hóa cổng sớm". Bạn có thể sử dụng một cái gì đó như thế này?

chi tiết

Nhiều giao thức truyền thông không dây bổ sung nhiều tính năng "dự phòng" cho tín hiệu để giúp người nhận dễ dàng khóa và giải mã tín hiệu hơn bất chấp nhiễu - bit start, bit stop, điều chế trellis, bit phát hiện lỗi và sửa lỗi , khúc dạo đầu và bit tiêu đề, v.v.

Có lẽ tín hiệu của bạn có một hoặc nhiều tính năng này sẽ giúp công việc của bạn dễ dàng hơn?


Cảm ơn. Không chắc chắn FFTvì nhiễu sẽ tạo ra tần số cao trong miền phổ. Tương quan tự động sẽ là giải pháp phù hợp cho vấn đề này. Không có truyền phát nổ và không có ký hiệu dừng ** / ** ký hiệu dừng . Tùy chọn đầu tiên bạn đề xuất trong phần tự tương quan là cái được gọi là thuộc tính chu kỳ của tín hiệu. Dựa trên bài báo được trích dẫn trong câu hỏi, phương pháp này không mạnh khi người gửi sử dụng bộ lọc hình dạng cosin nâng lên với một cuộn nhỏ (a <0,3). Bài viết đề xuất một phương pháp cải tiến. Tôi hy vọng tôi có thể tìm thấy một thực hiện của phương pháp đó.
Isaac

FFT: Có, tiếng ồn sẽ tạo ra một loạt các đỉnh giả ở tần số cao hơn và thấp hơn - nhưng nếu bạn may mắn, tỷ lệ SNR của bạn đủ tốt để tất cả các đỉnh đó giảm xuống dưới -3dB dưới mức đỉnh và bạn có thể bỏ qua chúng. Thực hiện FFT, chọn một cutlevel một nửa biên độ cực đại của tất cả các thùng, loại bỏ tất cả các thùng FFT có biên độ dưới cutlevel, và đếm xem còn bao nhiêu thùng (không liên tục). Với lượng tiếng ồn trắng hợp lý, không có đủ tiếng ồn để đẩy tần số cao và thấp lên trên lớp cắt và do đó chúng sẽ vẫn bị loại bỏ và bị bỏ qua
davidcary

1

Nếu bạn biết hình dạng biểu tượng của mình là một xung vuông, thì bạn biết đây sẽ là một chức năng đồng bộ hóa trong miền tần số. Nếu bạn lấy FFT của tín hiệu và đo độ rộng của thùy đầu tiên của dữ liệu (hoặc gấp 2 thùy ở dải cơ sở), đó sẽ là tốc độ ký hiệu của bạn.

Có thể dễ dàng thực hiện đồng bộ hóa biểu tượng cổng sớm, nhưng trước tiên bạn cần chạy dữ liệu thông qua bộ lọc phù hợp, điều này sẽ yêu cầu ít nhất là ước tính tỷ lệ biểu tượng.


0

Có thể chúng ta đang nói về các mục đích chéo ở đây, nhưng phát hiện tốc độ baud tự động cho UART là một thỏa thuận được thực hiện trong khu vực vi điều khiển - và dường như nó không yêu cầu các thuật toán tiên tiến. Tất nhiên, kết nối nối tiếp 8-N-1 tiêu chuẩn của bạn yêu cầu một bit START, vì vậy nếu bạn có thể tìm thấy và thời gian mà bạn đã đặt (đặc biệt là chỉ có một số tốc độ truyền cho phép nhất định - 115200, 38400, v.v.).

Có mã C để tự động phát trên một dòng nối tiếp cho các AVR ở đây (và cũng là một lời giải thích ngắn về thuật toán): http://mycal.net/?cpath=/Archive/&id=569&action=9

Nhưng tôi nghĩ rằng bạn đang tìm kiếm một cái gì đó chung chung hơn thế này?


2
Đúng. Tôi đang tìm cách để phát hiện tốc độ ký hiệu cho tín hiệu chung nhận được, không chỉ cho các cổng nối tiếp tiêu chuẩn. Ngoài ra, không có BẮT ĐẦU hoặc bất kỳ loại biểu tượng cờ nào khác để giúp người nhận.
Isaac

0

Tôi không biết bất kỳ phương pháp dựng sẵn nào để làm điều này, nó có vẻ khá độc đáo đối với tôi, ít nhất là với kinh nghiệm tôi hiện có. Nhưng vì lợi ích học tập, tôi sẽ xem liệu tôi có thể viết ra cách tiếp cận của mình cho một vấn đề như thế này không.

Trong tình huống này, tỷ lệ Biểu tượng sẽ hiển thị dưới dạng hình dạng được kéo dài hoặc thu nhỏ. Tôi sẽ lấy các hình dạng và "trượt" chúng trên quang phổ nhìn vào mối tương quan. Sau đó tôi sẽ làm điều này nhiều lần với các "hình dạng" kéo dài khác nhau, hy vọng có một số tỷ lệ biểu tượng tiêu chuẩn mà bạn có thể sử dụng.

Sau đó, bạn sẽ có thể phân tích tỷ lệ biểu tượng nào có mối tương quan tốt nhất.

Rất có thể có một cách dễ dàng hơn để làm điều này, nhưng đó là tất cả những gì tôi có thể nghĩ ra ngay bây giờ.


0

Vấn đề chung được gọi là "phục hồi đồng hồ" và nhiều lần sử dụng vòng khóa pha. Mỗi khi xảy ra cạnh dữ liệu, PLL sẽ so sánh nó với cạnh đồng hồ từ VCO cục bộ. Nếu đồng hồ cục bộ là sớm hay muộn, hành động PLL tự nhiên là điều chỉnh tần số VCO chỉ một chút. Cuối cùng khóa được thực hiện ở nhiều tỷ lệ cạnh dữ liệu.

Phải có số lượng cạnh dữ liệu tối thiểu để PLL khóa vào chúng. Đây là lý do tại sao mã hóa bit và mã hóa dòng như 8B10B được sử dụng để thực thi mật độ chuyển tiếp tối thiểu - nếu không, PLL VCO sẽ trôi khỏi đồng hồ dữ liệu trong một thời gian dài có cùng giá trị bit.

Tôi nghi ngờ kênh RF của bạn đã sử dụng một số loại mã hóa dòng, thông thường các tín hiệu sai lệch DC được tránh trong điều chế RF và mã hóa được sử dụng để loại bỏ sai lệch DC (còn gọi là chạy dài).


Cảm ơn. Nhưng việc khôi phục đồng hồ được thực hiện trong một mô-đun khác mà tôi không có quyền truy cập vào nó. PLLs là để phục hồi đồng hồ của nhà mạng trong khi tôi đang tìm kiếm một phương pháp phục hồi (tỷ lệ) đồng hồ biểu tượng
Isaac

Không có gì ngăn bạn sử dụng PLL khác trên các biểu tượng. Nếu chúng không song phương, bạn thực sự cần mở rộng câu hỏi với nhiều thông tin hơn về mã hóa. Bạn dường như biết những gì đang xảy ra - vậy tại sao làm cho chúng ta chọc vào câu trả lời?
Joe Koberg

0

Chà, nếu các ký hiệu được mã hóa dưới dạng các mức điện áp khác nhau sau bộ lọc thì nhìn vào dạng sóng của bạn, tôi thấy 4 mức - có nghĩa là các ký hiệu log2 (4) hoặc 2 ký hiệu / baud.

(điều này là giả sử chúng ta không thấy tín hiệu điều chế pha bị cắt xén trong đó thông tin pha thêm bị mất)


Xin vui lòng đọc lại câu hỏi. Tôi đang tìm kiếm một triển khai để ước tính tốc độ baud tự động. Con số được trình bày trong câu hỏi chỉ là một ví dụ.
Isaac
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.