Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Đăng ký
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
wafer.jpg

Tìm hiểu bộ truyền nhận và mã hóa bit trong giao thức CAN

Email In PDF.

1. Định nghĩa về bộ truyền/ bộ nhận (Transmitter/ Receiver)​

Không giống như các giao thức bus truyền nối khác (như I2C, SPI). Trong một bus CAN không có khái niệm master/slave mà các nút trong mạng, về nguyên tắc, đều có vai trò như nhau. Nghĩa là bất cứ khi nào thấy bus rảnh (IDLE) thì các nút đều có thể truyền thông điệp của mình trên bus. Vì vậy, trong mạng CAN chỉ có khái niệm nút truyền/nút nhận.

Bộ truyền (Transmitter): Một đơn vị là nơi khởi nguồn của thông điệp thì được gọi là bộ truyền của thông điệp đó. Một đơn vị được giữ là bộ truyền cho đến khi bus rảnh hay đơn vị đó bị thua trong quá trình phân xử ( quá trình phân xử là quá trình xảy ra khi có nhiều đơn vị cùng truyền thông điệp trong cùng một thời gian).

Bộ nhận (Receiver): Một đơn vị được gọi là bộ nhận của thông điệp nếu nó không là bộ truyền của thông điệp khác và bus không rảnh.

Như vậy, nút truyền là nút chiếm được bus trước các nút khác hoặc thắng trong sự phân xử khi có nhiều nút truyền thông điệp cùng lúc. Ngược lại nút nhận là nút "chậm" hơn các nút khác, không kịp chiếm bus khi bus rảnh hoặc thu trong sự phân xử.

Một nút được gọi là "nút nhận" không có nghĩa là nó phải lấy dữ liệu của khung thông điệp đang truyền trên bus mà nó chỉ giám sát thông điệp đang được nút khác truyền trên bus và kiểm tra xem đó có phải là thông điệp của mình không. Nếu đúng, nút nhận sẽ lưu lại thông điệp này, nếu không đúng, nút nhận sẽ loại bỏ thông điệp này.

Các bạn có thể tham khảo tài liệu của Microchip: 

 https://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en558265.pdf

2. Mã hóa bit được sử dụng trong giao thức CAN​

Mã hóa loại Non-Return-to-Zero (NRZ)

Phương pháp mã hóa được sử dụng trong giao thức CAN là phương pháp NRZ mà cụ thể hơn là NRZ-L (Non-Return-to-Zero Level). Đây là dạng mã hóa theo mức, tức là mỗi trạng thái dominant và recesive sẽ được quy định mang một mức áp khác nhau. Cụ thể, dominant là mức thấp tương ứng với logic 0, recessive là mức cao tương ứng với logic 1

 

Mã hóa Non-Return-to-Zero​

Đây là loại mã hóa đơn giản, thông dụng nhưng lại khó khăn cho vấn đề đồng bộ khi có nhiều bít 0 hay bit 1 xuất hiện liên tiếp. Để có được sự đồng bộ cao hơn người ta còn có thể sử dụng mã hóa Manchester.

Mã hóa Manchester

Mã hóa Manchester là loại mã hóa có sự chuyển mức tại điểm giữa mỗi bit. Cụ thể, bit 1 là sự biến đổi trạng thái từ mức cao xuống mức thấp, bit 0 là sự biến đổi trạng thái từ mức thấp lên mức cao.

 

Mã hóa Manchester​

Loại mã hóa này đạt được sự đồng bộ tốt hơn NRZ chính là nhờ sự đảo mức tại điểm giữa mỗi bit.

3. Quy luật chèn bit (Bit Stuffing)​

Loại mã hóa được dùng chính thức trong giao thức CAN là NRZ. Chính vì sử dụng loại mã hóa này nên để đảm bảo tốt vấn đề đồng bộ khi xuất hiện quá nhiều bit 0 hay bit 1 liên tiếp ta phải tuân thủ theo luật chèn bit như sau: Bất cứ khi nào một bộ truyền phát hiện có 5 bit liên tiếp có giá trị giống nhau trong chuỗi bit được truyền thì nó sẽ tự động thêm một bit (gọi là bit chèn hay bit chỉnh) vào ngay sau 5 bit kia và bit chèn này đảo mức so với 5 bit trước đó.

Tại bộ nhận, bit chèn sẽ được loại bỏ để lấy thông tin chính xác được truyền.

Sau đây là một ví dụ về luật chèn bit

 

Luật chèn bit (a) Chuỗi bit cần truyền (b) Chuỗi bit được truyền với S là vị trí bit chèn​

Quy luật chèn bit chỉ sử dụng cho các vùng: SOF, vùng phân xử (Arbitration Field), vùng điều khiển (Control Field), vùng dữ liệu (Data Field và CRC Sequence (15 bit đầu tiên của vùng kiểm tra CRC).

Các vùng còn lại của khung dữ liệu hay khung điều khiển (như CRC delimiter, vùng ACK, EOF) được giữ cố định và không áp dụng luật chèn bit. Tương tự như vậy. khung lỗi và khung quá tải là hai loại khung có định dạng cố định và không áp dụng luật chèn bit.

4. Tỉ số bit sử dụng trên bit chèn (User-bit/ Stuff-bit)​

Đầu tiên khi xem luật chèn bit, ta nghĩ rằng tỉ số “bit sử dụng / bit chèn” được ước lượng là 5:1. Nhưng thực tế trong trường hợp xấu nhất, số bit được chèn tối đa được tính toán như sau:

s_max = (n – 1) : 4 với n là số bit trong vùng được phép chèn

Ví dụ, ta tính toán trong trường hợp xấu nhất cho khung dữ liệu định dạng chuẩn:

 

Sau khi tính toán ta có bảng giá trị cụ thể sau (sau khi tính chỉ lấy phần nguyên):

 

Bảng tính số bit chèn tối đa cho khung dữ liệu định dạng chuẩn

Nguồn: icdesignvn 

  Bạn Có Đam Mê Với Vi Mạch hay Nhúng      -     Bạn Muốn Trau Dồi Thêm Kĩ Năng

Mong Muốn Có Thêm Cơ Hội Trong Công Việc

    Và Trở Thành Một Người Có Giá Trị Hơn

Bạn Chưa Biết Phương Thức Nào Nhanh Chóng Để Đạt Được Chúng

Hãy Để Chúng Tôi Hỗ Trợ Cho Bạn. SEMICON  

 

Hotline: 0972.800.931 - 0938.838.404 (Mr Long)

Lần cập nhật cuối ( Thứ ba, 01 Tháng 10 2019 20:58 )  

Related Articles

Chat Zalo