Forum: FPGA, VHDL & Co. Signaltap für i2c-Signale


von Tim S. (169)


Lesenswert?

Hallo Leute,
ich möchte mit einem arm cortex m3 einen Temperatursensor auslesen.
Der chip wird über i2c angesteuert/ausgelesen.
Leider habe ich kein oszi aber dafür das de0nano board.
Ich dachte man könnte doch den pin-ausgang(i2c) vom controller zum fpga 
führen und mit signaltap so die Leitung aufzeichnen.
Ist dies möglich/sinnvoll?

von 123abc (Gast)


Lesenswert?

Sofern der IO-Standard stimmt schon. Du musst berücksichtigen, dass I2C 
sehr langsam ist, daher solltest du auch einen sehr langsamen Systemtakt 
erzeugen (ca. 1 MHz). Sonst kannst du so gut wie gar nichts sehen, da 
der Speicher zu schnell voll läuft.

Dies ist definitiv eine "billige" Lösung für einen Logic-Analyzer ;-)

von ./. (Gast)


Lesenswert?

Du koenntest Dir ja den OLS auf den CycloneIV portieren.
Die 32 MB SDRAM sollten fuer einen LA von der Groesse her ja reichen :-)

von i2c++ (Gast)


Lesenswert?

Man sollte mit etwa der 10fachen Freuqenz abtasten, wenn man was sehen 
will. Problematisch bei I2C ist, dass es asynchron ist, d.h. durch das 
Ziehen der Clockleitung hängen die Pakete immer etwas anders.

Wenn man CLK-Leitungsprobleme beobachten will, muss es nochmal etwas 
feiner sein.

von Sigi (Gast)


Lesenswert?

Tim S.
>..
>Ist dies möglich/sinnvoll?
Möglich: ist dein I2C 5V? Falls ja, dann brauchst du noch einen
Levelshifter oÄ.
Sinnvoll: Ich selbst habe ein kleines Stratix-Board mit massig
5V-toleranten IOs, mit STP-II habe ich damit ein Billig-LA.
Und bei 2 Signalen kann man selbst bei kleinen Cyclones locker
mit 8-16KBit/Signal (evtl. wesentlich mehr) aufzeichnen, und das
ohne gross Code zu schreiben.

von Roger S. (edge)


Lesenswert?

SignalTap clock auf den 50Mhz board clock haengen,
Den 'Storage qualifier' auf 'Transition' stellen und diesen auf dem I2C 
SCL enablen.

Somit gibts nur einen Eintrag pro SCL Flanke, also massig Platz fuer I2C 
Telegramme.

Cheers, Roger

von P. K. (pek)


Lesenswert?

Roger Steiner schrieb:
> Somit gibts nur einen Eintrag pro SCL Flanke, also massig Platz fuer I2C
> Telegramme.

Andererseits wirst Du so Probleme mit Start/Stop-Conditions nicht 
erkennen. Um das ganze I2C-Protokoll zu erfassen, müsstest Du den 
Storage Qualifier auf "Simple or" stellen und sowohl SCL als auch SDA 
auf Transitions prüfen (nicht irritieren lassen durch die optisch 
unterschiedlich langen SCL-Phasen, weil SDA ja nicht immer wechselt...).

Willst Du übers Timing auch noch was erfahren, bleibt Dir nichts anderes 
übrig, als zu überlegen, wie lange Du aufzeichnen können musst, und dann 
die Oversampling-Clockfrequenz zu bestimmen (in der Regel sollte eine 
Sequenz von [Start, Address, Write, Stop] allenfalls noch ein a 
nschliessendes [Start, Address, Read, Stop] ausreichen, um die 
gängigsten Probleme zu finden...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.