Hallo, ich Interessiere mich gerade sehr dafür, einmal mit CPLD's bzw. FPGA's "rumzuspielen". Deshalb suche ich im Moment nach einem Projekt, in dem es Sinn macht, einen CPLD einzusetzen. Nun habe ich gerade ein Projekt am Laufen, in dem ich einen STM32F105VC nutze, um von Ethernet oder USB (wahlweise) auf 5 verschiedene UART Schnittstellen zu übersetzen. Nun habe ich mich gefragt, ob es sinnvoll wäre (und wenn es nur keine Nachteile bringt aber mir den Spaß mal mit einem CPLD herumzuspielen ;) ), die Hardware UARTs durch den CPLD zu ersetzen. Die UARTs werden durchgängig mit 250kit/s beschrieben - und das ohne Pause. Da sollte es doch Möglich sein effizient die Daten über eine z.B. SPI Schnittstelle an einen CPLD zu schicken, diesen per Pins oder Befehl über die SPI Schnittstelle zwischen den 5 Ausgängen/Eingänge umzuschalten und den CPLD so zu programmieren, dass er es RS232 konform auf meine Pinleisten ausgibt. Also die UARTs durch den CPLD ersetzt. Gedacht hatte ich dabei an einen Xilinx CoolRunner-II XC2C32A (vermutlich der XC2C32A-6VQG44C). Nun meine Frage: Ist es möglich dies zu tun (da bin ich mir eigentlich ziemlich sicher, dass es "ohne weiteres" möglich ist) - aber vor allem: Ist es sinnvoll (wie gesagt, und wenn nur zum Spaß) dies zu tun - oder gibt es zu viele Nachteile?. Der Vorteil wäre, dass ich am Mikrocontroller weitere Pins freibekomme, da diese echte Mangelwahre sind :). Danke schonmal und viele Grüße Nils
Nils Hesse schrieb: > Nun meine Frage: Ist es möglich dies zu tun Ja. > Ist es sinnvoll (wie gesagt, und wenn nur zum Spaß) dies zu tun Nein. > - oder gibt es zu viele Nachteile?. CPLDs mit ihren paar Flipflops (hat der XC2C32A tatsächlich nur 32 davon?) sind einfach zu klein für die Aufgabe. SPI braucht für das Schieberegister ein paar FFs, der Vorteiler des UARTs braucht FFs, der UART selber braucht welche, und schwupp sind sie alle weg. Sieh dir mal meine SIO an: http://www.lothar-miller.de/s9y/categories/49-RS232-IO Damit ist ein 9536 CPLD voll. Und dann fehlt dir immer noch die SPI-Schnitte und die anderen 4 SIOs... :-o Fazit: Nimm ein kleines FPGA, dann hast du diese Sorgen los...
Moeglich ist es sicher. Das Senden ist einfach. die Bits mit dem 250kBit Clk raushaemmern, vorne ein Startbit dran, hinten ein Stopbit. Das Empfangen ist etwas schwieriger. Da hat man ein Schieberegister, das auf der 8 oder 16fachen Geschwindigkeit laeuft, und da wird erst mal synchrosnisiert. Wenn das Start und Stopbit eindeutig, dh per Mehrheitsetscheid der 8 oder 16 Subsamples erkannt wird, rastet der Takt von 250kBit ein. Dann werden die dazwischenliegenden Bits ausgelesen.
Lothar Miller schrieb: >> Ist es sinnvoll (wie gesagt, und wenn nur zum Spaß) dies zu tun > Nein. Ich korrigiere mich: Ja. Ich habe das seinerzeit eigentlich auch nur zum Spass gemacht... ;-)
@ Nils Hesse (irrenhaus) >Nun habe ich mich gefragt, ob es sinnvoll wäre (und wenn es nur keine >Nachteile bringt aber mir den Spaß mal mit einem CPLD herumzuspielen ;) >), die Hardware UARTs durch den CPLD zu ersetzen. Kann man machen. >Die UARTs werden durchgängig mit 250kit/s beschrieben - und das ohne >Pause. Kein Thema. >Also die UARTs durch den CPLD ersetzt. Geht. Aber hast du 5 UARTs oder einen UART und einen Multiplexer? >Gedacht hatte ich dabei an einen Xilinx CoolRunner-II XC2C32A >(vermutlich der XC2C32A-6VQG44C). Vergiss es. Mit 32 Makrozellen schaffst du kaum einen UART. >Ist es sinnvoll (wie gesagt, und wenn nur zum Spaß) dies zu tun - oder Zum Spaß ist fast alles sinnvoll. ;-) Nimm einen größeren CPLD mit 64, 128 oder besser gleich 256 Makrozellen, dort bekommtst du deinen UART + SPI rein. GGf. auch zwei oder drei UARTs. Für mehr braucht es ein FPGA. MFG Falk
>Fazit: Nimm ein kleines FPGA, dann hast du diese Sorgen los... Dafür kommen dann ganz andere Sorgen. Zum Beispiel die mit dem Platine routen. FPGAs sind zwar an sich super, aber mal ganz ehrlich, erstmal eine FPGA Platine zu entwerfen ist schwieriger als das ganze CPLD Zeug zusammen. Auch die CoolRunnerII sind afik relativ kompliziert, zumindest laufen die doch mit 2,5V oder? Nimm doch einen XC9500(XL), die sind super. Die gibts glaub ich bis 108 Makrozellen im PLCC Package, d.h. die kannst du Sockeln und den Sockel auf ne 2,54mm Raster Platine löten. Ob du in 108 Makrozellen 5 UARTs + SPI kriegst wäre die Frage, ich denke es wird knapp aber wenn man gut programmiert und den Takt intelligent wählt passts rein. XC9500 läuft mit 5V, XC9500XL mit 3,3V. Soweit ich weiß brauchen die nichts außer Kondensatoren an allen VCC Pins und einen JTAG Programmer. Wie es bei den CoolRunnerII aussieht weiß ich nicht. Glaube aber nicht dass es die im PLCC Package gibt. Mein Tipp: mach den VHDL Code und guck obs in nen XC95108-PC84 passt. Dann alles hübsch auf Lochraster und fertig :).
@Julian X. (tokyodrift) >Auch die CoolRunnerII sind afik relativ kompliziert, zumindest laufen >die doch mit 2,5V oder? Kernspannung 1,8V, IOs 2,5-3,3V. > Nimm doch einen XC9500(XL), die sind super. Als Heizplatte ;-) Nimm wenigstens die XL, die sind billiger. >Sockeln und den Sockel auf ne 2,54mm Raster Platine löten. Ob du in 108 >Makrozellen 5 UARTs + SPI kriegst wäre die Frage, No way! UART+SPI, mit VIEL Know How vielleicht 2 UARTS. >Wie es bei den CoolRunnerII aussieht weiß ich nicht. Genau so. > Glaube aber nicht dass es die im PLCC Package gibt. Nein. Es gibt aber fertige, preiswerte Evalboards. MfG Falk
Julian X. schrieb: >> Fazit: Nimm ein kleines FPGA, dann hast du diese Sorgen los... > Dafür kommen dann ganz andere Sorgen. Zum Beispiel die mit dem Platine > routen. FPGAs sind zwar an sich super, aber mal ganz ehrlich, erstmal > eine FPGA Platine zu entwerfen ist schwieriger als das ganze CPLD Zeug > zusammen. Sieh mal die Spartan 3 AN an. Da kommst du mit einem TQFP 144 gar nicht so sehr in Bedrängnis: kein externes Config-ROM, nur 2 Versorgungsspannungen (3,3V und 1,2V) und recht moderater Strombedarf.... Oder auch die Lattice MachXO, die in der selben Liga spielen... Was will mam mehr?
Hallo, vielen Dank für eure Antworten. Also im Endeffekt werd ich mir dann wohl mal die FPGA's anschauen. Falk Brunner schrieb: > Geht. Aber hast du 5 UARTs oder einen UART und einen Multiplexer? Habe 5 UARTs, wollte die volle Anzahl des STM's ausnutzen wenn ich sie schon zur Verfügung habe. Lothar Miller schrieb: > Sieh mal die Spartan 3 AN an. Die werd mich mir mal anschauen, vielen Dank für den Tipp :). Vor dem erstellen einer Platine dafür scheue ich mich nicht, hab mittlerweile ein wenig Erfahrung gesammelt und ansonsten funktioniert Try & Failure ;) :). Gibt es denn einen Weg, wie man im Voraus schon ca. abschätzen kann, wie groß ein CPLD/FPGA sein sollte für einen bestimmten Zweck? Wahrscheinlich müssen auch hier Erfahrungswerte gesammelt werden, oder sehe ich das falsch? Kann man mit CPLD's denn dann effektiv mehr machen, also so etwas wie einen Puffer? Mich wundert grade doch, das tatsächlich so dermaßen wenig da rein passt... Hatte doch zumindest ein klein wenig mehr erwartet :). Danke & Grüße Nils
Nils Hesse schrieb: > Gibt es denn einen Weg, wie man im Voraus schon ca. abschätzen kann, wie > groß ein CPLD/FPGA sein sollte für einen bestimmten Zweck? > Wahrscheinlich müssen auch hier Erfahrungswerte gesammelt werden, oder > sehe ich das falsch? Nein, Erfahrung ist hier die halbe Miete... Und die dazu passende Hardwaredenkweise. Wenn du mir eine Aufgabe stellst, dann übersetze ich die in Gedanken gleich in Flipsflops und Logik. Und kann dann schon anhand der benötigten Speicherelemente mal abschätzen, ob da mit CPLDs was geht. > Kann man mit CPLD's denn dann effektiv mehr machen, also so etwas wie > einen Puffer? Mich wundert grade doch, das tatsächlich so dermaßen wenig > da rein passt... CPLDs kommen von den GALs, GALs kommen von den PALs. > Hatte doch zumindest ein klein wenig mehr erwartet :). "Speichern" war nie das originäre Ziel von PALs. Am liebsten wurden die Dinger in Adressdecodern verbaut. Und dort mussten sie eine sehr mächtige Logik abgebilden können. So konnten 10 74er-TTL Chips durch 1 PAL ersetzt werden, und das war schon was... ;-)
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.