THIẾT KẾ MỘT SỐ BỘ MÃ SỬ DỤNG VHDL ỨNG DỤNG TRONG VIỄN THÔNG
3.2.2 Cơ sở lý thuyết
Các mã không về không (NRZ – None Return to Zero) và Manchester được sử dụng trong các hệ thống số để biểu diễn các giá trị nhị phân “1” và “0”. Hình 3.3 định nghĩa mã NRZ và Manchester biểu diễn các giá trị nhị phân. NRZ là loại mã thường được sử dụng nhiều nhất. Trong NRZ, logic “1” được biểu diễn là mức cao qua một phần tử dữ liệu và logic “0” được biểu diễn là mức thấp. Mã Manchester biểu diễn các giá trị nhị phân bằng một chuyển đổi nhiều hơn một mức. Chuyển đổi xuất hiện tại giữa bit, với một chuyển đổi từ thấp lên cao sử dụng để biểu diễn logic “0” và từ cao xuống thấp để biểu diễn logic “1”. Tuỳ thuộc vào kiểu dữ liệu, chúng có thể sẽ là một chuyển đổi tại biên phần tử (bắt đầu/kết thúc).
Một kiểu dữ liệu có liên tiếp các số “1” hoặc “0” sẽ tạo ra một chuyển đổi trên biên phần tử. Khi kiểu dữ liệu có chuyển đổi giữa “1” và “0”, không xảy ra chuyển đổi trên biên phần tử. Trong NRZ, chỉ một mức/phần tử dữ liệu được yêu cầu; trong khi đó ở Manchester, hai mức được yêu cầu. Thành phần một chiều có trong mã NRZ khi các bit “1” hoặc các bit “0” liên tiếp được truyền đi. Khi kiểu dữ liệu có chuyển đổi giữa các bit “1” và các bit “0”, đáp ứng tần số bằng ½ tốc độ xung đồng hồ. Đáp ứng tần số cho mã NRZ trải dài từ thành phần một chiều đến xung đồng hồ/2. Đáp ứng tần số của mã Manchester trải dài từ xung đồng hồ/2, xuất hiện khi kiểu dữ liệu biểu diễn các bit “1” và các bit “0”, tới xung đồng hồ, sẽ xuất hiện khi
kiểu dữ liệu là liên tiếp các bit “1” hoặc các bit “0”. Đáp ứng tần số của Manchester là một octave cho đến 5-10 octave đối với NRZ.
Hình 3.3 Các giá trị nhị phân cho mã NRZ và Manchester
Ví dụ quá trình mã hoá Manchester thể hiện cả các ký hiệu quy ước:
Hình 3.4 Quá trình mã hoá Manchester
Quá trình tách dữ liệu ban đầu từ bit mã hoá thu được:
Dữ liệu gốc Xung đồng hồ XOR Giá trị Manchester 0 0 0
0 1 1 1 0 1 1 1 0
+ Mỗi bit được truyền trong một thời gian cố định (hay chu kỳ).
+ Số “0” được biểu diễn bằng một chuyển đổi từ thấp lên cao, số “1” được biểu diễn bằng một chuyển đổi từ cao xuống thấp (theo quy ước của G.E. Thomas’ - trong quy ước của IEEE 802.3, thực hiện đảo chiều là đúng).
+ Các chuyển đổi mà có nghĩa là “0” hoặc “1” xuất hiện tại điểm giữa chu kỳ.
+ Các chuyển đổi tại điểm bắt đầu của một chu kỳ là thời gian gián tiếp và không gồm dữ liệu có nghĩa.
Mã Manchester thường có một chuyển đổi tại điểm giữa của mỗi chu kỳ bit và sẽ (phụ thuộc thông tin được truyền) có một chuyển đổi tại điểm bắt đầu của chu kỳ sau đó. Hướng của chuyển đổi tại điểm giữa bit cho biết kiểu dữ liệu mã hoá. Các chuyển đổi tại các biên chu kỳ không mang thông tin. Chúng chỉ thực hiện đặt tín hiệu trong trạng thái sửa để cấp phát chuyển đổi giữa mỗi bit. Mặc dù quá trình này cấp phát tín hiệu tự tạo xung nhịp, nó yêu cầu dải tần gấp đôi khi so sánh với nguyên lý mã hoá NRZ.
Quá trình mã hoá Manchester là trường hợp đặc biệt của khoá dịch pha nhị phân (BPSK - Binary Phase Shift Keying), trường hợp dữ liệu điều khiển pha của một sóng vuông mang tần số tương ứng tốc độ dữ liệu.
Điều khiển dải tần được sử dụng, một bộ lọc có thể giảm băng tần xuống thấp bằng 1Hz/bit/s không có suy hao thông tin trong truyền dẫn. Trong truyền dẫn vô tuyến, tín hiệu đã mã hoá sẽ được điều chế với một sóng mang; tuy nhiên, đặc tính 1Hz/bit/s được duy trì.
Thực hiện mã hoá 11011000100 trong mã Manchester (theo quy ước G.E. Thomas). Đó là hai chuyển đổi đối lập cho quá trình biểu diễn dữ liệu.
Đầu tiên nó được đưa ra bởi G.E. Thomas vào năm 1949 và tiếp theo sau đó bởi các tác giả khác (ví dụ Tanenbaum). Nó chỉ rõ một bit “0” có các mức tín hiệu sẽ là thấp - cao (giả sử mã hoá biên độ vật lý của dữ liệu) - với một mức thấp trong nửa đầu của chu kỳ bit và một mức cao trong nửa chu kỳ còn lại. Với bit “1” có các mức tín hiệu sẽ là cao - thấp. Kiểu
chuyển đổi thứ hai được đưa ra bởi một số tác giả (ví dụ Stallings) giống như IEEE 802.4 (bus thẻ bài) và các phiên bản tốc độ thấp hơn của chuẩn IEEE 802.3 (Ethernet). Trạng thái logic “0” được biểu diễn bằng một tín hiệu cao - thấp và trạng thái logic “1” được biểu diễn bằng một tín hiệu thấp - cao.
Hai ưu điểm của NRZ đó là không yêu cầu quá trình mã hoá/giải mã và nó tạo ra hiệu quả sử dụng dải thông kênh truyền tin. Manchester yêu cầu tốc độ điều chế gấp đôi NRZ để truyền lượng thông tin như nhau. Vấn đề này có thể rất quan trọng trong các kênh thông tin giới hạn băng tần. Mặt khác, việc thu NRZ yêu cầu đáp ứng thành phần một chiều chính xác. Vì rằng, mã Manchester không có thành phần một chiều, nó có thể ghép biến áp.
Chuyển đổi giữa bit trong mã Manchester cung cấp một đặc tính tự tạo xung nhịp của mã. Vấn đề này có thể được sử dụng để nâng cao quá trình đồng bộ trên các mã không tự tạo xung nhịp như NRZ. Chuyển đổi cũng cấp phát bổ sung quá trình phát hiện lỗi được thực hiện với mạch điện tương đối nhỏ.
Mã Manchester cần băng tần gấp đôi cho các thông tin cận đồng bộ và phổ tín hiệu được mở rộng. Rất nhiều hệ thống truyền thông tốc độ cao ngày nay sử dụng các nguyên lý mã hoá với hiệu quả mã hoá tốt hơn.
Một điểm chú ý là vấn đề đồng bộ của máy thu với máy phát. Nó sẽ xác định một nửa chu kỳ bit lỗi được đảo ngược ở đầu ra máy thu, nhưng với dữ liệu thông thường đó là đầu ra cho các vi phạm. Máy thu có thể phát hiện các vi phạm và sử dụng thông tin này để đồng bộ chính xác.
Trong truyền thông nối tiếp, các xung đồng hồ được sử dụng để xác định kích thước/biên của một phần tử dữ liệu. Với các mã không tự tạo xung nhịp, dữ liệu và xung đồng hồ riêng biệt, vì thế có thể xảy ra sai lệch giữa xung đồng hồ và dữ liệu. Trong các ứng dụng của phương tiện từ tính,
độ lệch sẽ làm xuất hiện các thay đổi trong dải tốc độ điều khiển. Trong truyền thông nối tiếp, sai lệch có được từ sự sai khác do trễ truyền dẫn giữa các đường dữ liệu và xung đồng hồ trên các đường liên kết nối tiếp với khoảng cách lớn.
Mạch thu phát dị bộ vạn năng (UART - Universal Asynchronous Receiver Transmitter) là một mạch điện truyền thông nối tiếp sử dụng mã NRZ. Để lấy mẫu tại giữa bit của phần tử dữ liệu, máy thu trong các UART sử dụng một xung đồng hồ nội bằng 16 lần tốc độ dữ liệu thu được. Khuôn dạng dữ liệu của UART gồm một trạng thái rỗi và một khuôn dạng ký tự gồm một bit start, 5 đến 8 bit dữ liệu, chẵn lẻ tuỳ chọn và một hoặc nhiều hơn các bit stop. Sau khi phát hiện sườn lên của bit start, máy thu thừa nhận bit start bằng cách đếm xung đồng hồ 16x cho đến 8 và xác minh nó là mức thấp tĩnh. Tiếp sau các mẫu trung tâm đạt được bằng cách đếm xung đồng hồ 16x cho đến 16.
Trong mạch giải mã Manchester, lấy mẫu trung tâm xuất hiện tại các điểm ¼ và ¾ của phần tử dữ liệu, từ đó các chuyển đổi xuất hiện thường xuyên tại giữa bit và thỉnh thoảng trên biên của phần tử. Bổ sung vào quá trình lấy mẫu trung tâm, máy thu trong mạch giải mã Manchester có thêm chức năng khôi phục xung đồng hồ. Từ đó mã Manchester có các chuyển đổi tại một phần tử dữ liệu nhỏ nhất, máy thu được biết để tham khảo mà nó có thể đồng bộ lại lần nữa tại mỗi bit.
Để thực hiện đồng bộ với luồng dữ liệu đến nối tiếp, mạch điện máy thu trong mạch giải mã Manchester có thể sử dụng một vòng khoá pha số hoặc một giải thuật đếm. Các vòng khoá pha số chủ yếu được sử dụng trong các mạng với cấu trúc liên kết vòng (cấu hình vòng); trong khi các giải thuật đếm lại thường dùng trong các liên kết điểm đến điểm. Một ví dụ giải thuật đếm sử dụng xung đồng hồ 16x:
vào, thực hiện đếm xung đồng hồ 16x cho đến 4 và lấy mẫu. Bộ đếm về 4 được hiểu như kết thúc bộ đếm. Tại thời điểm này, kết thúc bộ đếm là ¼ qua phần tử dữ liệu.
2. Khởi động lại bộ đếm về 0. Bắt đầu thực hiện đếm xung đồng hồ 16x với kết thúc bộ đếm là 8 và lấy mẫu. Nếu đây là một chuyển đổi trên dữ liệu Manchester, khởi động lại bộ đếm và trở lại bước (1).
Khi thực hiện khởi tạo đúng dữ liệu Manchester, giải thuật này làm cho bộ đếm sử dụng kết thúc bộ đếm bằng 4 khi các số “1” hoặc “0” liên tiếp được truyền đi và kết thúc bộ đếm bằng 8 khi số “1” và “0” luân phiên.
Các UART thực hiện đồng bộ trên ký tự cơ sở, trong khi các mã Manchester thực hiện đồng bộ trên bit cơ sở. Trong một UART, rung pha định thời cho mỗi bit trong ký tự được tích luỹ cho đến khi kết thúc ký tự. Các mã Manchester thực hiện đồng bộ lại tại mỗi bit, hoặc tại bit nhỏ nhất.
Thông thường nhất sử dụng các nguyên lý phát hiện lỗi trong truyền thông nối tiếp là các mã chẵn lẻ và mã kiểm tra độ dư chu trình. Khi mã Manchester được sử dụng, một số lượng nhỏ các mạch thêm vào có thể phát hiện các lỗi bit. Hình 3.5 minh hoạ các chuyển đổi giữa bit của mã Manchester có phát hiện lỗi. Hình 3.5 biểu diễn 4 hàng dữ liệu truyền, với hàng thứ nhất biểu diễn giá trị Manchester cho logic “1”. Ba hàng dưới thể hiện dạng sóng của quá trình gây dạng lỗi của hàng thứ nhất, và gây ra sai số truyền dữ liệu. Khi dữ liệu Manchester được dịch nối tiếp thành một thanh ghi dịch trong mạch giải mã, một cổng OR có thể giám sát cho các giá trị sai khác trên mỗi phần của phần tử dữ liệu (khi đó là một chuyển đổi giữa bit). Với quá trình phát hiện lỗi này, một lỗi chỉ không được phát hiện nếu mỗi nửa của phần tử dữ liệu chuyển đổi từ trạng thái ban đầu.
Hình 3.5 Các chuyển đổi giữa bit mã Manchester 3.2.3 Cấu trúc
Hình 3.6 Cấu trúc mạch mã hoá Manchester
Hình 3.7 Cấu trúc mạch giải mã Manchester 3.2.4 Chức năng và nguyên lý hoạt động
Các chức năng mã hoá của mã Manchester bao gồm một giao diện vi xử lí, chuyển đổi nối tiếp thành song song, tạo khung và mã hoá NRZ thành Manchester. Mạch điện này có thể hoạt động rất nhanh vì rằng nó không yêu cầu một xung đồng hồ tần số cao. Định dạng khung được sử dụng cũng giống như trong UART.
Mạch giải mã Manchester giới hạn tần số hoạt động lớn nhất của mã Manchester, vì rằng nó sử dụng một xung đồng hồ tần số cao. Mạch điện phần thu sẽ phức tạp hơn, bởi vì khôi phục xung đồng hồ và lấy mẫu trung tâm được thực hiện. Thêm nữa các chức năng phần thu là phát hiện khung, giải mã Manchester thành NRZ, chuyển đổi nối tiếp thành song song, và
Manchester Encoder D_in [7:0] Data_out Ready Wr Clk16x Reset Manchester Decoder D_out [7:0] Reset Clk16x Read Data_ready FSM FSM Data_in [7:0]
một giao diện vi xử lí.