Thứ Bảy, 24 tháng 6, 2017

[CAN2.0][Controller Area Network][Bài 9] Quy định về thời gian bit - Bit Timing

1. Tốc độ bit danh định (Nominal Bit Rate)

Tốc độ bit danh định (fn) là số bit được truyền trong một giây (bps - bit per second) bằng bộ truyền lý tưởng và không có sự tái đồng bộ xảy ra. Sự tái đồng bộ cho phép hiệu chỉnh lại ví trí lấy mẫu bit khi xuất hiện sự lệch bit trên đường truyền.

Tốc độ bit danh định có thể hiểu là tốc độ bit cao nhất mà đường truyền có thể đạt được trên lý thuyết.

2. Thời gian bit danh định (Nominal Bit Time)

Thời gian bit danh định (Nominal Bit Time) được định nghĩa như sau:

Thời gian bit danh định (Tn) = 1/(Tốc độ bit danh định - fn)

Thời gian bit danh định được chia thành 4 đoạn riêng biệt (4 khoảng thời gian) không chồng lấn lên nhau là
  • Đoạn đồng bộ (Synchronization Segment) ký hiệu là Sync_seg
  • Đoạn lan truyền (Propagation Time Segment) ký hiệu là Prop_seg
  • Đoạn đệm pha thứ nhất (Phase Buffer Segment 1) ký hiệu là Phase_seg1
  • Đoạn đệm pha thứ hai (Phase Buffer Segment 2) ký hiệu là Phase_seg2.
Hình 1. Các phân đoạn thời gian của 1 bit

Sync_seg: Đoạn này dành cho việc đồng bộ giữa các Node trong 1 bus CAN. Một cạnh bit xuất hiện trên bus sẽ được mong chờ nằm trong đoạn này. Một Node luôn giám sát và tính toán thời gian bit. Trong khi truyền dữ liệu, bất cứ khi nào xuất hiện sự chuyển mức logic (cạnh bit) thì Node phải đồng bộ lại hoặc hiệu chỉnh cách tính toán thời gian bit để việc lấy mẫu bit được chính xác. Khi một cạnh bit xuất hiện mà Node gimas sát thấy nằm đúng trong đoạn Sync_seq thì đường truyền đang ổn định và các Node đang có sự đồng bộ tốt.

Prop_seg: Đoạn này được dùng để bù cho các thời gian trễ vật lý trong mạng. Nó gấp hai lần khoảng thời gian lan truyền tín hiệu trên bus, độ trễ mạch so sánh (comparator) ngõ vào và độ trễ mạch lái (driver) ngõ ra.

Phase_seq1 và Phase_seq2: Hai đoạn này dành cho việc bù lỗi pha của cạnh bit. Thời gian các đoạn này có thể được kéo dài hoặc rút ngắn khi thực thi tái đồng bộ.

Vị trí lấy mẫu (Sample point) là thời điểm tại đó mức trạng thái của bus CAN được đọc để xác định giá trị logic của bit. Ví trí lấy mẫu là ở cuối đoạn Phase_seg1. Trong quá trình truyền nhận dữ liệu, đoạn Phase_seg1 và Phase_seg2 được điều chỉnh để tái đồng bộ nhưng vị trí lấy mẫu này luôn ở cuối Phase_seg1.

Thời gian xử lý thông tin Tifp (Information processing time) là thời gian dự trữ tính từ vị trí lấy mẫu dành cho việc tính toán mức bit tiếp theo trong chuỗi. Độ dài của nó được xác định tùy vào phần cứng (chip) CAN controller.

3. Tính toán thời gian bit

Đơn vị thời gian sử dụng trong chuẩn CAN là TQ (Time Quantum) được tính từ chu kỳ bộ dao động Tos (chu kỳ xung clock) của CAN controller, datasheet hoặc user manual của CAN controller sẽ quy định rõ nguồn clock này. Bộ dao động ở đây có thể là thạch anh hay bộ tạo dao động bên trong chip cấp cho CAN controller.

TQ là đơn vị thời gian cố định trong suốt quá trình hoạt động của Node nhưng có thể lập trình được. Một TQ sẽ bằng m lần TQmin. TQmin (MINIMUM TIME QUANTUM) là đơn vị thời gian tối thiểu được tính từ Tos, n không có giới hạn cụ thể.

TQ = m x TQmin = m x n x Tos

Trong đó m là giá trị nguyên trong khoảng từ 1 đến 32.
Hình 2. Thời gian của 1 bit với n = 4, m = 3

