Người phỏng vấn muốn biết tại sao điện trở kéo lên được sử dụng trên SDA và SCL khi logic ngược lại cũng có thể được thực hiện. Có một lời giải thích cho lý do tại sao sử dụng điện trở kéo lên là thiết kế được chọn?
Người phỏng vấn muốn biết tại sao điện trở kéo lên được sử dụng trên SDA và SCL khi logic ngược lại cũng có thể được thực hiện. Có một lời giải thích cho lý do tại sao sử dụng điện trở kéo lên là thiết kế được chọn?
Câu trả lời:
Để mở rộng câu trả lời của Jon một chút:
Vâng, đó là tất cả để làm với MOSFE mà bạn muốn sử dụng.
Các MOSFET kênh N tốt hơn nhiều cho việc chuyển đổi logic so với kênh P vì:
Vì vậy, đối với cấu hình cống mở (chính là I2C), việc tạo ra nó rẻ hơn và dễ dàng hơn bằng cách sử dụng một sự sắp xếp "nhàn rỗi cao" với các MOSFET kênh N thay vì "nhàn rỗi thấp" với MOSFET kênh P.
Tùy chọn thứ ba sẽ là "nhàn rỗi thấp" bằng cách sử dụng MOSFET kênh N, nhưng đối với đó, bạn cần có trình điều khiển cổng điện áp cao để tăng điện áp cổng đủ xa so với điện áp nguồn để MOSFET bật. Không thực tế đối với các xe buýt thông tin liên lạc nhỏ, nhưng cách sắp xếp này thực sự được sử dụng khá phổ biến trong các cầu H cho lái xe máy, nơi bạn muốn có phản ứng tương tự (hoặc tương tự) giữa phía cao và phía thấp của cầu H. Sử dụng các cặp kênh P và kênh N trong cầu H thường có nghĩa là bạn phải kết hợp vùng chết giữa tắt kênh P và bật kênh N vì mất nhiều thời gian hơn và điều đó làm giảm hiệu quả năng lượng của bạn .
Nhưng đối với các xe buýt truyền thông nhỏ như I2C, nơi bạn cần tốc độ cao, chi phí thấp và sử dụng đơn giản, thì "nhàn rỗi cao" với MOSFET kênh N và điện trở kéo lên là hiệu quả nhất về chi phí.
Một ưu điểm khác của kéo thụ động / chủ động kéo xuống, là nó có thể hoạt động với một loạt các điện áp. Lưu ý rằng các mức cao và thấp kỹ thuật số được chỉ định rõ ràng với IIC. Những mức này đủ thấp để làm việc với pullups 3,3 V. Do đó, các thiết bị có thể được xây dựng hoạt động với cả nguồn 5 V và 3,3 V. Trên thực tế, các tuyến xe buýt IIC có thể được kéo lên tới 3,3 V và điều này sẽ hoạt động với một hỗn hợp các thiết bị trên xe buýt được cấp nguồn riêng ở các điện áp khác nhau.
Mặc dù NMOS có lợi thế hơn PMOS về tốc độ / diện tích, nhưng sự khác biệt này thực sự là phút khi bạn nói về một trình điều khiển trên một hoặc hai chân. Và xét cho cùng, hầu hết các trình điều khiển đầu ra thực sự là các loại totem cực yêu cầu cả NMOS và PMOS, do đó, dù họ đã chọn cấu hình kéo xuống hay kéo lên, họ sẽ kết thúc với trình điều khiển đầu ra nhỏ hơn một totem- lái xe cực.
Nhưng có một lợi ích của đầu ra cống mở NMOS so với cống mở PMOS không áp dụng trực tiếp với I2C: khi VCC dương, cống mở NMOS cho phép các chip với các mức VCC khác nhau được kết nối với nhau. Đây là (một phần) lý do tại sao có rất nhiều IC logic rời rạc mở NMOS.
Mặt khác, tôi không biết về BẤT K chip chip mở nào PMOS có sẵn trên thị trường. Trên thực tế, tôi không tin rằng mình đã từng gặp một đầu ra mở PMOS trên bất kỳ chip nào. (Tôi đã sử dụng ECL nhiều lần, có đầu ra bộ phát mở NPN với hành vi tương tự như cống mở PMOS)
Tính khả dụng của các chip logic rời rạc mở NMOS làm cho cống mở NMOS quen thuộc hơn nhiều đối với các nhà thiết kế điện tử so với cống mở PMOS.
Cả sự quen thuộc và tính sẵn có của các chip rời rạc (ví dụ như tạo mẫu), có khả năng đã ảnh hưởng đến các nhà thiết kế của I2C để chọn cấu hình cống mở NMOS.
Tôi đoán câu trả lời quay trở lại lý do tại sao chúng ta sử dụng quy ước mặt đất tiêu cực ở nơi đầu tiên (và điều này chắc chắn không phổ biến trước thời đại bán dẫn). Lý do cho điều này là các thiết bị N-Channel có hiệu suất tốt hơn các thiết bị P-Channel do tính chất vật lý của các loại sóng mang đa số được sử dụng trong chúng.
Trong những ngày đầu của các mạch tích hợp, đây là một hạn chế khá nghiêm trọng và do đó, có một ưu tiên cho việc sử dụng các bóng bán dẫn N-Channel (hoặc NPN) để đạt được hiệu suất cao nhất có thể. Từ đó, chúng tôi có được một hệ thống mặt đất âm và các đầu ra collector mở đòi hỏi phải sử dụng điện trở kéo lên thay vì kéo xuống.
Tất nhiên, bus I2C hầu như không có tốc độ cao, vì vậy không có lý do gì nó không thể được thực hiện bằng cách sử dụng điện trở kéo xuống, nhưng cũng không có lợi thế. Vì vậy, chúng tôi gắn bó với quy ước và nó sử dụng pull-up.
Đây là một số suy đoán (có căn cứ lịch sử) ...
Khi bạn có pullup (chứ không phải pull-pull), rõ ràng bạn có thể có nhiều thiết bị tranh chấp với xe buýt mà không có dòng chảy quá mức (Điều tốt - nhưng bạn có thể đạt được điều tương tự với kéo xuống).
Trong "ngày xưa" của các bóng bán dẫn lưỡng cực, logic TTL đơn giản nhất đã sử dụng các bộ thu mở với các bóng bán dẫn NPN - mọi thứ đều được tham chiếu đến mặt đất, làm cho các mức kích hoạt trở nên đơn giản để xác định bất kể điện áp của bus. Ngoài ra, NPN nhanh hơn PNP.
Nếu tôi có nhiều thiết bị làm việc với điện áp cung cấp riêng của chúng và điện áp cung cấp đó không phải là hằng số, thì việc kéo lên thay vì kéo xuống trở nên cấp thiết . Nếu nhiều thiết bị cố gắng kéo xe buýt đến đường ray cung cấp tương ứng, dòng chảy hiện tại sẽ không bị hạn chế và có thể có thứ gì đó bị rán. Ít nhất là tất cả họ đều đồng ý về giá trị của mặt bằng, vì vậy vấn đề này không phát sinh.
Với CMOS, câu chuyện thay đổi - bây giờ mức kích hoạt là mid rail. Nhưng EE có thể là một bó truyền thống. Chắc chắn, đến từ những ngày đầu của bóng bán dẫn, tôi thậm chí không bao giờ đặt câu hỏi về sự lựa chọn của pull-up, vì những lý do trên.
Như tôi đã nói, đây chỉ là suy đoán.
Đây có thể là một điều lịch sử.
Các bóng bán dẫn cũ và các mạch tích hợp thực sự tiêu thụ ít năng lượng hơn khi chúng ở mức 5 V so với 0 V. Vì có sự khác biệt đáng kể giữa hai cấp độ, các nhà thiết kế đã chọn để biến trạng thái 'nhàn rỗi' thành 5 V. Sau đó, khi thời gian trôi qua, các bóng bán dẫn và IC được cải thiện, khiến cả hai trạng thái tiêu thụ một lượng điện năng tương đương nhau, nhưng không có lý do thực sự để thay đổi các tiêu chuẩn.
Bây giờ, bạn thấy rất nhiều thứ như thế này - trong đó nhàn rỗi là 5 V - chỉ vì các tiêu chuẩn không bao giờ thay đổi.
Đã nhiều năm kể từ khi tôi đọc thông số I2C, nhưng tôi nhớ khi nó được sử dụng lần đầu tiên, mọi người thường gọi nó là xe buýt thu gom 2 dây. Nó làm cho các kết nối và phát hiện va chạm siêu dễ dàng ngay cả đối với tiếng đập bit. Thậm chí 20 năm trước, nó không được coi là một chiếc xe buýt hiệu suất cao, chỉ rẻ và dễ dàng.
Tôi muốn nói rằng đó là vì I2C được định nghĩa là một chiếc xe buýt trong đó tất cả các đơn vị được kết nối nên là cống mở hoặc bộ thu mở. Điều này có nghĩa là nó chỉ có thể lái xe buýt thấp, không cao. (Khi bóng bán dẫn ổ đĩa đầu ra bị tắt, pin ở trạng thái trở kháng cao.)
Sơ đồ này cung cấp một số lợi ích tốt, ví dụ như bạn có thể kết nối các thiết bị với các điện áp tín hiệu khác nhau và xe buýt tự phục hồi khỏi các lỗi giao tiếp.
Rõ ràng, tiêu chuẩn có thể đã được định nghĩa theo cách khác, như một cấu hình nhàn rỗi thấp / hoạt động cao, và các câu trả lời khác ở đây chạm vào yếu tố đó khá tốt.
Nguồn: LabWorX 1, Làm chủ xe buýt I2C, của Vincent Himpe. Một cuốn sách thực sự hay về I2C, đó là bối cảnh lịch sử, cách triển khai nó trong phần cứng và cách sử dụng nó trong phần mềm và triển khai gỡ lỗi.
Câu trả lời thực sự mà chưa ai chạm vào đủ là nó cho phép bạn kết nối các thiết bị được cung cấp bởi các điện áp khác nhau (miễn là các chân I / O có thể chịu được). Ví dụ, một thiết bị 3,3V có thể giao tiếp với một thiết bị tắt nguồn 1,8V miễn là IO của thiết bị 1,8V có thể chịu được điện áp lên đến 3,3. Tất nhiên mọi thiết bị đều có thể lái 0V, nhưng không phải mọi thiết bị đều có thể điều khiển điện áp ở điện trở kéo lên của bạn.
Ngoài ra, hầu hết các IC có thể chìm nhiều hơn hiện tại. Điều này là do tản nhiệt. Vì vậy, phần chìm hiện tại (mặt đất lái xe) từ bộ phận kéo lên dễ dàng hơn so với nguồn cung cấp (điều khiển điện áp cao) vào bộ phận kéo xuống.