CPLD für Dummies

Gast #1414412
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?
Gast #1414430
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 :-)
#1414451
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
Gast #1414604
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.
Gast #1414894
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".
#1415037
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.
Angehängte Dateien:
#1908432
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
#1908492
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
#1908693
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ß!
Moderator (Firma: Titel) Persönliche Seite #1908701
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...
Gast #1912258
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
Persönliche Seite #1916276
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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren