Forum: Mikrocontroller und Digitale Elektronik Port-Erweiterung AVR mit CPLD 'im Speicher'


von Wolfgang B. (logox2)


Lesenswert?

Hallo Leute,

hat sich schon mal jemand Gedanken gemacht, wie man eine Porterweiterung 
des AVR's realisieren könnte, in dem man einen CPLD/FPGA so-zu-sagen als 
Speicher an den AVR anschließt?

Gedacht war:
-CPLD über Adress/Datenbus an den AVR
-CPLD programmieren
-und dann ähnlich dem AVR, in dem man die bekannten Register DDRx, PINx, 
PORTx für weitere Ports im oberen Speicherbereich definiert (in dem der 
CPLD liegt), verwendet?

Somit müsste man sich die externen Schieberegister sparen können, und 
die Sache müsste auch schneller gehen, da man nicht auf den Takt des 
SPI/TWI angewiesen ist.

Ist euch solch ein Projekt oder ähnliches schon mal untergekommen? Ich 
habe bisher auf meiner Suche nichts derartiges gefunden. Oder wäre das 
allg. Interesse da, sowas mal zu realisiern?

Auf Antworten/Kritik/Meinungen/Diskussion freu ich mich.

mfg
Wolfgang

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Im Gegensatz zu AVR und Schieberegistern dürfte Dein CPLD/FPGA ein 
wahrer Stromfresser sein. Wenn Dich das nicht stört, kannst Du es ruhig 
so machen. Eventuell mußt Du etliche Pegelwandler einplanen, wenn Dein 
CPLD nicht 5V-tolerant ist und der AVR mit 5V laufen muß. Das macht das 
Projekt unnötig komplex.

von Morin (Gast)


Lesenswert?

Es würde sich evtl. lohnen wenn du Logikfunktionen in den CPLD 
auslagerst und ihn nicht nur als simple Porterweiterung benutzt. Selbst 
dann tut es wahrschreinlich ein sehr kleiner CPLD (wie siehts denn mit 
dem Stromverbrauch von kleineren Bausteinen - GALs etc. - dem gegenüber 
aus?)

Ich denke da z.B. an eine Decoderlogik, so dass du nur ein paar wenige 
Bits an den CPLD senden muss und der dann "schon weiß", was er an seinen 
externen Pins machen muss. Das macht dann den Programmcode etwas 
kleiner, was sich gerade bei den Winzlingen unter den AVRs sicher 
bemerkbar macht.

Letztendlich musst du aber auch vergleichen, ob ein AVR im größeren 
Package nicht billiger kommt.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ein Mega 128 gegenüber einem AVR plus CPLD lohnt sich nicht nur vom 
Preis her, sondern auch vom gesparten Verdrahtungsaufwand. Und man hat 
über 50 I/O-Pins, das reicht für viele Anwendungen. Wieviele I/Os hat 
ein "kleines" CPLD im TQFP oder TSOP44 doch gleich, abgesehen von den 
Steuerpins zum Controller? Ein Mega128 braucht bei 16Mhz etwa 30mA 
komplett, das nimmt ein Xilinx 9572XL schon als Ruhestrom auf, bei 
einigen mit 16Mhz getakteten Makrozellen werden das schnell 120mA.

von sechsmalzwei (Gast)


Lesenswert?

Dann nimm eben kein stromfressendes Xilinx 9572XL, sondern ein Altera 
Max3000. Da geht die Stromkennlinie mit 10mA durch Null. Ein CPLD muss 
man nicht bei 200MHz betreiben, es gehen auch 4MHz, oder auch 1MHz. Je 
weniger MHz, desto weniger Strom braucht es. Ferner kosten nur diese 
Makrozellen Strom, die auch schalten. Ein paar Register, die hin und 
wieder Latch spielen, ziehen fast nichts. Ich habe auch schon CPLDs als 
AVR Erweiterung verwendet. Meist wenn das Timing wichtig war. Das CPLD 
zieht ein Timing durch, kennt keine Interrupts. Einfachere 
Porterweiterungen macht man mit einem HC595, einen Schieberegister mit 
Latch, das an den SPI, oder so angeschlossen wird.

von Torben (Gast)


Lesenswert?

Hallo,

im Arthernet Projekt von Guido Fischer wurde ein CPLD für Memory Mapped 
I/O benutzt. Das Programm hatte meines Wissens Haagen programmiert und 
steht auf der HP zum Download zur Verfügung.

Für TWI / I²C ist ein Master / Slave der CPLD zu klein, vielleicht 
reicht nur ein Slave Core. Der Core ist in der Codesammlung zufinden und 
müsste auf Slave verkleinert werden.

von Hagen R. (hagen)


Lesenswert?

