Forum: FPGA, VHDL & Co. CPLD für Dummies


von Armin (Gast)


Lesenswert?

Hallo zusammen,

ich muss sagen, mein Versuch, mich in die Welt von CPLDs einzuarbeiten 
ist ziemlich am Anfang stecken geblieben.
Als erstes habe ich nach tutorials gegoogelt und dabei schon einige 
Interessante gefunden, die allerdings alle unvollständig waren.

also der aktuelle Stand der Dinge:
- Ich weiß, was CPLDs sind, was sie können, was sie nicht können,...
- Ich werde ein 5V ISP CPLD von xilinx benutzen 
(http://www.reichelt.de/?ACTION=3;ARTICLE=40154;PROVID=2402)
- Ich habe das Xilinx Webpack (5GB Programmierspam) heruntergeladen
Dafür würde ich jetzt gerne ein Programmier-Experimentierboard mit 
Schnittstelle zum PC bauen, um die ersten Versuche mit Taster und LEDs 
zu starten und die Datenübertragung zu testen.

Nur leider habe ich keine Ahnung, wie die ISP Verbindung zum PC 
hergestellt wird und was ich dazu brauche. Ich möchte mir ehrlich gesagt 
kein fertiges Board für 200 EUR vom großen C kaufen, sondern lieber 
selbst etwas basteln.
Erkennt das Programm den Chip dann selbst? Das WebPack ist irgendwie für 
Einsteiger schonmal deutlich zu komplex :-/
Die Tutorials von xilinx beschränken sich darauf, mir zu erzählen, wie 
ich die 100 verschiedenen Möglichkeiten der Software nutze, so ein Ding 
zu programmieren. Das entspricht nicht so ganz meinen aktuellen 
Anforderungen...

Was ich bisher gefunden habe:
http://www.holger-klabunde.de/projects/Xilinx.htm
Das scheint ein JTAG adapter zu sein (also kein ISP). Den Unterschied 
kenne ich nicht wirklich. Nur ISP soll toller sein. Keine Ahnung, ob ich 
mich an dieser Schaltung orientieren kann.
http://www.unmuth.de/pdf/CPLD_tut_hardware.pdf
hier jetzt ISP - dafür aber für den 9536 und unvollständig. So fehlt 
z.B. die Teileliste. Ansonsten gefällt mir das schon recht gut. Meint 
ihr, damit kann man wirklich mit dem Webpack arbeiten? Sollte ich 
vielleicht für den Anfang auf den 9536er umsteigen, um nicht so viel 
ändern zu müssen?


Wie man mit so einer Platine dann das "Brennen" durchführt, lassen die 
Autoren außen vor.
Mir fehlt halt einfach ein "Baue diese Platine und klicke auf jenen 
Programmbutton"-Tutorial, das mich mal zu dem Punkt führt, wo die erste 
LED blinkt. Kennt da jemand was für diese Hardware und diese Software?

von Mike (Gast)


Lesenswert?

Und warum kaufst Du Dir nicht das Bord von Pollin?

Bestellummer ist "810 068" und Brenner ist auch schon dabei.

von Arne (Gast)


Lesenswert?


von Walter S. (Gast)


Lesenswert?

Hi, ich habe auch mit dem CPLD angefangen, habe mir damal einen 
Parallelport Programmer nachgebaut.
Ich glaube der war von ulrich Radig.
http://www.ulrichradig.de/home/index.php/cpld/basekit_xilinx_cplds

Dann stand ich vor genau dem gleichen problem wie du, so viele Knöpfe 
und so viel was zu beachten gilt. Dann habe ich mir ein Tutorial 
runtergeladen, das war von einer hochschule was sehr detailiert war.
Finde es auf anhieb nicht, aber das hier schaut auch nicht schlecht aus:
http://www.eng.ucy.ac.cy/theocharides/Courses/ECE408/hw1.pdf

Hoffe ich konnte dir helfen :-)

von Falk B. (falk)


Lesenswert?

@  Armin (Gast)