Thời gian từng đoạn chia của 1 bit được quy định cụ thể như sau:
  • Sync_seg:  1 TQ
  • Prop_seg:  từ 1 đến 8 TQ
  • Phase_seg1: từ 1 đến 8 TQ
  • Phase_seg2 = max(Phase_seg1, Tifp) .Nghĩa là, Phase_seg1 và Tifp cái nào lớn hơn thì sử dụng giá trị đó cho Phase_seg2.
    • Trong đó, thời gian xử lý thông tin Tifp nhỏ hơn hoặc bằng 2 TQ
  • Tổng thời gian một bit ít nhất là 8 TQ và tối đa là 25 TQ
Thông thường việc lập trình thời gian bit là cần thiết để tất cả các Node trong mạng có tốc độ bit và thời gian bit giống nhau. Giống nhau ở đây nghĩ là có sự sai lệch ít nhất. Thường các Node này sẽ đi kèm với một vi xử lý hoặc vi điều khiển. Tuy nhiên, CAN có thể được thiết kế mà không cần cấu hình thời gian bit, nghĩa là nó có thể tự điều chỉnh đến tốc độ bit thích hợp chỉ cần cung cấp nguồn xung clock phù hợp. Đối với Node loại này thì vị trí điểm lấy mẫu phải tương thích cho tất cả các Node và thời gian bit theo định nghĩa sau đây:
  • Sync_seg: 1 TQ
  • Prop_seg: 1 TQ
  • Phase_seg1: 4 TQ
  • Phase_seg2: 4 TQ
Hình 3. Thời gian bit cho các linh kiện CAN không lập trình được thời gian bit

4. Độ sai số cho phép của bộ dao động

Độ sai số cho phép tối đa của bộ dao động là 1.58% và sử dụng một bộ cộng hưởng gốm (ceramic resonator) ở tốc độ bus lên đến 125 Kbits/s như nguyên tắc cơ bản. Tham khảo bài báo sau để có thông tin chính xác hơn:

Dais, S; Chapman, M;
“Impact of Bit Representation on Transport Capacity and Clock
Accuracy in Serial Data Streams”,
SAE Technical Paper Series 890532, Multiplexing in Automobiles SP-773 March 1989

Một Node muốn sử dụng được đầy đủ các tốc độ bus của giao thức CAN (full speed) thì cần sử dụng bộ dao động thạch anh. Chip CAN yêu cầu cao nhất về độ chính xác của bộ tạo dao động. Việc xác định độ chính xác của các bộ tạo dao động sử dụng trong các Node của mạng CAN phải được thực hiện.

5. Tính toán thời gian trễ lan truyền và Prop_seg

Như đã trình bày ở trên, đoạn Prop_seg gấp hai lần khoảng thời gian lan truyền tín hiệu trên bus, độ trễ mạch so sánh (comparator) ngõ vào và độ trễ mạch lái (driver) ngõ ra. Độ trễ mạch lái ngõ ra và độ trễ mạch so sánh ngõ vào thuộc chip CAN transceiver.
Hình 4. Giải thích độ trễ giữa 2 Node trong bus CAN

Theo hình minh họa trên, các độ trễ được tính như sau:

  • Độ trễ từ Node A đến Node B:
    • Độ trễ mạch lái ngõ ra tại Node A: Txa
    • Độ trễ trên bus: Tbus
    • Độ trễ mạch so sánh ngõ vào tại Node B: Trb
    • Độ trễ lan truyền từ A đến B:
      • Tprop(A->B) = Txa + Tbus + Txb
  • Độ trễ từ Node B đến Node A:
    • Độ trễ mạch lái ngõ ra tại Node B: Txb
    • Độ trễ trên bus: Tbus
    • Độ trễ mạch so sánh ngõ vào tại Node A: Tra
    • Độ trễ lan truyền từ B đến A:
      • Tprop(B->A) = Txb + Tbus + Txa

Thời gian đoạn Prop_seg:
Tprop_seg = Tprop(A->B) + Tprop(B->A)

Nếu CAN transceiver ở cả 2 Node là cùng loại thì Txa = Txb và Tra = Trb. Vì vậy, thời gian lan truyền từ A đến B và từ B đến A là như nhau.
Tprop_seg = 2 x (Tx + Tbus + Tr)

Số TQ cấu hình cho Prop_seg được tính như sau:

Prop_seg = Tprop_seg/Ttq

Nếu không phải là một số nguyên thì giá trị này được làm tròn lên đến số nguyên gần nhất. Chú ý, thông số cấu hình này được tính trên trường hợp xấu nhất là 2 Node nằm cách xa nhau nhất (nằm ở hai đầu cuối) trong bus CAN.

Lịch sử cập nhật:
1) 2019.10.18 - Chỉnh sửa link hình minh họa

0 bình luận:

Đăng nhận xét