>im Arthernet Projekt von Guido Fischer wurde ein CPLD für Memory Mapped
>I/O benutzt. Das Programm hatte meines Wissens Haagen programmiert und
>steht auf der HP zum Download zur Verfügung.

Stimmt. Allerdings hatte der noch andere Aufgaben zu erledigen durch die 
er erst aus meiner Sicht einen Sinn ergab. Er arbeitet dort statisch 
also ohne Takt und denoch ist der Strombedarf dieser Xilinx CPLDs 
unverschämt. Das Memory Mapped IO erledigte dabei eine Port-Erweiterung, 
memory mapped externe Geräte mit Addressdekodierung, Anpassung der 
ungewöhnlichen Steuersignale des FTDI USB-RS232 Wandlers an den AVR so 
das man Memory Mapped auf den FTDI zugreifen konnte, Ersatz des externen 
Adresslatches auch wenn Guido darauf verzichtet hat, und eben ein 
Bank-Switching damit man merh aks 64K (bis zu 512Kb) SRAM am AVR 
betreiben kann und zwar so das es auch transparent ist und man auf den 
Shaddow-RAM zugreifen kann. Also ne ganze Menge an Holz für die par 
Makrozellen.

Als reine Porterweiterung wenn unbedingt nötig würde ich diese PCFxxxx 
I2C Teile benutzen, auch wenn sie bisle teuer sind, preiswerte als CPLDs 
auf jeden Fall. Aber am preiswertesten sind immer noch Shift-Register 
mit IO-Latch und man hat die Level-Shifting Probleme auch noch reduziert 
auf die par Steuerleitungen. Ansonsten gehen ja auch parallele Latches 
die man dann eben von "Hand" addressekodieren muß, falls es um 
Performance geht. Unter Umständen geht das dann sogar schneller als wenn 
man ein Memory Mapped IO über den internen AVR SRAM Bus erledigt, 
defakto 1 CPU Takte Ausleserate wenn synchon dazu ein Timer den 
Addressdekoder taktet.

Gruß Hagen

von Unbekannter (Gast)


Lesenswert?

Wer ein Steinzeit CPLD in 5-Volt-Technik verwendet wird eben mit 
unverschämten Stromverbrauch bestraft.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Die Xilinx Teile sind 3.3V! Deshalb auch das XL am Ende.

von Rolf Magnus (Gast)


Lesenswert?

Könnte man da dann nicht gleich einen Prozessor mit reinprogrammieren, 
do daß der AVR gar nicht mehr nötig ist?

von Falk B. (falk)


Lesenswert?

@  Rolf Magnus (Gast)

>Könnte man da dann nicht gleich einen Prozessor mit reinprogrammieren,
>do daß der AVR gar nicht mehr nötig ist?

In einn CPLD? Nicht wirklich. In ein FPGA. JA! Picoblaze rulez!

MfG
Falk

von Wolfgang B. (logox2)


Lesenswert?

Danke für die Infos und Meinungen.

Die Idee war, mit dem CPLD im Speicher, auf einer Experimentierplatine 
(mit at90can128) für die dort vorhandenen Zusätze wie Ethernet, RFM12, 
ZigBee, USB-Host (Vinculum), Uart usw. die CS-Signale erzeugt und 
vielleicht einfach noch ein paar LED's oder so.

Die Platine soll eben nicht immer umverdrahtet werden sondern mit 
einfachen Befehlen zusätzliche Pin's ein- und ausschalten können.

Ich hab mir mal das Arthernet angeschaut, aber noch nicht richtig 
durchgeschaut. Ich denke so ähnlich wie da möchte ich das auch 
realisieren, nur das der CPLD hier jetzt 'weniger' zu tun bekommt.

mfg
Wolfgang

von sechsminuszwei (Gast)


Lesenswert?

Einen Prozessor ins FPGA kann man machen, klebt dann aber an den Tools, 
die zum FPGA gehoeren. Compiler, Simulator, Debugger usw. Die sind 
moeglicherweise gut und praktisch, moeglicherweise aber auch nicht. 
Sollt man vorhert anschauen.

von Wolfgang B. (logox2)


Lesenswert?

Mittlerweile hab ich bei Atmel die CPLD's entdeckt. Ich war auf der 
Suche nach Low-Power und dachte mir, bei Atmel könnten Sie da auch was 
haben.

http://www.atmel.com/products/PLD/

Dabei bin ich auf ein App-Note gestoßen: 'MCU Port Expansion using 
ATF15xx CPLDs   (6 pages, revision A, updated 09/06)
This application note describes how to use an ATF15xx CPLD to expand the 
number of I/O ports for a microcontroller.'

http://www.atmel.com/dyn/resources/prod_documents/doc3635.pdf

Ist zwar nicht ganz das was ich ursprünglich dachte, werd aber mal 
weiter schauen, vielleicht lässt sich daraus ja was machen.

MfG
Wolfgang

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.