www.mikrocontroller.net

Forum: FPGA, VHDL & Co. 2 Noob-Fragen zu CPLD


Autor: André G. (kreischer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

rein aus Interesse:

1. Können in einem CPLD (bzw. FPGA) sequenzielle Abläufe, wie z.B. das 
Initialisieren eines LCD-Displays implementiert werden?

2. Wovon sollte man die Anzahl der benötigten Makrozellen abhängig 
machen, mir fehlt da jegliche Relation. Bei einem MikroController weiß 
ich, wenn ich z.B. einen Temperatursensor auslesen und über UART 
ausgeben will, sind 1k Flash vollkommen ausreichend. Wie muss man sich 
das bei CPLD's vorstellen?

Gruß,
André

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich kann dir nur zu (1) antworten :)

Ja, eine Ansteuerung von Display sollte machbar sein. Ich würde das per 
FSM lösen.

Gruß
Lasse

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

Bewertung
0 lesenswert
nicht lesenswert
André G. schrieb:
> 1. Können in einem CPLD (bzw. FPGA) sequenzielle Abläufe, wie z.B. das
> Initialisieren eines LCD-Displays implementiert werden?
Ja. Problemlos...
Beitrag "Re: EA DOG-M initialisieren"
Naja, einige graue Haare kann das einen Anfänger evtl. schon kosten... 
;-)

> 2. Wovon sollte man die Anzahl der benötigten Makrozellen abhängig
> machen, mir fehlt da jegliche Relation.
Bei CPLDs gilt: 1 Makrozelle = mächtige Logik + 1FF.
Wenn du also einen 16Bit-Zähler basteln willst, brauchst du schon mal 16 
Makrozellen. Vor jedem könnte allerdings eine mächtige Logik aufgebaut 
werden.

Bei FPGAs heißt es: klitzekleine Logik + 1 FF
Da gibt es FFs im Überfluss. Allerdings müsste eine größere Logik erst 
mal aus mehreren LUTS zusammenverdrahtet werden.

> Wie muss man sich das bei CPLD's vorstellen?
Erfahrung und die passende Hardwaredenkweise, die durch Erfahrung 
entsteht... ;-)

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 1. Können in einem CPLD (bzw. FPGA) sequenzielle Abläufe, wie z.B. das
> Initialisieren eines LCD-Displays implementiert werden?

Ja, auf verschiedenste Arten. State-Machine, programmierbare 
State-Machine, dedizierte Softcore-CPU, in eine schon vorhandene 
Softcore-CPU "mit reingequetscht", ...

Welche dieser Möglichkeiten du sinnvollerweise nutzt hängt von den 
genauen Gegebenheiten ab.

> 2. Wovon sollte man die Anzahl der benötigten Makrozellen abhängig
> machen, mir fehlt da jegliche Relation. Bei einem MikroController weiß
> ich, wenn ich z.B. einen Temperatursensor auslesen und über UART
> ausgeben will, sind 1k Flash vollkommen ausreichend. Wie muss man sich
> das bei CPLD's vorstellen?

Genau wie du es jetzt bei einem uC machst: mit Erfahrung ;)

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

Bewertung
0 lesenswert
nicht lesenswert
OT:
André G. schrieb:
> Bei einem MikroController weiß ich,
> wenn ich z.B. einen Temperatursensor auslesen und über UART
> ausgeben will, sind 1k Flash vollkommen ausreichend.
Da hast du übrigens m.E. aber sehr sehr hoch gegriffen,
mit 100 Befehlszeilen müsstest du da locker hinkommen:
10 für die Initialisierung, 5 für die AD-Wandlung,
60 für die Umwandlung und 15 zum Senden über die SIO....  :-/

Und das wären dann selbst bei einem uC mit 2 Bytes/Befehl erst mal 200 
Bytes...

Autor: André G. (kreischer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank,

bin ja vollauf begeistert, wie schnell man hier mit Antworten eingedeckt 
wird ;)

