Cải thiện SNR bằng kỹ thuật DSP


14

Tôi đang xây dựng một hệ thống OOK quang học (On Off Key Ring) mà không có tần số sóng mang. [Tuy nhiên, tôi có thời gian bảo vệ ở giữa các ký hiệu, do đó, một thông báo "1" liên tiếp sẽ dẫn đến một chuỗi xung trái ngược với DC, xem hình ảnh]. Về cơ bản, sự hiện diện của tín hiệu chỉ ra một và thiếu nó chỉ ra số không. Tôi có một đồng hồ chính xác được đồng bộ hóa máy thu với máy phát. Hệ thống hoạt động với SNR thấp và tôi muốn cải thiện SNR bằng kỹ thuật DSP.

Tôi có một vài câu hỏi:

Tôi thực hiện lấy mẫu chọn lọc trong phần cứng của mình, nói cách khác, tôi không liên tục lấy mẫu kênh mà chỉ lấy mẫu khi xác suất nhìn thấy tín hiệu là tối đa (nghĩa là đây là xung ánh sáng, tôi đặt thời gian cho ADC sao cho mẫu ADC ở cuối của xung nơi tôi biết toàn bộ chuỗi tương tự được ổn định). Xem hình ảnh. nhập mô tả hình ảnh ở đây

Đương nhiên, bản vẽ này không hiển thị tiếng ồn nhưng nó ở đó. Đây đặc biệt là một hệ thống tín hiệu thấp và các nguồn nhiễu chính là nhiễu bắn, nhiễu johnson và nhiễu bên trong bộ khuếch đại. (hệ thống quang học nên không có giao thoa nào khác ngoài Mặt trời). Quan sát của tôi về tiếng ồn cho thấy, nó là tương tự trong tất cả các tần số. (Ít nhất là những gì tôi thấy trong Phạm vi)

Bây giờ tôi sử dụng một so sánh ngưỡng đơn giản trong phần mềm để xác định xem dữ liệu là một hay không. Có cách nào tốt hơn? Tôi đã nghĩ đến một số lựa chọn nhưng tôi muốn nghe từ các chuyên gia.

Cho đến nay tôi đã xem xét các tùy chọn sau:

  • Thực hiện ADC liên tục và cố gắng tích hợp trong thời gian tăng: Không hoàn toàn chắc chắn về lợi ích (Có thể có những lợi ích khác, tôi không biết).

  • Bộ lọc phù hợp trong phần mềm: Không thực sự hiểu toán học nhưng dựa trên những gì tôi đọc, một khả năng

  • Lấy mẫu trong thời gian bảo vệ và trừ giá trị này khỏi giá trị ADC tín hiệu (Điều này có thể cung cấp thêm một số chi tiết nhưng cũng không chắc chắn, thời gian bảo vệ sẽ là phép đo nhiễu)

  • Thay đổi phần cứng thành bộ giải mã đồng bộ, tốn kém, mất thời gian và có thể không hoạt động tốt vì tốc độ dữ liệu của tôi nhanh và nhận được bộ giải mã đồng bộ có nghĩa là bảng đắt tiền vì tôi phải xây dựng hệ thống tần số sóng mang đa MHz.


Làm thế nào để bộ lấy mẫu của bạn biết khi nào các xung sẽ xảy ra? Có một số hình thức đồng bộ hóa thời gian khác giữa máy phát và máy thu không?
Jason R

@JasonR có. Nó được đề cập trong văn bản.
Frank

1
Xin lỗi, tôi đã bỏ lỡ nó trong lần đọc đầu tiên của tôi. Tiếng ồn được đặc trưng như thế nào? Nó có màu trắng không Gaussian? Nó thậm chí còn có tiếng ồn hay là sự can thiệp từ một số nguồn khác? Lưu ý, tôi sẽ xem xét hai tùy chọn đầu tiên mà bạn liệt kê là tương đương và chúng có thể liên quan đến vấn đề của bạn, nhưng tôi muốn biết thêm thông tin về các điều kiện của hệ thống của bạn trước.
Jason R

@JasonR cảm ơn bạn đã phản hồi, tôi đã cập nhật câu hỏi liên quan đến tiếng ồn.
Frank

