De protcol-analyse-modules in de Multi Channel software verwachten digitale signalen: het niveau van het signaal is "hoog" danwel "laag" en de overgang van een niveau naar het andere gebeurt in een keer, in zo min mogelijk tijd. De exacte waarden voor "hoog" en "laag" hangen af van het systeem dat onderzocht wordt.
In de echte wereld komen mooie, schone signalen niet altijd voor, de niveaus voor "hoog" en "laag" kunnen afwijken van wat verwacht wordt en ze kunnen variëren in waarde in plaats van stabiel zijn. Ook kunnen er verstoringen als ruis en pieken op het signaal aanwezig zijn.
Hoewel de analyzers in de Multi Channel software ontworpen zijn om ook minder mooie signalen te kunnen verwerken, kan het zijn dat in sommige situaties de signalen te slecht zijn om de informatie in het signaal automatisch te kunnen decoderen.
De meting hieronder toont de SCL- en SDA-signalen van een I²C-communicatie. Het signaal vertoont veel ruis en ook vele stoorpieken. Ook de niveaus voor "hoog" en "laag" zijn niet helemaal juist.
Hierdoor is de I²C-analyzer-sink niet in staat de verstuurde informatie juist te decoderen, wat gezien kan worden aan de Herstart en de vele No ack-indicaties.
Om de I²C-analyzer de signalen wel juist te laten decoderen, zullen de signalen schoongemaakt moeten worden, waarbij de ruis en de stoorpieken verwijderd worden. Zowel het klok- en het data-signaal moeten beide afzonderlijk schoongemaakt worden. De eenvoudigste manier om dit te doen is om de methode voor een signaal in te stellen en zodra die helemaal juist ingesteld is, het gebruikte object te klonen voor het tweede signaal.
Een logische oplossing voor het probleem lijkt het signaal door een
Laagdoorlaatfilter-I/O te sturen, waardoor de ongewenste ruis en
stoorpieken weggefilterd worden.
Echter, het laagdoorlaatfilter is een eerste-orde filter, wat niet een steile karakteristiek
heeft.
Een goed digitaal signaal heeft erg steile flanken.
Een digitaal signaal filteren met een eerste-orde filter zal de flanken van het signaal
langzamer maken, als hieronder te zien is.
Door de minder steile flanken is het voor de I²C-analyzer lastiger de flanken in het signaal
juist te detecteren.
In ons voorbeeld is de I²C-analyzer nog steeds niet in staat het signaal juist te decoderen.
Een andere manier om ongewenste delen van een signaal te verwijderen is door een
Begrenzer-I/O te gebruiken.
Deze gebruikt twee door de gebruiker in te stellen limieten en alle delen van het ingangssignaal
die buiten deze twee limieten komen worden afgekapt op de limietwaarde.
Om de Begrenzer-I/O te gebruiken om dit signaal schoon te maken, moeten de limieten zo ingesteld worden dat alle delen van het signaal die "hoog" moeten zijn afgekapt worden op de hoge limiet en alle delen die "laag" moeten zijn afgekapt worden op de lage limiet. In onze signalen komen de "hoge" delen van het signaal nooit onder 2.2 Volt en komen de "lage" delen van het signaal nooit boven 1.5 Volt. Voor de veiligheid stellen we de limieten in binnen deze grenzen: de onderlimiet op 1.9 Volt en de bovenlimiet op 2.1 Volt. We verbinden de Begrenzer met ons ingangskanaal. Zoals hieronder te zien is, levert de Begrenzer ons mooie, schone digitale signalen op.
Hoewel de signalen nu schoon zijn, alle ruis en stoorpieken zijn verwijderd, hebben de
signalen nog niet de juiste niveaus.
I²C-signalen liggen tussen 0 en 3.3 Volt of tussen 0 en 5 Volt en onze signalen liggen tussen
1.9 en 2.1 Volt.
De I²C-analyzer herkent dat niet.
Voor het corrigeren van de niveaus wordt een Versterking/Offset-I/O aangemaakt en met de Begrenzer-I/O verbonden. De Versterking/Offset-I/O kan een signaal verschuiven en van grootte veranderen.
Het signaal uit de Begrenzer-I/O loopt van 1.9 Volt tot 2.1 Volt, terwijl de laagste waarde 0 Volt zou moeten zijn. Om daarvoor de te compenseren moet de Ingangsoffset van de Versterking/Offset-I/O op -1.9 Volt gezet worden. Het uitgangssignaal van de Versterking/Offset-I/O loopt nu van 0 tot 0.2 Volt.
Om ons signaal van 0 tot 5 Volt te laten lopen, in plaats van 0 tot 0.2 Volt, moet het 25 keer versterkt worden. De Versterking van de Versterking/Offset-I/O op 25 zetten zorgt daarvoor.
We hebben nu perfecte I²C-signalen, zonder ruis of stoorpieken en met de juiste niveaus.
De I²C-analyzer-sink is nu in staat deze signalen zonder problemen te decoderen, wat hieronder te zien is.