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
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.
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.
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.
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.
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.
>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
Wer ein Steinzeit CPLD in 5-Volt-Technik verwendet wird eben mit unverschämten Stromverbrauch bestraft.
Die Xilinx Teile sind 3.3V! Deshalb auch das XL am Ende.
Könnte man da dann nicht gleich einen Prozessor mit reinprogrammieren, do daß der AVR gar nicht mehr nötig ist?
@ 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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.