Forum: Mikrocontroller und Digitale Elektronik mit weniger Microcontrollerpins auskommen


von Hans M. (hansilein)


Lesenswert?

Hallo,
ich benutze zur zeit einen Atmega 1280 um auf vielen leitungen(14)
digitale signale zu erfassen. Es geht mir um die Zeitdifferenz zwischen
den positiven flanken von festen Leitungspaaren sowie das wieder auf
null gehen.
Nun habe ich überlegt, daß ich mit einem kleinen cpld einen wesentlich
kleineren, billigeren und leichter zu lötenden Controller nehmen könnte.

Ist das eine sinnvolle Idee? Dem stopwatch-beispielprojekt von xilinx
entnehme ich, daß die Datenerfassung im cpld kein großes problem sein
sollte, aber wie kann ich die Information an den Controller übertragen?

Signale wären beispielsweie:
anstieg in 2 ms auf kanal 2
nix
nix
anstien in 6.4 ms auf kanal 3
nix
kanal 2 aus
nix
kanal 3 aus

Ein einfaches serielles Protokoll braucht wohl einen fifo, kann man den
im cpld realisieren? Block-ram gibts ja nicht.

Viele Grüße,
Hansi

von woodchuck (Gast)


Lesenswert?

Also sorry, der ATmega1280 besitzt max. 86(!) IOs. Da solltest Du uns 
mal erklären, warum das Optimieren von 14 IOs zu einem kleineren AVR 
führen kann!? Der Rest scheint ja benutzt zu sein?

von MaWin (Gast)


Lesenswert?

Ein CPLD bzw. FPGA erlaubt zumindest eine wesentlich höhere 
Zeitauflösung, im sub-Mikrosekunden-Bereich statt im 
Millisekundenbereich den der Prozessor softwaretechnisch erlaubt.

Aber die Daten müssen auch im schlechtesten Fall (rauschen an den 
Leitungen :-) vom CPLD an den Prozessor (bzw. zunaechst mal Speicher) 
weitergeleitet werden können.

Daher verwenden die üblichen LogicAnalyzer-Ansätze ein CPLD welches 
autark die Daten in ein RAM schreibt. Statt dem enfachsten Fall, in dem 
das RAM mit der Abtastrate getaktet wird und genau die Bit 
reingeschrieben werden, die den Eingangsleitungen entsprechen, kann man 
mit mehr Bits (einem Zeitstempel) die Anzahl der Datensätze verringern 
(es werden nur noch bei Änderungen Datensätze geschrieben) und damit die 
Speicherdauer verlängern. Das CPLD macht es dabei mit Leichtigkeit, die 
Adressen zu erzeugen und die Pegeländerungen zu erkennen, und ggf. bei 
Überlauf des Zeitstempels einen Fortsetzungsdatensatz zu schreiben.

Der Prozessor kann danach in Ruhe die Datensätze auswerten und z.B. 
daraus Diagramme zeichnen.

Bei FPGAs gibt es ggf. ausreichend grossen internen Speicher, aber ob 
das die preiswertere Methode ist, mag ich bezweifeln, es ist vielliecht 
die schnellere.

von ::: (Gast)


Lesenswert?

Zwischen AVR und CPLD empfiehlt sich ein SPI Interface, oder falls es 
pressiert ein Paralleles plus ein paar Handshake lines.

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.