Một bo mạch cảm biến hiện đại có thể mang hàng chục linh kiện trên cùng hai sợi dây, và mỗi linh kiện đều muốn báo cho vi điều khiển biết khi có sự kiện. Với I2C, cách duy nhất là thêm chân ngắt riêng cho từng linh kiện, hoặc bắt vi điều khiển hỏi vòng liên tục. I3C xoá bỏ ràng buộc đó — nhưng đổi lại, kiểm thử I3C đòi hỏi kỹ sư phải nhìn được cả lớp điện lẫn lớp giao thức trên cùng một màn hình, vì phần lớn lỗi nằm đúng ở ranh giới giữa hai lớp. Bài viết dựa trên đặc tả MIPI I3C và tài liệu phần mềm giải mã của Keysight.
I3C giải quyết bài toán gì mà I2C không giải được
I3C giữ nguyên hình dạng vật lý quen thuộc của I2C: hai dây hai chiều SDA và SCL, cộng dây đất. Nhưng bên trong, ba thứ thay đổi căn bản.
Thứ nhất là tốc độ. Chế độ SDR của I3C có tốc độ bit thô cơ sở 12,5 Mbps, tương ứng tốc độ dữ liệu thực 11 Mbps tại tần số xung nhịp 12,5 MHz. Các chế độ tốc độ cao HDR đẩy tốc độ bit thô tối đa lên 33,3 Mbps tại cùng xung nhịp 12,5 MHz, với tốc độ dữ liệu thực 30 Mbps.
Thứ hai là địa chỉ. I2C dùng địa chỉ tĩnh nung sẵn trong linh kiện, dẫn tới xung đột địa chỉ khi lắp hai cảm biến cùng loại. I3C thay bằng địa chỉ động 7 bit, gán qua các thủ tục ENTDAA, SETDASA hoặc SETAASA. Ở giai đoạn khởi động từ trạng thái tắt nguồn, thiết bị điều khiển chính gán một địa chỉ động duy nhất cho mọi thiết bị trên bus, kể cả chính nó.
Thứ ba là chiều khởi tạo giao tiếp. Thiết bị đích có thể chủ động phát tín hiệu tới thiết bị điều khiển để báo sự kiện mà không cần thêm chân nào — đó chính là ngắt trong băng. Kèm theo là cơ chế hot-join cho phép thiết bị mới gắn vào bus sau khi bus đã khởi tạo vẫn xin được địa chỉ động, và một tập lệnh chung chuẩn hoá (CCC) để quản lý bus và cấu hình thiết bị.
Kiểm thử I3C bắt đầu ở lớp vật lý: open-drain và push-pull
Đây là điểm khác biệt lớn nhất so với I2C và cũng là nguồn gốc của nhiều lỗi khó chịu. I2C dùng open-drain trên cả hai đường, nghĩa là sườn lên hoàn toàn phụ thuộc điện trở kéo lên và điện dung ký sinh của bus. I3C chuyển sang chủ động lái cả SCL và SDA bằng push-pull trong các pha tốc độ cao, và chính điều này khiến năng lượng tiêu thụ trên mỗi bit truyền của mọi chế độ I3C hiệu quả hơn I2C.
Nhưng bus I3C không chạy push-pull suốt. Nó vẫn giữ pha open-drain ở những giai đoạn giao thức nhất định — điển hình là pha trọng tài địa chỉ và các pha phải cùng tồn tại với thiết bị I2C cũ. Kết quả là trên cùng một khung, dạng sóng đổi cơ chế lái giữa chừng: sườn dốc đứng ở đoạn push-pull, sườn cong theo hằng số thời gian RC ở đoạn open-drain.
Hệ quả thực hành: khi đo, đừng đặt một ngưỡng đánh giá sườn duy nhất cho toàn khung. Hãy tách riêng đoạn open-drain để kiểm tra điện trở kéo lên có đủ nhỏ cho điện dung bus thực tế hay không, và tách riêng đoạn push-pull để kiểm tra quá xung và dội. Một bus chạy tốt ở 400 kHz theo kiểu I2C hoàn toàn có thể hỏng ở pha open-drain của I3C vì tải điện dung tăng lên khi lắp thêm linh kiện.
In-band interrupt I3C và bẫy trọng tài địa chỉ
Ngắt trong băng là tính năng đáng giá nhất của I3C và cũng là thứ khó bắt nhất trên máy hiện sóng. Lý do: nó là một sự kiện hiếm, không đồng bộ, và chỉ sai trong những điều kiện tải cụ thể.
Cơ chế cốt lõi là địa chỉ động tạo ra một thứ tự ưu tiên cho ngắt của các thiết bị. Khi nhiều thiết bị cùng phát ngắt, thiết bị có địa chỉ động thấp hơn thắng trọng tài. Điều này có một hệ quả thiết kế mà người làm kiểm thử phải kiểm chứng: thứ tự gán địa chỉ ở giai đoạn ENTDAA quyết định độ trễ ngắt tệ nhất của từng cảm biến. Nếu cảm biến cần độ trễ thấp nhất lại nhận địa chỉ cao, hệ thống vẫn chạy đúng chức năng nhưng trượt chỉ tiêu thời gian thực — một lỗi không bao giờ lộ ra trong kiểm thử chức năng.
Kịch bản kiểm thử tối thiểu nên gồm: một ngắt đơn lẻ khi bus rảnh; hai ngắt đồng thời từ hai thiết bị khác địa chỉ để xác nhận trọng tài; một ngắt phát ra đúng lúc thiết bị điều khiển đang bắt đầu một giao dịch; và một chuỗi hot-join xen giữa lưu lượng bình thường. Với ba kịch bản sau, bắt bằng trigger cạnh thông thường gần như vô vọng — bạn cần trigger theo giao thức, hoặc trigger vùng. Cách bắt những sự kiện hiếm như thế này bằng bộ nhớ phân đoạn được trình bày trong bài bộ nhớ máy hiện sóng và sự kiện hiếm.
Tương thích ngược I2C: bộ lọc gai 50 ns và bẫy kéo dài xung nhịp
I3C được thiết kế để sống chung với linh kiện I2C cũ trên cùng bus, nhưng sự tương thích này có điều kiện rõ ràng. Theo MIPI, phần lớn thiết bị đích I2C cũ có thể hoạt động trên bus I3C với hai điều kiện: chúng phải có bộ lọc gai nhiễu 50 ns, và chúng không được tìm cách kéo dài xung nhịp.
Hai điều kiện này đáng để dán lên tường phòng lab. Bộ lọc gai 50 ns tồn tại vì bus I3C mang những chuyển mức nhanh mà linh kiện I2C cũ có thể hiểu nhầm thành tín hiệu hợp lệ; thiếu bộ lọc, linh kiện cũ sẽ phản ứng với lưu lượng I3C không dành cho nó. Còn kéo dài xung nhịp là hành vi mà một số linh kiện I2C dùng để câu giờ khi chưa kịp xử lý — trên bus I3C đang được lái push-pull, việc một thiết bị đích cố ghì đường SCL xuống là xung đột điện thực sự, không chỉ là vi phạm giao thức.
Vì vậy, hạng mục kiểm thử bắt buộc khi trên bo có linh kiện I2C cũ: đo độ rộng gai nhiễu thực tế trên SDA/SCL trong pha push-pull và đối chiếu ngưỡng 50 ns; và giám sát xem có thiết bị nào ghì SCL ngoài các pha được phép hay không. Nền tảng giải mã hai bus cạnh nhau được trình bày trong bài giải mã bus nối tiếp trên máy hiện sóng.
Giải mã I3C trên máy hiện sóng: chọn đúng lớp máy
Đây là chỗ nhiều người chọn nhầm, nên cần nói thẳng: giải mã giao thức I3C không có sẵn trên mọi máy hiện sóng.
Gói phần mềm D9110MPLP của Keysight — giải mã và trigger nhóm MIPI tốc độ thấp — áp dụng cho các máy hiện sóng dòng Infiniium. Gói này giải mã và trigger I3C ở chế độ SDR, chế độ HDR-DDR, cùng lưu lượng I2C cũ ở các chế độ standard, fast và fast mode plus. Ngoài I3C, gói còn phủ RFFE (đặc tả v1.10, v2.0 và v2.1) và SPMI (v1.0 và v2.0) — hữu ích nếu bo của bạn có cả khối quản lý nguồn và giao diện RF front-end.
Ngược lại, các tuỳ chọn giải mã nối tiếp nhúng trên dòng InfiniiVision phổ thông phủ I²C và SPI, không phủ giao thức I3C. Điều đó không có nghĩa là máy dòng này vô dụng trong dự án I3C — nó vẫn là công cụ tốt nhất cho phần việc lớp vật lý và cho lưu lượng I2C cũ trên bus lai. Chỉ cần không kỳ vọng nó bung ra khung I3C đã giải mã.
Cây quyết định chọn máy
Nếu bạn cần giải mã I3C đúng nghĩa — thấy được ENTDAA, CCC, ngắt trong băng dưới dạng khung đã dịch — hãy chọn máy dòng Infiniium và trang bị gói MIPI tốc độ thấp. Máy hiện sóng Keysight EXR254A Infiniium EXR-Series có băng thông 2,5 GHz trên cả 4 kênh, độ phân giải hiệu dụng ENOB tới 9,0 với mức nhiễu 43 µV, và bộ nhớ tới 1,6 Gpts. Hai con số sau đặc biệt đáng giá với I3C: ENOB cao giúp nhìn rõ quá xung nhỏ ở pha push-pull, còn bộ nhớ sâu cho phép bắt trọn một chuỗi khởi tạo bus dài rồi mới đi tìm khung lỗi bên trong. Máy này còn tích hợp 7 chức năng trong một thiết bị, gồm cả máy phân tích logic — tiện khi cần đối chiếu bus với tín hiệu số khác.
Nếu tín hiệu có sườn rất nhanh hoặc bạn cần biên độ dự phòng cho các phân tích khác, máy hiện sóng Infiniium MXR Keysight MXR404B cho băng thông 4 GHz trên 4 kênh, tốc độ lấy mẫu 16 GSa/s trên mọi kênh và bộ chuyển đổi 10 bit, nâng cấp được lên 6 GHz hoặc 8 kênh. Số kênh là yếu tố hay bị xem nhẹ: để soi một sự cố ngắt trong băng cho ra đầu ra, bạn thường cần SDA, SCL, một chân báo trạng thái và một chân nguồn cùng lúc.
Nếu phần việc trước mắt là chất lượng tín hiệu và lưu lượng I2C cũ trên bus lai, máy hiện sóng Keysight MSOX3104G với băng thông 1 GHz, 4 kênh tương tự cộng 16 kênh số, lấy mẫu 2 GSa/s liên kênh và tốc độ cập nhật 1.000.000 dạng sóng/giây là lựa chọn hợp lý. Tốc độ cập nhật cao chính là thứ giúp bắt được gai nhiễu hiếm — đúng loại sự kiện mà ngưỡng lọc 50 ns đang phải chặn.
Kết luận
I3C không phải “I2C nhanh hơn”. Nó là một bus có địa chỉ động, có trọng tài ngắt và có hai cơ chế lái đường xen kẽ nhau trong cùng một khung. Ba hạng mục không nên bỏ qua: kiểm tra sườn tín hiệu tách riêng theo pha open-drain và push-pull; kiểm chứng thứ tự ưu tiên ngắt do gán địa chỉ động sinh ra; và với bus lai, đối chiếu ngưỡng lọc gai 50 ns cùng hành vi kéo dài xung nhịp của linh kiện cũ.
Techmaster Electronics là đại lý uỷ quyền của Keysight tại Việt Nam, có phòng thí nghiệm hiệu chuẩn đạt ISO/IEC 17025. Để được tư vấn cấu hình máy hiện sóng và gói giải mã giao thức phù hợp, hoặc đặt lịch hiệu chuẩn, vui lòng liên hệ hotline 0908 173 345.