>- Ich weiß, was CPLDs sind, was sie können, was sie nicht können,...

Wirklich?

>- Ich werde ein 5V ISP CPLD von xilinx benutzen
>(http://www.reichelt.de/?ACTION=3;ARTICLE=40154;PROVID=2402)

Kann man machen, wenn gleich die 3,3V Typen deutlich billiger sind.

>- Ich habe das Xilinx Webpack (5GB Programmierspam) heruntergeladen

Selber Schuld. Hättest dir die genügsamen Version 6.3 runterladen 
sollen.

http://www.mikrocontroller.net/articles/Programmierbare_Logik

>Nur leider habe ich keine Ahnung, wie die ISP Verbindung zum PC
>hergestellt wird

Über den Parallelport.

> und was ich dazu brauche.

Ein einfaches Kabel ala

http://www.geocities.com/jacquesmartini/digital/schematic/Parallel_Cable_III.png

>Ich möchte mir ehrlich gesagt
>kein fertiges Board für 200 EUR vom großen C kaufen, sondern lieber
>selbst etwas basteln.

Was aber mal fix zu vielen (Anfänger)problemen führen kann.

>Erkennt das Programm den Chip dann selbst?

Wenn die Hardware OK ist, dann ja.

> Das WebPack ist irgendwie für
>Einsteiger schonmal deutlich zu komplex :-/

Naja, geht so. Zumindest die alten Versionen.

>Das scheint ein JTAG adapter zu sein (also kein ISP).

Bei den CPLDs gibt es nur JTAG, damit gilt JTAG = ISP.

>http://www.unmuth.de/pdf/CPLD_tut_hardware.pdf

Das ist die Schaltung des origonalen Parallel-Cable-III von Xilinx. 
Würde ich aber nicht empfehlen, das Ding hat bekannte Macken. Lieber dem 
Link oben folgen.

>vielleicht für den Anfang auf den 9536er umsteigen, um nicht so viel
>ändern zu müssen?

Wozu? Die gibt es im identischen Gehäuse.

>Wie man mit so einer Platine dann das "Brennen" durchführt, lassen die
>Autoren außen vor.

Kabel anstecken, Strom einschalten, Programm starten, paar mal clicken, 
fertig.

>Mir fehlt halt einfach ein "Baue diese Platine und klicke auf jenen
>Programmbutton"-Tutorial, das mich mal zu dem Punkt führt, wo die erste
>LED blinkt.

Also idiotensicher. Naja . . . .

MFG
Falk

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Falk Brunner schrieb:

> Selber Schuld. Hättest dir die genügsamen Version 6.3 runterladen
> sollen.

Nützt einem aber nichts, wenn man kein Windows hat.  Läuft das Ding
eigentlich unter Wine?

von Falk B. (falk)


Lesenswert?

Keine Ahnung, ich bin ein Windows-Zombie ;-)

von Iulius (Gast)


Lesenswert?

Zu Beginn gleich alles selbst bauen kann ich nur empfehlen wenn du schon 
Erfahrung in anderen Bereichen hast(z.b. µC board etc)

Ansonsten hat das eine nicht viel mit dem anderen zu tun.

Wenn du vhdl lernen willst bzw allgemein eine Schaltung beschreiben 
willst, dann brauchst du dafür genau 0 Kenntnisse was den Boardentwurf 
angeht.

Es hilft dir auch nichts, das du das board selbst entworfen hast, wenn 
es nachher um die Implementierung der Logik im Chip geht.


Deswegen würde ich mir wirklich 3 mal überlegen gleich komplett bei 0 zu 
beginnen.

Einfache boards gibts für sehr wenig Geld(siehe pollin beispiel), 
möglicherweise kostet einen der Selbstentwurf sogar tw mehr.

von Grashalmlängenkontrollminister (Gast)


Lesenswert?

> Das scheint ein JTAG adapter zu sein (also kein ISP). Den Unterschied
> kenne ich nicht wirklich.

