Có thể bạn quan tâm: Cách Vẽ Dao Tiện: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
TÓM TẮT
- 1 1. Giới thiệu chung về Differential Manchester
- 2 2. Nguyên tắc cơ bản của Differential Manchester
- 3 3. Chuẩn bị công cụ và môi trường vẽ
- 4 4. Các bước vẽ Differential Manchester chi tiết
- 5 5. Ví dụ thực tế: Vẽ chuỗi 1100101
- 6 6. Các lỗi thường gặp khi vẽ Differential Manchester
- 7 7. Ứng dụng thực tế của Differential Manchester
- 8 8. Mẹo nâng cao và tối ưu hoá
- 9 9. Tổng kết
1. Giới thiệu chung về Differential Manchester
Differential Manchester (DM) là một trong những phương pháp mã hoá dữ liệu trong truyền thông số, được sử dụng rộng rãi trong các hệ thống mạng Ethernet cổ điển, truyền thông công nghiệp và một số giao thức truyền dữ liệu tốc độ cao. Khác với Manchester truyền thống, Differential Manchester không dựa vào mức điện áp tĩnh để biểu thị bit 0 và bit 1, mà dựa trên sự đảo chiều của biên (transition) giữa các chu kỳ thời gian. Điều này mang lại một số ưu điểm:
- Độ ổn định cao: Vì luôn có ít nhất một transition trong mỗi khoảng thời gian đồng hồ, nên đồng bộ hoá đồng hồ (clock recovery) trở nên dễ dàng.
- Kháng nhiễu tốt: Việc dựa vào sự thay đổi hướng của transition thay vì mức điện áp tĩnh giúp giảm ảnh hưởng của nhiễu DC.
- Độ phức tạp mã hoá trung bình: So với các phương pháp như NRZ hoặc RZ, DM không yêu cầu đồng hồ riêng biệt, nhưng vẫn giữ được tính đơn giản trong việc giải mã.
Để hiểu và thực hiện việc vẽ Differential Manchester, chúng ta cần nắm vững các khái niệm cơ bản, quy tắc mã hoá, và cách biểu diễn đồ thị tín hiệu trên trục thời gian. Bài viết này sẽ hướng dẫn chi tiết từng bước, kèm theo ví dụ thực tế, công cụ hỗ trợ và một số mẹo nâng cao để bạn có thể tự tin vẽ và phân tích tín hiệu Differential Manchester.
Có thể bạn quan tâm: Cách Vẽ Dáng Người: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Nguyên tắc cơ bản của Differential Manchester
2.1. Định nghĩa transition
Trong DM, transition (điểm chuyển đổi) là một thay đổi đột ngột của mức điện áp từ mức cao (logic 1) sang mức thấp (logic 0) hoặc ngược lại. Mỗi khoảng thời gian đồng hồ (clock interval) được chia thành hai nửa chu kỳ:
- Mid-bit transition: Transition luôn xảy ra ở chính giữa mỗi bit (tại thời điểm ½ T, trong đó T là chu kỳ bit). Đây là đặc điểm bắt buộc của DM và giúp đồng bộ hoá đồng hồ.
- Boundary transition: Transition ở ranh giới giữa hai bit (tại thời điểm 0 hoặc T) được dùng để biểu thị giá trị của bit:
- Không có boundary transition → bit được mã hoá là 1.
- Có boundary transition → bit được mã hoá là 0.
2.2. Quy tắc mã hoá
| Giá trị bit | Boundary transition? | Mid-bit transition |
|---|---|---|
| 0 | Có (đảo chiều) | Luôn có |
| 1 | Không (giữ nguyên) | Luôn có |
- Boundary transition (có hay không) quyết định giá trị bit.
- Mid-bit transition luôn tồn tại, giúp đồng bộ hoá.
2.3. Đảo chiều (Differential) vs. Absolute
Tên “Differential” xuất phát từ việc quyết định bit dựa trên sự thay đổi (đảo chiều) của boundary transition so với transition trước đó, thay vì dựa trên mức điện áp tĩnh. Nhờ vậy, nếu có lỗi polarity (đảo ngược mức điện áp toàn bộ), dữ liệu vẫn có thể được giải mã đúng.
3. Chuẩn bị công cụ và môi trường vẽ
3.1. Giấy và bút
- Giấy milimetrô (grid paper) hoặc giấy trắng với thước kẻ.
- Bút bi màu đen cho trục thời gian, bút màu xanh cho mức cao và bút màu đỏ cho mức thấp (tùy chọn).
3.2. Phần mềm hỗ trợ
- Microsoft Excel / Google Sheets: Dùng để tạo bảng thời gian và vẽ đồ thị line.
- MATLAB / Octave: Dùng hàm
stairshoặcplotđể mô phỏng tín hiệu. - Python (Matplotlib): Thư viện
matplotlib.pyplotcho phép vẽ tín hiệu dạng step. - Logic Analyzer / Oscilloscope Simulator: Các công cụ online như Falstad Signal Generator hoặc Logic.ly để mô phỏng và xem kết quả.
3.3. Định dạng dữ liệu
- Chuỗi bit: VD:
1100101. - Tốc độ truyền (baud rate): Đặt giá trị T (chu kỳ bit) tùy theo tốc độ mong muốn, ví dụ 1 µs cho 1 Mbps.
- Thời gian mẫu (sample time): Để vẽ chi tiết, chia mỗi chu kỳ thành ít nhất 4–8 mẫu.
4. Các bước vẽ Differential Manchester chi tiết
Bước 1: Xác định chu kỳ bit và chia nửa chu kỳ
Giả sử tốc độ truyền là 1 Mbps → T = 1 µs. Mỗi bit sẽ có:
- Nửa đầu: 0 → 0.5 µs
- Nửa sau: 0.5 → 1 µs
Bước 2: Xác định mức điện áp ban đầu

