Chủ Nhật, 28 tháng 12, 2014

Những khái niệm cơ bản về xử lý số tín hiệu

Trong loạt bài này, tôi sẽ cố gắng hệ thống hóa những kiến thức và khái niệm cần thiết nhất trong lĩnh vực Xử lý tín hiệu số (DSP). Tôi hy vọng đây sẽ là một nơi để mọi người có thể tham khảo những khái niệm cần thiết của DSP nhằm phục vụ cho công việc và nghiên cứu của mình. Rất mong mọi người đóng góp nhằm hạn chế thiếu sót cũng như bổ sung kiến thức mà các bạn cho là cần thiết nhất trong quá trình làm việc và nghiên cứu trong lĩnh vực này. Mọi sự trao đổi để làm rõ các khái niệm được đưa ra trong các bài viết đều rất được hoan nghênh.


1. Spectrum (Phổ): Thực chất nên hiểu là một dạng hàm chuyển đổi. Với một dạng sóng liên tục, Phổ là sự chuyển đổi tín hiệu từ miền thời gian sang miền tần số.
2. Hàm tương quan: Về cơ bản, hàm tương quan cho biết độ giống nhau của 2 tín hiệu.



2.1. Tương quan giữa hai tín hiệu liên tục: Giả sử ta có hai tín hiệu liên tục: x(t) và y(t) trong khoảng http://tools.jcisio.com/tex/?[0,%5Cinfty%29, tương quan giữa hai tín hiệu này:


Trong đó, E[.] là hàm kỳ vọng.
2.2. Tương quan giữa hai tín hiệu rời rạc: 


3. Fourier spectrum: (Phổ Fourier) Là 1 hàm chuyển đổi rất hay được dùng trong xử lý tín hiệu số (DSP: Digital signal processing). Nó có thể được hiểu đơn giản là hàm biểu thị sự tương quan của 1 tín hiệu nào đó với 1 tập hợp các hàm sin và cos. Tại sao phải cần tìm sự tương quan này? Có nhiều lý do, nhưng lý do chính có lẽ là do sin và cos là những hàm tuần hoàn hay sử dụng nhất trong thông tin bởi khả năng mang thông tin của chúng. Một tín hiệu nếu được chuyển thành các hàm sin và cos thì sẽ có khả năng dùng trong thông tin. Như ta đã biết, các hàm sin, cos được đặc trưng bởi 3 thông số: biên độ, tần số và pha. Trong miền thời gian, cả 3 thông số này đều được biểu diễn theo hàm của thời gian. Phổ Fourier biểu diễn các thông số biên độ và thời gian theo thông số tần số. Như vậy mục đích chính của ta là chuyển đổi 1 tín hiệu (từ miền thời gian) sang miền tần số. Việc chuyển đổi này cho phép ta có thể xử lý tín hiệu 1 cách chính xác và tiện lợi hơn nhiều do làm việc trực tiếp với tần số, tài nguyên quan trọng bậc nhất của thông tin.

3.1. Dicrete Fourier: Dùng để chuyển đổi tín hiệu rời rạc (sau khi lấy mẫu) từ tín hiệu trong miền thời gian thành tín hiệu trong miền tần số.


3.1.1.DFT (Dicrete Fourier Transformation):


3.1.2.FFT (Fast Fourier Transformation), một phiên bản khác của DFT, giúp làm giảm khối lượng tính toán của DFT: 



3.2. Continuos Fourier: Dùng để chuyển đổi tín hiệu liên tục từ tín hiệu trong miền thời gian thành tín hiệu trong miền tần số.

