mikrocontroller.net

Forum: FPGA, VHDL & Co. Hardware UARTs durch CPLD ersetzen?


Autor: Nils Hesse (irrenhaus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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... ;-)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  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

Autor: Tokyo Drift (tokyodrift)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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 :).

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Nils Hesse (irrenhaus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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... ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.