Latch-up: linh kiện bảo vệ không bao giờ tắt
Bo mạch vượt qua mọi phép thử chức năng. Rồi nó đi qua thử nghiệm ESD, và một cổng ngừng hoạt động. Linh kiện bảo vệ thì ấm. Thay nó, tắt bật nguồn, bo lại chạy bình thường, cho đến lần phóng điện tiếp theo. Linh kiện không hề yếu. Nó vẫn đang dẫn.
Mạch đang được thiết kế
Một cổng USB Type-C trên đường nguồn 5 V. Thiết kế rất bình thường: đầu nối, bảo vệ ESD trên các đường dữ liệu và trên VBUS, rồi đến vi điều khiển phía sau. Người thiết kế chọn linh kiện bảo vệ theo cách đa số vẫn làm, tìm trên datasheet linh kiện có điện áp kẹp thấp nhất. Kẹp càng thấp thì điện áp tới chip càng nhỏ, nên thấp hơn chắc chắn là an toàn hơn.
Điều thực sự đã xảy ra
Trong phép thử phóng điện tiếp xúc ±8 kV, cổng đó ngừng phản hồi. Đo trên bàn thử sau đó:
- VBUS nằm ở khoảng 2,4 V thay vì 5 V
- Dòng đi vào linh kiện bảo vệ cao hơn nhiều so với dòng rò bình thường, miliampe chứ không phải nanoampe
- Sờ tay thấy linh kiện ấm rõ rệt
- Tắt bật nguồn thì mọi thứ trở lại bình thường
Điểm cuối cùng mới là điều quan trọng. Một linh kiện đã hỏng thì không hồi phục khi bạn ngắt rồi cấp lại nguồn. Linh kiện này không hỏng. Nó đang dẫn, và nó đã dẫn liên tục từ lúc phóng điện, rất lâu sau khi bản thân xung phóng điện đã kết thúc.
Câu trả lời ai cũng nghĩ đến trước
Cách hiểu hiển nhiên là "xung quá lớn so với sức chịu của linh kiện, vậy hãy dùng linh kiện khoẻ hơn". Điều đó dẫn tới việc chọn linh kiện có khả năng chịu xung cao hơn, thường là die lớn hơn, và thường có điện dung cao hơn. Trên một làn USB 3.x, điện dung đó làm hỏng tính toàn vẹn tín hiệu, nên thiết kế từ một vấn đề trở thành hai.
Và nó cũng không sửa được gì, bởi vì chẳng có gì bị quá tải cả. Muốn thấy điều thực sự xảy ra, bạn phải nhìn vào cách linh kiện hành xử trong lúc nó đang dẫn, và phép đo duy nhất cho thấy điều đó là đường cong TLP.
Phép đo cho thấy vấn đề
Phép thử TLP (Transmission Line Pulse, xung đường truyền) bắn một xung ngắn, được điều khiển rất chính xác vào linh kiện, đồng thời ghi lại điện áp trên linh kiện và dòng chạy qua nó. Lặp lại ở các mức tăng dần, bạn có được đường đặc tuyến dòng–áp thật của linh kiện, không phải con số quảng cáo, mà là hành vi thực tế.
Đọc từ trái sang phải:
- Từ 0 V đến 6,3 V linh kiện đang tắt. Gần như không có dòng. Đây là điện áp kích, thường ký hiệu Vt1.
- Tại 6,3 V nó dẫn, và điện áp trên nó tụt ngược về khoảng 2,4 V. Đó chính là chỗ gập, và loại linh kiện này được đặt tên theo nó: snapback.
- Từ đó nó dẫn, tăng lên 11 V ở 16 A. Chính điện áp thấp khi đang dẫn là lý do các linh kiện snapback có con số kẹp đẹp đến vậy.
Con số thực sự quan trọng nằm ở đáy chỗ gập: điện áp duy trì Vh. Đó là mức điện áp mà bên dưới nó linh kiện mới buông ra. Còn ở trên nó, linh kiện tiếp tục dẫn.
Vì sao nó không tắt
Xung phóng điện đã kích hoạt linh kiện. Không sao, đó đúng là việc của nó. Vấn đề nằm ở những gì linh kiện nhìn thấy ngay sau đó.
Linh kiện này nằm ngang một đường nguồn 5 V đang sống. Điện áp duy trì của nó là 2,4 V. Sau khi xung đi qua, đường nguồn vẫn còn đó, vẫn đủ sức đẩy dòng, và vẫn giữ linh kiện ở khoảng 2,4 V, cao hơn hẳn mức mà nó sẽ buông. Vì vậy nó cứ dẫn.
Bây giờ nguồn đang nuôi một đường trở kháng thấp đi thẳng xuống đất. Đó là lý do VBUS đo được 2,4 V, dòng thì cao, và linh kiện thì ấm. Đó cũng là lý do tắt bật nguồn lại khắc phục được: bỏ đường nguồn đi là cách duy nhất đưa điện áp xuống dưới Vh. Đây chính là latch-up. Để lâu, nhiệt cuối cùng vẫn phá hỏng linh kiện, và khi đó lỗi trông y hệt một linh kiện yếu, đưa người kỹ sư tiếp theo quay lại kết luận sai.
Vì sao nó có chỗ để nằm lại
Có một cách nói chính xác hơn cho tất cả những điều trên, và nó đáng một hình vẽ. Hãy vẽ khả năng cấp của nguồn lên cùng hệ trục với linh kiện, rồi nhìn xem hai đường gặp nhau ở đâu.
Điểm A là lúc bo mạch chạy đúng: 5 V trên linh kiện, không có dòng qua nó. Điểm B là lỗi: 2,4 V, có dòng chạy. Từ khoá quan trọng là cả hai, mỗi điểm đều là một chỗ mà mạch có thể nằm lại vô thời hạn. Xung ESD không phá hỏng gì cả. Nó chỉ đưa mạch từ A sang B, và một khi đã ở B, không có gì trong mạch đẩy nó quay lại.
Đó là khác biệt giữa một lỗi tự hết và một lỗi không tự hết. Nếu linh kiện không có chỗ gập, nhánh dẫn của nó sẽ nằm hoàn toàn bên phải đường nguồn và sẽ không có giao điểm thứ hai, chỉ có một chỗ để nằm thì không thể latch được. Chính chỗ gập tạo ra ngôi nhà thứ hai.
Hai lỗi khác nhau cùng một tên
Điều này đáng được tách bạch cẩn thận, vì cùng một từ được dùng cho hai hiện tượng khác nhau, và cách khắc phục cũng khác nhau.
Thứ nhất là latch-up bên trong chip được bảo vệ. Mọi quy trình CMOS đều chứa một cấu trúc bốn lớp mà không ai mong muốn, cực nguồn của NMOS, đế p, giếng N và cực nguồn của PMOS xếp chồng lên nhau thành P-N-P-N. Đó là một thyristor không ai thiết kế và không ai muốn có. Nó hành xử như hai transistor lưỡng cực được nối sao cho mỗi con nuôi cực nền của con kia. Bình thường cả hai đều tắt và chỉ rò vài nanoampe. Nhưng nếu có gì đó bơm đủ dòng vào một trong hai, nó sẽ bật con kia lên, con kia lại bật con đầu tiên mạnh hơn, và cả cặp khoá lại thành một đường trở kháng thấp từ VDD thẳng xuống đất. Xung khởi đầu đã biến mất từ lâu; chính nguồn mới là thứ giữ nó ở đó.
Thứ hai là chính linh kiện bảo vệ tự khoá, đúng lỗi trong bài này. Không có gì bên trong vi điều khiển hoạt động sai. TVS đã gập về điện áp duy trì của nó, và đường nguồn đủ cao để giữ nó ở đó.
Trên bàn thử, hai trường hợp trông gần như giống hệt nhau: đường nguồn tụt xuống một giá trị cố định kỳ lạ, dòng cao bất thường, có gì đó nóng, và tắt bật nguồn thì hết. Khác biệt nằm ở linh kiện nào đang gánh dòng đó. Nếu thứ nóng lên là linh kiện bảo vệ thì đó là linh kiện bảo vệ. Nếu thứ nóng lên là vi điều khiển còn linh kiện bảo vệ vẫn nguội, thì latch-up nằm bên trong chip. Nhấc một chân của linh kiện bảo vệ lên rồi thử lại là phân biệt được trong một phút.
Nguyên nhân thực sự kích hoạt
Cả hai loại đều cần một thứ gì đó bơm vào lượng dòng đầu tiên. Trên thực tế là:
- Xung trên cổng. ESD, xung sét lan truyền, cắm nóng khi đang có điện, hoặc chính điện tích tích trên cáp đổ vào đầu nối. Đây là nguyên nhân phổ biến nhất, và một cổng USB Type-C gặp nó hằng ngày, nó vốn được thiết kế để cắm rút khi đang có điện.
- Đường nguồn lên quá nhanh. Một nguồn lên nhanh, hoặc vọt lố khi bật, có thể đẩy đủ dòng dịch chuyển qua cấu trúc ký sinh và kích hoạt nó trước cả khi bo mạch kịp bắt đầu làm việc.
- Tải nặng làm dao động các đường nguồn. Nếu một bước dòng lớn kéo nguồn xuống hoặc nâng đất cục bộ lên, chênh lệch điện thế giữa các vị trí trong chip sẽ dịch đi, và độ dịch đó có thể phân cực thuận một tiếp giáp lẽ ra phải tắt.
- Chọn linh kiện bảo vệ có điện áp duy trì thấp hơn đường nguồn. Nguyên nhân này chỉ gây ra loại thứ hai, và khác với ba nguyên nhân trên, nó không phải xui rủi. Đó là một quyết định chọn linh kiện, đưa ra nhiều tháng trước, ngay trên bàn làm việc.
Ba nguyên nhân đầu là những điều kiện bạn phải quản lý. Nguyên nhân cuối thì đơn giản là tránh được, và tránh nó không tốn một đồng nào, đó chính là điều khiến việc phát hiện ra nó trong một sản phẩm đã hoàn thiện trở nên ức chế nhất.
Nó gây ra gì cho bo mạch
Latch-up không phải một sự kiện, mà là một trạng thái mà bo mạch bị kẹt trong đó. Thiệt hại tích tụ theo từng bước, và đi được đến bước nào là tuỳ vào việc nguồn được để bật bao lâu và nguồn có thể cấp bao nhiêu dòng.
- Đường nguồn sụp xuống điện áp duy trì. Không phải về 0, mà về đúng giá trị mà linh kiện đang khoá nằm ở đó. Trên bo mạch này, 5 V thành 2,4 V. Mọi chip trên đường nguồn đó giờ đang chạy dưới điện áp làm việc tối thiểu của nó.
- Truyền thông đứt hoặc sai. Cổng chết, hoặc tệ hơn là chập chờn. Trên đường dữ liệu, cùng một lỗi ấy biểu hiện thành lỗi bit và truyền lại chứ không phải hỏng dứt khoát, và như thế thì khó truy hơn nhiều.
- Dòng tiếp tục tăng khi mọi thứ nóng lên. Đường đã khoá có trở kháng thấp, và nguồn sẽ cấp đến giới hạn của chính nó. Nếu nguồn có giới hạn dòng, nó sẽ giằng co với chỗ khoá và cả hai cùng nóng. Nếu không có giới hạn, dòng chỉ bị chặn bởi chính bo mạch.
- Một thứ gì đó hỏng vì EOS. Quá ứng suất điện (EOS), không phải ESD, chết nhiệt từ từ chứ không phải chết tức thì. Thường thì linh kiện bị khoá sẽ chập và chết. Đôi khi một dây bond đứt. Đôi khi con chip phía sau đi trước.
Bước cuối cùng chính là lý do lỗi này cứ lặp lại từ sản phẩm này sang sản phẩm khác. Một khi nhiệt đã phá hỏng linh kiện bảo vệ thì bằng chứng của việc khoá cũng biến mất. Thứ đến bàn phân tích lỗi là một con TVS bị chập trên một bo mạch trượt thử nghiệm ESD, trông y hệt một linh kiện quá yếu. Thế là phiên bản sau lắp một linh kiện chịu xung cao hơn, và rất thường là linh kiện có cùng điện áp duy trì. Bo mạch hỏng đúng theo cách cũ, và giờ còn thêm điện dung trên đường dữ liệu.
Nếu bạn chỉ mang về một thói quen chẩn đoán từ bài này, hãy chọn thói quen sau: một linh kiện bảo vệ hồi phục sau khi tắt bật nguồn thì chưa bao giờ là quá yếu. Hãy kiểm tra điện áp duy trì trước khi đặt mua một linh kiện khoẻ hơn.
Cái bẫy của điện áp kẹp thấp nhất
Đây là phần khó chịu. Các linh kiện snapback có điện áp kẹp thấp chính vì chúng gập ngược. Chỗ gập là tính năng. Vì vậy khi bạn sắp xếp danh mục của nhà phân phối theo điện áp kẹp và lấy con số đẹp nhất, bạn đang lặng lẽ chọn ra đúng những linh kiện có điện áp duy trì thấp nhất, tức là những linh kiện dễ khoá nhất trên một đường nguồn đang sống.
Con số hấp dẫn nhất trên datasheet lại chính là con số tạo ra rủi ro.
Cách khắc phục
Có hai câu trả lời đều đúng, và dùng câu nào là tuỳ vào đường mạch đó là gì.
- Vẫn dùng snapback, nhưng phải kiểm tra con số. Quy tắc rất đơn giản: Vh phải cao hơn điện áp lớn nhất mà đường nguồn có thể đạt tới, kể cả dung sai và mọi vọt lố. Nếu đường nguồn không bao giờ giữ được linh kiện ở mức Vh trở lên thì nó không thể khoá.
- Dùng linh kiện không gập ngược. Kẹp thác lũ thông thường không có chỗ gập. Nó chỉ dẫn khi vượt điện áp đánh thủng, nên đường nguồn 5 V đơn giản là không thể giữ nó dẫn. Bạn nhường một chút hiệu năng kẹp và loại bỏ hẳn dạng lỗi này.
Trên bo mạch nói trên, lựa chọn thứ hai mới đúng. VBUS là đường nguồn luôn có điện, và không ai muốn một linh kiện bảo vệ mà việc nó hoạt động đúng hay không lại phụ thuộc vào dung sai của nguồn.
Vì sao có linh kiện gập ngược
Hỏi tại sao lại có người làm ra một linh kiện bảo vệ có thể bị giữ cho dẫn là hoàn toàn hợp lý. Câu trả lời là chỗ gập không phải khiếm khuyết, nó chính là toàn bộ lý do những linh kiện đó kẹp tốt đến vậy. Linh kiện bảo vệ có ba dạng cấu tạo chính, và hình dạng chỗ gập là thứ phân biệt chúng.
- Kẹp thác lũ. Một tiếp giáp diode bắt đầu dẫn khi vượt điện áp đánh thủng rồi tiếp tục tăng từ đó. Không có chỗ gập, nên không có điện áp duy trì nào phải kiểm tra và cũng không có cách nào để một đường nguồn thấp hơn điện áp đánh thủng giữ nó dẫn. Cái giá là điện áp trên nó tăng theo dòng, nên khả năng kẹp ở dòng lớn là yếu nhất trong ba loại.
- Loại BJT. Một transistor lưỡng cực được kích bằng đánh thủng thác lũ tại cực thu. Khi đã dẫn, hoạt động transistor kéo điện áp xuống nên nó có gập, nhưng chỉ vừa phải. Loại này nằm ở khoảng giữa khó chịu: chỗ gập là có thật, và điện áp duy trì lại hay rơi vào rất gần các mức nguồn thông dụng. Đây là nhóm khiến người ta mắc bẫy nhiều nhất, vì datasheet trông không đủ "kịch tính" để nhắc bạn phải kiểm tra.
- Loại SCR. Một thyristor bốn lớp được làm ra có chủ đích và có kiểm soát, đúng cấu trúc vốn hình thành một cách tình cờ bên trong chip CMOS, nhưng ở đây là cố ý. Hai nửa khoá lẫn nhau ở trạng thái dẫn nên điện áp sụp rất sâu. Nhờ đó nó có điện áp kẹp thấp nhất trong ba loại, và làm được điều đó trên một die nhỏ, nghĩa là điện dung thấp. Đây là khả năng bảo vệ tốt nhất trên mỗi micromet vuông, và đồng thời cũng là loại sẽ nằm đó dẫn mãi nếu đường nguồn cho phép.
Vậy nên thứ tự quan trọng không phải là "loại nào tốt nhất". Gập càng sâu thì kẹp càng tốt, die càng nhỏ, điện dung càng thấp, và khả năng đường nguồn giữ nó dẫn cũng càng cao. Bạn đang chọn vị trí của mình trên sự đánh đổi đó, và câu trả lời phụ thuộc hoàn toàn vào việc đường mạch ấy có mang nguồn DC hay không.
Phát hiện ngay trên datasheet
Trước khi một linh kiện bảo vệ được đặt lên một đường mạch có điện, hãy kiểm tra ba điều:
- Tìm điện áp duy trì. Nếu datasheet có ghi Vh, hãy so nó với điện áp lớn nhất của đường nguồn. Nếu Vh thấp hơn thì linh kiện đó có thể khoá trên đường mạch đó.
- Nhìn đường cong I-V hoặc TLP. Nếu đường cong gập ngược thì đó là linh kiện snapback, bất kể lời quảng cáo nói gì. Nếu nó đi thẳng lên thì không phải.
- Xem nhà sản xuất có công bố hay không. Một số hãng không công bố điện áp duy trì. Nếu bạn định đặt một linh kiện lên đường nguồn đang sống mà thiếu con số này, hãy yêu cầu, hoặc chọn linh kiện có công bố.
Có một thứ không nên dựa vào: mã linh kiện. Tiền tố chỉ là tên dòng sản phẩm, không bảo đảm cơ chế dẫn, và điều này đúng với cả ngành, kể cả danh mục của chúng tôi: cùng một dòng có thể chứa cả hai loại. Thứ quyết định là ba phép kiểm tra ở trên. Nếu bạn không muốn rà từng mã trong cả một BOM, hãy gửi cho chúng tôi các mã đang nằm trên những đường nguồn có điện, chúng tôi sẽ đối chiếu điện áp duy trì với điện áp đường nguồn của bạn.
Snapback không phải linh kiện tồi
Sẽ rất dễ để kết bài bằng câu "tránh dùng snapback", nhưng như thế là sai. Trên đường dữ liệu tốc độ cao, snapback thường là lựa chọn tốt hơn: nó cho điện áp kẹp thấp hơn và làm được điều đó với điện dung rất nhỏ, đúng thứ mà một làn nhiều gigabit cần. Và đường dữ liệu không mang nguồn DC, nên sau xung không có gì để giữ linh kiện ở trạng thái dẫn.
Cùng một linh kiện, trên đường dữ liệu là lựa chọn xuất sắc, còn đặt ngang một đường nguồn thì thành gánh nặng. Nó chưa bao giờ là linh kiện tồi. Nó là một linh kiện tốt đặt nhầm chỗ.
Tóm tắt
- Một linh kiện bảo vệ hồi phục sau khi tắt bật nguồn là đã bị khoá, không phải bị hỏng.
- Hai lỗi cùng mang một tên: thyristor ký sinh bên trong chip, và linh kiện bảo vệ tự giữ mình ở trạng thái dẫn. Linh kiện nào đang nóng lên thì chính nó đã khoá.
- Linh kiện snapback gập về một điện áp duy trì. Nếu đường nguồn nằm trên mức đó, chúng sẽ cứ dẫn.
- Hãy so Vh với điện áp lớn nhất của đường nguồn trước khi so điện áp kẹp.
- Snapback hợp với đường dữ liệu không mang nguồn; với đường nguồn đang sống hãy dùng kẹp thông thường.