4. Tín hiệu:
Chúng ta đang sống trong 1 thế giới tương tự(analog). Mọi thông tin chúng ta nhận được và xử lý thông qua các giác quan đều liên tục theo thời gian. Đối với 1 hệ thống số, tín hiệu đầu vào cũng là tín hiệu liên tục, đầu ra của nó cũng phải là liên tục theo thời gian. Vì sao vậy? Vì chỉ có như vậy thì hệ thống số của ta mới có giá trị sử dụng trong thực tế.
Tuy đầu vào và ra là analog như vậy nhưng việc xử lý trong hệ thống chúng ta lại phải được thực hiện dưới dạng số (digital). Có nhiều nguyên nhân dẫn đến việc phải sử dụngDSP (digital signal processing) như yêu cầu về tốc độ xử lý, khả năng chống nhiễu, kích thước và độ bền của thiết bị số so với tương tự...mà ta không nhắc đến ở đây.
Từ đầu vào analog, ta phải tiến hành biến đổi thành tín hiệu số trước khi thực hiện DSP. Việc biến đổi này gọi là rời rạc hóa tín hiệu, hay lấy mẫu (sampling). Hiểu 1 cách đơn giản, đó là việc ta đo giá trị của tín hiệu sau mỗi khoảng thời gian nào đó rồi ghi lại. Khoảng thời gian tiến hành đo này được gọi là chu kỳ lấy mẫu. Từ chu kỳ lấy mẫu này ta có thể tính được tần số lấy mẫu (bằng cách nghịch đảo  ). 
Tuy nhiên, 1 cách rất tự nhiên ta cũng thấy, chu kỳ lấy mẫu này phải tuân theo 1 điều kiện nào đấy nếu ta muốn tín hiệu sau khi lấy mẫu phản ánh được 1 cách chính xác nhất tín hiệu analog gốc.


5. Lấy mẫu
Như đã nói ở phần trên, muốn xử lý số tín hiệu tương tự, ta phải đo tín hiệu theo chu kỳ lấy mẫu. Muốn phản ánh tín hiệu càng chính xác, chu kỳ lấy mẫu càng phải nhỏ (khi nó tiến tới 0 thì tín hiệu rời rạc sẽ lại trở thành tín hiệu liên tục). Tuy nhiên, hệ thống số chịu giới hạn của thời gian xử lý và dung lượng bộ nhớ nên ta không thể lấy mẫu quá nhiều được. Nhưng thế nào là đủ?
Giải quyết vấn đề này, Nyquist đã đưa ra 1 định lý lấy mẫu nổi tiếng:
Một tín hiệu có phổ giới hạn x(t) có thể được biểu diễn (và sau đó khôi phục) 1 cách chính xác bằng(từ) tín hiệu rời rạc nếu chu kỳ lấy mẫu Ts thỏa mãn điều kiệnTs<= Tmax/2 (với Tmax là chu kỳ lớn nhẩt) của tín hiệu. Hay nói một cách khác, tần số lấy mẫu của tín hiệu phải đảm bảo Fs >= 2Fmax với Fmax là tần số lớn nhất của tín hiệu cần lấy mẫu. 
Chú ý:
  • Fs = 2Fmax còn gọi là tần số Nyquist.
  • Fmax còn gọi là băng thông (bandwidth) của tín hiệu.