Có thể bạn quan tâm: Cách Vẽ Data Model: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
Ta cần chọn mức điện áp ban đầu (high hoặc low) cho bit đầu tiên. Thông thường, chúng ta bắt đầu ở mức high (logic 1). Tuy nhiên, vì Differential Manchester dựa vào sự đổi chiều, mức ban đầu không ảnh hưởng đến giá trị dữ liệu, chỉ ảnh hưởng tới hình dạng đồ thị.
Bước 3: Lập bảng thời gian
Ta tạo một bảng gồm các cột:
| Bit index | Bit value | Boundary transition? | Transition tại 0 | Transition tại 0.5T | Mức điện áp trước bit |
|---|---|---|---|---|---|
Ví dụ với chuỗi 1100101:
| Bit | Value | Boundary? | Transition @0 | Transition @0.5T | Prev Level |
|---|---|---|---|---|---|
| 1 | 1 | No | — | ✔ | High |
| 2 | 1 | No | — | ✔ | Low |
| 3 | 0 | Yes | ✔ | ✔ | High |
| 4 | 0 | Yes | ✔ | ✔ | Low |
| 5 | 1 | No | — | ✔ | High |
| 6 | 0 | Yes | ✔ | ✔ | Low |
| 7 | 1 | No | — | ✔ | High |
Lưu ý: Mức điện áp trước mỗi bit được lấy từ kết quả của bit trước (có hay không boundary transition sẽ gây đổi chiều).
Bước 4: Vẽ trục thời gian
- Trục hoành (X) là thời gian, chia thành các ô 0.5T.
- Trục tung (Y) là mức điện áp: High (+V) và Low (0V).
Bước 5: Vẽ các transition
5.1. Mid-bit transition (luôn có)
- Tại mỗi thời điểm 0.5T, vẽ một đường thẳng dọc (vertical) từ mức hiện tại sang mức ngược lại.
- Sau transition này, mức điện áp sẽ đổi (High ↔ Low).
5.2. Boundary transition (tùy thuộc vào bit)
- Nếu bit = 0 → vẽ một transition tại thời điểm 0 (giữa hai bit): một đường thẳng dọc từ mức hiện tại sang mức ngược lại.
- Nếu bit = 1 → không vẽ transition tại thời điểm 0; mức điện áp giữ nguyên qua ranh giới.
5.3. Đảm bảo tính liên tục
Sau khi thực hiện transition tại 0 (nếu có) và 0.5T, nối các đoạn thẳng ngang (horizontal) giữa chúng để tạo dạng step.
Bước 6: Kiểm tra lại
- Mỗi bit phải có đúng một mid-bit transition.
- Số boundary transition phải tương ứng với số bit 0 trong chuỗi.
- Độ dài mỗi đoạn ngang phải bằng 0.5T.
Bước 7: Hoàn thiện và chú thích
- Ghi chú thời gian ở các vị trí quan trọng (0, 0.5T, 1T, …).
- Đánh dấu các mức điện áp (High, Low) trên trục Y.
- Đánh số các bit dưới trục thời gian để dễ tham chiếu.
5. Ví dụ thực tế: Vẽ chuỗi 1100101
5.1. Chuẩn bị
- T = 1 µs → mỗi nửa chu kỳ = 0.5 µs.
- Bắt đầu mức cao (High).
5.2. Bảng thời gian (chi tiết)
| Bit | Value | Boundary? | Level trước | Transition @0 | Level sau 0 | Transition @0.5T | Level sau 0.5T |
|---|---|---|---|---|---|---|---|
| 1 | 1 | No | High | — | High | ✔ (High→Low) | Low |
| 2 | 1 | No | Low | — | Low | ✔ (Low→High) | High |
| 3 | 0 | Yes | High | ✔ (High→Low) | Low | ✔ (Low→High) | High |
| 4 | 0 | Yes | High | ✔ (High→Low) | Low | ✔ (Low→High) | High |
| 5 | 1 | No | High | — | High | ✔ (High→Low) | Low |
| 6 | 0 | Yes | Low | ✔ (Low→High) | High | ✔ (High→Low) | Low |
| 7 | 1 | No | Low | — | Low | ✔ (Low→High) | High |
5.3. Vẽ đồ thị (bằng tay)
- Bit 1 (1):
- Không boundary → giữ High.
- Mid-bit transition tại 0.5 µs: High → Low.
- Bit 2 (1):
- Không boundary → giữ Low.
- Mid-bit transition tại 1.0 µs: Low → High.
- Bit 3 (0):
- Boundary tại 1.5 µs: High → Low.
- Mid-bit transition tại 2.0 µs: Low → High.
- Bit 4 (0):
- Boundary tại 2.5 µs: High → Low.
- Mid-bit transition tại 3.0 µs: Low → High.
- Bit 5 (1):
- Không boundary → giữ High.
- Mid-bit transition tại 3.5 µs: High → Low.
- Bit 6 (0):
- Boundary tại 4.0 µs: Low → High.
- Mid-bit transition tại 4.5 µs: High → Low.
- Bit 7 (1):
- Không boundary → giữ Low.
- Mid-bit transition tại 5.0 µs: Low → High.
Kết quả là một chuỗi các đoạn step như hình dưới (được mô tả bằng ký hiệu):
Time (µs) : 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
Level (V) : ────┐ └───┐ └───┐ └───┐ └───┐ └───┐ └─── │ │ │ │ │ │ │ │ │ │ │ │
5.4. Vẽ bằng Python (Matplotlib)
import numpy as np
import matplotlib.pyplot as plt bits = 1,1,0,0,1,0,1
T = 1.0 # µs
half = T/2 # Tạo thời gian mẫu (4 mẫu mỗi nửa chu kỳ)
t = np.arange(0, len(bits)T, T/8)
signal = np.zeros_like(t) prev_level = 1 # bắt đầu ở High (1) idx = 0
for i, b in enumerate(bits): # boundary transition nếu b == 0 if b == 0: prev_level ^= 1 # đảo mức signalidx = prev_level idx += 1 # giữ mức trong nửa đầu signalidx:idx+4 = prev_level idx += 4 # mid-bit transition prev_level ^= 1 signalidx = prev_level # nửa sau signalidx:idx+4 = prev_level idx += 4 plt.step(t, signal, where='post')
plt.ylim(-0.5, 1.5)
plt.yticks(0,1, 'Low','High')
plt.xlabel('Time (µs)')
plt.title('Differential Manchester Encoding of 1100101')
plt.grid(True)
plt.show()
Kết quả sẽ cho một đồ thị step hoàn chỉnh, dễ dàng kiểm chứng với quy tắc trên.
6. Các lỗi thường gặp khi vẽ Differential Manchester
| Lỗi | Nguyên nhân | Cách khắc phục |
|---|---|---|
| Thiếu mid-bit transition | Quên vẽ ở 0.5T | Kiểm tra lại bảng “mid-bit transition luôn có”. |
| Vẽ boundary transition cho bit 1 | Nhầm lẫn quy tắc | Nhớ: bit 1 = không có boundary. |
| Độ dài đoạn ngang không đồng đều | Không chia thời gian thành 2 nửa chính xác | Sử dụng thước kẻ hoặc phần mềm để chia thời gian đều. |
| Nhầm mức điện áp ban đầu | Bắt đầu ở Low khi muốn High | Không quan trọng về giá trị dữ liệu, nhưng để đồng nhất, chọn mức ban đầu cố định. |
| Đánh dấu thời gian sai | Thao tác nhanh, quên ghi nhãn | Ghi chú thời gian ngay sau mỗi bit, hoặc sử dụng phần mềm tự động. |
7. Ứng dụng thực tế của Differential Manchester
7.1. Ethernet 10BASE-T

