Resultaten van de hardwarefoutanalyse van de Floppy Emu

Niemand vindt het leuk om niet-werkende hardware te troubleshooten, en ik ben daarop geen uitzondering. Elke keer als ik een contractfabrikant vraag om een nieuwe batch Floppy Emu's te assembleren, zijn er altijd een paar die de QA-testen niet passeren. Wat gebeurt er met die exemplaren? Jarenlang hebben de opgehoopte QA-fouten in een stapel in de hoek van mijn kantoor gelegen, samen met een paar returns van klanten, wachtend op de dag dat ik tijd zou vrijmaken voor een onderzoek. Het heeft lang geduurd, maar de "Failure Analysis Day" is eindelijk aangebroken — of beter gezegd, de maand van de foutanalyse — en de resultaten waren behoorlijk interessant.

Hieronder volgt een overzicht van de unieke oorzaken van defecten die ik heb geïdentificeerd, en het aantal printplaten dat door elke oorzaak werd beïnvloed.

Diagnose van hardwareproblemen

Diagnose hardwareprobleemAantal
klokkristal / geen klok26
klokkristal / slechte klok16
defecte CPLD-chip6
microcontroller niet geprogrammeerd5
soldeerproblemen5
defecte microcontroller-chip4
kapotte display-header1
ontbrekend onderdeel1
gebarsten PCB1
geen probleem, goede printplaat1
onbekend, kon niet worden opgelost2

Klokkristal

Dit was een vreemde fout die aanvankelijk veel tijd kostte om op te sporen, maar zodra ik de symptomen herkende, besefte ik dat de meeste van mijn QA-fouten door dit probleem werden veroorzaakt. Ik heb vorige maand in een apart bericht uitgebreider geschreven over de mysteries van het klokkristal. Kort samengevat: tijdens mijn meest recente productieronde was mijn normale leverancier van klokkristallen uitverkocht. De contractfabrikant verving, met mijn goedkeuring, het kristal door een ander exemplaar met dezelfde specificaties. Dit had niets mogen beïnvloeden, maar op somehow deed het dat wel.

Bij 26 van de QA-fouten leek er helemaal geen functionerende klok te zijn. De printplaat deed absoluut niets wanneer de klokbron van de microcontroller werd omgeschakeld naar het externe kristal. Een verdere 16 exemplaren vertoonden enige mate van functionaliteit, maar met grillig gedrag of uitval bij hogere kloksnelheden. In eerste instantie wist ik niet zeker of dit kwam doordat de nieuwere kristallen een defect of kwetsbaarheid in het ontwerp van de Floppy Emu blootlegden, of dat het simpelweg werd veroorzaakt door defecte of beschadigde kristallen. Uiteindelijk kwam ik tot de conclusie dat de kristallen waren beschadigd door ruwe behandeling of oververhitting tijdens de assemblage. Het vervangen van de kristallen en het herprogrammeren van de printplaten loste alle problemen op.

CPLD-chip

De Xilinx CPLD-chip op de Floppy Emu is een fragiel onderdeel dat al lange tijd een bron van uitdagingen is. Vóór het "kristal-debacle" van dit jaar was de CPLD de grootste bron van fouten die ik had waargenomen. Omdat deze chip direct is verbonden met de externe interface van de Floppy Emu, vangt hij de volle laag op bij elke statische ontlading of elektrische spanning. Het is een 3.3V-onderdeel dat 5V-tolerant is, maar die 5V-tolerantie is soms wat twijfelachtig geweest, althans in de manier waarop het hier wordt gebruikt.

Symptomen van een defecte of slechte CPLD kunnen zijn: fouten bij de disk-emulatie, oververhitting of grillig gedrag. Meestal blijft het apparaat functioneel en verschijnt er tekst op het display, maar werken de diskfuncties niet meer. In extreme gevallen werkt de defecte CPLD als een harde kortsluiting van de voeding naar de aarde, waardoor er helemaal niets meer werkt. Het vervangen en herprogrammeren van de CPLD loste alle problemen met deze printplaten op.

Microcontroller niet geprogrammeerd