Tôi sẽ đặt một số cược nghiêm túc vào một bộ lọc phù hợp.
Phonon

Câu trả lời:


9

Vì bạn đã chỉ ra rằng phổ công suất của nhiễu nền của bạn là phẳng, tôi sẽ cho rằng nó là màu trắng . Một nhược điểm lớn với cách tiếp cận hiện tại của bạn là bạn đang loại bỏ một lượng lớn công suất tín hiệu; ngay cả với hiệu ứng của dải băng phía trước được thể hiện trong sơ đồ của bạn bằng phản ứng bước tăng theo cấp số nhân, một mẫu ADC duy nhất ở gần cuối xung tròn cung cấp một ảnh chụp nhanh của đầu vào máy thu được định vị theo thời gian. Bạn có thể tận dụng nhiều công suất tín hiệu hơn bằng cách lấy mẫu ở tốc độ cao hơn và áp dụng bộ lọc phù hợp ở tốc độ mẫu cao hơn.

Học thuyết:

Bạn có thể xem đây là một vấn đề tương đối đơn giản trong lý thuyết phát hiện . Trong mỗi khoảng ký hiệu, người nhận của bạn cần quyết định giữa hai giả thuyết:

H0:signal is not presentH1:signal is present

Loại vấn đề này thường được giải quyết bằng cách sử dụng các quy tắc quyết định Bayes , cố gắng đưa ra quyết định tối ưu theo một số biện pháp rủi ro được chỉ định. Điều này cung cấp một khung mà người ta có thể đưa ra quyết định phát hiện một cách tối ưu dựa trên một bộ tiêu chí linh hoạt. Ví dụ: nếu có một hình phạt lớn đối với hệ thống của bạn vì không phát hiện được tín hiệu nếu thực tế nó có mặt (tức là bạn chọn H0 khi là đúng), thì bạn có thể xây dựng quy tắc đó thành quy tắc quyết định của mình nếu cần.H1

Đối với một vấn đề phát hiện như của bạn, trong đó bạn đang cố gắng quyết định giữa số không và số ở đầu ra của người nhận, hình phạt thường được coi là bằng nhau (xuất ra số 0 khi một số được truyền và ngược lại, "tổn thương như nhau" ). Cách tiếp cận Bayes trong trường hợp đó làm giảm ước tính khả năng tối đa (cũng được mô tả ở đây ): bạn chọn giả thuyết có khả năng nhất, dựa trên quan sát mà người nhận của bạn đưa ra. Nghĩa là, nếu số lượng mà người nhận của bạn quan sát là , thì nó sẽ tạo ra quyết định dựa trên giả thuyết có giá trị hàm khả năng lớn nhất . Đối với trường hợp quyết định nhị phân, tỷ lệ khả năng có thể được sử dụng thay thế:x

Λ(x)=P(x | H0 is true)P(x | H1 is true)=P(x | signal is not present)P(x | signal is present)

Sử dụng mô hình trên, với mỗi lần quan sát kênh , bộ thu tối ưu sẽ quyết định rằng tín hiệu không xuất hiện (do đó xuất ra 0) nếu tỷ lệ khả năngx lớn hơn một (và do đó tín hiệu rất có thể không có mặt dựa trên sự quan sát) và ngược lại.Λ(x)

Những gì còn lại là một mô hình cho tín hiệu quan tâm và bất kỳ thành phần nào khác trong thống kê phát hiện người nhận có thể ảnh hưởng đến quyết định của nó. Đối với một truyền thông kỹ thuật số như thế này, nó có thể được mô hình hóa như sau:x

H0:x=NH1:x=s+N

Trong đó là một biến ngẫu nhiên được lấy từ một số phân phối (thường được coi là Gaussian có nghĩa là 0) và s là thành phần xác định của quan sát do tín hiệu mà bạn đang tìm kiếm. Do đó, sự phân phối của máy thu có thể quan sát được x , thay đổi tùy theo giả thuyết H 0 hay H 1 là đúng. Để đánh giá tỷ lệ khả năng, bạn cần một mô hình cho những phân phối đó là gì. Đối với trường hợp Gaussian được tham chiếu ở trên, toán học trông như thế này:nsxH0H1