ISP heisst ja erst mal nur so viel wie "Im System Programmierbar" und 
der Begriff wird meistens bei Mikrocontrollern etc. verwendet. Über das 
"wie" dieser Programmiermöglichkeit macht der Begriff "ISP" überhaupt 
keine Aussage.
Bei den AVRs wird meistens über MOSI, MISO und SCK seriell programmiert, 
in einigen (seltenen) Fällen aber auch parallel. Bei anderen 
Mikrocontrollern irgendwie anders, ich meine bei Texas z.B. über nur 
einen Pin etc.

JTAG hingegen meint eine bestimmte, genormte Schnittstelle. JTAG ist 
eine spezielle, serielle Schnittstelle bei der mehrere Bausteine 
unterschiedlicher Hersteller in einer Kette hintereinander geschaltet 
werden können. Ursprünglich (vor Jahrzehnten) war JTAG nicht zum 
Programmieren gedacht, sondern nur zum Testen von Bauteilen. Aber recht 
bald konnt man über JTAG auch bestimmte Bauteile programmieren, z.B. 
CPLDs etc.

Wenn Du ein CPLD im System programmierst (ISP), machst Du das praktisch 
immer über die JTAG-Schnittstelle.

Es gibt übrigens auch AVRs mit JTAG-Schnittstelle. Die können dann auch 
über die JTAG-Schnittstelle programmiert werden, zusätzlich zur 
seriellen Möglichkeit (MOSI, MISO, SCK) und parallelen Möglichkeit.

Also:

JTAG ist eine genormte Schnittstelle, und ISP bedeutet "Im System 
programmierbar".

von Michael L. (michaelx)


Angehängte Dateien:

Lesenswert?

Hallo Armin,

ich diesen Parallelport-Programmer (-> Anhang) gebaut, der passt als SMD 
ohne Probleme in da Gehäuse des LPT-Steckers. Aus der Schaltung gespeist 
kann er mit 5V oder 3,3V laufen.

Wie schon von anderen empfohlen, solltest du gleich die XL-Serie mit 
3,3V verwenden. Die ist deutlich preiswerter, und hat 5V-tolerante 
Eingänge.

Für die ersten Schritte habe ich mir eine kleine Testplatine entworfen. 
Da sind außer dem XC9536XL (bzw. XC9572XL im gleichen Gehäuse) nur noch 
ein Spannungsregler für 3,3V sowie ein Quarzoszillator mit 32,768 kHz 
drauf, und alle Pins werden auf Stiftleisten geführt, um sie mit meinen 
Testmodulen verbinden zu können.

Damit, und mit dem Webpack habe ich meine ersten "Gehversuche" mit CPLD 
unternommen. Probiere für den Anfang erst mal was ganz einfaches, wie 
mit 2-3 Eingänge logisch verknüpfen (wie z.B. and, or, xor) und das dann 
auf ein paar Ausgängen ausgeben.

von Thomas K. (thomas47058)


Lesenswert?

Hallo zusammen,

ich würde gerne diese Thread-Leiche wieder auferstehen lassen, mit 
folgender Frage: Kennt ihr einen preiswerten USB<->LPT Adapter, den man 
mit der Schaltung, die oben von Michael L. genannt wurde, zum 
Programmieren von CPLDs enutzen kann? Funktioniert ein einfacher 
USB<->"Druckerport"-Adapter?

Danke und Gruß
Thomas

von Christian R. (supachris)


Lesenswert?

Ein USB-Drucker-Adapter funktioniert auf keinen Fall. Der einzige 
Adapter, der gehen könnte ist die Selbstbau-Lösung von Henrik 
Haftmann: 
http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/

von Thomas K. (thomas47058)


Lesenswert?

ok, danke für den tipp.

ich habe noch eine frage zu meinem projekt: was ich realisieren möchte, 
ist relativ simpel: ein drehencoder soll durch einen GAL oder CPLD 
bestimmte "werte" am ausgang ausgeben. wir reden hier von max 10 
einstellungsmöglichkeiten, die einen AD-wandler steuern sollen 
(sampleraten einstellung). ich bin mir nicht sicher, ob ich mich jetzt 
voll in die materie der CPLD via VHDL programmierung stürzen soll, nur 
um diesen kleinen baustein zu programmieren. gibt es da eine andere 
möglichkeit? eine einfachere? aus einzelelementen würd ich die logik 
sehr ungern bauen...