Amusant, of depresserend, afhankelijk van je perspectief: de derde belangrijkste oorzaak van QA-fouten was dat de microcontroller simpelweg niet was geprogrammeerd. Iemand bij de contractfabrikant is in slaap gevallen, is het overzicht verloren, heeft een PCB in de verkeerde stapel gelegd, of iets dergelijks. Een printplaat met een ongeprogrammeerde microcontroller lijkt op het eerste gezicht volledig dood, maar reageert nog wel in de debugger. Het kost slechts een paar seconden om de chip te flashen en alles werkend te krijgen.

Soldeerproblemen

Elk component moet elektrisch verbonden zijn met de PCB via soldeer. Soldeerproblemen kunnen met het blote oog lastig te spotten zijn, maar vallen onder vergroting meestal direct op. Daarom is een van mijn eerste stappen bij het troubleshooten meestal het bekijken van een problematische printplaat bij 10x vergroting. Ik zou echt een mooie desktopmicroscoop moeten aanschaffen, maar voorlopig gebruik ik een goedkope 10x juweliersloep, wat voldoende werkt.

Een paar printplaten hadden op sommige plaatsen te veel soldeer, wat resulteerde in een soldeerbrug die onbedoeld twee aangrenzende IC-pinnen verbond. Maar het kwam vaker voor dat er sprake was van onvoldoende soldeer of slechte soldeerverbindingen, waarbij een IC-pin op het solderen-pad van de PCB rustte zonder er daadwerkelijk aan vastgebonden te zijn. Gelukkig waren beide problemen eenvoudig op te lossen met een soldeerbout en wat vloeimiddel.

Defecte microcontroller-chip

De microcontroller op de printplaat is een andere potentiële bron van fouten. In mijn ervaring zijn deze microcontrollers behoorlijk robuust, en de enige defecten die ik heb gezien zijn ontstaan in het veld wanneer klanten de Floppy Emu-kabel per ongeluk omgekeerd hebben aangesloten op hun Apple II Disk II-controller. Dit is zorgwekkend eenvoudig te doen, aangezien de Disk II-controller open pinnen heeft in plaats van een omhulde en gecodeerde header. Een omgekeerde aansluiting resulteert in +12 en -12 volt op de pinnen van de mcu, wat deze fataal wordt.

Helaas zijn de symptomen van een defecte microcontroller bijna identiek aan die van een defect klokkristal: een volledig niet-reagerende printplaat zonder debugger-activiteit. Ik moest de geschiedenis van elke niet-reagerende printplaat herzien om te kunnen gissen welk probleem de oorzaak was. In sommige gevallen gokte ik verkeerd; ik verving de microcontroller, en toen dat niet hielp, verving ik ook het klokkristal.

Overig

De overige problemen waren allemaal incidenten. Bij één printplaat was de display-header fysiek kapot en ontbrak er een pin, wat resulteerde in een leeg display. Een andere printplaat zakte door de QA omdat de LED niet oplichtte, behalve dat er helemaal geen LED was! Er was alleen een leeg pad op de PCB. Ook stuitte ik op een defect door een PCB die fysiek gebarsten was — een lange lijn over de breedte van de printplaat die alleen duidelijk zichtbaar was onder licht vanuit een specifieke hoek. Twee andere printplaten boden weerstand bij mijn pogingen om de oorzaak van de defecten aan te wijzen; na er te veel tijd aan te hebben besteed, heb ik ze in de afvalbak gegooid.

De allerlaatste printplaat die ik onderzocht, bleek helemaal geen problemen te hebben. Ik heb deze uitgebreid getest en hij werkte perfect. Deze kan zijn gezakt voor de QA door iets externs, zoals een slechte voeding of kabel, of hij is simpelweg verkeerd gecategoriseerd.

Eindresultaten

Van de 68 Floppy Emu's in de stapel voor foutanalyse ben ik erin geslaagd om er 65 te redden. Dat is een behoorlijk solide percentage! Ik heb geleerd de symptomen van bepaalde oorzaken te herkennen, zodat ik ze sneller kan aanpakken als ik ze opnieuw tegenkom. Belangrijker nog is dat de lessen uit deze analyse (vooral over de klokkristallen) me zullen helpen bij het maken van aanpassingen in het ontwerp en het assemblageproces, zodat ik het aantal toekomstige QA-fouten kan verminderen. Kennis is macht, zoals ze zeggen, en nu heb ik veel macht.