Λ(x)=P(x | H0 is true)P(x | H1 is true)=P(x | x=N)P(x | x=s+N)

Λ(x)=P(x | H0 is true)P(x | H1 is true)=ex22σ2e(xs)22σ2

Trong đó là phương sai của thuật ngữ nhiễu Gaussian. Lưu ý rằng thành phần tín hiệu phụ gia chỉ có chức năng dịch chuyển giá trị trung bình của phân phối Gaussian kết quả của x . Các tỷ lệ loga có thể được sử dụng để thoát khỏi hàm mũ:σ2x

ln(Λ(x))=ln(ex22σ2e(xs)22σ2)=(x22σ2)((xs)22σ2)

H0H0

x<s2choose H0x>s2choose H1

x=s2, then both hypotheses are equally likely, and you would need to just pick one; this isn't a practical concern for continuously-valued signals, however. So, given a known signal amplitude s, we can detect its presence against a background of Gaussian noise optimally by setting a threshold T=s2; if the observed value x is greater than T, we declare the signal present and emit a one, and vice versa.

Practice:

There are a few practical issues that creep into this simple, toy theoretical example. One: just mapping the scenario that you described into a deceptively simple-looking model might not seem straightforward. Secondly, it's very rare that you would know the amplitude s of the signal that you're looking for, so threshold selection requires some thought.

As I referenced before, noise is often assumed to be Gaussian because the normal distribution is so easy to work with: the sum of a bunch of independent Gaussians is still Gaussian, and their mean and variances just add also. Also, the first- and second-order statistics of the distribution are enough to completely characterize them (given the mean and variance of a Gaussian distribution, you can write its pdf). So, hopefully that's a decent approximation at least for your application.

There are two ways to improve the performance of the detector given the model described above: you can increase s (i.e. increase the signal power), making it stand out more against the noise. You could decrease N (i.e. reduce the amount of noise), reducing the amount of interference that makes the presence of s unclear. Or, equivalently, you can think of the signal to noise ratio instead. To see its importance, let's go back to the theory for a second. What is the probability of a bit error given our decision rule?

Pe=P(choose H0 | H1 true)P(H1 true)+P(choose H1 | H0 true)P(H0 true)=12P(x<s2 | x=s+N)+12P(x>s2 | x=N)=12Fx | x=s+N(s2)+12(1Fx | x=N(s2))

where Fx | x=s+N(z) is the cumulative distribution function of the distribution of the observation x, given that x=s+N (and likewise for the other function). Substituting in the cdf for the Gaussian distribution, we get:

Pe=12(1Q(s2sσ))+12Q(s2σ)=12+12(Q(s2sσ)+Q(s2σ))=12+12(Q(s2σ)+Q(s2σ))=12+12(Q(SNR2)+Q(SNR2))=Q(SNR2)

where Q(x) is the Q function:

Q(x)=12πxez22dz

(i.e. the tail integral of the standard normal distribution's pdf, or 1 minus the distribution's cdf) and SNR is the signal-to-noise ratio sσ. The above function is a strictly decreasing function of SNR; as you increase the ratio of the signal amplitude s to the noise standard deviation σ, the probability of making a bit decision error decreases. So, it behooves you to do whatever you can to increase this ratio.

Remember our assumption that the noise was white and Gaussian? That can help us now. If the noise is white and Gaussian, then the noise components contained in each observation are jointly independent of one another. An important property of independent random variables is that when you sum them together, their means and variances sum. So, let's consider another simple case, where instead of taking one sample per symbol interval, you take two, then sum them together. I'll assume for simplicity that the pulse shape is rectangular (not an exponential rise), so the signal component s in each observation x1 and x2 is the same. What is the difference in signal to noise ratio between just a single observation x1 and the sum of two independent ones?

SNR1=sσ

SNR2=2s2σ=2SNR1