danke nochmal

von Falk B. (falk)


Lesenswert?

@Thomas P. (thomas47058)

>möglichkeit? eine einfachere? aus einzelelementen würd ich die logik
>sehr ungern bauen...

Nimm einen kleinen Mikrocontroller, selbst der langweilt sich dabei zu 
Tode. Ein CPLD erst recht.

MFG
Falk

von Thomas K. (thomas47058)


Lesenswert?

stimmt, das liegt nahe. ein attiny wird's auch tun.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> ok, danke für den tipp.
Noch ein Tipp: kauf dir einen billigen Digilent-Programmer
http://shop.trenz-electronic.de/catalog/product_info.php?cPath=30&products_id=589
oder so einen Xilinx-USB-Programmer-Nachbau in der Bucht...

von Thomas K. (thomas47058)


Lesenswert?

hallo lothar,

der Digilent Programmers liest sich gut. allerdings geht die 
beschreibung immer ziemlich restriktiv anmutend auf "Digilent 
programmable logic boards" und "Digilent embedded control boards" ein. 
kann ich denn damit auch generell alle AVRs und CPLDs programmieren? 
etwas hoffnung macht da der punkt "Can program devices that have a JTAG 
voltage of 1.8V or greater".

die variante aus der bucht kostet schon 70 euro inkl. versand. lohnt 
sich für meine vorhaben nicht...

danke&gruß!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thomas P. schrieb:
> kann ich denn damit auch generell alle AVRs und CPLDs programmieren?
Nein. Es steht zwar überall JTAG drauf, aber es ist so wie auf Autos 
zwar "Auto" steht, aber trotzdem jedes spezielle Felgen und Reifen 
braucht...
Das ginge nur, wenn du entsprechende JTAG-Testvektoren erstellen 
könntest und die dann mit einem passenden Player abspielen würdest...

von Holger (Gast)


Lesenswert?

Bastel-Tips: Für CPLD's
http://www.youtube.com/watch?v=lYMaUudZQsc&feature=related
@Armin
http://www.miniprobe.com/pld/3p_inv/3p_invA/3PINVA.HTML

Referenz-Design mit “trick“ 2 Clocks {1..1/2} als PWM 3 Pasen-Motor

######################################################################## 
##
Frage:@Forum
Hast einer mal versucht den AVR als JTAG-Iterface einzusetzen, und damit 
den
XC9536 direkt zu proggen. (via “*.JED“ File)  ???
In der C’t Zeitschrift war mal sone APP drin, via SD CARD wurde das 
Design in den CPLD
mit Hilfe des Atmega 32 geladen.
Kennt einer das Projekt noch.?
/"\
\ /
 X
/ \
Gruss Holger

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

@Armin
Hier ist was für dein XC9536 Project.
1) JTAG .Infos
2) XC9536 oder XC9572 mini Platine (Home-Brew)
Beitrag "JTAG INTERFACE APP MCU"

Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

@Armin
Der Prof. hat einen Design Award gewonnen, in JAPAN.
Hier prüfe ich noch die Pinne nach.
Nicht einfach alles nehmen, immer nachprüfen.
Da darf kein Fehler drin sein.
Hier sind genug Threads, bei denen das Ding heiss geworden ist.
Und da ist es dann exitus mit dem Homebrew CPLD.
#################################################################
Man kann da noch den VCC I/0 Pin 32 modulieren.
So eine art DAC.

Interesant sind auch die 3 R-C Kopplungen (analog-Trigger)da drin.
Hier die Beschaltung, der Dedizierten Pinne.
2 Clock-Domains + Power UP (Boot-Up)Resistor Nets.
Clock:[5][6][]
General-Set/Reset...
General Tristate Pins..


/"\
\ /
 X
/ \
Gruss Holger

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.