Đây là một định lý rất nổi tiếng và cơ bản bậc nhất đối với ngành DSP vì nó cung cấp 1 nguyên tắc chuyển đổi giữa 2 thế giới digital và analog. 
Tôi xin giải thích thêm cho dễ hiểu hơn 1 chút về định lý này.

  • Hình bandwidth1
  • Trong hình "bandwidth1", bạn có thể thấy 1 tín hiệu không bị giới hạn trong miền thời gian (hay nói cách khác là chu kỳ vô cùng), khi chuyển sang miền tần số, nó sẽ có băng thông xác định (xem công thức phần 3.2, với http://tools.jcisio.com/tex/?T-%3E%20%5Cinfty hay http://tools.jcisio.com/tex/?%5Comeg...%20%5Comega%29=limited).


    Hình bandwidth2
  • Trong hình "bandwidth2", ngược lại, khi T = const, tích phân sẽ là vô cùng, nghĩa là ta phải cần dùng vô số hàm sin/cos với nhiều tần số khác nhau mới có thể biểu diễn được tín hiệu trong miền tần số.
(Tiện thể ở đây cũng xin mở ngoặc trả lời câu hỏi của bạn nvqthinh luôn là vì sao tích phân lại từ 0->infinity trong các công thức Fourier tôi đã trình bày ở trên?. Đúng ra theo lý thuyết là tích phân phải được lấy từ http://tools.jcisio.com/tex/?-%5Cinf...3E%20+%5Cinfty, tuy nhiên do nhiều lý do mà một trong số đó là thực tế, các bộ DSP chỉ có thể xử lý các tín hiệu trên trục thời gian dương với mốc là thời điểm tiến hành lấy mẫu (t=0) nên tôi viết 0-inf ở đây.)
Trường hợp 1 là trường hợp mong muốn của chúng ta vì mọi thứ trong miền tần số là rất rõ ràng, tuy nhiên, tín hiệu không hề có chu kỳ, hoàn toàn ngẫu nhiên và không xác định trong miền thời gian rất phi thực tế với các hệ thống thông tin. Do vậy, điều này là không tưởng.
Trường hợp 2, thực tế hơn, tuy nhiên, nếu nhìn vào phổ tần số ta sẽ thấy rất khó xác định đâu là băng thông(Fmax) của tín hiệu này.
Có nhiều định nghĩa giúp xác định băng thông dựa trên phổ tín hiệu. phổ biến nhất là xác định theo null-to-null nghĩa là dựa vào 2 điểm 0 (null) gần nhất trên phổ tần số.
Sau khi xác định được băng thông, ta sẽ xác định được tần số lấy mẫu theo Nyquist. Tuy nhiên, nếu bạn muốn tiến hành mô phỏng, thì nên chú ý chọn tần số lấy mẫu từ 8-16 lần băng thông để tránh cái gọi là S/Na(signal aliasing noise).
Reference:
1. M.C.Jeruchim et. al - Simulation of com. sytems.
2. B.Skar - Digital coms. 

6. Xử lý tín hiệu ở băng gốc (base-band) - complex envelope:
Trong quá trình mô phỏng hệ thống viễn thông, ta thường phải làm việc với các tín hiệu đã được điều chế đưa lên 1 tần số sóng mang nào đó. 
Như chúng ta đã biết, muốn xử lý số tín hiệu, điều đầu tiên chúng ta phải làm là lấy mẫu tín hiệu đó. Theo như định lý lấy mẫu đã trình bày ở phần 5, tần số lấy mẫu phải bằng ít nhất 2 lần tần số max của tín hiệu. Có nghĩa là, nếu 1 tín hiệu có dải tần fc-B/2 -> fc+B/2 thì phải lấy mẫu ít nhất với tần số lấy mẫu là 2fc + B.
Việc lấy mẫu này vừa không cần thiết lại yêu cầu tài nguyên xử lý rất lớn. Cách thức thường được sử dụng là xử lý tín hiệu ở băng gốc (nghĩa là trong dải tần từ -B/2 -> B/2), như vậy tần số lấy mẫu sẽ nhỏ hơn rất nhiều (B). Nhưng việc này có thể thực hiện được không và nền tảng toán học của nó thế nào?
Câu trả lời là hoàn toàn có thể và đây là cách phổ biến nhất để mô phỏng và xử lý số 1 hệ thống viễn thông.
Phương pháp được sử dụng là đường bao phức (complex envelope). 
Đầu tiên tôi muốn nhắc đến 1 tín hiệu hay được dùng trong hệ thống viễn thông là tín hiệu mũ phức (complex exponential signal):


Như vậy, với 1 tín hiệu đã được điều chế bởi sóng mang bất kỳ x(t) nào đó, ta cũng có thể viết thành:


Với r(t) là biên độ, http://tools.jcisio.com/tex/?%5Cphi%28t%29 là pha và fc là tần số sóng mang.
Ta thấy http://tools.jcisio.com/tex/?%20v%28...hi%28t%29%7 D đã mang đầy đủ thông tin về tín hiệu cần xử lý lại ở băng gốc. Nó được gọi là đường bao phức của tín hiệu đã được điều chế. Như vậy, việc xử lý tín hiệu đã được điều chế được qui về xử lý tín hiệu r(t) hoàn toàn ở băng gốc.

0 nhận xét:

Đăng nhận xét