Có thể bạn quan tâm: Cách Vẽ Data Flow: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
Ethernet 10BASE-T (10 Mbps) sử dụng Manchester, không phải Differential Manchester, nhưng nguyên tắc đồng bộ hoá qua transition vẫn tương đồng. Khi chuyển sang các chuẩn công nghiệp (ví dụ: Profibus), Differential Manchester được dùng để tăng độ bền tín hiệu trong môi trường nhiễu.
7.2. Giao thức công nghiệp
- CAN bus (Controller Area Network) sử dụng một dạng tương tự (NRZ với bit stuffing) nhưng cũng có khái niệm “đảo chiều” để phát hiện lỗi.
- RS-485 có thể được cấu hình để truyền dữ liệu bằng Differential Manchester, giúp giảm tiêu thụ dây dẫn và tăng khoảng cách truyền.
7.3. Hệ thống truyền dữ liệu không dây
Trong một số hệ thống RF (radio frequency) low-power, Differential Manchester được dùng để mã hoá dữ liệu vì khả năng đồng bộ hoá mà không cần đồng hồ riêng, giảm độ phức tạp thiết kế.
8. Mẹo nâng cao và tối ưu hoá
8.1. Tối ưu độ rộng băng thông
Mặc dù DM yêu cầu hai transition cho mỗi bit, nên tốc độ hiệu dụng (throughput) chỉ bằng nửa tốc độ đồng hồ. Để tối ưu:
- Chọn tốc độ đồng hồ cao hơn so với yêu cầu dữ liệu.
- Sử dụng bộ mã hoá/giải mã (codec) tích hợp trong FPGA hoặc CPLD để giảm độ trễ.
8.2. Kiểm tra lỗi bằng CRC
Sau khi mã hoá DM, thêm CRC (Cyclic Redundancy Check) vào cuối khung dữ liệu để phát hiện lỗi truyền. CRC không ảnh hưởng tới cách vẽ DM, nhưng giúp xác thực tính toàn vẹn.
8.3. Sử dụng công cụ tự động vẽ
- Logic Analyzer: Nhập chuỗi bit, chọn “Differential Manchester” và công cụ sẽ tự động vẽ.
- MATLAB Simulink: Sử dụng block “Manchester Encoder” và chuyển sang “Differential” bằng cách đảo chiều.
8.4. Đối phó với jitter
Jitter (độ lệch thời gian) có thể làm sai lệch vị trí của transition. Để giảm ảnh hưởng:
- Lọc tín hiệu bằng low‑pass filter trước khi giải mã.
- Sử dụng bộ đồng bộ PLL (Phase‑Locked Loop) để tái tạo đồng hồ từ các transition.
9. Tổng kết
Việc vẽ Differential Manchester không chỉ là một kỹ thuật đồ họa đơn thuần mà còn là cách hiểu sâu sắc về cách dữ liệu được mã hoá và truyền tải trong các hệ thống truyền thông số. Từ các nguyên tắc cơ bản về transition, qua các bước chuẩn bị công cụ, lập bảng thời gian, đến việc thực hiện vẽ bằng tay hoặc bằng phần mềm, mỗi bước đều đóng vai trò quan trọng để đảm bảo độ chính xác và tính khả thi trong thực tiễn.
Bằng cách nắm vững các quy tắc:
- Mid-bit transition luôn có.
- Boundary transition có khi bit = 0.
- Đảo chiều (differential) quyết định giá trị bit.
Bạn có thể tự tin tạo ra các biểu đồ Differential Manchester cho bất kỳ chuỗi bit nào, đồng thời áp dụng kiến thức này vào thiết kế hệ thống truyền thông, kiểm tra tín hiệu, hoặc giảng dạy trong môi trường học thuật.
Hy vọng bài viết đã cung cấp cho bạn một hướng dẫn toàn diện, chi tiết và thực tiễn. Hãy thực hành với các ví dụ thực tế, sử dụng phần mềm mô phỏng, và dần dần nâng cao kỹ năng vẽ và phân tích Differential Manchester để trở thành chuyên gia trong lĩnh vực truyền thông số!
