Lượng tử hoáS(t)Sq(t)inputouputS1S2Sn
Hình 7.18 sự lượng tử hoá
Hình 7.18a, vẽ sự lượng tử hoá đều đặn. Khoảng của các trị mẫu được chia thành những vùng lượng tử mà mỗi vùng có cùng cở với các vùng khác. Thí dụ, với sự lượng tử hoá 3 bit ta chia toàn thể các trị mẫu thành 8 vùng bằng nhau.
Trong một vài trường hợp, ta lại có thể dùng sự lượng tử hoá không đều đặn. Các khoảng lượng tử hoá thì không hoàn toàn cùng cở với nhau. ( Hình 7.18 b ).
Hàm lượng tử hoá hình 7.18b có tính chất là các khoảng cách giữa các mức lượng tử thì không đều. Và những mức output thì không phải là điểm giữa của mỗi khoảng.
Giả sử trong một đoạn nhạc, điện thế của tín hiệu 1 nằm trong khoảng -2 đến +2. Nếu ta dùng lượng tử hoá đều đặn 3 bit, thì tất cả điện thế giữa 0 và
V được mã hoá thành cùng một code word là 100. Mã này tương ứng với output được tái tạo có trị là
V. Tương tự, tất cả các mẫu nằm giữa 1,5 và 2 V được mã hoá thành code word duy nhất là 111, tương ứng với một trị output được tái tạo là
V. Với nhạc " Soft " tín hiệu có thể không vượt quá
V trong một quảng dài, nên độ rõ của nhạc sẽ bị mất. Sự lượng tử hoá đều đặn cho cùng một độ phân giải ở các mức cao cũng như thấp.
Hình 7.18b:
Si: Vùng lượng tử hóa.
Sqi: Trị làm tròn.
Ta thấy ( ở phần sau ) một khi các vùng lượng tử hóa đã được chọn, các trị làm tròn cũng được chọn, là trọng tâm ( center of gravity ) của phần tương ứng của mật độ xác xuất.
Hình 7.19 chỉ một thí dụ biểu diễn cho hàm mật độ xác xuất ( giống như mật độ Gauss ). Ta chia nó làm 8 vùng đều nhau ( từ S0 đến S8 ). Nếu các vùng lượng tự hóa đã cho thì các trị làm tròn sẽ xấp xĩ gần như là trọng tâm của mỗi vùng ( các Sqi ).
Hình 7.19: Mật độ xác xuất tín hiệu
Mặc dù tai người kém nhạy đối với những thay đổi ở các mức cao hơn. Đáp ứng của tai người thì không tuyến tính. Vì vậy, ta có thể dùng cách lượng tử hoá không đều: Các bước lượng tử hoá nhỏ ở những mức thấp và các bước lượng tử hoá lớn hơn ở những mức cao hơn.
- Nén và giải nén (Companding)
Dạng phổ biến nhất của LTH không đều đặn là " companding " thuật ngữ này lấy từ các thuật ngữ " compressing & expanding " ( nén & giại nen).
Việc xử lý như hình 7.20. Tín hiệu gốc được nén bằng các dùng 1 linh kiện phi tuyến không nhớ. Sau đó, tín hiệu bị nén được lượng tử hoá đều đặn. Sau khi được truyền đi, tín hiệu được giãi mã và phải được trương bằng cách dùng một hàm phi tuyến ngược lại với hàm đã dùng khi nén.
Compression amplifierF(x)Uniform quantizerExpansion amplifierF-1(x)Nonuniform quantizerDecoderDecoderHình 7.20: Companding
- Trước hết, ta phân giải tiến trình nén. Trước khi LTH, tín hiệu bị làm biến dạng bởi 1 hàm tương tự như thấy ở hình 7.21. Nó nén những trị lớn của input trong lúc nó làm tăng những trị nhỏ hơn. Nếu một tín hiệu analog đưa vào mạch nén, rồi output được LTH đều đặn, thì kết quả sẽ tương đương với sự LTH với các bước bắt đầu nhỏ và dần lớn hơn đối với các mức tín hiệu cao hơn ( hình 7.21 ). Ta chia output của mạch nén làm 8 vùng bằng nhau. Hàm được dùng để chuyển đổi các giới hạn của những vùng này thành hoành độ ( biểu diễn tín hiệu vào không bị nén ). Nhớ là các vùng trên trục 1 bắt đầu nhỏ và lớn hơn khi những trị của s gia tăng.
Hình 7.21: Phương thức nén
Áp dụng tiêu biểu nhất của Companding là truyền tiếng nói. Bắc Mỹ và Nhật sử dụng một đường cong chuẩn, gọi là " Compading " theo luật . Châu Âu có kiểu khác hơn, gọi là Alaw Compading.
Công thức nén .law
F(S) = sgn(s)
Hàm này được vẽ cho vài trị đã chọn lựa của .
Thông số định nghĩa là độ cong của hàm. Trị thường dùng nhất: = 255.
Hình 7.22: Nén theo luật . ( . Law Compeding ).
* Một cách để sử dụng mạch Companding 255 là mô phỏng một hệ phi tuyến có đường cong liên hệ vào/ ra giống như đương cong 255. Rồi cho những trị mẫu vào hệ thống và lượng tử hoá đều đặn tín hiệu ra bằng cách dùng một mạch A/D 8 bit.
* Một cách khác là tính xấp xĩ đường cong 255 bằng cách tuyến tính hoá từng phần, như hình 7.23. Ta chỉ vẽ phần dương của input. Đường cong là một hàm lẽ. Ta tính xấp xĩ phần dương của đường cong bằng 8 đoạn thẳng. Ta chia phần output dương thành 8 đoạn bằng nhau ( Hậu quả là chia input thành 8 vùng không bằng nhau ). Trong mỗi đoạn này, ta lượng tử hoá 4 bit. Vậy mỗi vùng ( của 8 vùng input ) đã được chia làm 16 vùng phụ, tổng cộng là 128 vùng cho mỗi phía của trục. Vậy ta có 256 ( =28 ) vùng, tương ứng với sự LTH 8 bit.
Hình 7.23: Sự tính xấp xĩ tuyến tính hóa từng phần 255.
* Kỹ thuật gửi 1 trị mẫu là gửi 8 bit mã hoá như sau :
- 1 bit được dùng để chỉ cực tính của mẫu: 1 cho dương và 0 cho âm.
- 3 bit dùng để nhận dạng trị mẫu nằm trong đoạn tuyến tính hoá nào.
- 4 bit dùng để nhận dạng mức LTH trong mỗi vùng lấy mẫu sự quan hệ logarithm của luật 255 đưa đến sự phụ thuộc thú vị giữa 8 đoạn:
- Mỗi đoạn trên trục input thì rộng gấp đôi đoạn bên trái của nó. Độ phân giải của đoạn thứ nhất, như vậy, sẽ gấp đôi đoạn kế tiếp. Và cứ thế.
Vùng thứ 6 ( kể từ gốc ) trên trục input gồm một khoảng có độ phân giải cho các trị mẫu bằng với độ phân giải của LTH đều đặn dùng A/D 8 bit.
Độ phân giải của vùng bên trái của nó giống như của LTH đều đặn 9 bit.
Tương tự, cứ dịch về bên trái, mỗi vùng có độ phân giải của 1 mạch LTH đều đặn nhiều hơn 1 bit so với vùng kế cận.
KỸ THUẬT BIẾN ĐIỆU LUÂN PHIÊN (alternate modulation techniques).
Trong kỹ thuật biến điệu mã hoá nguồn tin bằng phương pháp PCM, mỗi trị mẫu được mã hoá bằng một số nhị phân. Mã nhị phân này có khả năng biểu diễn các trị mẫu đo được trong toàn thể phạm vi động này. Ví dụ như nếu ta bắt đầu với một tín hiệu nằm trong khoảng từ –5 đến +5 V, mã phải có khả năng chỉ định được các trị mẫu trong khoảng 10 V. Kết quả nhiễu lượng tử phụ thuộc vào khoảng động này.
Nếu ta có thể bằng cách nào đó thu nhỏ khoảng động đã đề cập ở trên, tín hiệu nhiễu có thể được cải thiện (ví dụ như sai số làm tròn được giảm xuống). Các dạng nguồn tín hiệu mã hoá thay đổi luân phiên hoạt động dựa trên nguyên lý này.
- BIẾN ĐIỆU DELTA (delta modulation)
Biến điệu delta là một kỹ thuật đơn giản thu nhỏ khoảng động các số được mã hoá. Thay vì truyền mỗi trị mẫu độc lập, ta sẽ truyền hiệu số giữa một mẫu và mẫu trước đó. Nếu việc lấy mẫu với nhịp Nyquist, hiệu số này có một khoảng động rộng gấp đôi các mẫu nguyên thuỷ. Bởi vì với nhịp Nyquist, mỗi mẫu sẽ độc lập với mẫu trước đó. Hai mẫu kề nhau có thể nằm ở biên độ nhỏ nhất và lớn nhất. Tuy nhiên, nếu ta lấy mẫu ở tốc độ cao hơn nhịp Nyquyst, các mẫu này có liên quan với nhau và khoảng động của sự khác nhau giữa hai mẫu, nhỏ hơn so vớichính bản thân của mẫu đó. Nếu kết quả lấy mẫu ở một tốc độ nhanh hơn (nhưng thu nhỏ khoảng động), ta có thể truyền thông tin bằng cách dùng một vài bít nhị phân (giống như lượng tử hoá nhiễu).
Biến điệu Delta lượng tử hoá hiệu số này bằng cách chỉ sử dụng một bit. Ví dụ như bít 1 sẽ được gửi nếu hiệu số là dương và bít 0 được gửi nếu hiệu số là âm. Sự khác nhau giữa hai mẫu được mã hoáchỉ bằng một trong hai mức. Ta gọi hai khả năng đó là + hoặc - . Tại mỗi thời điểm lấy mẫu, dạng sóng được lượng tử hoá chỉ có thể hoặc là tăng hoặc là giảm bằng số .
Hình 7.24 trình bày một dạng sóng analog điển hình và kết quả lượng tử hoá của nó. Vì dạng sóng được lượng tử hoá, chỉ có thể hoặc là tăng hoặc là giảm bởi ở tại mỗi điểm lấy mẫu nên ta lấy gần đúng các trị bậc thang cho dạng sóng analog. Ta sẽ kiểm tra việc lựa chọn tốc độ lấy mẫu và kích thước cỡ bước trong phầnsau. Nếu bậc thang ở dưới trị mẫu analog, ta sẽ tăng chiều dương (và được gọi là một bước lên). Nếu nấc thang ở trên trị mẫu, ta sẽ tăng theo chiều âm (được gọi là một bước xuống). Các bit được truyền trong ví dụ trên hình 7.24 là:
1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0
Hình 7.24 Biến điệu delta
Hệ thống thu sẽ tái tạo lại bậc thang gần đúng trực tiếp từ thông tin nhị phân nhận được. Nếu nhận được giá trị1, khối hoàn điệu sẽ tăng lên một bậc theo chiều dương. Còn nếu nhận được giá trị 0, sẽ giảm một bậc tương ứng (tăng theo chiều âm).
Mạch phát tín hiệu bậc thangaso sánhba>ba<bmẫus(t)+ step- stepSự diễn giải ở trên dẫn đến một bộ lượng tử hoá đơn giản sử dụng bộ so sánh (comparator) và khối phát hàm bậc thang (staircase generator). Bộ biến đổi A/D được trình bày như hình 7.25.
Hình 7.25 Khối biến điệu DM
Chìa khoá để dùng biến điệu delta có hiệu quả là sự chọn lựa thông minh hai thông số: cỡ bước (size step) và tốc độ lấy mẫu. Những thông số này phải được chọn sao cho tín hiệu bậc thang gần với dạng sóng analog thực tế. Bởi vì tín hiệu có một tần số trên xác định, nên ta biết được tốc độ nhanh nhất khi nó thay đổi. Tuy nhiên, để tính toán tốc độ nhanh nhất có thể của tín hiệu, tần số lấy mẫu và/hoặc cỡ bước phải tăng. Việc tăng tần số lấy mẫu dẫn đến kết quả trong dạng sóng biến điệu delta phải khổ băng rộng hơn. Tăng cỡ bước sẽ làm tăng sai số lượng tử hoá.
Hình 7.26 trình bày hậu quả của cở bước sai. Nếu các bậc quá nhỏ, ta sẽ gặp một điều kiện quá tải dốc (slope overload) mà ở đó các bậc thang không thể lần ra dấu vết của những sự thay đổi quá nhanh trong tín hiệu analog. Vì thế, độ dốc lớn nhất mà bậc thang có thể nhận ra là /Ts. Ngược lại, nếu các bậc này quá lớn, xảy ra sự quá đà đáng kể trong suốt chu kỳ khi tín hiệu không thay đổi nhanh. Trong trường hợp đó, ta có nhiễu lượng tử hóa s(t)Lượng tử hoátBước quá nhỏvà được gọi là nhiễu hạt (Granular Noise).Lượng tử hoás(t)t
Hình 7.26 Sự lựa chọn không đúng của kích thươc trong DM
Biến điệu delta sử dụng tiến trình mã hoá nguồn tin, và nó sử dụng bộ nhớ để giảm khoảng động. Trong mộtvài bối cảnh, chúng có thể lưu trữ các mức giống nhau như PCM với một vài bit được truyền trong mỗi giây. Tuy nhiên, vì hệ thống có bộ nhớ nên các lỗi truyền bit sẽ được cải thiện. Trong PCM, một lỗi bit truyền gây ra một lỗi trong việc sắp xếp lại cấu trúc giá trị mẫu có liên quan. Lỗi chỉ ảnh hưởng lên mẫu được sắp xếp lại. Nếu một lỗi bit xảy ra trong biến điệu delta, bộ biến đổi A/D trong hệ thống thu sẽ bước lên thay vì bước xuống (hoặc ngược lại) và tất cả các giá trị sau đó chứa một lỗi offset gấp đôi cở bước. Nếu một lỗi bit xảy ra theo hướng ngược lại, lỗi offset bị triệt. Và nếu lỗi offset có vấn đề, hệ thống cần thiết khởi động lại từ mức tham chiếu (thường là zero).
- BIẾN ĐIỆU DELTA THÍCH NGHI (adaptive delta modulation).
Ta đã trình bày cỡ bước thích hợp để sử dụng trong biến điệu delta phụ thuộc vào yếu tố: làm sao để tín hiệu thay đổi nhanh từ mẫu này sang mẫu kế tiếp. Khi tín hiệu thay đổi nhanh, cỡ bước lớn hơn sẽ tránh được quá tải. Còn khi tín hiệu thay đổi chậm, cỡ bước nhỏ hơn sẽ thu nhỏ bước quá đà (overshoot) và như thế giảm nhiễu hạt.
Biến điệu delta thích nghi là một phương pháp cho phép điều chỉnh cỡ bước phụ tuỳ vào các đặc điểm của tín hiệu tương tự. Tiêu chí của nó là, hệ thống thu có khả năng thích nghi với các cở bước một cách chính xác giống như ở hệ thống phát. Nếu không, thiết bị thu không hồi phục tín hiệu được phát gốc đã lượng tử hoá(hàmbậc thang). Vì sự truyền mộtchuỗi bit nhị phân liên tiếp, cỡ bước phải được tắt từ chuổi bit này (ngoại trừ trường hợp ta gửi một tín hiệu điều khiển riêng biệt).
Nếu trong chiều dài chuổi bit đã chứa số lượng cân bằng giữa các bit 1 và các bit 0, ta có thể giả sử rằng bậc thang giao động xung quanh một tín hiệu analog thay đổi chậm. Trong những trường hợp như thế, ta nên giảm cở bước. Ngược lại, nếu các bit 1 hoặc 0 vượt quá trong chuỗi bit, có nghĩa là bậc thang đang cố gắng đuổi bắt hàm. Trong những trường hợp như vậy, ta nên tăng cỡ bước lên.
Trong thực tế, kiểm soát cỡ bước được thực hiện bởi bộ tích hợp số (digital intergrator). Bộ tích hợp này sẽ tính tổng số bit qua một số chu kỳ nhất định. Nếu tổng bị lệch khỏi sự cân bằng các bit 0 và 1, cỡ bước sẽ được tăng lên. Thực chất tổng các bit sẽ được đổi sang một giá trị điện thế tương ứng rồi chuyển sang bộ khuếch đại có độ lợi thay đổi. Độ lợi có giá trị nhỏ nhất khi điện thế vào tương ứng với sự cân bằng của bit 1 và 0 trong chu kỳ. Và ta nói rằng đây là bộ khuếch đại điều khiển cỡ bước.
= cở bước nhỏ nhấtHình 7.27 Thuật toán Song.
Có vài thuật toán biến điệu delta thích nghi, đơn giản hơn những gì mà ta vừa đề cập. Đó là thuật toán Song và thuật toán Space Shuttle.
Thuật toán Song so sánh bit truyền với bit trước đó. Nếu hai bit này giống nhau, cỡ bước tăng lên một lượng cố định . Còn nếu hai bit này khác nhau, cỡ bước giảm đi một lượng tương ứng . Vì thế cỡ bước luôn thay đổi và nó có thể rất lớn không giới hạn nếu cần thiết. Ta sẽ minh hoạ điều này cho một hàm bước ngõ vào ở hình hình 7.27. Một hàm bước ngõ vào trình bày trường hợp đặc biệt và sẽ không xảy ra trong thực tế bởi vì một hàm bước có tần số hữu hạn. Chú ý rằng một giao động tắt dần xảy ra, sẽ kéo theo sự thay đổi nhanh chóng trong tín hiệu.
Nếu một tín hiệu tương tự chờ để có nhiều sự chuyển đột ngột giống như hàm bước, các giao động tắt dần sau thuật toán Song có thể có vấn đề. Những bức ảnh và các vật thể chi tiết có thể có nhiều cách chuyển như vậy vì chúng đã được quét (scan) cho việc truyền đó (đó là sự thay đổi nhanh từ trắng sang đen).
Thuật toán Space Shuttle là sự cải biến của thuật toán Song để hạn chế giao động tắt dần. Khi môt bit hiện tại giống với bit trước đó, cỡ bước sẽ tăng một trị cố định . Điều này giống như thuật toán Song. Tuy nhiên, khi các bit này khác nhau, cỡ bước đảo lại tức, đến một giá trị nhỏ nhất của nó là . Điều này, tương phản với thuật toán Song mà ở đó kích thước bước giảm hướng về zero ở tại mỗi chu kỳ lấy mẫu tỉ lệ với . Thuật toán Space Shuttle được minh hoạ ở hình 7.28 cho hàm dốc ngõ vào giống như ở hình 7.27.
Hình 7.28 Thuật toán Space shuttle
Ngoài PCM, DM, ADM còn có những phương pháp khác để mã hoá thông tin tương tự sang dạng số. Mục đích của mỗi hệ thống là gửi thông tin với độ tin cậy lớn nhất và băng thông nhỏ nhất. Bây giờ ta giới thiệu ba trong nhiều phương pháp: biến điệu mã hoá xung delta DPCD (delta pulse code modulatuion), PCM vi phân, biến điệu mã hoá xung vi phân thích nghi ADPCM (adaptive differential pulse code modulation).
Trong biến điệu delta, ta phỏng định một dạng sóng liên tục thành một sóng bậc thang. Ơ tại mỗi thời điểm lấy mẫu, ta phát triển số hạng lỗi (error term). Đó là hiệu số giữa tín hiệu và hàm bậc thang. Ta lượng tử hoá lỗi này để phát triển thành một số hạng đúng (correct term) rồi được cộng thêm vào hàmbậc thang. Trường hợp biến điệu delta cơ bản, việc lượng tử hoá được thực hiện trong đơn vị 1 bit. Trong biến điệu PCM delta (DPCM) ta mã hoá lỗi thành nhiều hơn một bit và cộng số hạng này vào giá trị bậc thang trước đó như trình bày ở hình 7.29. Vì thế, thay vì các bậc thang chỉ có một biên đô thì bây giờ chúng có thể có các cỡ là một trong 2, 4, 8 hoặc bất cứ giá trị nào là luỹ thừa 2. ở tại mỗi thời điểm lấy mẫu, bây giờ ta phải gửi nhiều hơn một bit thông tin, các bit thay đổi thể hiện mã PCM cho biểu thức lỗi. Thuận lợi của DPCM so với PCM thông thường là sự chọn lựa thích hợp của chu kỳ lấy mẫu và lỗi được lượng tử có một khoảng động nhỏ hơn tín hiệu gốc. Như vậy với cùng số bit lượng tử hoá ta có độ phân giải tốt hơn, cái giá phải trả là sự phức tạp của bộ biến điệu. Cái khó của ta là sự biến điệu. Nếu tín hiệu luôn ở tần số lớn nhất (một cách xác định tốc độ lấy mẫu trong PCM), DCPM cũng giống như PCM. Tuy nhiên, bởi vì các tần số tín hiệu thường được phân bố tron một khoảng, nên các mẫu gần nhau thường có mối tương quan với nhau và có thể thực hiện tốt từ hệ thống này hơn là từ hệ thống PCM với cùng một tốc độ truyền bit.
Mạch LT hoáMạch tạo bậc thangs(t)outputCở bướcclock+-
Hình 7.29 Delta PCM.
PCM vi phân là một kỹ thuật truyền thông tin khác về sự thay đổi trong các mẫu hơn làchính giá trị mẫu của nó. Cách tiếp cận này bao gồm các bước thêm vào mà nó không là một phần của PCM delta. Bộ biến điệu này không gửi sự khác nhau giữa các mẫu gần nhau. Nhưng nó lại gửi sự khác nhau giữa một mẫu và giá trị đoán trước của mẫu đó. Sự tiên đoán này dựa trên cơ sở của các mẫu trước đó. Điều này được minh hoạ ở hình 7.30. Ký hiệu
(nTs) được dùng để biểu thị giá trị tiên đoán s(nTS).
Hình thức đơn giản nhất của sự tiên đoán khi ước lượng là một hàm tuyến tính của các giá trị mẫu trước đó. Vì thế, nếu chỉ sử dụng một mẫu ta có.
(nTs) = As[(n – 1)Ts]
Trong đó A là hằng số. Khối tiên đoán trong hình 7.30 là mạch nhân của giá trị A.Tiên đoánLượng tử hoá+-output++nTs
s(t)
Hình 7.30 PCM khác biệt (differential PCM).
Việc khó khăn là chọn giá trị A để tạo được sự tiên đoán tốt đến mức có thể. Ta định nghĩa một sai số tiên đoán như sự khác nhau giữa các mẫu và giá trị ước lượng của nó. Do đó,
E(nTs) = s(nTs) –
(nTs)
= s(nTs) – As[(n – 1)Ts]
Giá trị trung bình bình phương của lỗi là:
mse = E[e2(nTs)]
= E[s2(nTs) + A2E[s2((n –1)Ts] – 2AE[s(nTs)s((n –1)Ts]
= R(0)[(1+A2) – 2AR(Ts)]
Trong đó R(t) là hàm tự tương quan của s(t). Có thể làm lỗi nhỏ lại bằng cách lấy đạo hàm của mse theo A và cho giá trị này bằng zero.
d(mse)/dA = 2AR(0) – 2R(Ts) = 0 (7.7)
Hoặc E[s(n - 1)Ts(s(nTs) – As((n-1)Ts)] = 0
Và cuối cùng ta có:
Biểu thức (7.7) cho ta một cách nhìn trực giác. Nó chứng tỏ rằng trị mong muốn tích của lỗi với mẫu được đo là zero. Thế thì, lỗi không có thành phần nào trong cách nhìn hai đại lượng đó là trực giao (orthogonal). Nếu lỗi đã có một thành phần trong cách nhìn đó, ta có thể giảm được thành phần này tiến tới zero bằng cách điều chỉnh lại hằng số A.
Bộ tiên đoán trong hình 7.30 mang giá trị mẫu gần nhất (nó hình thành bằng cách cộng giá trị tiên đoán vơi số hạng hiệu số và có độ lớn R(Ts)/R(0). Ta giả sử rằng việc xử lý ngõ vào được xem như đủ lâu để có thể ước lượng tính tự tương quang của nó.
Ví dụ 7.4: Tìm độ lớn liên hệ với một bộ tiên đoán hoạt động trên hai mẫu gần đây nhất. Hãy ước lượng cách thực hiện.
Giải: sự tiên đoán được cho bởi công thức sau
(nTs) = As[(n-1)Ts] + Bs[(n-2)Ts]
Trong đó, mục tiêu của ta là chọn giá trị thích hợp nhất cho A và B. Cách tốt nhất cho sự chọn lựa này là lỗi không có thành phần nào trong lượng đo trực tiếp. Vì thế ta có:
E([s(nTs) – As[(n-1)Ts] – Bs[(n-2)Ts]]s[(n-1)Ts]) = 0
E([s(nTs) – As[(n-1)Ts] – Bs[(n-2)Ts]]s[(n-2)Ts]) = 0
Khai triển biểu thức này ta được:
R(Ts) – AR(0) – BR(Ts) = 0
R(2Ts) – AR(Ts) – BR(0) = 0
Giải hệ phương trình trên ta tìm được kết quả của A và B như sau:
Vậy lỗi bình phương là:
mse = E([s(nTs) –
(nTs)]2)
= E(s2(nTs)) – E(
(nTs)s(nTs))
=
101010R(t)tGiả sử rằng hàm tự tương quan của s(t) được trình bày như hình 7.31 và chu kỳ lấy mẫu là 1 giây., kết quả của mse = 1.895.
Hình 7.31 Tự tương quan (Autocorrelation) cho ví dụ 7.4.
Để so sánh, nếu ta không xác định s[(n-1)Ts] và s[(n-2)Ts] mà chỉ tiên đoán một cách đơn giản nhất ở tại giá trị trung bình hoặc zero, trung bình bình phương của lỗi sẽ là R(0) hoặc 10.
Đối với tín hiệu tiếng nói, một hệ thống PCM vi phân sử dụng sự tiên đoán trên mẫu gần nhất có thể tiết kiệm một bit/mẫu, nên hệ thống PCM vi phân có thể có lỗi tương đương như hệ PCM nhưng ít hơn một bit/ mẫu. Vì thế, nếu ta nghĩ một kênh tiếng nói đòi hỏi lượng tử hoá 8 bit PCM, nhịp truyền sẽ là 64kbps. PCMvi phân chỉ cần 7 bit/ mẫu. Vì thế nó sẽ giảm nhịp truyền xuống còn 56kbps và giải phóng kênh đó cho việc khác.
Trong DPCM thích nghi, hệ số tiên đoán không là hằng số trong toàn bộ sự truyền. Vì mỗi nhóm (group) có chiều dài của các mẫu là n, nên ta có thể tính toán một ma trận [Rij]. Ta sử dụng ma trận này để tìm ra các hệ số tiên đoán. Khi các hệ số tiên đoán không còn là hằng số nữa, phải có cách để đảm bảo rằng bên hệ thống thu cũng sử dụng cùng các hệ số như vậy. Phương pháp tổng quát nhất cho việc thiết lập này là gửi các hệ số cập nhật như một overhead( thông thường được nhân với một thông tin mẫu).
NHIỄU LƯỢNG TỬ (quantization noise).
outputinput
Hình 7.32 Mối quan hệ vào ra của lượng tự hoá.
Ta bắt đầu nghiên cứu nhiễu lượng tử trong kỹ thuật PCM bằng cách kiểm tra lại mối quan hệ vào ra lượng tử của hình 7.32. Nhiễu lượng tử hay lỗi, được định nghĩa như một hàm thời gian mà thực chất là hiệu giữa sq(t) (dạng sóng lượng tử) và s(t). Lỗi này được cho bởi: e(nTs) = s(nTs) – sq(nTs)
e(t)
t
sq(t)s(t)(b)(a)Hình 7.33 minh hoạ một hàm thời gian tiêu biểu là s(t) và kết quả lượng tử của hàm thời gian là sq(t). Trong khi ta minh hoạ hàm thời gian, điều quan trọng nhất cần chú ý là các giá trị mẫu được làm tròn không giống như hàm thời gian tương tự. Vì thế, những giá trị có nghĩa của sq(t) là những giá trị ở tại những thời điểm gian lấy mẫu nTs. Hình hình 7.33 b trình bày lỗi lượng tử hoá e(t) như là hiệu của s(t) và sq(t). Chú ý rằng ta chỉ quan tâm những giá trị của hàm lỗi này ở tại những thời điểm lấy mẫu. Biên độ biểu thức của tín hiệu lỗi, không vượt quá một nữa khoảng của các mức lượng tử.
Hình 7.33 Lỗi lượng tử.
Ta mong muốn sẽ tìm ra được các thống kê trung bình của lỗi. Để làm được điều đó, đầu tiên ta phải tìm hàm mật độ lỗi có thể xảy ra. Hình 7.34 minh hoạ lỗi như một hàm giá trị mẫu ngõ vào. Đường cong lỗi bắt đầu tại -S/2 tức ở tại đường biên dưới của mỗi khoảng lượng tử và tăng tuyến tính đến giá trị +S/2 ở tại đường biên trên. Nếu bây giờ ta biết được hàm mật độ xác suất của những trị mẫu, vấn đề sẽ trở nên đơn giản cho việc tìm hàm mật độ xác suất của e. Đây là một ứng dụng của hàm có biến ngẫu nhiên. Kết quả là:
Si là các giá trị thay đổi của s tương ứng với e. Nếu ta đặt e bằng một giá trị xác định như trong hình 7.34,, có một số giá trị của s (bằng với số các vùng lượng tử) chính là giá trị của e. Biên độ hàm dốc, luôn là 1. Vì thế biểu thức 7.9 có thể viết lại là
(7.10)
Giá trị thứ nhất của si ở bên phải so với giá trị gốc là:
.
es(nTs)
Hình 7.34 Giá trị mẫu kháng lỗi.
Tất cả các giá trị khác của si có thể tìm bằng cách cộng hoặc trừ thêm một lượng S từ giá trị này.
Nếu các mẫu được phân bố đều nhau trên dãy giá trị, các số hạng trong biểu thức tổng 7.10 sẽ trở thành hằng số tức là chiều cao của hàm mật độ gốc. Kết quả là mật độ lỗi đồng đều như được trình bày ở hình 7.35. Bây giờ ta giả sử rằng các mẫu có mật độ hình tam giác như được trình bày ở hình 7.36. Kết quả vẫn là mật độ lỗi đồng đều của hình 7.35. Thật vậy, khi e tăng, tổng si của biểu thức 7.10 cũng tăng một lượng tương ứng. Trong mật độ hình tam giác, mỗi giá trị tổng giảm xuống, giá trị khác sẽ tăng lên một lượng giống như vậy. Một đối số tương tự như vậy có thể dùng cho bất cứ
mật độ nào mà nó tương ứng giá trị tuyến tính qua phạm vi vùng lượng tử đơn. Vì thế, mật độ đồng đều của hình 7.35 được coi như gần đúng trên phạm vi rộng của các tín hiệu ngõ vào.
p(en)en
-smaxsmaxp(s)s Hình 7.35 Mật độ xác suất lỗi.Hình 7.36 Mật độ xác suất tam giác.
Bây giờ nếu ta biết mật độ lỗi, ta có thể tìm được trung bình bình phương của nó:
Kết quả này cho trị trung bình bình phương của lỗi trong một mẫu của hàm thời gian. Để tìm nguyên nhân gây ra lỗi là vấn đề cần thiết để so sánh giá trị này với trung bình bình phương của mẫu có thời gian không đổi. Điều này rất quan trọng cho tỉ số tín hiệu trên nhiễu lượng tử. Ta có:
Trong đó, ps là công suất tín hiệu trung bình, biểu thức 7.12 là một kết quả cực kỳ quan trọng mà ta sẽ dùng nhiều trong các phần sau.
Ví dụ 7.5: xem một tín hiệu âm thanh có dạng sin s(t) = 3 cos500t.
- Tìm tỉ số nhiễu lượng tử khi dùng lượng tử hoá PCM 10 bit.
- Cần bao nhiêu bit lượng tử để có tỉ số tín hiệu trên nhiễu lượng tử nhỏ nhất là 40 dB?
Giải:
- Biểu thức 7.12 được dùng để tìm tỉ số nhiễu lượng tử. Chỉ các tham số cần thiết được ước lượng là công suất tín hiệu trung bình và kích thước vùng lượng tử. Biên độ đỉnh là 6V. vì thế kích thước của mỗi khoảng thời gian là 6/210 = 5.86x10-3. Công suất tín hiệu trung bình là 32/2=4.5w. Tỉ số tín hiệu trên nhiễu lượng tử là:
Nếu ta muốn biểu diễn chúng dưới dạng decibels, ta lấy logarithm thập phân của giá trị này và nhân với 10. Ta có:
SNR=10log(1.58x106)=62dB.
- Giá trị nhỏ nhất của tỉ số tín hiệu trên nhiễu là 40dB. Giá trị này tương đương với 104. Ta sử dụng biểu thức 7.12 với S là giá trị chưa biết.
Bây giờ ta chú ý đến khích thước độ dốc là S=6/2N. Trong đó N là số bit lượng tử. Ta cần phải chọn giá trị của N mà S không vượt quá 7.35x102. Vì thế, ta có:
Và 2N>81.6
Ta có thể lấy logarithm để tìm ra N nhưng điều đó, không cần thiết. Nếu N=6, vế trái bằng 64. Nếu N=7, vế trái là 128. Do đó, ta chỉ cần 7 bit lượng tử để có được tỉ số tín hiệu trên nhiễu nhỏ nhất là 40dB.
Ta thấy rất rõ là mỗi bit lượng tử thêm vào sẽ làm giảm S đi một giá trị là 2. Điều này sẽ làm tăng tỉ số tín hiệu trên nhiễu lên một giá trị là4. Giá trị 4 này tương ứng với 6dB vì 10 log 4 6.
Vì thế, mỗi bit lượng tử hoá thêm vào sẽ làm tăng tỉ số SNR lên 6dB.
Biểu thức 7.12 trình bày rất cụ thể cách tìm tỉ số tín hiệu trên nhiễu lượng tử như một hàm tín hiệu và kích thước bậc lượng tử. Thật là hữu dụng để có được kết quả tổng quát dùng cho việc bắt đầu thiết kế hệ thống. Giả sử ta có tín hiệu s(t) được phân bố đồng đều giữa -Smax và +Smax như trình bày trong hình 7.37. Trong trường hợp đặc biệt này, biểu thức 7.12 sẽ đưa đến một công thức rất đơn giản. Ta chỉ cần 2 đại lượng để giải quyết biểu thức này. Đó là xác suất tín hiệu trung bình và kích thước của bậc. Xác suất được tìm từ lý thuyết cơ bản là:
Kích thước bậc được cho bởi:
Biểu thức 7.12 sẽ trở thành:
(7.13)
Chú ý rằng giá trị đặc biệt của Smax không ảnh hưởng đến tỉ số tín hiệu trên nhiễu SNR. Khi Smax thay đổi, cả công suất tín hiệu và công suất nhiễu lượng tử sẽ thay đổi một lượng giống nhau.
p(s)s
Hình 7.37 Tín hiệu phân bố đồng đều.
Ta có thể đổi tỉ số tín hiệu trên nhiễu của biểu thức 7.13 sang decibels với kết quả như sau:
SNRdB = 10 log (22N) = 20N log (2) = 6N dB (7.14)
Kết quả này thể hiện điểm bắt đầu thật tốt ngay cả khi tín hiệu phân bố không đồng đều. Trong câu b của ví dụ 7.5 ta yêu cầu chỉ ra số bit lượng tử để có được tỉ số tín hiệu trên nhiễu SNR nhỏ nhất là 40dB. Nhưng để 6N lớn hơn 40, N tối thiểu phải là 7. Như vậy kết quả này cũng giống như ta đã tìm trong ví dụ 7.5. Nhưng ta hãy cẩn thận khi sử dụng biểu thức (7.13) và (7.14). Hầu hết các tín hiệu trong đời sống thực tế, không được phân bố đồng đều và những biểu thức này chỉ áp dụng cho các trường hợp phân bố đồng đều. Nếu ta áp dụng không đúng biểu thức 7.14 cho một tín hiệu không đồng đều, ta sẽ gặp răc rối trong khi thiết kế hệ thống với giá trị N sai. Nếu sử dụng một giá trị nhỏ hơn giá trị cần thiết, ta sẽ không thấy được trường hợp đặc biệt của tỉ số tín hiệu trên nhiễu SNR. Ngược lại, nếu sử dụng một giá trị quá lớn, ta phải chi cho một khoảng tiền lớn vì yêu cầu việc truyền nhiều bit trên giây hơn làyêu cầu để thấy những trường hợp đặc biệt.
1. NHIỄU LƯỢNG TỬ: LƯỢNG TỬ HOÁ KHÔNG ĐỀU ĐẶN.
Trong những trường hợp mà các mẫu vào không được phân bố đồng đều, có thể có được các tỉ số tín hiệu trên nhiễu lớn hơn bằng cách sử dụng lượng tử hoá không đều đặn. Ta bắt đầu bằng cách giả sử rằng các mẫu được phân bố tuỳ theo mật độ xác suất p(s) như được trình bày trong hình 7.38. Mặc dù điều này tương đương với định lý Gausse nhưng có nghĩa là hàm mật độ xác suất tái hiện lại và kết quả mà ta sẽ thấy không phụ thuộc vào bất cứ dạng đặc biệt nào của tín hiệu. Ta đã minh hoạ lượng tử hoá 3 bits tạo ra 8 vùng được đánh dấu bởi các đường biên si và bởi các giá trị được làm tròn sqi. Lỗi lượng tử trung bình bình phương được cho bởi biểu thức:
mse = E([s(nTs) – sq(nTs)]2)
=
Trong biểu thức (7.15), các giá trị sqi là các mức lượng tử được làm tròn khác nhau và p(s) là hàm mật độ xác suất của các mẫu tín hiệu. Ta sẽ trở lại biểu thức này trong phần tiếp theo khi ta kiểm tra các hệ thống đã được nén. Còn bây giờ, ta sẽ sử dụng biểu thức này để chứng minh câu phát biểu đã đề cầp trước đó về vị trí tốt nhất cho các giá trị làm tròn. Ta giả sử rằng các vùng được xác định (si là giá trị cho trước) và ta muốn tìm vị trí tối ưu của các giá trị làm tròn sqi. Ta dùng từ “tối ưu” theo nghĩa là những giá trịnày làm cho trung bình bình phương của lỗi giảm đến mức nhỏ nhất. Để làm được điều đó, tìm sự khác nhau giữa biểu thức 7.15 với sqi và giá trị từ zero.
Ta có:
p(s)sq1sq2sq8s0s1s2s3s4s5s6s7s8s
Hình 7.38 Mật độ xác suất của các mẫu.
Biểu thưc (7.16) chỉ ra rằng một khi các vùng lượng tử hoá đã được làm tròn, được chọn ở giữa trọng tâm của phần tương ứng trong mật độ xác suất. Vì thế, mức lượng tử thay vì ở giữa của mỗi khoảng, bị lệch về phía xác suất lớn hơn của mỗi khoảng thời gian. Đây là cách nhìn trực giác.
Ví dụ 7.6: giả sử hàm mật độ của s(t) là một mật độ theo định lý Gausse tại giá trị zero với sự khác biệt là 1/9. Bởi vì khả năng của của một mẫu vượt quá biên độ 1, nhỏ hơn 1% (đó là điểm 3), giả sử rằng ta lượng tử hoá vùng giữa –1 và +1 (đó là các giá trị ở trên biên độ 1 sẽ bão hoà tại giá trị hoặc 000 hoặc 111). Ơ đây ta sử dụng lượng tử hoá 3 bit.
- Tìm lỗi lượng tử bình phương, giả sử rằng ta sử dụng lượng tử hoá đều đặn.
- Đề nghị một sơ đồ mà ở đó các vùng lượng tử hoá được chọn có diện tích bằng nhau dưới hàm mật độ xác suất qua mỗi vùng. Đó là xác suất của hàm trong bất kỳ khoảng thời gian riên nào đều giống nhue trong những khoảng thời gian khác. Hãy chọn vị trí thích hợp nhất cho các giá trị làm tròn và tìm lỗi bình phương.
Giải:
- Ta dùng công thức tương đương của (7.11) để tìm lỗi bình phương trong trường hợp lượng tử hoá đều đặn. Kích thước của mỗi khoảng là 2/8 = ¼. Lỗi được cho bởi:
- Đầu tiên ta phải tìm các đường biên của các vùng lượng tử. Ta chia phần này ra tám đoạn bằng nhau. Vì thế mật độ của mỗi vùng là 1/8. Tham chiếu đến bảng các hàm lỗi ta thấy trị của si là:
-1, -0.38, -0.22, -0.1, 0, 0.1, 0.22, 0.38, 1
Biểu thức (7.16) bây giờ được dùng để tìm các trị làm tròn là sqi. Biểu thức này được rút gọn lại là:
Điều này được ước lượng bằng công thức gần đúng hoặc tương đương. Kết quả của các sqi được cho bởi:
-0.54, -0.3, -0.16, -0.05, 0.05, 0.16, 0.3, 0.54
cuối cùng, lỗi bình phương được tìm bằng biểu thức 7.15 là:
mse = 5.3 x 10-3
Điều này nói lên lượng tử hoá đều đặn, tốt hơn lượng tử hoá không đều đặn. Tuy nhiên, với mật độ Gausse và chỉ lượng tử hoá 3 bit, biểu thức 7.11 không tương đương với lỗi bình phương. Biểu thức này đòi hỏi mật độ phải tuyến tính qua các vùng khác nhau. Câu trả lời chính xác cho câu a có thể áp dụng biểu thức 7.15. Kết quả sẽ là 6.2 x 10-3, và vì thế lượng tử hoá không không đều đặn không cung cấp một tiến triển trong quá trình thực hiện.
Ví dụ này đề nghị một thuật toán khả thi cho việc chọn lựa trong các vùng lượng tử hoá. Thật sự, đây không phải là thuật toán tốt nhất khi so sánh với lượng tử hoá đều đặn trong một số trường hợp.
Biểu thức lỗi bình phương nhấn mạnh xác suất bình phương của sự sai lệch từ giá trị được lượng tử trước khi tích phân. Một cách tổng quát, vấn đề là làm giảm thiểu lỗi của biểu thức 7.15 như một hàm hai biến si và sqi. Các giá trị sqi bắt buộc thoả mãn biểu thức 7.16. Ngoại trừ mật độ xác suất có thể được tính toán bằng công thức gần đúng. Vấn đề này, tính toán không đơn giản.
Ta có thể sử dụng biểu thức 7.15 để có được sự tương đương nhằm cải tiến số bit lượng tử tăng. Qui luật sau đây cho phép chọn lựa vùng lượng tử hoá: chọn lựa vùng lượng tử hoá để phù hợp tính đều đặn.
(si+1 -si)2 p(điểm giữa) = hằng số. (7.17)
phần này ta sẽ nghiên cứu sâu ở cuối chương.
2. HỆ THỐNG NÉN VÀ GIẢI NÉN (companded systems)
Biểu thức tương đương bằng một hàm nén đặc biệt được so sánh với lượng tử đều đặn. Kết quả, tương đương, và sự tương đương này sẽ làm cải tiến số bit lượng tử tăng. Vì thế các vùng lượng tử trở nên nhỏ hơn. Ta giả sử rằng các trị làm tròn, ở giữa mỗi khoảng thời gian. Đây là cách chọn tốt nhất nếu mật độ có thể được giả sử là hằng số qua độ rộng của mỗi khoảng. Giả sử rằng hàm mật độ tương đương qua từng khoảng giá trị của nó ở tại các trị làm tròn. Biểu thứ 7.15 được viết lại là:
(7.18)
Và bây giờ ta lấy sqi là khoảng giữa của mỗi khoảng
Biểu thức 7.18 sẽ trở thành:
(7.19)
Thật sự nếu kích thước các bậc đều đặn của S được thay vào trong biểu thức 7.19 kết quả chỉ còn là S2/12. Nếu không rơi vào trường hợp này, ta phải kiểm tra lại sự thay đổi để tìm ra lỗi.
Ta có thể liên kết kích thước mỗi khoảng si+1 - si đến độ dốc của đường cong được nén.Nếu ngõ ra nén được lượng tử hoá đều đặn với cỡ bậc là S, cỡ bậc tương ứng của dạng sóng chưa nén tương đương với hình 7.38.
Ta cần giới hạn tổng này khi các khoảng thời gian càng ngày càng nhỏ. Để làm được điều đó, ta tách bình phương của mỗi khoảng từ toán hạng luỹ thừa 3 trong biểu thức 7.19 và viết lại số hạng bình phương này bằng cách sử dụng đạo hàm hàm.
(7.20)
tính giới hạn trở thành:
Lỗi bình phương cho một lượng tử hoá đều đặn xuất hiện trong biểu thức 7.21. Nếu tích phân trong biểu thức này nhỏ hơn 1, bộ nén và giải nén sẽ là lượn tử hoá đều đặn.
Ta muốn so sánh hệ thống nén và giải nén đều đặn. Trong sự so sánh này, ta sẽ chọn lượng tử hoá 8 bit bởi vì đây là cách thông dụng nhất trong việc truyền âm thanh. Nếu ta giả sử rằng các mẫu tín hiệu được phân bố không đều đặn, tỉ số tín hiệu trên nhiễu lượng tử là 48dB khi dùng lượng tử hoá 8 bit.
Giả sử rằng công suất tín hiệu giảm nhưng các mức lượng tử, không thay đổi (ta không thiết kế lại bộ biến đổi A/D). Miễn sao tín hiệu lấp đầy ít nhất một vùng được lượng tử (-S/2 đến +S/2), và công suất nhiễu trung bình còn lại không thay đổi. Vì thế, khi công suất tín hiệu giảm, tỉ số tín hiệu trên nhiễu SNR cũng giảm cùng một tỷ lệ. Ta có thể vẽ SNR như một hàm công suất ngõ vào như được trình bày bằng đường tuyến tính của hình 7.39. Khi tín hiệu tăng vượt quá phạm vi của các mức lượng tử (trong trường hợp quá tải), công suất nhiễu tăng lên khá nhanh. Điều này là đúng bởi vì các mẫu lớn hơn sẽ làm bảo hoà hệ thống và nhiễu sẽ không giới hạn về biên độ đến S/2 nữa. Với bất kỳ SNR nào, phần đường cong ở trên mức này thể hiện vùng lượng tử hoá động. Ví dụ nếu ta cần SNR ít nhất là 28dB, khoảng động này sẽ đi từ –20 đến khoảng +3dB trong trường hợp đầy tải như thể hiện trên sơ đồ.
0-10-20-30-40-501020304048SNR (dB)N=8overloadInput signal power (dB)
Hình 7.39 Nguồn tín hiệu kháng SNR.
0-10-20-30-40-50-6016263646051540100=255N=8Input power (dB relative to full load)
Hệ thống nén-giải nén thực hiện tốt hơn hệ thống lượng tử hoá đều đặn đối với các tín hiệu nhỏ. Điều này đúng bởi vì, các khoảng nhỏ hơn, kích thước mẫu giảm.
Hình 7.40 Hoạt động của hệ thống nén.
Ta có thể ước lượng sự thự hiện hệ thống nén-giải nén và so sánh nó với hệ lượng tử hoá đều đặn. Trong hình 7.40 thực hiện điều đó cho mật độ tín hiệu đều đặn và nén-giải nén theo luật (các giá trị thay đổi của m bao gồm -255). Các đường cong của hình 7.39 được lập lại trong hình này khi so sánh. Chú ý rằng hệ thống nén-giải nén thực hiện tốt hơn lượng tử hoá đều đặn cho các mức tín hiệu thấp như mong muốn. Ví dụ như, nếu ta mong muốn tỉ số tín hiệu trên nhiễu ít nhất là 28dB, khoảng động sẽ đi từ –50dB đến khoảng +3dB khi đủ tải như đã chỉ ra trong sơ đồ.
- NHIỄU LƯỢNG TỬ TRONG BIẾN ĐIỆU DELTA (quantization noise in delta modulation)
Một lần nữa ta định nghĩa lỗi lượng tử là hiệu số giữa tín hiệu gốc và sự lượng tử tương đương (hàmbậ thang):
Giả sử rằng tốc độ lấy mẫu và kích thước từng bậc, được chọn trước để tránh quá tải. Với những điều kiện này, biên độ của nhiễu lượng tử không bao giờ vượt quá kích thước bậc. Để đơn giản, ta giả sử tất cả biên độ tín hiệu thì bằng nhau, ta kết luận rằng lỗi được phân bố đều đặn qua phạm vi giữa - và + như được trình bày ở hình 7.41. Giá trị trung bình bình phương của nhiễu lượng tử được cho bởi:
p(e)e
Trong các hệ thống viễn thông số đang xây dựng, một câu hỏi hợp lý đặt ra là sử dụng PCM hay DM trong kỹ thuật mã hoá nguồn. Ta sẽ lo lắng về nhiều yếu tố: tốc độ bit truyền đòi hỏi về băng thông hệ thống, độ tin cậy, nhiễu lượng tử và sự ảnh hưởng của lỗi truyền. Ta nhận thấy công thức đơn giản của SNR liên hệ với PCM và với DM. Đường thẳng ở dưới đáy là những trường hợp chắc chắn mà DM sẽ cung cấp SNR giống như PCM với tốc độ truyền bit thấp. Trong những trường hợp khác, điều ngược lại vẫn đúng. Biến điệu delta thích nghi cộng thêm thông số khác vào phân tích.
Hình 7.41 Mật độ lỗi lượng tử cho DM
Ta bắt đầu phân tích bằng cách giải quyết lỗi lượng tử bình phương ở tại ngõ ra của bộ thu biến điệu delta. Sự hoàn điệu bao gồm bộ lọc hạ thông LPF làm phẳng các hàm bậc thang để trở thành một đường cong liên tục. Do đó ta phải tìm các đặc tính tần số của nhiễu lượng tử. Đây không phải là bài toán phân tích đơn giản mà nó đòi hỏi một dạng đặc thù mà ta phải chấp nhận cho s(t).
Ta giả sử rằng tín hiệu gốc s(t) là một sóng hình răng cưa. Đây là ví dụ đơn giản nhất về dạng sóng được phân bố đều đặn. Tức là dạng sóng với phiên bản lượng tử của nó và cho ra kết quả nhiễu lượng tử như được trình bày trong hình 7.42. Chú ý rằng hàm nhiễu, hầu như tuần hoàn với chu kỳ Ts (chu kỳ lấy mẫu). Nhiễu tuần hoàn chính xác có chu kỳ bằng với dạng sóng phẳng nếu chu kỳ đó là một tích phân nhân với Ts. Ta giả sử rằng kích thước bậc và chu kỳ lấy mẫu được chọn để tránh quá tải cho trường hợp này để có tính đối xứng hoàn chỉnh. Mật độ phổ công suất của sa(t) có thể tính một cách chính xác. Công thức của nó là: sin4 f/f4 vì biến đổi Fourier của hàm răng cưa cho ra dạng sin2 f/f2. Zero đầu tiên của mật độ phổ công suất của dạng sóng tam giác là f=1/Ts. Các phần nhô lên bên kia của điểm này, bị giảm công suất đi 1/f. Vì thế, có một ít công suất vượt ngoài độ dốc chính. Ta giả sử rằng tất cả công suất được tập trung ở dãy tần thấp với tần số f=1/Ts. Vì ta giả sử rằng lấy mẫu biến điệu delta xảy ra ở tại tốc độ trên tốc độ Nyquist (cụ thể là lớn hơn 7 lần tốc độ Nyquist). Số zero đầu tiên của phổ xảy ra tại tần số f=1/Ts. Tần số này lớn hơn nhiều so với tần số fm. Bộ lọc thông thấp LPF với tần số cắt là fm chỉ cho qua một lượng nhỏ có liên quan đến phần nhô lên chính của phổ công suất nhiễu. Điều này được minh hoạ ở hình 7.43. Để có được kết quả tương đương, ta giả sử rằng phổ, thật phẳng qua phạm vi tần số từ 0 đến fs. Tổng công suất nhiễu là lỗi bình phương đã được tìm ra trong các phần trước là 2/3. Vì ta giả sử là phổ phẳng nên phần công suất qua bộ lọc hạ thông LPF là Tsfm hay fm/fs. Công suất nhiễu ngõ ra, được cho bởi:
Tse(t)t
Tssq(t)sq(t)tTrong đó fs là số các mẫu trên giây.
Hình 7.42 Biến điệu delta của dạng sóng hình răng cưa.
Ví dụ 7.7: Một tín hiệu âm thanh có dạng s(t) = 3 cos 1000t được lượng tử bằng DM. Hãy tìm tỉ số tín hiệu trên nhiễu lượng tử.
Giải:
Đầu tiên ta chọn cỡ bậc và tần số lấy mẫu cho dạng sóng này. Nhịp Nyquist là fs= 1000mẫu/s. Giả sử vì lý do nào đó, ta chọn lớn hơn 8 lần so với nhịp Nyquist tứa fs= 8000mẫu/s. Số lượng lớn nhất của hàm có thể thay đổi trong 1/8ms tương đương với 1V. Nếu kích thước bậc của 1V được chọn, hàm dốc sẽ không quá tải. Công suất lượng tử hoá nhiễu được cho bởi:
Công suất tín hiệu là 32/2 hay 4.5 W. Cuối cùng tỉ số tín hiệu trên nhiễu được cho bởi:
hay 20.3 dB
Giá trị này nhỏ hơn những gì có được nếu sử dụng PCM cho ví dụ này.
f
fmGq(f)
GIỚI THIỆU VỀ MÃ HOÁ ENTROPY VÀ NÉN DỮ LIỆU.
Chủ đề chính của các phần trước thuộc chương này là mã hoá tín hiệu nguồn. Đó là kỹ thuật chuyển đổi một tín hiệu tượng tự sang tín hiệu số.
Phần chính trong phần này là mã hoá entropy. Đây là phương pháp kết hợp một từ dạng số với mỗi thông tin được truyền đi. Ta sẽ thấy sự liên kết này được thực hiện trong phương cách làm giảm thiểu chiều dài thông tin được truyền.
Trong phần 7.8, ta sẽ nghiên cứu về mã hoá kiểm soát lỗi. Phương pháp này thì khác so với mã hoá entropy.
Ngay cả trong trường hợp không có nhiễu thêm vào, các mã hoá entropy cũng phải được thiết kế cẩn thận để tránh nhiều lỗi trong khi giải mã. Vấn đề số một liên quan đến khái niệm này là sự giải đoán duy nhất. Giả sử rằng có 4 bản tin cần được truyền và những bản tin này được mã hoá sang số nhị phân như sau:
M1 = 1M2 = 10M3= 01M4 = 101
Giả sử bây giờ ta đang ở hệ thống thu và nhận được kết quả là 101. Ta sẽ không biết kết quả này là của M4 hoặc thông tin ghép của M2 và M1 hoặc M1 và M3. Do đó sự lựa chọn của các từ mã này cho ra một mã mà không có sự giải đoán mã duy nhất.
Một mã có thể giải đoán một cách duy nhất được nếu không có từ mã tạo nên bắt đầu (được xem như tiền tố) của bât kỳ từ mã nào khác. Vì thế, 4 mã thông tin sau đây là một ví dụ giải đoán duy nhất.
M1=1M2=01M3=001M4=0001
Đặc tính giới hạn tiền tố là đầy đủ nhưng không cần thiết cho khả năng giải mã duy nhất. Ví dụ khá, mã:
M1=1M2=10M3=100M4=1000
Là có thể giải đoán duy nhất được, mặc dù mỗi từ mã là tiền tố của mỗi từ mã khác ở bên phải của nó. Sự khác nhau chính yếu giữa ví dụ này và ví dụ trước là ở chỗ không từ mã nào có thể hình thành như là sự tổ hợp của những từ mã khác. Tuy nhiên đây là điều bất lợi. Mã thì có thể giải đoán duy nhất được nhưng không xảy ra lập tức. Giả sử rằng ta đang ở máy thu và nhận được mã 10. Đến khi ta thấy hai bit được nhận kế tiếp, ta không biết khi nào nhận được thông tin M2, M3, M4.
Ví dụ 7.8: Những mã nào sau đây là giải đoán duy nhất? Hãy xác định chúng khi nào xảy ra.
- 0, 01, 001, 0011, 101
- 110, 111, 101, 01
- 0, 01, 011, 0110111
Giải:
- Đây không là giải đoán duy nhất vì từ đầu tiên và từ sau cùng khi gởi đi thành chuỗi 0101 và có thể diễn giải là 01 và 01. Đó là hai lần truyền của từ thứ hai.
- Đây là giải đoán duy nhất vì tất cả những từ bắt đầu với một số 1 và đều có chiều dài là 3. Nếu một chuỗi 3 bit không bắt đầu với số 1, ta biết rằng nó chỉ là một từ có hai bit. Mã này, cũng xảy ra tức thì vì không từ mã nào là tiền tố của từ khác.
- Đây là giải đoán duy nhất vì tất cả những từ bắt đầu với một số zero, số zero này không lập lại trong bất cứ từ nào là tổ hợp của những từ khác. Nó không xảy ra lập tức vì mỗi từ trong ba từ đầu tiên là một tiền tố của một từ sau cùng khác.
1. MÃ HOÁ ENTROPY (entropy coding)
Vấn đề ta quan tâm ở đây là tìm ra các mã có thể giải đoán duy nhất được với chiều dài nhỏ nhất. Điều này sẽ cho phép truyền với tốc độ lớn nhất trên kênh. Việc kiểm tra các mã được trình bày rõ ràng hơn trong phần này. Những bản tin khác nhau được mã hoá thành những từ có chiều dài khác nhau. Khi nói về chiều dài của một mã, ta phải chỉ ra chiều dài trung bình của những từ mã. Trị trung bình này được tính toán bằng cách lấy xác suất của mỗi bản tin. Rõ ràng rất thuận lợi khi gán những từ mã ngắn hơn cho hầu hết những bản tin có thể có. Mã Morse theo quy luật này bằng cách gán từ mã ngắn nhất bằng ký tự E.
Một định lý căn bản đã tồn tại trong thuyết mã hoá không có nhiễu. Định lý này được phát biểu rằng: đối với các chữ cái mã hoábằng số nhị phân, chiều dài từ mã trung bình, lớn hơn hoặc bằng với entropy. Người ta định nghĩa entropy là
Trong đó pi là xác suất của bản tin thứ i. Giá trị log2(1/pi) được hiểu như là nội dung của thông tin và đơn vị của nó là bit. Entropy là lượng tin trung bình trên bản tin.
Gọi chiều dài từ trung bình là n, định lý này được xác định bằng công thức sau:
Ví dụ 7.9: Tìm chiều dài trung bình nhỏ nhất của một mã với 4 bản tin với xác suất lần lược là 1/8, 1/8, ¼ và ½.
Giải: Theo mã hoá entropy ta có:
1/8 x 3 + 1/8 x 3 +1/4 x 2 + ½ x 1 = 1.75 bits
Đây cũng là chiều dài trung bình nhỏ nhất của mã này. Ta chú ý rằng mã có thể là:
M1 = 000, M2 = 001, M3=01, M4 =1
Mã này có thể giải đoán được và có chiều dài trung bình là 1.75 bits.
2. CÁC MÃ CÓ CHIỀU DÀI THAY ĐỔI (variable length codes)
Nếu các bản tin truyền đi với xác suất không bằng nhau tức các từ mã được chọn có chiều dài không bằng nhau, chiều dài mã trung bình ngắn hơn. Ví dụ giả sử rằng ta có 4 bản tin với xác suất lần lược là 1/8, 1/8, ¼, và ½ (giống như ví dụ 7.9). Một phương pháp để mã hoá những bản tin này sang các từ nhị phân là sử dụng 00, 01, 10 và 11 để gửi 4 bản tin có thể với chiều dài trung bình là 2 bit. Chiều dài trung bình được cho bởi:
1/8 x 3 + 1/8 x 3 +1/4 x 2 + ½ x 1 = 1.75 bits
Ta có thể mã hoá nhiều bản tin sang những từ mã ngắn hơn. Trong trường hợp đặc biệt này chiều dài từ trung bình hợp với entropy. Vì thế ta không thể tìm ra một mã với chiều dài trung bình nhỏ hơn.
Một phương pháp bắt nguồn từ các mã có chiều dài thay đổi là bắt đầu với những mã có chiều dài thay đổi và nhiều nhóm con mở rộng. Ví dụ bắt đầu với mã 1 bít ta có hai từ mã là 0 và 1 và mở rộng cho nó là: 100, 101, 110 và 111. Năm từ mã này là:
0
100
101
110
111
Một phương pháp khác bắt đầu với từ mã 2 bit 00, 01, 10, 11 và mở rộng cho một trong 4 từ mã này sang hai từ. Nếu 01 được chọn cho việc mở rộng, ta sẽ có mã 5 từ.
00
010
011
10
11
Câu hỏi bây giờ là làm sao có nhiều cách để thực hiện mở rộng mà nó sẽ cho kết quả với chiều dài trung bình nhỏ nhất. Ta đã trình bày hai cách để tìm một cách có hiệu quả những từ mã có chiều dài thay đổi. Đó là dùng mã Hufman và mã Shannon-Fano.
Mã Huffman cung cấp một kỹ thuật tổ chức cho việc tìm từ mã có chiều dài thay đổi cho một tập các bản tin. Ta trình bày các bước thực hiện như ví dụ sau đây:
Giả sử rằng ta muốn mã hoá 5 từ s1, s2, s3, s4, và s5 với xác suất lần lược là 1/16, 1/8, ¼, 1/16, và ½. Trình tự mã Huffman được thiết lập qua 4 bước sau đây:
Bước 1: Sắp xếp các bản tin theo xác suất giảm dần. Nếu có những xác suất bằng nhau, chọn bất cứ từ nào trước cũng được.
Bảng 4
| Từ |
Xác suất |
| S5 |
½ |
| S3 |
¼ |
| S2 |
1/8 |
| S1 |
1/16 |
| S4 |
1/16 |
Bước 2: Kể từ đáy lên, tổ hợp hai xác suất cuối thành một xác suất mới với xác suất là tổng của hai xác suất cần ghép. Ta sẽ sắp xếp lại khi có được xác suất mới nếu thấy cần thiết. Và ta cũng sắp xếp theo sự giảm dần.
Bảng 5
| Từ |
Xác suất |
Xác suất mới |
| S5 |
½ |
½ |
| S3 |
¼ |
¼ |
| S2 |
1/8 |
1/8 |
| S1 |
1/16 |
1/8 |
| S4 |
1/16 |
|
Chú ý rằng xác suất ở cuối của cột bên phải là sự tổ hợp của s1 và s4.
Bước 3: Tiếp tục kết nối như bước 2 cho đến khi cột bên phải cùng chỉ còn hai xác suất.
Bảng 6
| Từ |
Xác suất |
Xác suất |
Xác suất |
Xác suất mới |
| S5 |
½ |
½ |
½ |
½ |
| S3 |
¼ |
¼ |
¼ |
½ |
| S2 |
1/8 |
1/8 |
¼ |
|
| S1 |
1/16 |
1/8 |
|
|
| S4 |
1/16 |
|
|
|
Bước 4:Gán những từ mã bằng cách bắt đầu ở bên phải với MSB (the most significant bit). Di chuyển sang bên trái và gán cho những bit khác nếu có sự phân chia xảy ra. Những bit được gán , được gạch dưới như bảng sau:
Bảng 7
| Từ |
Xác suất |
Xác suất |
Xác suất |
Xác suất mới |
| S5 |
½ |
½ |
½ |
½ 0 |
| S3 |
¼ |
¼ |
¼ 10 |
½ 1 |
| S2 |
1/8 |
1/8 110 |
¼ 11 |
|
| S1 |
1/16 1110 |
1/8 111 |
|
|
| S4 |
1/16 1111 |
|
|
|
Cuối cùng các từ mã được xác định như sau:
S1 -> 1110
S2 -> 110
S3 -> 10
S4 -> 1111
S5 -> 0
Chú ý rằng tại mỗi điểm có thể có hai cách gán. Nếu có ba hoặc nhiều xác suất thấp nhất bằng nhau, việc chọn lựa tổ hợp là tuỳ ý.
Chiều dài trung bình là:
= 4 x 1/16 + 3x 1/8 +2x ¼ +4 x 1/16 + 1 x ½ = 15/8
Nếu mã hoá khối được sử dụng, ta cần 3 bit cho một bản tin và chiều dài trung bình sẽ là 3. Entropy của mã được xác định:
H= 2/16 log(16) + 1/8 log(8) + ¼ log(4) + ½ log(2) = 15/8 bits
Kết quả này cũng giống như chiều dài trung bình của mã Huffman. Vì thế, thủ tục Huffman sinh ra một mã có hiệu quả cao. Điều này tạo ra kết quả bởi vì tất cả các xác suất bản tin là bội của ½.
Điều bất lợi của mã Huffman là ta không thể bắt đầu gán từ mã cho đến khi toàn bộ tiến trình tổ hợp được hoàn tất. Đó là một trong những cột phải được khai triển trước khi từ mã đầu tiên được gán. Tiến trình mã hoá thường được thực hiện bằng một máy vi tính chuyên dụng.
Mã Shannon-Fanno cũng giống như mã Huffman. Sự khác nhau chủ yếu là các thao tác thường tiến hơn là lùi. Vì thế các yêu cầu lưu trữ, được xem như là thư giản và mã thực hiện dễ hơn. Nó thường dẫn đến chiều dài trung bình giống như mã Huffman. Các kết quả mã hoá Shannon-Fano thì không luôn luôn tốt như mã Huffman.
Ta sẽ minh hoạ lại kỹ thuật này bằng một ví dụ. Ta dùng một ví dụ giống như mã Huffman đã trình bày ở phần trước trong chương này.
Bước 1: Sắp xếp những bản tin theo xác suất giảm dần. Nếu có nhiều xác suất bằng nhau, chọn bất cứ từ nào trước cũng được.
Bảng 8
| Từ |
Xác suất |
| S5 |
½ |
| S3 |
¼ |
| S2 |
1/8 |
| S1 |
1/16 |
| S4 |
1/16 |
Bước 2: Chia những bản tin thành những tập con có xác suất ngang nhau nhất. Ta bắt đầu tại đỉnh hoặc đáy và chia nhóm này ra hai tập hợp. Ta tìm xác suất tổng cộng của tập hợp trên và tập hợp dưới. Ta chọn đường chia sao cho kết quả nằm trong xác suất gần nhau nhất. Trong trường hợp này đường phân cách sẽ nằm dưới mẫu tin dầu tiên. Kết quả xác suất cho các mẫu tin ở trên và ở dưới là ½ như được minh hoạ dưới đây.
Bảng 9
| Từ |
Xác suất |
|
| S5 |
½ |
0 |
| S3 |
¼ |
| S2 |
1/8 |
| S1 |
1/16 |
| S4 |
1/16 |
|
1 |
Bây giờ ta gán giá trị zero cho tất cả các phần tử của một trong hai tập hợp và giá trị 1 cho tất cả các thành phần khác (đây là sự tuỳ chọn). Giả sử rằng ta chọn 0 cho tập hợp ở trên và 1 cho tập hợp ở dưới. Nếu một tập hợp chỉ chứa một mẫu tin, tiến trình xử lý cho tập hợp đó kết thúc. Vì thế từ mã hoá được dùng để gửi s5 đi là 0 và ta không cần xem lại tiến trình đó nữa. Ta tập trung vào tập hợp khác và ;ăpklại tiến trình chia nhỏ. Sau một lần chia nhỏ hơn ta có:
Bảng 10
| Từ |
Xác suất |
Từ mã |
| S3 |
½ |
10 |
|
11 |
H
Chú ý rằng xác suất cả phần trên đường phân cách và phần dưới đường ấy đều là ¼. Ta đã cộng bit thứ hai cho các từ mã (cộng 0 cho từ mã ở trên đường phân cách và giá trị 1 cho ở dưới đường ấy). Bởi vì chỉ có một mẫu tin ở trên đường phân cách nên ta kết thúc và mã của s3 là 10. Tiếp tục chia nhỏ với tập hợp ở dưới đường phân cách ta có:
Bảng 11
| Từ |
Xác suất |
Từ mã |
| S2 |
1/8 |
110 |
|
111 |
Cuối cùng ta chia nhỏ tập hợp ở phần dưới đường phân cách ra:
Bảng 12
| Từ |
Xác suất |
Từ mã |
| S1 |
1/16 |
1110 |
| S4 |
1/16 |
1111 |
Kết quả của từ mã là:
S1 -> 1110
S2 -> 110
S3 -> 10
S4 -> 1111
S5 -> 0
Quan sát kết quả trên ta thấy hoàn toàn giống với kết quả khi dùng với mã Huffman.
Ta đã minh hoạ hai kỹ thuật để rút ngắn tập hợp các bản tin thành mã nhị phân hiệu quả nhất. Ta giả sử rằng các bản tin đã được cho và chúng không tổ hợp thành mã được. Nếu các bản tin tổ hợp được, sẽ hiệu quả hơn nhiều. Ta minh hoạ điều này bằng một ví dụ với hai bản tin. Giả sử rằng bản tin này có xác suất lần lược là:
S1 -> 0.9
S2 -> 0.1
Thì Entropy được tính là:
H= -0.9 log 0.9-0.1 log 0.1 = 0.47 bit
Vì thế ta hy vọng sẽ đạt được một mã có chiều dài gần với giá trị này. Tuy nhiên ta sử dụng hoặc là kỹ thuật Huffman hoặc là mã Shannon-Fano sẽ cho kết quảlà gán giá trị 0 vào một trong các từ mã và giá trị 1 cho từ mã khác. Chiều dài trung bình thường là một bit trên một bản tin. Điều này, nhiều hơn hai lần Entropy.
Giả sử rằng ta tổ hợp các bản tin thành những cặp. Sau đó ta có 4 tập hợp của hai bản tin. Điều này không phụ thuộc vào các bản tin. Các tập hợp có thể và xác suất kết quả là:
S1S10.81
S1S20.09
S2S10.09
S2S20.01
Nếu sử dụng phương pháp Shannon-Fano ta gán những từ mã như sau:
S1S10.810
S1S20.0910
S2S10.09110
S2S2 0.01111
Chiều dài từ trung bình thường được xác định như sau:
= 1 x 0.81 + 2 x 0.09 + 3 x 0.10 = 1.29 bits
Vì mỗi bản tin được tổ hợp sẽ thể hiện hai trong số những bản tin gốc, ta chia số này cho hai, tìm ra được 0.645 bit được dùng để gửi một trong số những bản tin gốc.
Bây giờ giả sử rằng ta kết hợp 3 bản tin ở cùng một thời điểm để có được những xác suất bản tin và từ mã như sau:
S1S1S10.7290
S1S1S20.081100
S1S2S10.081101
S1S2S20.00911100
S2S1S10.081110
S2S1S20.00911101
S2S2S10.00911110
S2S2S20.00111111
Chiều dài trung bình của các mã là 1.598 bits. Vì thế chiều dài trung bình cho bản tin gốc là:
Chú ý rằng ta càng kết hợp nhiều bản tin, chiều dài trung bình sẽ tiến gần đến Entropy. Chiều dài trung bình này sẽ bằng với Entropy nếu các xác suất là nghịch đảo bội của 2. Khi càng nhiều các bản tin được kết hợp, các xác suất càng tiến đến gần nhau.
3. NÉN DỮ LIỆU (data compression)
Nén dữ liệu là một thuật ngữ được dùng rộng rãi trong các kỹ thuật làm giảm số bit truyền cho một bản tin. Mã hoá Entropy là một dạng của nén dữ liệu.
Sự thành công của các kỹ thuật nén dữ liệu, phụ thuộc vào các thuộc tính của thông tin. Ví dụ mã hoá Entropy trở nên hiệu quả nhất khi các xác suất của bản tin không bằng nhau. Những kỹ thuật khác mà ta sẽ mô tả phụ thuộc vào các thuộc tính tuần tự của bản tin. Tức chúng phụ thuộc vào các biểu tượng xảy ra trong một trật tự có thể tiên đoán.
Bây giờ ta xem sự mã hoá của một bức ảnh ti vi. Giả sử, một bức ảnh ti vi chứa 426 điểm ảnh có thể nhìn thấy (pixel) trong một đường quét ngang. Nếu ta nói về ti vi trắng đen chỉ cần gửi độ sáng (độ chói) của mỗi điểm ảnh. Giả sử ta quyết định truyền 7 bits thông tin. Thế thì, ta lượng tử độ sáng bằng 27 hoặc 128 mức khác nhau. Điều này thể hiện chất lượng của độ phân giải cao. Ta cần 7 x 426 hoặc 2982 bits để truyền thông tin cho mỗi đòng bằng cách sử dụng PCM. Một ảnh ti vi chuẩn thường chứa mộ chuỗi các điểm ảnh gần nhau với cùng độ sáng. Khi ta theo dấu của một đường quét ngang ta có thể thấy hàng trăm điểm ảnh có độ sáng giống nhau (giả sử có một hình ở giữa màn hình và phông nền, giống nhau hoặc giả sử ta gửi một đoạn văn bản trên một nền giống nhau). Trong những trường hợp như thế ta có thể sử dụng kỹ thuật nén dữ liệu (được hiểu như mã run-length) để làm giảm số bit truyền tín hiệu. Thay vì gửi độ sáng cho mỗi điểm ảnh, ta gửi vị trí bắt đầu và độ sáng của điểm ảnh đầu tiên trong số các điểm ảnh có cùng độ sáng với cùng một độ sáng. Để gửi vị trí ta cần 9 bits thông tin bởi vì 29 = 512 và có 426 vị trí khác nhau. Vì thế ta cần 9 bits cho vị trí và 7 bits cho độ sáng (tổng cộng là 16 bits). Thí dụ nếu 10 điểm ảnh lân cận có cùng độ sáng, ta cần 10 x 7 = 70 bits để gửi những thông tin này một cách độc lập. Nhưng chỉ với 16 bit để gửi chúng nếu dùng mã run-length. Khái niệm này có thể dẫn đến tiết kiệm hơn nếu được mở rộng sang hai hướng.
Một trong những bất lợi của mã run-length là tín hiệu dữ liệu xảy ra với tốc độ không đồng đều. Đó là những bit không mã hoá được gửi đi với tốc độ không đổi. Tuy nhiên, bằng cách mã hoá các vùng sáng đều lớn sẽ cho kết quả dữ liệu truyền với nhịp thấp hơn. Vì thế hệ thống đòi hỏi một vùng đệm. Một sự thiếu sót nữa là các lỗi truyền đi vì hệ thống có bộ nhớ. Một bit lỗi trong một hệ thống dùng PCM để gửi riêng thông tin từng điểm ảnh sẽ gây ra một lỗi độ sáng cho riêng điểm ảnh đó. Nhưng nếu mã run-length được dùng, một bit lỗi có thể ảnh hưởng đến toàn bộ độ sáng của đường quét.
Ta có thể dùng sự tiên đoán trong các dạng nén dữ liệu. Nếu các giá trị của dữ liệu tiếp theo có thể được tiên đoán từ các giá trị hiện tại và các giá trị trước đó thì không cần gửi tất cả dữ liệu. Chỉ cần các giá trị dữ liệu hiện tại cộng thêm một số thông số chính đủ để giúp cho việc tiên đoán.
GIỚI THIỆU VỀ SỬA LỖI TIẾP CHUYỂN (forward error correction).
Ta sẽ cố gắng thiết kế một hệ thống để làm giảm thiểu xác suất của các bit lỗi. Tuy nhiên, trong một môi trường nhiễu thường, không thể làm giảm lỗi đến mức có thể chấp nhận được. Điều ta cần làm là tăng công suất tín hiệu đến giới hạn thực tế. Làm giảm tỉ lệ lỗi là yêu cầu truyền thông ở một tốc độ thấp khó có thể chấp nhận.
Có một sự lựa chọn khác để cải tiến việc thực hiện một hệ thống truyền thông số. Mã kiểm soát lỗi (error control coding) có thể được dùng để cải tiến cấu trúc tín hiệu. Cấu trúc này có thể nhận ra các lỗi ở tại hệ thống thu. Sự phát hiện lỗi (error detection) là tiến trình cung cấp cấu trúc đủ. Do đó hệ thống thu sẽ biết được khi nào lỗi xảy ra. Nếu cấu trúc thêm vào đầy đủ để định vị chính xác vị trí của các lỗi này, mã đó là một mã sửa lỗi (error correcting) và nó có thể sửa đúng các lỗi tại hệ thống thu mà không yêu cầu phải truyền lại. Sự sửa lỗi đó gọi là sửa lỗi tiếp chuyển (forward error correction). Sửa lỗi tiếp chuyển thường yêu cầu thêm vào một số bit khi truyền tín hiệu đi. Do đó ta gửi nhiều bit hơn yêu cầu.
Ta xem hai loại mở rộng của mã điều khiển lỗi là mã hoá khối (block coding) và mã hoá chồng (convolutional coding).
1. MÃ HOÁ KHỐI TUYẾN TÍNH (linear block coding):
Trong mã hoá khối tuyến tính các nhóm của bản tin có chiều dài không đổi được mãhoá sang các nhóm bit mã hoá có chiều dài cố định. Nhóm các bit để hình thành số bản tin mong muốn. Chẳng hạn như bằng cách kết hợp các nhóm 3 bits, ta có thể hình thành nên 8 bản tin có từ mãnhư sau: 000, 001, 010, 011, 100, 101, 110, 111. Mỗi một trong 8 từ bản tin này có thể được mã hoá sang một trong 8 từ mã khác. Các từ mã không cần thiết phải có chiều dài bản tin giống như từ bản tin gốc. Thật vậy, để điều khiển được lỗi, các từ mã phải dài hơn từ bản tin gọi là phần dư (redundancy).
Ta có thể kiểm tra khả năng sửa lỗi cho các lỗi được phân bố ngẫu nhiên. Ta giả sử rằng các bit thực tế đảo ngược trong khi truyền đi, được phân bố một cách ngẫu nhiên trong suốt bản tin. Đây không phải là trường hợp các lỗi ngẫu nhiên (burst error) mà ở đây xác suất lỗi bit cao xảy ra trong số các bit lân cận.
2. KHOẢNG CÁCH GIỮA CÁC TỪ MÃ
Khoảng cách giữa hai từ nhị phân có chiều dài bằng nhau được định nghĩa như số vị trí bit khác nhau giữa hai từ này. Ví dụ như khoảng cách giữa 000 và 111 là 3 trong khi khoảng cách giữa 010 và 011 là 1. Khoảng cách giữa bất cứ từ nào với từ được hình thành bằng sự thay đổi một bit là 1.
Giả sử bây giờ ta truyền một trong 8 từ mã 3 bit. Và ta truyền trên một kênh bị nhiễu và có một bít vị trí nhận sai vì mỗi tổ hợp 3 bít được dùng cho một bản tin, nên thu được chính là một trong các từ mã và một lỗi được tạo ra. Chẳng hạn như nếu giá trị 101 được truyền và có một lỗi xảy ra trong bit thứ ba nên ở hệ thống thu được sẽ là 100.
Bây giờ giả sử rằng từ vựng của các từ mã là khoảng cách giữa bất cứ hai từ mã nào ít nhất là hai. Tám từ mã sau đây có tính chất trên:
0000, 0011, 0101, 0110, 1001, 1010, 1100, 1111
Bây giờ ta truyền một trong 8 từ mã và một bit lỗi xảy ra trong khi truyền. Vì khoảng cách giữa từ nhận được và từ truyền là 1, từ nhận được không thể ghép bất cứ từ nào trong từ vựng. Ví dụ như giá trị 0101 được truyền và bit lỗi xảy ra ở bit thứ 3, hệ thống thu nhận được 0111. Đây không phải là một trong 8 từ trên. Không thể sửa lỗi được nếu từ mã truyền là một trong các trị sau: 0011, 0101, 0110, 1111.
Bây giờ ta sẽ vẽ các từ mã trong một không gian n chiều, 8 từ mã trở thành các góc của hình khối đơn vị như trình bày trong hình 7.44.Bắt đầu tại mỗi góc của hình khối, nếu một lỗi bit được tạo ra, ta sẽ di chuyển một trong những cạnh đến một góc kế bên với khoảng cách là một đơn vị. Vì thế khoảng cách giữa hai từ là số cạnh nhỏ nhất phải được xoay quanh trục để di chuyển từ một từ đến những từ khác.
000001010011100101110111
Hình 7.44 Mã hoá 3 bit trong không gian 3 chiều.
Trong ví dụ trên vơi các từ mã 4 bit ta cần một hình vẽ với 8 điểm thể hiện các từ mã 4 chiều. Đây là một hình khối trong một không gian 4 chiều. Ta tìm ít nhất hai cạnh được xoay quanh một trục từ một từ đến những từ khác.
Trong trường hợp tổng quát nếu khoảng cách nhỏ nhất giữa hai từ mã là 2, các từ mã được chia ít nhất là hai cạnh trong một không gian n chiều. Ta sẽ minh hoạ điều này trong hình 7.45. Trong hình này ta chỉ ra3 trong số các từ mã từ ví dụ trên. Khối cầu n chiều với bán kính đơn vị bao gồm tất cả các từ với khoảng cách bằng 1 được tính từ tâm.
000001100011d = 1
Hình 7.45 Không gian 4 chiều.
Giả sử bây giờ khoảng cách nhỏ nhất giữa các từ mã được tăng lên bằng 3. Ta thấy rằng nếu một lỗi được tạo ra, từ nhận được có khoảng cách bằng 1 từ một từ mã đúng và ít nhất 2 đơn vị so với khoảng cách từ mỗi từ mã khác. Ta sẽ giải mã với từ gần nhất có thể chấp nhận được. Vì thế mã này có khả năng sửa lỗi một bit lỗi. Nhưng khi truyền chắc gì không xảy ra hai bit lỗi. Đối với trường hợp này, tiến trình mã hoá của ta sẽ dẫn đến câu trả lời không đúng. Tuy nhiên xác suất của 2 bit lỗi, nhỏ hơn xác suất của một bit lỗi. Ví dụ nếu ta truyền các từ 5 bits và xác suất của bit lỗi là 10-4, xác suất của một bit lỗi được xác định như sau:
5 x 10-4 x (1-10-4)4 = 5 x 10-4
Và xác suất của 2 bit lỗi sẽ là:
10 x (10-4)2 x (1-10-4)3 = 10 x 10-8
Vì thế một bit lỗi, nhiều hơn khoảng 500 lần so với 2 bit lỗi. Vì thế chiến thuật của ta có một kết quả trung bình giữa việc ước lượng 500 lần lỗi được sửa đúng và một lần ước lượng sửa lỗi không đúng.
Tổng quát nếu khoảng cách nhỏ nhất giữa các từ mã là Dmin, ta có số các lỗi là Dmin – 1. Để chuyển từ từ mã được truyền sang từ mã có thể chấp nhận khác ít nhất là Dmin lỗi được tạo ra, ta có thể nhận ra nếu có nhiều hơn số lỗi được tạo ra.
Nếu ta sửa lỗi bằng cách di chuyển đến từ gần nhất có thể chấp nhận, ta sửa (Dmin - 2)/2 lỗi cho Dmin chẵn và (Dmin - 1)/2 lỗi cho Dmin lẻ.
3. CÁC MÃ SỐ HỌC (algebraic codes)
Giả sử rằng từ bản tin của ta bao gồm k bits và ta thêm phần dư với m bits thêm vào. Lúc đó chiều dài của mỗi từ mã vào là n = k + mbits. Vì thế mỗi từ thông tin k bits có liên quan đến một từ mã n bit. Nếu từ thông tin xuất hiện rõ như một phần của từ mã, ta qui ước cho điều này như một mã hệ thống. Nếu ta biểu thị các bit thông tin này là ui và các bit thêm vào là ci, từ mã có thể được viết như sau:
c1c2 . . . cmu1u2 . . . uk
Ta đã đặt các bit thông tin ở phần kết thúc của từ mã. Điều này, không cần thiết và chúng có thể xuất hiện bất cứ ở đâu trong từ.
Một mã toán học là một mã mà các từ mã và từ thông tin có liên hệ bằng một biểu thức ma trận.
Trong đó
= [1 x k] là vector thông tin.
= [1 x n] là vector từ mã.
[G] = [k x n] là ma trận phát.
Đây là một mã tuyến tính (n, k) trong đó n là chiều dài của các từ mã.
Ví dụ 7.10: Từ mã tuyến tính A(4, 3) được phát bởi ma trận:
Hãy tìm các từ mã liên quan với mỗi từ thông tin.
Giải:
Mã A(4, 3) có các từ thông tin với chiều dài 3 bits và các từ mã có chiều dài 4 bits. Như vậy ta có 8 từ mã thông tin 3 bits. Ta nhân mỗi từ mã cho ma trận phát để tìm các từ mã như sau:
Bảng 13
| Thông tin |
Từ mã |
| 000 |
0000 |
| 001 |
1001 |
| 010 |
1010 |
| 011 |
0011 |
| 100 |
1100 |
| 101 |
0101 |
| 110 |
0110 |
| 111 |
1111 |
Trước khi qua ví dụ này ta có một số chú ý. Chú ý đầu tiên là 3 bit mã cuối cùng ghép với từ thông tin. Vì thế mã này là mã hệ thống. Điều này xảy ra khi vế phải của ma trận [G] là một ma trận 3 chiều. Ta cũng chú ý rằng các bit dư thêm vào là một parity bit được chọn để cung cấp cho parity chẳn. Các bits thêm vào trong mã số học, luôn luôn là các bit kiểm tra parity. Mà ở đây ta chọn ký hiệu ci cho các bits dư này.
Ví dụ 7.11: Mã tuyến tính A(7, 4) được phát bởi ma trận [G]:
Hãy tìm các từ mã liên hệ với mỗi từ thông tin và tìm khoảng cách nhỏ nhất cho mã này.
Giải:
Với mã A(7, 4) có 4 bits thông tin 3 bits parity. Các từ thông tin và từ mã liên quan, được cho như sau:
Bảng 14
| Thông tin |
Mã |
| 0000 |
0000000 |
| 0001 |
1010001 |
| 0010 |
1110010 |
| 0011 |
0100011 |
| 0100 |
0110100 |
| 0101 |
1100101 |
| 0110 |
1000110 |
| 0111 |
0010111 |
| 1000 |
1101000 |
| 1001 |
0111001 |
| 1010 |
0011010 |
| 1011 |
1001011 |
| 1100 |
1011100 |
| 1101 |
0001101 |
| 1110 |
0101110 |
| 1111 |
1111111 |
Việc kiểm tra của ma trận [G] cho thấy rằng:
Bit parity đầu tiên cung cấp parity chẵn khi kết hợp với các bit thông tin thứ nhất thứ 3 và thứ tư.
Bit parity thứ hai cung cấp parity chẵn khi kết hợp với các bit thông tin thứ nhất thứ hai và thứ ba.
Bit parity thứ tư cung cấp parity chẵn khi kết hợp với các bit thông tin thứ hai thứ ba và thứ tư.
Ta có thể kiểm tra khoảng cách giữa mỗi cặp từ mã (có 120 cặp để kiểm tra). Nếu ta làm như thế, ta tìm khoảng cách nhỏ nhất của 3 bit parity. Mã này có thể sửa lỗi một bit hoặc 2 bits. Việc kiểm tra 3 bits parity của từ nhận được cho phép ta xác định các lỗi bằng phép đo đạc tam giác (triangulation).
Kiểm tra các khoảng cách trong ví dụ 7.11 là một tiến trình xử lý toàn diện. Một số phép toán tạo ra tiến trình hầu như đơn giản. Ta bắt đầu định nghĩa độ lớn của từ mã như số số 1 chứa trong từ đó. Nếu ta thêm hai từ (phép toán modulo -2), tổng chứa một số 1 trong mỗi vị trí bit với hai từ khác nhau. Vì thế khoảng cách giữa hai từ là độ lớn của tổng.
Ta có thể nhìn thấy từ biểu thức 7.23 mà tổng của các từ mã là một từ mã có thể chấp nhận được. Nếu ta cộng hai từ thông tin với nhau, kết quả từ mã là tổng của hai từ mã gốc. Đây là một thuộc tính cơ bản của mã toán học. Xem lại ví dụ 7.11 tổng của bất kỳ 2 trong số 16 vector mã phải bằng với một trong các vector mã khác. Vì thế một trong các vector mã nonzero thể hiện tổng của hai vector khác (vector zero là tổng của vector mã với chính nó). Khoảng cách nhỏ nhất giữa các từ mã chính là độ lớn nhỏ nhất của các từ mã nonzero. Đây là giá trị 3 cho ví dụ trước mà ta chỉ cần kiểm tra độ lớn là 15 thay vì 120 khoảng cách.
Mỗi ma trận phát [k x n] có một ma trận kiểm tra parity [(n - k) x n]được định nghĩa là [H]. Ta thiết lập ma trận này bằng lấy hoán vị của phần không xác định của [G] và biến chúng thành ma trận xác định. Vì thế ma trận [H] tương ứng với ma trận [G] trong ví dụ 7.11 là:
Ma trận kiểm tra parity có thuộc tính là:
Bất cứ từ mã nào được nhân với chuyển vị của [H] trở thành một vector zero. Ví dụ hãy chọn từ mã thứ 3 trong ví dụ 7.11 là 1001011. Ta tìm được:
Bây giờ giả sử rằng ta truyền mã vecotor
và có một lỗi xảy ra trong vị trí bit thứ tư. Đây là biểu thức được thêm vào vector lỗi.
Với vector truyền
. Ta thu được vector
và nhân với [H]T. Kết quả sẽ là:
Nếu
chứa giá trị 1,
[H]T kết hợp với dòng của [H]T tương ứng với vị trí lỗi. Chẳng hạn như nếu ta thay đổi bit thứ tư trong ví dụ trên, ta sẽ nhận được 1000011. Nó được nhân với [H]T tạo thành [1 1 0]. Đây chính là dòng thứ tư của [H]T. Ta sẽ nhận ra sự ghép nối của dòng thứ tư. Do đó ta biết được nơi lỗi xảy ra và có thể sửa chúng. Kết qủa là vector nhận được với [H]T là một dấu hiệu.
Nếu có nhiều hơn một lỗi xảy ra, dấu hiệu là tổng của các dòng có liên quan đến ma trận. Nếu tổng này là duy nhất (tức là nó chỉ có thể có được bằng cách cộng một tập hợp các dòng đặc biệt lại với nhau), mã có khả năng đúng nhiều hơn là lỗi.
Các mã Hamming là một trong những ví dụ quan trọng của các mã toán học có khả năng sửa một lỗi. Các mã Bose, Chaudhuri, Hocquenghem (BCH) là một trong những ví dụ quan trọng của mã số học có thể sửa được nhiều hơn một lỗi.
4. CÁC MÃ CHU KY (cyclic codes)
Công cụ của các mã số học đòi hỏi khả năng về thực hiện nhân ma trận và so sánh kết quả với những số nhị phân biến đổi. Các mã phổ biến nhất, được hệ thống lại như các mạch tích hợp.
Các mã chu kỳ là một trường hợp đặc biệt của các mã khối mà nó có thể hình thành rất đơn giản. Chúng có thể trình bày như một bộ ghi lại các từ mã của mã số học. Ta có các mã chu kỳ như các đa thức. Ví dụ như một từ 1101 tương đương với đda thức 1 + X + X3. Mỗi vị trí trong từ nhị phân có liên hệ với một biến X. Và mã này tượng trưng cho đa thức phát và các từ mã bắt nguồn từ việc nhân đa thức với vector thông tin để tạo thành đa thức phát.
5. MÃ PN (pseudonoise)
Một lớp đặc biệt của đa thức phát hình thành một tập hợp các mã chu kỳ với các thuộc tính khoảng cách mong muốn. Những điều này được hiểu như các đa thức tối giản cực đại.
Kết quả mã hoá từ các đa thức tối giản được hiểu như mã PN hay pseudonoise. Pseudonoise là một dãy số nhị phân với các thuộc tính giống như nhiễu bạch (white noise). Mã được phát với các thanh ghi dịch hồi tiếp. Ta minh hoạ điều này bằng một ví dụ với sơ đồ khối hình 7.46. Ta cho giá trị ban đầu vào bộ phát bằng hồi tiếp trong dãy số 3 bits. Bộ phát bắt đầu hoạt động và phát mỗi bit thành công bằng cách cộng vào hai bit trước đó lại với nhau. Giả sử rằng ta thêm vào bộ phát 3 bit 010., ngõ ra sẽ là: 010111001011100101110. . .
+R0R1R2Initiating sequenceout
Hình 7.46 Bộ phát mã PN.
Chú ý rằng điều này lặp lại với chu kỳ 7 bits. Nếu ta lấy bất cứ 7 bits liên tiếp nào trong dãy số này, ta có một từ mã mới. Vì thế nếu ta thêm vào dãy số giá trị 101, kết quả từ mã sữ là 1011100. Và kết quả này trông giống như từ 2 đến 8 bit trong dãy số này. Ta có thể nhận ra 7 từ mã nonzero như sau:
0111001
1110010
1100101
1001011
0010111
01011101011100
Những từ này có thuộc tính khoảng cách bằng nhau. Khoảng cách giữa bất cứ hai từ luôn luôn là 4.
Các dãy số PN dài hơn có các thuộc tính giống nhau. Nếu ta xây dựng một bộ phát với một tế bào lưu trữ nhiều hơn trong thanh ghi dịch và các tiếp điểm hồi tiếp phù hợp, các dãy số thêm vào sẽ có chiều dài 4 bits và các từ mã sẽ tăng chiều dài lên 15 bits. Bất cứ hai trong số 15 từ mã khác nhau sẽ có một khoảng cách cách giữa chúng là 8.
Tổng quát các mã PN với các dãy số thêm vào có chiều dài n, sẽ có các từ mã với chiều dài 2n – 1 và khoảng cách giữa hai từ mã là 2n-1. Điều này cho ta một kỹ thuật đơn giản về việc phát các dãy số dài với thuộc tính khoảng cách phù hợp. Khi dịch bất cứ từ mã nào sẽ cho kết quả bằng một từ mã khác, khoảng cách giữa bất cứ từ nào và bản sao của chính nó là 2n-1. Điều này tạo cho các mã PN hữu dụng trong các ứng dụng điều hoà thời gian. Ví dụ như khi một từ mã 127 bit PN, được so sánh với chính nó, có 127 đối số bằng nhau. Với một sự dịch chỉ một vị trí, số đối số giảm xuống còn 63.
6. MÃ HOÁ CHỒNG (Convolutional Coding)
Sự cải tiến trong thực hiện lỗi cho mã hoá khối là khi phần dư được thêm vào. Đó là các bit parity được thêm vào bản tin để tăng khoảng cách giữa các từ mã. Bằng cách đó sẽ cung cấp cho sự phát hiện lỗi và hoặc sửa lỗi. Để gia tăng khả nămg sửa lỗi, phải gia tăng số phần dư thêm vào.
Sự lựa chọn cho mã hoá khối là mã hoá chồng. Trong loại mã này ta không xem các khối bit độc lập như các từ mã nữa. Thay vì một dòng thông tin các bits liên tục được hoạt động trên hình dạng của bản tin mã hoá. Nguồn này phát một chuổi của bản tin liên tục các bit 1 và 0 và dãy số truyền được phát từ dãy số nguồn này. Dãy số được phát có thể hoặc không thể dài hơn dãy số của bản tin. Kỹ thuật này không thêm các bit dư. Nó sẽ giữ lại khả năng sửa lỗi bằng cấu trúc bộ nhớ trong hệ thống.
Kỹ thuật phát dãy số truyền là lấy chồng dãy số nguồn với dãy số nhị phân cố định. Vì thế một bit truyền đặc biệt tn được phát từ sự kết hợp của các bits, sn, sn-1, sn-2,. . ., sn-k tuỳ theo biểu thức chồng.
(7.24)
Giá trị h trong biểu thức 7.24, hoặc là 1 hoặc là 0 và thêm vào một mạch cộng modulo-2. Biểu thức này có thể được thiết lập lại với một thanh ghi dịch và một mạch cộng modulo-2. Hình 7.47 trình bày cách thiết lập tổng quát của biểu thức 7.24. Các công tắc trong hình đóng nếu giá trị h trong biểu thức 7.24 là 1 và mở nếu giá trị h là 0.
outputinputShift registerh0hnTrong ứng dụng của mã hoá chồng ta thường truyền nhiều hơn một bit cho mỗi ngõ vào 1 bit. Trong hình 7.47 ta có thể dịch ở một bit ngõ vào đặt các công tắc tương ứng với tập giá trị của h và phát bit ngõ ra đầu tiên. Trước khi cho vào một
Hình 7.47 Phát mã PN.
bit ngõ vào khác ta reset các công tắc tương ứng với tập giá trị thứ hai của h và truyền một bit thứ hai. Nếu hai bit ngõ vào được truyền cho một bit ngõ vào, mã đó được gọi là mã chồng với tỉ lệ ½ (rate ½ convolutional code). Trong khi truyền mã chồng với tỉ lệ tỉ lệ ½, ta thường chọn một bit trong mỗi cặp truyền được xác định để chỉ ra dãy số thông tin. Đây là một mã hệ thống.
Ví dụ 7.12: Hình 7.48 trình bày một bộ phát cho mã chồng tỉ lệ ½. Ta đưa ra hai qui ước của việc vẽ thanh ghi dịch. Hình 7.48 a và 7.48 b trình bày hệ thống gống nhau. Dãy số ngõ vào cũng được chỉ ra, bit ngõ vào đầu tiên cũng được chỉ ra ở bên trái và bit ngõ vào cuối cùng (gần nhất ) ở bên phải. Hãy tìm dãy số ngõ ra.
Giải:
Ta cho hệ thống được thêm vào với một chuổi các số zero phù hợp đến việc nhận bit đầu tiên của dãy số ngõ vào và bit cuối cùng là một chuổi số zero., ngõ ra sẽ là:
1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 0. . .
Ngõ ra của giải mã chồng phụ thuộc vào bit ngõ vào hiện tại và các bit ngõ vào trước đó. Trong ví dụ 7.12 ta cần biết ngõ vào hiện tại và hai ngõ vào trước đó để tìm ngõ ra.
Một cách hữu dụng đặc biệt của việc trình bày mã chồng là một sơ đồ trạng thái. Trạng thái của hệ thống được định nghĩa bằng hai ngõ vào gần nhất.
Vì thế hệ thống có thể là một trong 4 trạng thái tuỳ thuộc vào hai ngõ vào là 00, 01, 10, 11. Khi hệ thống ở trong một trạng thái đặc biệt và nhận một bit ngõ vào hai việc này có thể xảy ra tuỳ thuộc vào bit ngõ vào là 1 hoặc 0. Khi ngõ vào tiếp theo được nhập vào hệ thống,, hệ thống sẽ tạo ra một sản phẩm ở ngõ ra và cũng di chuyển đến một trạng thái mới.
Stage 3Stage 2Stage 1++1101001Data in111011010110110(a)Ta có thể xem lại hệ thống phát của hình 7.48 và phát triển tành sơ đồ trạng thái. Hai ngõ vào trước đó tập trung vào các bước 1 và 2 của thanh ghi dịch. Ngõ vào tiếp theo dịch mọi thứ sang bên trái một ô và tạo ra sản phẩm ở ngõ ra. Trạng thái mới được chỉ ra bởi các nội dung mới của trạng thái 1 và 2.
(b)++Data inHình 7.48 Bộ phát mã hoá chồng cho ví dụ 7.12.
Trong tình trạng này ta phát triển sơ đồ trạng thái của hình 7.49. Trong trạng thái a cả bước 1 và 2 đều chứa chứa giá trị 0 trong khi ở trạng thái d đều chứa giá trị 1. Trạng thái b xảy ra khi bước 1 chứa một giá trị 1 và bước 2 chứa giá trị 0 còn bước c ở vị trí của bước b. Có hai đường rời khỏi mỗi trạng thái nó thể hiện các đường xảy ra bởi hệ thống khi ngõ vào hiện tại hoặc là 0 hoặc là 1. Kết quả ở ngõ ra (là hai bit khi tỉ lệ là ½) được chỉ ra trong ngoặc đơn trên mỗi đường trực tiếp.
Ví dụ 7.12 Có thể giải bằng bằng cách kiểm tra sử đụng sơ đồ trạng thái. Cho mỗi ngõ vào được chỉ ra các trạng thái kết quả 1101001 (giả sử ta bắt đầu ở trạng thái a) là:
b d c b c a b c a a a a a . . .
***SORRY, THIS MEDIA TYPE IS NOT SUPPORTED.***
Ngõ ra được đọc bằng cách kiểm tra từ sơ đồ và hoàn toàn phù hợp với lời giải của ví dụ 7.12.
Hình 7.49 Lược đồ trạng thái của bộ phát cho hình 7.48.
Thách thức thật sự của mã hoá chồng là việc giải mã ở hệ thống thu. Ta có thể thiết lập trạng thái yêu cầu giải mã trong các số hạng của sơ đồ trạng thái mà kết quả trong một từ mã gần nhất nhận được. Số đường dẫn có thể gia tăng với số bit nhận được. Chẳng hạn như với hai bit nhận được sẽ có hai đường dẫn qua lược đồ (giả sử ta bắt đầu ở trạng thái cuối cùng). Với 4 bit nhận được sẽ có 22 hoặc 4 đường. Với 6 bit nhận được sẽ có 23 hoặc 8 đường. Điều này sẽ xuất hiện ở một tiến trình kết thúc cho chiều dài các dòng bit và thực sự nó không phải là thuật toán Vertibi. Thuật toán này rút ngắn số đường cần thiết được dùng cho sự giải mã. Nó tạo ra vị trí để xây dựng các bộ giải mã đơn giản.