Auf jeden Fall hab ich dank Euch ne Menge Ansätze, die mir sicher 
weiterhelfen werden.

Als nächsten Schritt werd ich mir die benötigte HW zurechtstricken und 
meine Erfahrungen auf dem Gebiet sammeln, denn da muss ich Euch recht 
geben, Wissen kommt durch Erfahrung... ;)

Gruß,
André

@Lothar Miller: Nicht immer alles so penibel sehen, es war lediglich als 
spontan daher gesagtes Beispiel angeführt ohne jedwede Wertung oder 
Vorab-Berechnung. Dennoch stimmt meine Aussage dank Deiner Berechnung 
weiterhin, 1k Flash reicht ;)

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

Bewertung
0 lesenswert
nicht lesenswert
André G. schrieb:
> Dennoch stimmt meine Aussage dank Deiner Berechnung weiterhin,
> 1k Flash reicht ;)
Richtig.
Mein Tipp: nimm ein großes FPGA. Dann reicht es auch... ;-)

> rein aus Interesse:
Falls sich das Interesse verfestig: fang gleich mit FPGAs an. Die 
EVAL-Boards dafür sind nicht viel teurer als die von CPLDs und sogar 
Lattice (die mit CPLDs groß geworden sind) nennen ihre kleinen FPGAs 
verschämt CPLD, um die Hemmschwelle zu senken... ;-)

Autor: Lattice User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> sogar
> Lattice (die mit CPLDs groß geworden sind) nennen ihre kleinen FPGAs
> verschämt CPLD, um die Hemmschwelle zu senken... ;-)

Um fair zu sein, Lattice listet die MachXO,MachXO2 in beiden Kategorien 
(PLD und FPGA). Sie zielen aber ganz klar auf den PLD Markt.

Ein weiterer Nachteil von FPGAs gegenüber CPLDs sollte aber nicht 
vergessen werden: CPLDs sind sofort bereit, FPGAs brauchen eine gewisse 
Konfigurationszeit, auch die MachXO.

Autor: André G. (kreischer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Richtig.
> Mein Tipp: nimm ein großes FPGA. Dann reicht es auch... ;-)

;)

Lothar Miller schrieb:
> Falls sich das Interesse verfestig:

Das Interesse hat sich auf jeden Fall verfestigt, von vorn herein schon, 
bringt ja für den Job auch ne Menge sich privat damit auseinander zu 
setzen.

Spricht prinzipiell eigentich etwas gegen Xilinx? Hab mir jetzt nur 
diesen Hersteller angeschaut. Mein Augenmerk viel dabei auf den 
XC9500XL, gerade wegen der 3,3 Volt Logik. Desweiteren gibts da ja auch 
für umsonst dieses ISE WebPack. Irgendwelche Einwände?

Für den Einsteig brauch ich vorerst kein EVAL-Board, die Schaltung bau 
ich mir erstmal auf dem BreadBord zurecht. Das ist so ne 
Philosophie-Geschichte, hat sich für mich bewährt.

Und was CPLD oder FPGA angeht, da zieht bei mir das Argument von Lattice 
User, hab ich schon in diversen Foren gelesen.

Autor: Lattice User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
André G. schrieb:
> Und was CPLD oder FPGA angeht, da zieht bei mir das Argument von Lattice
> User, hab ich schon in diversen Foren gelesen.

Ich würde das aber nicht überbewerten, bei den meisten Anwendungen 
dürfte das keine Rolle Spielen. Was macht es denn aus wenn z.B. eine 
Ampel erst nach eingen msec einsatzbereit ist.

Auch würde ich empfehlen, schick das Steckbrett in Rente. Der grösste 
XC9500XL in einem steckbrettkompatiblen Gehäuse hat gerade mal 72 
Macrozellen/Register und 34 I/Os. Da stösst man doch sehr schnell an 
Grenzen.

Kleine FPGA Evalboards kann man schon für einige 10 Euro bekommen, und 
dann hat man einen FPGA in der Grössenordnung von 5000 LUT/Registern. 
Das reicht schon für eine ganze Menge.