So, the signal to noise ratio in the combined observation is larger than using only a single sample (under the assumption of equal signal component and equal-variance white Gaussian noise in both samples that we took). This is a basic observation that points out the potential benefits of taking more than one sample per symbol interval and integrating them together (which, for a rectangular pulse, is a matched filter). In general, you want to cover the entire symbol interval with samples so that your receiver "ingests" as much of the transmitted energy for each symbol, thus maximizing the SNR in the combined output. The ratio of symbol energy to the background noise variance EsN0 is often used as a figure of merit when evaluating digital communications system performance.

More rigorously, it can be shown that a matched filter has an impulse response that is identical in shape (that is, "matched", with the only subtle exception being that the impulse response is reversed in time) to the pulse shape that the receiver sees (so it weights more strongly samples that have larger signal components). That shape is a function of the transmitted pulse shape as well as any effects induced by the channel or receiver front end, such as bandlimiting or multipath.

To implement this sort of arrangement in practice, you would convolve the stream of samples taken by your ADC with the time-reversed expected pulse shape. This has the effect of calculating the cross-correlation between the pulse shape and the received signal for all possible time offsets. Your implementation is aided by the precise time synchronization that you have available, so you'll know exactly which matched filter output samples correspond to correct sampling instants. The filter outputs at those times are used as the detection statistic x in the theoretical model above.

I referred to threshold selection before, which can be a complicated topic, and there are many different ways that you can choose one, depending upon your system's structure. Selecting a threshold for an on-off-keyed system is complicated by the likely-unknown signal amplitude s; other signal constellations, like antipodal signaling (e.g. binary phase shift keying, or BPSK) have a more obvious threshold choice (for BPSK, the best threshold is zero for equally-likely data).

One simple implementation of a threshold selector for OOK might calculate the mean of many observations. Assuming that zeros and ones are equally likely, the expected value of the resulting random variable is half of the signal amplitude, which is the threshold that you seek. Performing this operation over a sliding window can allow you to be somewhat adaptive to varying background conditions.

Note that this is only intended to be a high-level introduction to the issues inherent in digital communications with respect to detection theory. It can be a very complicated topic, with a lot of statistics involved; I tried to make it somewhat easy to understand while keeping true to the underlying theory. For a better explanation, go get a good textbook, like Sklar's.


thanks for the detailed answer, I learned a lot from it. I like to ask a few clarifications. I get the point of more than 1 sample at the duration. In this case how a matched filter look like? Say, I have three samples x1,x2,x3 (x3 at the tail end and x1 at the beginning). Based on what I read, I must convolve this with a same but symmetrical shape signal. Can you perhaps explain this part? [I think I know the answer but just to make sure] Second part, I know what is the dynamic range of incoming signal would be as I have taken measurements. Can I use that range for threshold setting?
Frank

A matched filter is a way of implementing a sliding cross-correlation between the signal seen by your receiver and the expected pulse shape. The diagram shown in your question illustrates the pulse seen by the ADC as an exponential rise; if that is indeed your model for what the receiver sees, then the appropriate matched filter would have the same shape, only reversed in time (the time reversal turns the convolution operation into correlation). If the receiver front end doesn't appreciably distort the pulse, you could use an "ideal" rectangular matched filter, which is simpler to implement.
Jason R

As to your second question: yes, if you know a priori the expected amplitude of the signal component, then you can use that to select a threshold. Using the statistical model for the system (based on the type of noise that is present), you can calculate the bit error rate as a function of the signal to noise ratio (which is proportional to the signal amplitude). If the thermal noise of your receiver is the dominant source, then white Gaussian noise is usually a good assumption.
Jason R

My receiver has a BPF that cuts the high frequency signals. The BPF rounds off the initial spike of the pulse and it becomes a more exponential in nature. I can disable the BPF but this will introduce HF noise currently not in the chain. It sounds like I have a tradeoff, how can I quantify which way is better. (i.e remove BPF and use matched filter for a pulse, don't remove BPF and use a matched filter for a exponential rise)
Frank

I awarded the bounty to you, thanks very much for a great answer.
Frank

0

One possible technique might be to try using periodic training sequences to gather statistics, not only to differentiate between the 1's and 0's, or to calculate a reliability metric for any given threshold, but to analyze how various bit sequences might affect an adaptive bit decision threshold.


interesting thinking but not suitable. I need to make a decision fast and even if I work with previous data, variation in the field would be large.
Frank
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.