Autor: André G. (kreischer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lattice User schrieb:
> Auch würde ich empfehlen, schick das Steckbrett in Rente. Der grösste
> XC9500XL in einem steckbrettkompatiblen Gehäuse hat gerade mal 72
> Macrozellen/Register und 34 I/Os. Da stösst man doch sehr schnell an
> Grenzen.

Nee, sorry, nix mit Rente, wenn, dann nehm ich schon den 100-Pinner TQFP 
und bau mir, wie gehabt, den Adapter selbst. Wie gesagt, ich steh nicht 
so auf EVAL-Boards, ich bau sowas lieber in Eigenregie, da bin ich 
freier in meinen Entscheidungen.

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

Bewertung
0 lesenswert
nicht lesenswert
Lattice User schrieb:
> Ein weiterer Nachteil von FPGAs gegenüber CPLDs sollte aber nicht
> vergessen werden: CPLDs sind sofort bereit, FPGAs brauchen eine gewisse
> Konfigurationszeit, auch die MachXO.
Die rechnet sich aber bei diesen FPGAs mit internem Speicher tatsächlich 
im unteren ms Bereich, da hat jeder uC eine längere Reset-Zeit...

Und man darf es nicht verdrängen: sogar Xilinx 9500XL CPLDs sind 
SRAM-basierte CPLDs, die ihre Konfiguration beim Power-Up aus den 
Flash-Zellen holen... ;-)
Allerdings dauert das nur 200us:
I/Os will be in 3-state with a weak
pull-up until VCCINT reaches the threshold of the User Operation
state (approximately 2.5V). When VCCINT reaches this
point, user registers are initialized (typically within 200 μs)
Aus Xilinx DS054  XC9500XL High-Performance CPLD Family Data Sheet

André G. schrieb:
> Wie gesagt, ich steh nicht so auf EVAL-Boards, ich bau sowas lieber
> in Eigenregie, da bin ich freier in meinen Entscheidungen.
Dann vergiss das aber am besten gleich wieder:
> und bau mir, wie gehabt, den Adapter selbst.
Lies dir da für die FPGAs auf jeden Fall die Layoutregeln durch und 
rechne mit den Kosten für eine 4-lagige Platine....

BTW: so ein EVAL-Board kostet dich bestenfalls 10 Euro/Jahr, wenn du es 
heute kaufst und in 5 Jahren wieder vertickst... ;-)
Das bekommst du mit "selber machen" nicht billiger hin. Dafür läuft es 
sofort auf Anhieb...  :-o
Oder schnitzt du sogar deine Transistoren selbst wie ehedem Shockley&Co?

Autor: Mine Fields (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
André G. schrieb:
> Nee, sorry, nix mit Rente, wenn, dann nehm ich schon den 100-Pinner TQFP
> und bau mir, wie gehabt, den Adapter selbst. Wie gesagt, ich steh nicht
> so auf EVAL-Boards, ich bau sowas lieber in Eigenregie, da bin ich
> freier in meinen Entscheidungen.

Es gibt auch eine Menge Mini-Boards, die ziemlich viele IO rausführen. 
Besser kann man es mit einem eigenen "Adapter" dann auch nicht machen. 
Und billiger schon gar nicht.

Autor: André G. (kreischer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Das bekommst du mit "selber machen" nicht billiger hin. Dafür läuft es
> sofort auf Anhieb...  :-o
> Oder schnitzt du sogar deine Transistoren selbst wie ehedem Shockley&Co?

Stefan L. schrieb:
> Es gibt auch eine Menge Mini-Boards, die ziemlich viele IO rausführen.
> Besser kann man es mit einem eigenen "Adapter" dann auch nicht machen.
> Und billiger schon gar nicht.

Wie gesagt, ist ein reines Philosophie-Ding, der eine machts so, der 
andere eben anders. Beim "selber machen" kommt es nicht unbedingt auf 
billig an. Ich plan grad für mich z.B. meinen mittlerweile 4. eigenen 
Tauch-Computer, bei den bisher ausgegebenen Kosten für die letzten 3 
hätt ich mir ein Ultra-Hyper-Super-Tolles Teil kaufen können, macht mir 
aber keinen Spaß, weil is ja nicht von mir. Und wenn ich schon mal das 
Wissen und nötige Technik habe sowas selbst zu entwickeln, und das auch 
noch "mein Hobby" ist, warum dann kaufen?

Ich bin auch der Meinung, das sowas nicht zu einem Streitpunkt werden 
sollte. Denn genau aus dem Grund gits es solche Foren, wie dieses hier, 
oder?

Autor: Lattice User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Und man darf es nicht verdrängen: sogar Xilinx 9500XL CPLDs sind
> SRAM-basierte CPLDs, die ihre Konfiguration beim Power-Up aus den
> Flash-Zellen holen... ;-)
> Allerdings dauert das nur 200us:

Sachen gibst :-)
Die Lattice ispMach4000 sind auf jeden Fall sofort da. Aber wie ich 
schon vorher geschrieben habe, meisten spielt das wirklich keine Rolle.

André G. schrieb:
> Nee, sorry, nix mit Rente, wenn, dann nehm ich schon den 100-Pinner TQFP
> und bau mir, wie gehabt, den Adapter selbst. Wie gesagt, ich steh nicht
> so auf EVAL-Boards, ich bau sowas lieber in Eigenregie, da bin ich
> freier in meinen Entscheidungen.

Wenn du in der Lage bist ein 4 Lagen Adpaterplatine zu machen warum 
nicht, 4 Lagen sollten es aber auch bei modernen CPLDs sein.

Kleine FPGAs gibt es auch im TQFP 100 und 144. Im TQFP 144 sind bei 
Lattice 5000-7000 LUT/Register verfügbar. (XP2,MachXO,MachXO2 Familien). 
Und damit hat du genügend Platz auch eine kleine 8 Bit CPU selbst zu 
machen, die zudem den FPGA auch noch lange nicht ausreizt. Einem CPLD 
fehlen für sowas interne RAMs.

Meine Empfehlung: Beschränke dich nicht unnötig mit einem CPLD vor allem 
wenn der Aufwand für einen kleinen FPGA nur wenig höher ist.

Autor: FPGASchubser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Tipp für dich,

Lattice User (Gast) schrieb:
>>Auch würde ich empfehlen, schick das Steckbrett in Rente. Der grösste
>>XC9500XL in einem steckbrettkompatiblen Gehäuse hat gerade mal 72
>>Macrozellen/Register und 34 I/Os. Da stösst man doch sehr schnell an
>>Grenzen.

Da hat ein ausgefuchster Bayer das Problem erkannt, das man evtl. zuerst 
mal ausloten möchte was wo reinpasst und evtl. doch mit einem Steckbrett 
arbeiten möchte.

Das Zauberwort heisst GODIL (Good Old DIL)
http://www.trenz-electronic.de/de/produkte/fpga-bo...

wenns dann im Prototyp funktioniert kannst du immer noch ein Layout 
machen auf dem du den chip selbst ankoppelst (was bei FPGA je nach Typ 
aufwendig sein kann)

Gruß

Autor: André G. (kreischer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FPGASchubser schrieb:
> Das Zauberwort heisst GODIL (Good Old DIL)
> http://www.trenz-electronic.de/de/produkte/fpga-bo...

schöne Sache, besonders der Modename GODIL gefällt mir ;)

Lothar Miller schrieb:
> Ja. Problemlos...
> Beitrag "Re: EA DOG-M initialisieren"
> Naja, einige graue Haare kann das einen Anfänger evtl. schon kosten...
> ;-)

nochmal Danke, der Tip ist Gold wert, der Quelltext allein beantwortet 
schon ne Menge Fragen, die sicher gekommen wären...

Gruß,
André

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.